Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
737969f
fix: Use patched versions of cpp/msvc demanglers
Swatinem Sep 10, 2020
4619030
Merge branch 'master' into fix/demangle-fixes
Nov 20, 2020
6d0ad2f
adopt to new cpp-demangle API
Swatinem Nov 23, 2020
2ad654f
Merge branch 'master' into fix/demangle-fixes
mitsuhiko Nov 24, 2020
749a39e
Merge branch 'master' into fix/demangle-fixes
mitsuhiko Nov 25, 2020
f89d620
Merge branch 'master' into fix/demangle-fixes
mitsuhiko Nov 26, 2020
0bf2a12
Merge branch 'master' into fix/demangle-fixes
jan-auer Nov 26, 2020
0c7e509
feat: Rename architecture to wasm32 (#294)
mitsuhiko Nov 28, 2020
4b9f8f7
Merge branch 'master' into fix/demangle-fixes
jan-auer Dec 23, 2020
6b568ae
Merge branch 'master' into fix/demangle-fixes
jan-auer Jan 5, 2021
27df929
Merge branch 'master' into fix/demangle-fixes
jan-auer Jan 18, 2021
5d26a47
Merge branch 'master' into fix/demangle-fixes
jan-auer Feb 1, 2021
d20b5b4
Merge branch 'master' into fix/demangle-fixes
jan-auer Feb 4, 2021
693a096
Merge branch 'master' into fix/demangle-fixes
jan-auer Feb 11, 2021
46ef9f7
Merge branch 'master' into fix/demangle-fixes
loewenheim Feb 15, 2021
a1831f5
Merge branch 'master' into fix/demangle-fixes
loewenheim Feb 15, 2021
659bf8a
Merge branch 'master' into fix/demangle-fixes
loewenheim Feb 18, 2021
ddb62af
Merge branch 'master' into fix/demangle-fixes
jan-auer Mar 3, 2021
292b881
Merge branch 'master' into fix/demangle-fixes
Mar 30, 2021
3f79634
Merge branch 'master' into fix/demangle-fixes
Apr 6, 2021
c4426cd
Merge branch 'master' into fix/demangle-fixes
loewenheim May 5, 2021
d0fb809
Merge branch 'master' into fix/demangle-fixes
Swatinem May 7, 2021
6354ae2
Merge branch 'master' into fix/demangle-fixes
loewenheim May 7, 2021
5a5aa38
Merge branch 'master' into fix/demangle-fixes
loewenheim May 17, 2021
bed8c79
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 7, 2021
898bc70
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 16, 2021
0086db6
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 17, 2021
b444f1d
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 29, 2021
e233aee
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 30, 2021
a63354d
Merge branch 'master' into fix/demangle-fixes
Swatinem Jul 8, 2021
012512b
Merge branch 'master' into fix/demangle-fixes
Sep 17, 2021
4dee01d
Merge branch 'master' into fix/demangle-fixes
Swatinem Sep 29, 2021
4a6507c
Merge branch 'master' into fix/demangle-fixes
Nov 18, 2021
34b7011
Merge branch 'master' into fix/demangle-fixes
loewenheim Nov 29, 2021
f32b061
Merge branch 'master' into fix/demangle-fixes
Swatinem Dec 2, 2021
6e29aa0
Merge branch 'master' into fix/demangle-fixes
Swatinem Dec 2, 2021
a1ea547
Merge branch 'master' into fix/demangle-fixes
loewenheim Dec 2, 2021
fbaecba
Merge branch 'master' into fix/demangle-fixes
loewenheim Dec 3, 2021
a0f2328
Merge branch 'master' into fix/demangle-fixes
loewenheim Dec 3, 2021
3a99f7c
Merge branch 'master' into fix/demangle-fixes
Swatinem Jan 19, 2022
4472c97
Merge branch 'master' into fix/demangle-fixes
Swatinem Jan 19, 2022
ab62ee3
Merge branch 'master' into fix/demangle-fixes
Swatinem Feb 14, 2022
9afb94f
Merge branch 'master' into fix/demangle-fixes
loewenheim Feb 17, 2022
4108128
Merge branch 'master' into fix/demangle-fixes
jan-auer Feb 23, 2022
d325339
Merge branch 'master' into fix/demangle-fixes
loewenheim Feb 25, 2022
d2864f4
Merge branch 'master' into fix/demangle-fixes
Swatinem Mar 25, 2022
a8d6ae1
Merge branch 'master' into fix/demangle-fixes
loewenheim Apr 7, 2022
1034134
Merge branch 'master' into fix/demangle-fixes
Swatinem Apr 19, 2022
0199b4c
Merge branch 'master' into fix/demangle-fixes
Swatinem May 30, 2022
20ef03f
tighten up cpp_demangle recursion limits a bit
Swatinem May 30, 2022
024f78e
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 7, 2022
fefe857
Merge branch 'master' into fix/demangle-fixes
loewenheim Jun 10, 2022
eedf700
Merge branch 'master' into fix/demangle-fixes
Swatinem Jun 21, 2022
b5fba17
Merge branch 'master' into fix/demangle-fixes
loewenheim Jun 21, 2022
c97e4d8
Merge branch 'master' into fix/demangle-fixes
Swatinem Jul 15, 2022
f2ced65
Merge branch 'master' into fix/demangle-fixes
Swatinem Jul 26, 2022
f8bec40
Merge branch 'master' into fix/demangle-fixes
Swatinem Aug 4, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion symbolic-demangle/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ rust = ["rustc-demangle"]
swift = ["cc"]

[dependencies]
cpp_demangle = { version = "0.3.2", optional = true }
cpp_demangle = { git = "https://github.com/Swatinem/cpp_demangle", branch = "sentry-patches", version = "0.3.2", optional = true }
msvc-demangler = { version = "0.9.0", optional = true }
rustc-demangle = { version = "0.1.16", optional = true }
symbolic-common = { version = "9.1.0", path = "../symbolic-common" }
Expand Down
6 changes: 2 additions & 4 deletions symbolic-demangle/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,10 +246,8 @@ fn try_demangle_cpp(ident: &str, opts: DemangleOptions) -> Option<String> {

let stripped = strip_hash_suffix(ident);

let symbol = match CppSymbol::new_with_options(
stripped,
&ParseOptions::default().recursion_limit(192), // default is 96
) {
let parse_options = ParseOptions::default().recursion_limit(160); // default is 96
let symbol = match CppSymbol::new_with_options(stripped, &parse_options) {
Ok(symbol) => symbol,
Err(_) => return None,
};
Expand Down
14 changes: 14 additions & 0 deletions symbolic-demangle/tests/test_cpp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,20 @@ fn test_demangle_cpp() {
});
}

#[test]
fn test_demangle_cpp_recursion() {
assert_demangle!(Language::Cpp, DemangleOptions::complete(), {
"_ZNK8xxxxxxxx14xxxxxxxxxxxxxxINS_14xxxxxxxxxxxxxxINS1_INS1_INS1_INS1_INS1_INS_10xxxxxxxxxxE32xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxEES3_EE22xxxxxxxxxxxxxxxxxxxxxxEES6_EE13xxxxxxxxxxxxxEE17xxxxxxxxxxxxxxxxxEE14xxxxxxxxxxxxxxE8xxxxxxxxE7xxxxxxxRKN4xxxx5xxxxxEb" =>
"xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxxxxxx<xxxxxxxx::xxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxx>::xxxxxxxx(xxxxxxx, xxxx::xxxxx const&, bool) const",
"_ZN5boost7variantIiJljdbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_17basic_string_viewIcS4_EElmxyNS_10filesystem4pathEEEC2IS6_EEOT_PNS_9enable_ifINS_3mpl3or_INSG_4and_INS_19is_rvalue_referenceISE_EENSG_4not_INS_8is_constISD_EEEENSL_INS_7is_sameISD_SB_EEEENS_6detail7variant29is_variant_constructible_fromISE_NSG_6l_itemIN4mpl_5long_ILl12EEEiNSV_INSX_ILl11EEElNSV_INSX_ILl10EEEjNSV_INSX_ILl9EEEdNSV_INSX_ILl8EEEbNSV_INSX_ILl7EEES6_NSV_INSX_ILl6EEES8_NSV_INSX_ILl5EEElNSV_INSX_ILl4EEEmNSV_INSX_ILl3EEExNSV_INSX_ILl2EEEyNSV_INSX_ILl1EEESA_NSG_5l_endEEEEEEEEEEEEEEEEEEEEEEEEEEENSW_5bool_ILb1EEEEENSP_ISD_NS_18recursive_variant_EEENS1O_ILb0EEES1T_S1T_EEvE4typeE" =>
"boost::variant<int, long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(boost::enable_if<boost::mpl::or_<boost::mpl::and_<boost::is_rvalue_reference<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&>, boost::mpl::not_<boost::is_const<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::mpl::not_<boost::is_same<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::variant<int, long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >, boost::detail::variant::is_variant_constructible_from<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, boost::mpl::l_item<mpl_::long_<(long)12>, int, boost::mpl::l_item<mpl_::long_<(long)11>, long, boost::mpl::l_item<mpl_::long_<(long)10>, unsigned int, boost::mpl::l_item<mpl_::long_<(long)9>, double, boost::mpl::l_item<mpl_::long_<(long)8>, bool, boost::mpl::l_item<mpl_::long_<(long)7>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::mpl::l_item<mpl_::long_<(long)6>, boost::basic_string_view<char, std::char_traits<char> >, boost::mpl::l_item<mpl_::long_<(long)5>, long, boost::mpl::l_item<mpl_::long_<(long)4>, unsigned long, boost::mpl::l_item<mpl_::long_<(long)3>, long long, boost::mpl::l_item<mpl_::long_<(long)2>, unsigned long long, boost::mpl::l_item<mpl_::long_<(long)1>, boost::filesystem::path, boost::mpl::l_end> > > > > > > > > > > > >, mpl_::bool_<true> >, boost::is_same<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::recursive_variant_>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, void>::type*)",
"_ZN5boost6detail7variant21make_initializer_node5applyINS_3mpl4pairINS3_INS5_INS3_INS5_INS3_INS5_INS3_INS5_INS3_INS5_INS1_16initializer_rootEN4mpl_4int_ILi0EEEEENS4_6l_iterINS4_6list12IixjdbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_17basic_string_viewIcSG_EElmxyNS_10filesystem4pathEEEEEE16initializer_nodeENS8_ILi1EEEEENSB_INS4_6list11IxjdbSI_SK_lmxySM_EEEEE16initializer_nodeENS8_ILi2EEEEENSB_INS4_6list10IjdbSI_SK_lmxySM_EEEEE16initializer_nodeENS8_ILi3EEEEENSB_INS4_5list9IdbSI_SK_lmxySM_EEEEE16initializer_nodeENS8_ILi4EEEEENSB_INS4_5list8IbSI_SK_lmxySM_EEEEE16initializer_nodeENS8_ILi5EEEEENSB_INS4_5list7ISI_SK_lmxySM_EEEEE16initializer_node10initializeEPvRKSI_" =>
"boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::initializer_root, mpl_::int_<0> >, boost::mpl::l_iter<boost::mpl::list12<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node, mpl_::int_<1> >, boost::mpl::l_iter<boost::mpl::list11<long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node, mpl_::int_<2> >, boost::mpl::l_iter<boost::mpl::list10<unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node, mpl_::int_<3> >, boost::mpl::l_iter<boost::mpl::list9<double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node, mpl_::int_<4> >, boost::mpl::l_iter<boost::mpl::list8<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node, mpl_::int_<5> >, boost::mpl::l_iter<boost::mpl::list7<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path> > >::initializer_node::initialize(void*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)",
"_ZN5boost6detail7variant15visitation_implIN4mpl_4int_ILi0EEENS1_20visitation_impl_stepINS_3mpl6l_iterINS7_6l_itemINS3_5long_ILl12EEEiNS9_INSA_ILl11EEExNS9_INSA_ILl10EEEjNS9_INSA_ILl9EEEdNS9_INSA_ILl8EEEbNS9_INSA_ILl7EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS9_INSA_ILl6EEENS_17basic_string_viewIcSK_EENS9_INSA_ILl5EEElNS9_INSA_ILl4EEEmNS9_INSA_ILl3EEExNS9_INSA_ILl2EEEyNS9_INSA_ILl1EEENS_10filesystem4pathENS7_5l_endEEEEEEEEEEEEEEEEEEEEEEEEEEENS8_ISX_EEEENS_7variantIiJxjdbSM_SP_lmxySW_EE8assignerEPKvNS1E_18has_fallback_type_EEENT1_11result_typeEiiRS1J_T2_NS3_5bool_ILb0EEET3_PT_PT0_" =>
"boost::variant<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::assigner::result_type boost::detail::variant::visitation_impl<mpl_::int_<0>, boost::detail::variant::visitation_impl_step<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<(long)12>, int, boost::mpl::l_item<mpl_::long_<(long)11>, long long, boost::mpl::l_item<mpl_::long_<(long)10>, unsigned int, boost::mpl::l_item<mpl_::long_<(long)9>, double, boost::mpl::l_item<mpl_::long_<(long)8>, bool, boost::mpl::l_item<mpl_::long_<(long)7>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::mpl::l_item<mpl_::long_<(long)6>, boost::basic_string_view<char, std::char_traits<char> >, boost::mpl::l_item<mpl_::long_<(long)5>, long, boost::mpl::l_item<mpl_::long_<(long)4>, unsigned long, boost::mpl::l_item<mpl_::long_<(long)3>, long long, boost::mpl::l_item<mpl_::long_<(long)2>, unsigned long long, boost::mpl::l_item<mpl_::long_<(long)1>, boost::filesystem::path, boost::mpl::l_end> > > > > > > > > > > > >, boost::mpl::l_iter<boost::mpl::l_end> >, boost::variant<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::assigner, void const*, boost::variant<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::has_fallback_type_>(int, int, boost::variant<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::assigner&, void const*, mpl_::bool_<false>, boost::variant<int, long long, unsigned int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::basic_string_view<char, std::char_traits<char> >, long, unsigned long, long long, unsigned long long, boost::filesystem::path>::has_fallback_type_, mpl_::int_<0>*, boost::detail::variant::visitation_impl_step<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<(long)12>, int, boost::mpl::l_item<mpl_::long_<(long)11>, long long, boost::mpl::l_item<mpl_::long_<(long)10>, unsigned int, boost::mpl::l_item<mpl_::long_<(long)9>, double, boost::mpl::l_item<mpl_::long_<(long)8>, bool, boost::mpl::l_item<mpl_::long_<(long)7>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::mpl::l_item<mpl_::long_<(long)6>, boost::basic_string_view<char, std::char_traits<char> >, boost::mpl::l_item<mpl_::long_<(long)5>, long, boost::mpl::l_item<mpl_::long_<(long)4>, unsigned long, boost::mpl::l_item<mpl_::long_<(long)3>, long long, boost::mpl::l_item<mpl_::long_<(long)2>, unsigned long long, boost::mpl::l_item<mpl_::long_<(long)1>, boost::filesystem::path, boost::mpl::l_end> > > > > > > > > > > > >, boost::mpl::l_iter<boost::mpl::l_end> >*)"
});
}

#[test]
fn test_demangle_cpp_no_args() {
assert_demangle!(Language::Cpp, DemangleOptions::name_only(), {
Expand Down