summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Relocations.cpp16
-rw-r--r--lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s2
-rw-r--r--lld/test/ELF/aarch64-fpic-adr_prel_lo21.s2
-rw-r--r--lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s2
-rw-r--r--lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s2
-rw-r--r--lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s2
-rw-r--r--lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s2
-rw-r--r--lld/test/ELF/arm-target1.s2
-rw-r--r--lld/test/ELF/copy-errors.s4
-rw-r--r--lld/test/ELF/copy-in-shared.s2
-rw-r--r--lld/test/ELF/copy-rel-corrupted.s2
-rw-r--r--lld/test/ELF/copy-rel-pie-error.s4
-rw-r--r--lld/test/ELF/dynamic-reloc-in-ro.s2
-rw-r--r--lld/test/ELF/eh-frame-dyn-rel.s2
14 files changed, 27 insertions, 19 deletions
diff --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index c414b6ee277..dca84e18bbe 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -374,7 +374,7 @@ template <class ELFT> static void addCopyRelSymbol(SharedSymbol<ELFT> *SS) {
// Copy relocation against zero-sized symbol doesn't make sense.
uintX_t SymSize = SS->template getSize<ELFT>();
if (SymSize == 0)
- fatal("cannot create a copy relocation for " + SS->getName());
+ fatal("cannot create a copy relocation for symbol " + SS->getName());
uintX_t Alignment = getAlignment(SS);
uintX_t Off = alignTo(Out<ELFT>::Bss->getSize(), Alignment);
@@ -401,6 +401,12 @@ template <class ELFT> static void addCopyRelSymbol(SharedSymbol<ELFT> *SS) {
}
template <class ELFT>
+static StringRef getLocalSymbolName(const elf::ObjectFile<ELFT> &File,
+ SymbolBody &Body) {
+ return File.getStringTable().data() + Body.getNameOffset();
+}
+
+template <class ELFT>
static RelExpr adjustExpr(const elf::ObjectFile<ELFT> &File, SymbolBody &Body,
bool IsWrite, RelExpr Expr, uint32_t Type,
const uint8_t *Data) {
@@ -422,12 +428,14 @@ static RelExpr adjustExpr(const elf::ObjectFile<ELFT> &File, SymbolBody &Body,
// only memory. We can hack around it if we are producing an executable and
// the refered symbol can be preemepted to refer to the executable.
if (Config->Shared || (Config->Pic && !isRelExpr(Expr))) {
+ StringRef Name = Body.isLocal() ? getLocalSymbolName(File, Body)
+ : Body.getName();
error("can't create dynamic relocation " + getRelName(Type) +
- " against readonly segment");
+ " against symbol " + Name);
return Expr;
}
if (Body.getVisibility() != STV_DEFAULT) {
- error("cannot preempt symbol");
+ error("cannot preempt symbol " + Body.getName());
return Expr;
}
if (Body.isObject()) {
@@ -461,7 +469,7 @@ static RelExpr adjustExpr(const elf::ObjectFile<ELFT> &File, SymbolBody &Body,
Body.NeedsCopyOrPltAddr = true;
return toPlt(Expr);
}
- error("symbol is missing type");
+ error("symbol " + Body.getName() + " is missing type");
return Expr;
}
diff --git a/lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s b/lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
index 7e0b6b83300..0b07ee186fe 100644
--- a/lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
+++ b/lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol dat
add x0, x0, :lo12:dat
.data
diff --git a/lld/test/ELF/aarch64-fpic-adr_prel_lo21.s b/lld/test/ELF/aarch64-fpic-adr_prel_lo21.s
index 501a724616e..f86bd9f25dd 100644
--- a/lld/test/ELF/aarch64-fpic-adr_prel_lo21.s
+++ b/lld/test/ELF/aarch64-fpic-adr_prel_lo21.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_LO21 against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_LO21 against symbol dat
adr x0, dat
.data
diff --git a/lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s b/lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
index 572ecffa6d7..b7e70ef86dd 100644
--- a/lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
+++ b/lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_PG_HI21 against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol dat
adrp x0, dat
.data
diff --git a/lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s b/lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
index 85772f10fcc..140d7994835 100644
--- a/lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
+++ b/lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_LDST32_ABS_LO12_NC against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_LDST32_ABS_LO12_NC against symbol dat
ldr s4, [x0, :lo12:dat]
.data
diff --git a/lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s b/lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
index d9f7b0c9ad1..ff5fb41b6fc 100644
--- a/lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
+++ b/lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_LDST64_ABS_LO12_NC against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_LDST64_ABS_LO12_NC against symbol dat
ldr x0, [x0, :lo12:dat]
.data
diff --git a/lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s b/lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
index 20e1bba49d1..a0ea37c30de 100644
--- a/lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
+++ b/lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
@@ -1,7 +1,7 @@
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
// RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_AARCH64_LDST8_ABS_LO12_NC against readonly segment
+// CHECK: can't create dynamic relocation R_AARCH64_LDST8_ABS_LO12_NC against symbol dat
ldrsb x0, [x1, :lo12:dat]
.data
diff --git a/lld/test/ELF/arm-target1.s b/lld/test/ELF/arm-target1.s
index 9982b600d02..09dec1cff0f 100644
--- a/lld/test/ELF/arm-target1.s
+++ b/lld/test/ELF/arm-target1.s
@@ -23,4 +23,4 @@
// RELATIVE: SYMBOL TABLE:
// RELATIVE: 00001004 .text 00000000 patatino
-// ABS: can't create dynamic relocation R_ARM_TARGET1 against readonly segment
+// ABS: can't create dynamic relocation R_ARM_TARGET1 against symbol patatino
diff --git a/lld/test/ELF/copy-errors.s b/lld/test/ELF/copy-errors.s
index 9d8b72ddb43..0767172919c 100644
--- a/lld/test/ELF/copy-errors.s
+++ b/lld/test/ELF/copy-errors.s
@@ -9,7 +9,7 @@ _start:
call bar
-// CHECK: cannot preempt symbol
+// CHECK: cannot preempt symbol bar
call zed
-// CHECK: symbol is missing type
+// CHECK: symbol zed is missing type
diff --git a/lld/test/ELF/copy-in-shared.s b/lld/test/ELF/copy-in-shared.s
index 4114d95fb10..8dde5a61fef 100644
--- a/lld/test/ELF/copy-in-shared.s
+++ b/lld/test/ELF/copy-in-shared.s
@@ -7,4 +7,4 @@
.quad foo
-// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
+// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
diff --git a/lld/test/ELF/copy-rel-corrupted.s b/lld/test/ELF/copy-rel-corrupted.s
index a3f72f71c1d..774334c7468 100644
--- a/lld/test/ELF/copy-rel-corrupted.s
+++ b/lld/test/ELF/copy-rel-corrupted.s
@@ -3,7 +3,7 @@
// RUN: ld.lld %t2.o -o %t2.so -shared
// RUN: not ld.lld %t.o %t2.so -o %t.exe 2>&1 | FileCheck %s
-// CHECK: cannot create a copy relocation for x
+// CHECK: cannot create a copy relocation for symbol x
.global _start
_start:
diff --git a/lld/test/ELF/copy-rel-pie-error.s b/lld/test/ELF/copy-rel-pie-error.s
index 1f427023baa..d64746bf260 100644
--- a/lld/test/ELF/copy-rel-pie-error.s
+++ b/lld/test/ELF/copy-rel-pie-error.s
@@ -3,8 +3,8 @@
// RUN: ld.lld %t2.o -o %t2.so -shared
// RUN: not ld.lld %t.o %t2.so -o %t.exe -pie 2>&1 | FileCheck %s
-// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
-// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
+// CHECK: can't create dynamic relocation R_X86_64_64 against symbol bar
+// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
.global _start
_start:
diff --git a/lld/test/ELF/dynamic-reloc-in-ro.s b/lld/test/ELF/dynamic-reloc-in-ro.s
index 2ef36f695fb..72ab49bf674 100644
--- a/lld/test/ELF/dynamic-reloc-in-ro.s
+++ b/lld/test/ELF/dynamic-reloc-in-ro.s
@@ -5,4 +5,4 @@
foo:
.quad foo
-// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
+// CHECK: can't create dynamic relocation R_X86_64_64 against symbol
diff --git a/lld/test/ELF/eh-frame-dyn-rel.s b/lld/test/ELF/eh-frame-dyn-rel.s
index 62d56951b2c..b17cdd41fce 100644
--- a/lld/test/ELF/eh-frame-dyn-rel.s
+++ b/lld/test/ELF/eh-frame-dyn-rel.s
@@ -7,4 +7,4 @@
.cfi_personality 0x8c, foo
.cfi_endproc
-// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
+// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
OpenPOWER on IntegriCloud