summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2019-09-30 18:13:48 +0000
committerNico Weber <nicolasweber@gmx.de>2019-09-30 18:13:48 +0000
commit2331cd69cd7812d13e68a84dc9e1189cb14cff55 (patch)
treee4abf6ae030e1d18c0913f1e404d8750da0c840e
parent367405008755640eac6114b18ec8c98be0cf5392 (diff)
downloadbcm5719-llvm-2331cd69cd7812d13e68a84dc9e1189cb14cff55.tar.gz
bcm5719-llvm-2331cd69cd7812d13e68a84dc9e1189cb14cff55.zip
Revert "[MC] Emit unused undefined symbol even if its binding is not set"
This reverts r373168. It caused PR43511. llvm-svn: 373242
-rw-r--r--lld/test/ELF/ppc64-abs64-dyn.s8
-rw-r--r--lld/test/ELF/ppc64-relocs.s4
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp3
-rw-r--r--llvm/test/MC/ELF/undef.s22
-rw-r--r--llvm/test/MC/ELF/weakref.s9
5 files changed, 9 insertions, 37 deletions
diff --git a/lld/test/ELF/ppc64-abs64-dyn.s b/lld/test/ELF/ppc64-abs64-dyn.s
index 45d10b28004..24976316c45 100644
--- a/lld/test/ELF/ppc64-abs64-dyn.s
+++ b/lld/test/ELF/ppc64-abs64-dyn.s
@@ -12,10 +12,10 @@
## FIXME the addend for offset 0x20000 should be TOC base+0x8000+1, not 0x80001.
# CHECK: .rela.dyn {
-# CHECK-NEXT: 0x303B8 R_PPC64_RELATIVE - 0x8001
-# CHECK-NEXT: 0x303C0 R_PPC64_RELATIVE - 0x303B9
-# CHECK-NEXT: 0x303C8 R_PPC64_ADDR64 external 0x1
-# CHECK-NEXT: 0x303D0 R_PPC64_ADDR64 global 0x1
+# CHECK-NEXT: 0x303B0 R_PPC64_RELATIVE - 0x8001
+# CHECK-NEXT: 0x303B8 R_PPC64_RELATIVE - 0x303B1
+# CHECK-NEXT: 0x303C0 R_PPC64_ADDR64 external 0x1
+# CHECK-NEXT: 0x303C8 R_PPC64_ADDR64 global 0x1
# CHECK-NEXT: }
.data
diff --git a/lld/test/ELF/ppc64-relocs.s b/lld/test/ELF/ppc64-relocs.s
index e3363b60488..0fe0edfc576 100644
--- a/lld/test/ELF/ppc64-relocs.s
+++ b/lld/test/ELF/ppc64-relocs.s
@@ -26,13 +26,13 @@ _start:
ld 1, .L1@toc@l(2)
# CHECK-LABEL: Disassembly of section .R_PPC64_TOC16_LO_DS:
-# CHECK: ld 1, -32760(2)
+# CHECK: ld 1, -32768(2)
.section .R_PPC64_TOC16_LO,"ax",@progbits
addi 1, 2, .L1@toc@l
# CHECK-LABEL: Disassembly of section .R_PPC64_TOC16_LO:
-# CHECK: addi 1, 2, -32760
+# CHECK: addi 1, 2, -32768
.section .R_PPC64_TOC16_HI,"ax",@progbits
addis 1, 2, .L1@toc@h
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index f8e93889344..6f160e491ce 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -615,6 +615,9 @@ bool ELFWriter::isInSymtab(const MCAsmLayout &Layout, const MCSymbolELF &Symbol,
return false;
}
+ if (Symbol.isUndefined() && !Symbol.isBindingSet())
+ return false;
+
if (Symbol.isTemporary())
return false;
diff --git a/llvm/test/MC/ELF/undef.s b/llvm/test/MC/ELF/undef.s
index 9d99b834ffd..f313d71369e 100644
--- a/llvm/test/MC/ELF/undef.s
+++ b/llvm/test/MC/ELF/undef.s
@@ -18,8 +18,6 @@
.text
movsd .Lsym8(%rip), %xmm1
-.hidden hidden
-
test2_a = undef
test2_b = undef + 1
@@ -43,17 +41,6 @@ test2_b = undef + 1
// CHECK-NEXT: Section: .rodata.str1.1
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
-// CHECK-NEXT: Name: hidden
-// CHECK-NEXT: Value: 0x0
-// CHECK-NEXT: Size: 0
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: None
-// CHECK-NEXT: Other [
-// CHECK-NEXT: STV_HIDDEN
-// CHECK-NEXT: ]
-// CHECK-NEXT: Section: Undefined
-// CHECK-NEXT: }
-// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: sym6
// CHECK-NEXT: Value: 0x0
// CHECK-NEXT: Size: 0
@@ -62,13 +49,4 @@ test2_b = undef + 1
// CHECK-NEXT: Other: 0
// CHECK-NEXT: Section: Undefined
// CHECK-NEXT: }
-// CHECK-NEXT: Symbol {
-// CHECK-NEXT: Name: undef
-// CHECK-NEXT: Value: 0x0
-// CHECK-NEXT: Size: 0
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: None
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: Undefined
-// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/llvm/test/MC/ELF/weakref.s b/llvm/test/MC/ELF/weakref.s
index bca8ec4f281..51905d8ad7c 100644
--- a/llvm/test/MC/ELF/weakref.s
+++ b/llvm/test/MC/ELF/weakref.s
@@ -125,15 +125,6 @@ bar15:
// CHECK-NEXT: Section: .text
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
-// CHECK-NEXT: Name: bar1
-// CHECK-NEXT: Value: 0x0
-// CHECK-NEXT: Size: 0
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: None
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: Undefined
-// CHECK-NEXT: }
-// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: bar10
// CHECK-NEXT: Value: 0x28
// CHECK-NEXT: Size: 0
OpenPOWER on IntegriCloud