Skip to content

v0 mangled symbol doesn't match specification nor can it be demangled with rustfilt or c++filt #83611

Closed
@tmiasko

Description

@tmiasko

For program below, mangled symbol doesn't match specification nor can it be demangled with rustfilt or c++filt (with rust v0 support):

pub fn f<T>() {}

pub fn g() {
    f::<&dyn FnMut(&u8)>();
}
$  rustc --crate-type=lib -Zsymbol-mangling-version=v0 a.rs && nm ./liba.rlib | c++filt 
a.a.3a1fbbbh-cgu.0.rcgu.o:
0000000000000000 T _RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hEEG_p6OutputuEL_EB2_
0000000000000000 T a[cdfa367c26312547]::g
Partial derivation
"" <symbol-name>
"_R" [<decimal-number>] <path> [<instantiating-crate>]
"_R" <path> [<instantiating-crate>]
"_RI" <path> {<generic-arg>} "E" [<instantiating-crate>]
"_RIN" <namespace> <path> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINv" <path> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvC" <identifier> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvC" [<disambiguator>] <undisambiguated-identifier> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCs" <base-62-number> <undisambiguated-identifier> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_" <undisambiguated-identifier> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_" <decimal-number> ["_"] <bytes> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1" ["_"] <bytes> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1" <bytes> <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a" <identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a" [<disambiguator>] <undisambiguated-identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a" <undisambiguated-identifier> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a" <decimal-number> ["_"] <bytes> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1" ["_"] <bytes> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1" <bytes> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1f" {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1f" <type> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fR" [<lifetime>] <type> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fR" <type> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRD" <dyn-bounds> <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRD" <binder> {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG" <base-62-number> {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_" {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_" <path> {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_I" <path> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_IN" <namespace> <path> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INt" <path> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtN" <namespace> <path> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNt" <path> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtN" <namespace> <path> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNt" <path> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtC" <identifier> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtC" [<disambiguator>] <undisambiguated-identifier> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs" <base-62-number> <undisambiguated-identifier> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_" <undisambiguated-identifier> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_" <decimal-number> ["_"] <bytes> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4" ["_"] <bytes> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4" <bytes> <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core" <identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core" [<disambiguator>] <undisambiguated-identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core" <undisambiguated-identifier> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core" <decimal-number> ["_"] <bytes> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3" ["_"] <bytes> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3" <bytes> <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops" <identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops" [<disambiguator>] <undisambiguated-identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops" <undisambiguated-identifier> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops" <decimal-number> ["_"] <bytes> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8" ["_"] <bytes> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8" <bytes> <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function" <identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function" [<disambiguator>] <undisambiguated-identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function" <undisambiguated-identifier> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function" <decimal-number> ["_"] <bytes> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5" ["_"] <bytes> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5" <bytes> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMut" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMut" <type> {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutT" {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTR" [<lifetime>] <type> {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTR" <base-62-number> <type> {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_" <type> {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_" <basic-type> {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_h" {<type>} "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_h" "E" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hE" {<generic-arg>} "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hE" "E" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hEE" {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hEE" {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hEE" <path> {<dyn-trait-assoc-binding>} {<dyn-trait>} "E" <lifetime> {<generic-arg>} "E" [<instantiating-crate>]
"_RINvCshGpAVYOtgW1_1a1fRDG_INtNtNtCs4RZURTQcbNt_4core3ops8function5FnMutTRL0_hEEG_p6OutputuEL_EB2_" ?

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.requires-nightlyThis issue requires a nightly compiler in some way.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions