[lld] 4c5b187 - [lld-macho] Demangle symbol names in export-symbol error messages when -demangle is specified.

Vy Nguyen via llvm-commits llvm-commits at lists.llvm.org
Mon May 16 16:48:15 PDT 2022


Author: Vy Nguyen
Date: 2022-05-16T19:48:03-04:00
New Revision: 4c5b187f2c065648799e109a6754917e642dc659

URL: https://github.com/llvm/llvm-project/commit/4c5b187f2c065648799e109a6754917e642dc659
DIFF: https://github.com/llvm/llvm-project/commit/4c5b187f2c065648799e109a6754917e642dc659.diff

LOG: [lld-macho] Demangle symbol names in export-symbol error messages when -demangle is specified.
PR/55512

Reviewed By: keith

Differential Revision: https://reviews.llvm.org/D125732

Added: 
    

Modified: 
    lld/MachO/Driver.cpp
    lld/test/MachO/demangle.s

Removed: 
    


################################################################################
diff  --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp
index 28a31d6dc53f4..bfbfb26bb6b54 100644
--- a/lld/MachO/Driver.cpp
+++ b/lld/MachO/Driver.cpp
@@ -1519,7 +1519,7 @@ bool macho::link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS,
                 // 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
index 0352f16210bab..14ebfa12b0f22 100644
--- 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


        


More information about the llvm-commits mailing list