diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -1519,7 +1519,7 @@ // The former can be exported but the latter cannot. defined->privateExtern = false; } else { - warn("cannot export hidden symbol " + symbolName + + warn("cannot export hidden symbol " + toString(*defined) + "\n>>> defined in " + toString(defined->getFile())); } } diff --git a/lld/test/MachO/demangle.s b/lld/test/MachO/demangle.s --- a/lld/test/MachO/demangle.s +++ b/lld/test/MachO/demangle.s @@ -1,15 +1,46 @@ # REQUIRES: x86 -# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o +# RUN: rm -rf %t; split-file %s %t -# RUN: not %lld %t.o -o /dev/null 2>&1 | FileCheck %s -# RUN: not %lld -demangle %t.o -o /dev/null 2>&1 | \ -# RUN: FileCheck --check-prefix=DEMANGLE %s +# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/undefined-symbol.s -o %t/undefined-symbol.o +# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/export-symbols.s -o %t/export-symbols.o -# CHECK: undefined symbol: __Z1fv -# DEMANGLE: undefined symbol: f() +# RUN: not %lld %t/undefined-symbol.o -o /dev/null 2>&1 | FileCheck --check-prefix=UNDEF %s +# RUN: not %lld -demangle %t/undefined-symbol.o -o /dev/null 2>&1 | \ +# RUN: FileCheck --check-prefix=DEMANGLE-UNDEF %s +# RUN: not %lld -exported_symbol __ZTIN3foo3bar4MethE -exported_symbol __ZTSN3foo3bar4MethE %t/export-symbols.o -o /dev/null 2>&1 | FileCheck --check-prefix=EXPORT %s +# RUN: not %lld -demangle -exported_symbol __ZTIN3foo3bar4MethE -exported_symbol __ZTSN3foo3bar4MethE %t/export-symbols.o -o /dev/null 2>&1 | FileCheck --check-prefix=DEMANGLE-EXPORT %s + +# UNDEF: undefined symbol: __Z1fv +# DEMANGLE-UNDEF: undefined symbol: f() + +# EXPORT: cannot export hidden symbol __ZTSN3foo3bar4MethE +# EXPORT: cannot export hidden symbol __ZTIN3foo3bar4MethE + +# DEMANGLE-EXPORT: cannot export hidden symbol typeinfo name for foo::bar::Meth +# DEMANGLE-EXPORT: cannot export hidden symbol typeinfo for foo::bar::Meth + +#--- undefined-symbol.s .globl _main _main: callq __Z1fv ret + + +#--- export-symbols.s +.globl _main +_main: + ret + +.globl __ZTIN3foo3bar4MethE +.weak_def_can_be_hidden __ZTIN3foo3bar4MethE +.private_extern __ZTIN3foo3bar4MethE +__ZTIN3foo3bar4MethE: + retq + +.globl __ZTSN3foo3bar4MethE +.weak_def_can_be_hidden __ZTSN3foo3bar4MethE +.private_extern __ZTSN3foo3bar4MethE +__ZTSN3foo3bar4MethE: + retq