diff options
-rw-r--r-- | lld/ELF/Relocations.cpp | 16 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-add_abs_lo12_nc.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-adr_prel_lo21.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/arm-target1.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/copy-errors.s | 4 | ||||
-rw-r--r-- | lld/test/ELF/copy-in-shared.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/copy-rel-corrupted.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/copy-rel-pie-error.s | 4 | ||||
-rw-r--r-- | lld/test/ELF/dynamic-reloc-in-ro.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/eh-frame-dyn-rel.s | 2 |
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 |