summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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, 37 insertions, 9 deletions
diff --git a/lld/test/ELF/ppc64-abs64-dyn.s b/lld/test/ELF/ppc64-abs64-dyn.s
index 24976316c45..45d10b28004 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: 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: 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: }
.data
diff --git a/lld/test/ELF/ppc64-relocs.s b/lld/test/ELF/ppc64-relocs.s
index 0fe0edfc576..e3363b60488 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, -32768(2)
+# CHECK: ld 1, -32760(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, -32768
+# CHECK: addi 1, 2, -32760
.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 6f160e491ce..f8e93889344 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -615,9 +615,6 @@ 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 f313d71369e..9d99b834ffd 100644
--- a/llvm/test/MC/ELF/undef.s
+++ b/llvm/test/MC/ELF/undef.s
@@ -18,6 +18,8 @@
.text
movsd .Lsym8(%rip), %xmm1
+.hidden hidden
+
test2_a = undef
test2_b = undef + 1
@@ -41,6 +43,17 @@ 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
@@ -49,4 +62,13 @@ 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 51905d8ad7c..bca8ec4f281 100644
--- a/llvm/test/MC/ELF/weakref.s
+++ b/llvm/test/MC/ELF/weakref.s
@@ -125,6 +125,15 @@ 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