[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