[lld] r255357 - Treat unnamed symbols as locals.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 11 11:09:21 PST 2015


Author: rafael
Date: Fri Dec 11 13:09:21 2015
New Revision: 255357

URL: http://llvm.org/viewvc/llvm-project?rev=255357&view=rev
Log:
Treat unnamed symbols as locals.

There is work under way in llvm to avoid creating unnecessary names for
symbols. This makes lld capable of handling that.

Added:
    lld/trunk/test/ELF/Inputs/discard-merge-unnamed.o
    lld/trunk/test/ELF/discard-merge-unnamed.s
Modified:
    lld/trunk/ELF/OutputSections.cpp

Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=255357&r1=255356&r2=255357&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Fri Dec 11 13:09:21 2015
@@ -1181,7 +1181,7 @@ bool lld::elf2::shouldKeepInSymtab(const
   // * --discard-locals is used.
   // * The symbol is in a SHF_MERGE section, which is normally the reason for
   //   the assembler keeping the .L symbol.
-  if (!SymName.startswith(".L"))
+  if (!SymName.startswith(".L") && !SymName.empty())
     return true;
 
   if (Config->DiscardLocals)

Added: lld/trunk/test/ELF/Inputs/discard-merge-unnamed.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/discard-merge-unnamed.o?rev=255357&view=auto
==============================================================================
Binary files lld/trunk/test/ELF/Inputs/discard-merge-unnamed.o (added) and lld/trunk/test/ELF/Inputs/discard-merge-unnamed.o Fri Dec 11 13:09:21 2015 differ

Added: lld/trunk/test/ELF/discard-merge-unnamed.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/discard-merge-unnamed.s?rev=255357&view=auto
==============================================================================
--- lld/trunk/test/ELF/discard-merge-unnamed.s (added)
+++ lld/trunk/test/ELF/discard-merge-unnamed.s Fri Dec 11 13:09:21 2015
@@ -0,0 +1,16 @@
+// RUN: ld.lld %p/Inputs/discard-merge-unnamed.o -o %t2 -shared
+// RUN: llvm-readobj -t %t2 | FileCheck %s
+
+// Test that the unnamed symbol is SHF_MERGE is omitted.
+
+// CHECK:      Symbols [
+// CHECK-NEXT:   Symbol {
+// CHECK-NEXT:     Name:  (0)
+// CHECK-NEXT:     Value: 0x0
+// CHECK-NEXT:     Size: 0
+// CHECK-NEXT:     Binding: Local
+// CHECK-NEXT:     Type: None
+// CHECK-NEXT:     Other: 0
+// CHECK-NEXT:     Section: Undefined
+// CHECK-NEXT:   }
+// CHECK-NEXT: ]




More information about the llvm-commits mailing list