haoneng.lhn
2023-04-27 911d450a596a711d6faea37c2abfba13d3a511fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Test caces for demangle_unittest.  Each line consists of a
# tab-separated pair of mangled and demangled symbol names.
 
# Constructors and destructors.
_ZN3FooC1Ev    Foo::Foo()
_ZN3FooD1Ev    Foo::~Foo()
_ZNSoD0Ev    std::ostream::~ostream()
 
# G++ extensions.
_ZTCN10LogMessage9LogStreamE0_So    LogMessage::LogStream
_ZTv0_n12_N10LogMessage9LogStreamD0Ev    LogMessage::LogStream::~LogStream()
_ZThn4_N7icu_3_410UnicodeSetD0Ev    icu_3_4::UnicodeSet::~UnicodeSet()
 
# A bug in g++'s C++ ABI version 2 (-fabi-version=2).
_ZN7NSSInfoI5groupjjXadL_Z10getgrgid_rEELZ19nss_getgrgid_r_nameEEC1Ei    NSSInfo<>::NSSInfo()
 
# C linkage symbol names.  Should keep them untouched.
main    main
Demangle    Demangle
_ZERO    _ZERO
 
# Cast operator.
_Zcviv    operator int()
_ZN3foocviEv    foo::operator int()
 
# Versioned symbols.
_Z3Foo@GLIBCXX_3.4    Foo@GLIBCXX_3.4
_Z3Foo@@GLIBCXX_3.4    Foo@@GLIBCXX_3.4
 
# Abbreviations.
_ZNSaE    std::allocator
_ZNSbE    std::basic_string
_ZNSdE    std::iostream
_ZNSiE    std::istream
_ZNSoE    std::ostream
_ZNSsE    std::string
 
# Substitutions.  We just replace them with ?.
_ZN3fooS_E    foo::?
_ZN3foo3barS0_E    foo::bar::?
_ZNcvT_IiEEv    operator ?<>()
 
# "<< <" case.
_ZlsI3fooE    operator<< <>
 
# ABI tags.
_Z1AB3barB3foo    A
_ZN3fooL3barB5cxx11E    foo::bar
 
# Random things we found interesting.
_ZN3FooISt6vectorISsSaISsEEEclEv    Foo<>::operator()()
_ZTI9Callback1IiE    Callback1<>
_ZN7icu_3_47UMemorynwEj    icu_3_4::UMemory::operator new()
_ZNSt6vectorIbE9push_backE    std::vector<>::push_back
_ZNSt6vectorIbSaIbEE9push_backEb    std::vector<>::push_back()
_ZlsRSoRK15PRIVATE_Counter    operator<<()
_ZSt6fill_nIPPN9__gnu_cxx15_Hashtable_nodeISt4pairIKPKcjEEEjS8_ET_SA_T0_RKT1_    std::fill_n<>()
_ZZ3FoovE3Bar    Foo()::Bar
_ZGVZ7UpTimervE8up_timer    UpTimer()::up_timer
 
# Test cases from gcc-4.1.0/libstdc++-v3/testsuite/demangle.
# Collected by:
# % grep verify_demangle **/*.cc | perl -nle 'print $1 if /"(_Z.*?)"/' |
#   sort | uniq
#
# Note that the following symbols are invalid.
# That's why they are not demangled.
# - _ZNZN1N1fEiE1X1gE
# - _ZNZN1N1fEiE1X1gEv
# - _Z1xINiEE
_Z1fA37_iPS_    f()
_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i    f()
_Z1fI1APS0_PKS0_EvT_T0_T1_PA4_S3_M1CS8_    f<>()
_Z1fI1XENT_1tES2_    f<>()
_Z1fI1XEvPVN1AIT_E1TE    f<>()
_Z1fILi1ELc120EEv1AIXplT_cviLd4028ae147ae147aeEEE    f<>()
_Z1fILi1ELc120EEv1AIXplT_cviLf3f800000EEE    f<>()
_Z1fILi5E1AEvN1CIXqugtT_Li0ELi1ELi2EEE1qE    f<>()
_Z1fILi5E1AEvN1CIXstN1T1tEEXszsrS2_1tEE1qE    f<>()
_Z1fILi5EEvN1AIXcvimlT_Li22EEE1qE    f<>()
_Z1fIiEvi    f<>()
_Z1fKPFiiE    f()
_Z1fM1AFivEPS0_    f()
_Z1fM1AKFivE    f()
_Z1fM1AKFvvE    f()
_Z1fPFPA1_ivE    f()
_Z1fPFYPFiiEiE    f()
_Z1fPFvvEM1SFvvE    f()
_Z1fPKM1AFivE    f()
_Z1fi    f()
_Z1fv    f()
_Z1jM1AFivEPS1_    j()
_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_    r()
_Z1sPA37_iPS0_    s()
_Z1xINiEE    _Z1xINiEE
_Z3absILi11EEvv    abs<>()
_Z3foo3bar    foo()
_Z3foo5Hello5WorldS0_S_    foo()
_Z3fooA30_A_i    foo()
_Z3fooIA6_KiEvA9_KT_rVPrS4_    foo<>()
_Z3fooILi2EEvRAplT_Li1E_i    foo<>()
_Z3fooIiFvdEiEvv    foo<>()
_Z3fooPM2ABi    foo()
_Z3fooc    foo()
_Z3fooiPiPS_PS0_PS1_PS2_PS3_PS4_PS5_PS6_PS7_PS8_PS9_PSA_PSB_PSC_    foo()
_Z3kooPA28_A30_i    koo()
_Z4makeI7FactoryiET_IT0_Ev    make<>()
_Z5firstI3DuoEvS0_    first<>()
_Z5firstI3DuoEvT_    first<>()
_Z9hairyfuncM1YKFPVPFrPA2_PM1XKFKPA3_ilEPcEiE    hairyfunc()
_ZGVN5libcw24_GLOBAL__N_cbll.cc0ZhUKa23compiler_bug_workaroundISt6vectorINS_13omanip_id_tctINS_5debug32memblk_types_manipulator_data_ctEEESaIS6_EEE3idsE    libcw::(anonymous namespace)::compiler_bug_workaround<>::ids
_ZN12libcw_app_ct10add_optionIS_EEvMT_FvPKcES3_cS3_S3_    libcw_app_ct::add_option<>()
_ZN1AIfEcvT_IiEEv    A<>::operator ?<>()
_ZN1N1TIiiE2mfES0_IddE    N::T<>::mf()
_ZN1N1fE    N::f
_ZN1f1fE    f::f
_ZN3FooIA4_iE3barE    Foo<>::bar
_ZN5Arena5levelE    Arena::level
_ZN5StackIiiE5levelE    Stack<>::level
_ZN5libcw5debug13cwprint_usingINS_9_private_12GlobalObjectEEENS0_17cwprint_using_tctIT_EERKS5_MS5_KFvRSt7ostreamE    libcw::debug::cwprint_using<>()
_ZN6System5Sound4beepEv    System::Sound::beep()
_ZNKSt14priority_queueIP27timer_event_request_base_ctSt5dequeIS1_SaIS1_EE13timer_greaterE3topEv    std::priority_queue<>::top()
_ZNKSt15_Deque_iteratorIP15memory_block_stRKS1_PS2_EeqERKS5_    std::_Deque_iterator<>::operator==()
_ZNKSt17__normal_iteratorIPK6optionSt6vectorIS0_SaIS0_EEEmiERKS6_    std::__normal_iterator<>::operator-()
_ZNSbIcSt11char_traitsIcEN5libcw5debug27no_alloc_checking_allocatorEE12_S_constructIPcEES6_T_S7_RKS3_    std::basic_string<>::_S_construct<>()
_ZNSt13_Alloc_traitsISbIcSt18string_char_traitsIcEN5libcw5debug9_private_17allocator_adaptorIcSt24__default_alloc_templateILb0ELi327664EELb1EEEENS5_IS9_S7_Lb1EEEE15_S_instancelessE    std::_Alloc_traits<>::_S_instanceless
_ZNSt3_In4wardE    std::_In::ward
_ZNZN1N1fEiE1X1gE    _ZNZN1N1fEiE1X1gE
_ZNZN1N1fEiE1X1gEv    _ZNZN1N1fEiE1X1gEv
_ZSt1BISt1DIP1ARKS2_PS3_ES0_IS2_RS2_PS2_ES2_ET0_T_SB_SA_PT1_    std::B<>()
_ZSt5state    std::state
_ZTI7a_class    a_class
_ZZN1N1fEiE1p    N::f()::p
_ZZN1N1fEiEs    N::f()
_ZlsRK1XS1_    operator<<()
_ZlsRKU3fooU4bart1XS0_    operator<<()
_ZlsRKU3fooU4bart1XS2_    operator<<()
_ZlsRSoRKSs    operator<<()
_ZngILi42EEvN1AIXplT_Li2EEE1TE    operator-<>()
_ZplR1XS0_    operator+()
_Zrm1XS_    operator%()
 
# Template argument packs can start with I or J.
_Z3addIIiEEvDpT_    add<>()
_Z3addIJiEEvDpT_    add<>()