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 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
|
# This file holds test cases for the Rust demangler.
# Each test case looks like this:
# options
# input to be demangled
# expected output
#
# See demangle-expected for documentation of supported options.
#
# A line starting with `#' is ignored.
# However, blank lines in this file are NOT ignored.
#
############
#
# Coverage Tests (legacy)
#
#
# Demangles as rust symbol.
--format=rust
_ZN4main4main17he714a2e23ed7db23E
main::main
# Also demangles as c++ gnu v3 mangled symbol. But with extra Rust hash.
--format=gnu-v3
_ZN4main4main17he714a2e23ed7db23E
main::main::he714a2e23ed7db23
# But auto should demangle fully gnu-v3 -> rust -> demangled, not partially.
--format=auto
_ZN4main4main17he714a2e23ed7db23E
main::main
# Hash is exactly 16 hex chars. Not more.
--format=auto
_ZN4main4main18h1e714a2e23ed7db23E
main::main::h1e714a2e23ed7db23
# Not less.
--format=auto
_ZN4main4main16h714a2e23ed7db23E
main::main::h714a2e23ed7db23
# And not non-hex.
--format=auto
_ZN4main4main17he714a2e23ed7db2gE
main::main::he714a2e23ed7db2g
# $XX$ substitutions should not contain just numbers.
--format=auto
_ZN4main4$99$17he714a2e23ed7db23E
main::$99$
# _ at start of path should be removed.
# ".." translates to "::" "$GT$" to ">" and "$LT$" to "<".
--format=rust
_ZN71_$LT$Test$u20$$u2b$$u20$$u27$static$u20$as$u20$foo..Bar$LT$Test$GT$$GT$3bar17h930b740aa94f1d3aE
<Test + 'static as foo::Bar<Test>>::bar
#
--format=rust
_ZN54_$LT$I$u20$as$u20$core..iter..traits..IntoIterator$GT$9into_iter17h8581507801fb8615E
<I as core::iter::traits::IntoIterator>::into_iter
#
--format=rust
_ZN10parse_tsan4main17hdbbfdf1c6a7e27d9E
parse_tsan::main
#
--format=rust
_ZN65_$LT$std..env..Args$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h420a7c8d0c7eef40E
<std::env::Args as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN4core3str9from_utf817hdcea28871313776dE
core::str::from_utf8
#
--format=rust
_ZN4core3mem7size_of17h18bde9bb8c22e2cfE
core::mem::size_of
#
--format=rust
_ZN5alloc4heap8allocate17hd55c03e6cb81d924E
alloc::heap::allocate
#
--format=rust
_ZN4core3ptr8null_mut17h736cce09ca0ac11aE
core::ptr::null_mut
#
--format=rust
_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h7f9de798bc3f0879E
core::ptr::<impl *mut T>::is_null
#
--format=rust
_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17h4166e2b47539e1ffE
<alloc::raw_vec::RawVec<T>>::double
#
--format=rust
_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$4push17hd4b6b23c1b88141aE
<collections::vec::Vec<T>>::push
#
--format=rust
_ZN70_$LT$collections..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..DerefMut$GT$9deref_mut17hf299b860dc5a831cE
<collections::vec::Vec<T> as core::ops::DerefMut>::deref_mut
#
--format=rust
_ZN63_$LT$core..ptr..Unique$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17hc784b4a166cb5e5cE
<core::ptr::Unique<T> as core::ops::Deref>::deref
#
--format=rust
_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3ptr17h7570b6e9070b693bE
<alloc::raw_vec::RawVec<T>>::ptr
#
--format=rust
_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h0f3228f343444ac8E
core::ptr::<impl *mut T>::is_null
#
--format=rust
_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$10as_mut_ptr17h153241df1c7d1666E
<[T] as core::slice::SliceExt>::as_mut_ptr
#
--format=rust
_ZN11collections5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$10as_mut_ptr17hf12a6d0409938c96E
collections::slice::<impl [T]>::as_mut_ptr
#
--format=rust
_ZN4core3ptr5write17h651fe53ec860e780E
core::ptr::write
#
--format=rust
_ZN65_$LT$std..env..Args$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h420a7c8d0c7eef40E
<std::env::Args as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN54_$LT$I$u20$as$u20$core..iter..traits..IntoIterator$GT$9into_iter17he06cb713aae5b465E
<I as core::iter::traits::IntoIterator>::into_iter
#
--format=rust
_ZN71_$LT$collections..vec..IntoIter$LT$T$GT$$u20$as$u20$core..ops..Drop$GT$4drop17hf7f23304ebe62eedE
<collections::vec::IntoIter<T> as core::ops::Drop>::drop
#
--format=rust
_ZN86_$LT$collections..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04b3fbf148c39713E
<collections::vec::IntoIter<T> as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17ha050492063e0fd20E
<&'a mut I as core::iter::iterator::Iterator>::next
# Different hashes are OK, they are just stripped.
--format=rust
_ZN13drop_contents17hfe3c0a68c8ad1c74E
drop_contents
#
--format=rust
_ZN13drop_contents17h48cb59bef15bb555E
drop_contents
#
--format=rust
_ZN4core3mem7size_of17h900b33157bf58f26E
core::mem::size_of
#
--format=rust
_ZN67_$LT$alloc..raw_vec..RawVec$LT$T$GT$$u20$as$u20$core..ops..Drop$GT$4drop17h96a5cf6e94807905E
<alloc::raw_vec::RawVec<T> as core::ops::Drop>::drop
#
--format=rust
_ZN68_$LT$core..nonzero..NonZero$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17hc49056f882aa46dbE
<core::nonzero::NonZero<T> as core::ops::Deref>::deref
#
--format=rust
_ZN63_$LT$core..ptr..Unique$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17h19f2ad4920655e85E
<core::ptr::Unique<T> as core::ops::Deref>::deref
#
--format=rust
_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h059a991a004536adE
issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo
--format=rust
_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h000b1ad6c4f30bd6E
core::ops::function::FnOnce::call_once{{vtable.shim}}
#
############
#
# Coverage Tests (v0)
#
#
# Crate with a leading digit.
--format=rust
_RNvC6_123foo3bar
123foo::bar
# UTF-8 identifiers.
--format=rust
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
utf8_idents::საჭმელად_გემრიელი_სადილი
# Closure path elements.
--format=rust
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
cc::spawn::{closure#0}::{closure#0}
#
--format=rust
_RNCINkXs25_NgCsbmNqQUJIY6D_4core5sliceINyB9_4IterhENuNgNoBb_4iter8iterator8Iterator9rpositionNCNgNpB9_6memchr7memrchrs_0E0Bb_
<core::slice::Iter<u8> as core::iter::iterator::Iterator>::rposition::<core::slice::memchr::memrchr::{closure#1}>::{closure#0}
# dyn Trait ("trait object") types.
--format=rust
_RINbNbCskIICzLVDPPb_5alloc5alloc8box_freeDINbNiB4_5boxed5FnBoxuEp6OutputuEL_ECs1iopQbuBiw2_3std
alloc::alloc::box_free::<dyn alloc::boxed::FnBox<(), Output = ()>>
# Types with const generics parameters.
--format=rust
_RNvMC0INtC8arrayvec8ArrayVechKj7b_E3new
<arrayvec::ArrayVec<u8, 123>>::new
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_8UnsignedKhb_E
<const_generic::Unsigned<11>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKs98_E
<const_generic::Signed<152>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKanb_E
<const_generic::Signed<-11>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb0_E
<const_generic::Bool<false>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb1_E
<const_generic::Bool<true>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc76_E
<const_generic::Char<'v'>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKca_E
<const_generic::Char<'\n'>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc2202_E
<const_generic::Char<'\u{2202}'>>
#
--format=rust
_RNvNvMCs4fqI2P2rA04_13const_genericINtB4_3FooKpE3foo3FOO
<const_generic::Foo<_>>::foo::FOO
#
# All of the tests above but in auto mode instead:
#
# Crate with a leading digit.
--format=auto
_RNvC6_123foo3bar
123foo::bar
# UTF-8 identifiers.
--format=auto
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
utf8_idents::საჭმელად_გემრიელი_სადილი
# Closure path elements.
--format=auto
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
cc::spawn::{closure#0}::{closure#0}
#
--format=auto
_RNCINkXs25_NgCsbmNqQUJIY6D_4core5sliceINyB9_4IterhENuNgNoBb_4iter8iterator8Iterator9rpositionNCNgNpB9_6memchr7memrchrs_0E0Bb_
<core::slice::Iter<u8> as core::iter::iterator::Iterator>::rposition::<core::slice::memchr::memrchr::{closure#1}>::{closure#0}
# dyn Trait ("trait object") types.
--format=auto
_RINbNbCskIICzLVDPPb_5alloc5alloc8box_freeDINbNiB4_5boxed5FnBoxuEp6OutputuEL_ECs1iopQbuBiw2_3std
alloc::alloc::box_free::<dyn alloc::boxed::FnBox<(), Output = ()>>
# Types with const generics parameters.
--format=auto
_RNvMC0INtC8arrayvec8ArrayVechKj7b_E3new
<arrayvec::ArrayVec<u8, 123>>::new
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_8UnsignedKhb_E
<const_generic::Unsigned<11>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKs98_E
<const_generic::Signed<152>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKanb_E
<const_generic::Signed<-11>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb0_E
<const_generic::Bool<false>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb1_E
<const_generic::Bool<true>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc76_E
<const_generic::Char<'v'>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKca_E
<const_generic::Char<'\n'>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc2202_E
<const_generic::Char<'\u{2202}'>>
#
--format=auto
_RNvNvMCs4fqI2P2rA04_13const_genericINtB4_3FooKpE3foo3FOO
<const_generic::Foo<_>>::foo::FOO
#
# Suffixes
#
--format=rust
_RNvMs0_NtCs5l0EXMQXRMU_21rustc_data_structures17obligation_forestINtB5_16ObligationForestNtNtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfill26PendingPredicateObligationE22register_obligation_atB1v_.llvm.8517020237817239694
<rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::register_obligation_at
--format=rust
_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h27f14859c664490dE.llvm.8091179795805947855
core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>
# old style rustc llvm thinlto
--format=rust
_ZN9backtrace3foo17hbb467fcdaea5d79bE.llvm.A5310EB9
backtrace::foo
--format=rust
_ZN9backtrace3foo17hbb467fcdaea5d79bE.llvm.A5310EB9@@16
backtrace::foo
# new style rustc llvm thinlto
--format=rust
_RC3foo.llvm.9D1C9369
foo
--format=rust
_RC3foo.llvm.9D1C9369@@16
foo
--format=rust
_RNvC9backtrace3foo.llvm.A5310EB9
backtrace::foo
|