forked from OSchip/llvm-project
[ELF] - Better diagnostic for "can't create dynamic relocation" error.
Patch improves message to show locations for "can't create dynamic relocation" error. Differential revision: https://reviews.llvm.org/D26548 llvm-svn: 287086
This commit is contained in:
parent
dc9bf8fab6
commit
f3c143188d
|
@ -445,8 +445,11 @@ static RelExpr adjustExpr(const elf::ObjectFile<ELFT> &File, SymbolBody &Body,
|
|||
// the refered symbol can be preemepted to refer to the executable.
|
||||
if (Config->Shared || (Config->Pic && !isRelExpr(Expr))) {
|
||||
StringRef Name = getSymbolName(File.getStringTable(), Body);
|
||||
error("can't create dynamic relocation " + getRelName(Type) + " against " +
|
||||
(Name.empty() ? "readonly segment" : "symbol " + Name));
|
||||
error(getLocation(S, RelOff) + ": can't create dynamic relocation " +
|
||||
getRelName(Type) + " against " +
|
||||
((Name.empty() ? "local symbol in readonly segment"
|
||||
: "symbol '" + Name + "'")) +
|
||||
" defined in " + getFilename(Body.File));
|
||||
return Expr;
|
||||
}
|
||||
if (Body.getVisibility() != STV_DEFAULT) {
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
add x0, x0, :lo12:dat
|
||||
.data
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_ADR_PREL_LO21 against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
adr x0, dat
|
||||
.data
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
adrp x0, dat
|
||||
.data
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_LDST32_ABS_LO12_NC against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
ldr s4, [x0, :lo12:dat]
|
||||
.data
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_LDST64_ABS_LO12_NC against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
ldr x0, [x0, :lo12:dat]
|
||||
.data
|
||||
|
|
|
@ -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 symbol dat
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_AARCH64_LDST8_ABS_LO12_NC against symbol 'dat' defined in {{.*}}.o
|
||||
|
||||
ldrsb x0, [x1, :lo12:dat]
|
||||
.data
|
||||
|
|
|
@ -29,4 +29,4 @@
|
|||
// RELATIVE: SYMBOL TABLE:
|
||||
// RELATIVE: 00001004 .text 00000000 patatino
|
||||
|
||||
// ABS: can't create dynamic relocation R_ARM_TARGET1 against symbol patatino
|
||||
// ABS: {{.*}}.o (.text+0x0): can't create dynamic relocation R_ARM_TARGET1 against symbol 'patatino' defined in {{.*}}.o
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
|
||||
.quad foo
|
||||
|
||||
// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_X86_64_64 against symbol 'foo' defined in {{.*}}.so
|
||||
|
|
|
@ -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 symbol bar
|
||||
// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_X86_64_64 against symbol 'bar' defined in {{.*}}.so
|
||||
// CHECK: {{.*}}.o (.text+0x8): can't create dynamic relocation R_X86_64_64 against symbol 'foo' defined in {{.*}}.so
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
foo:
|
||||
.quad foo
|
||||
|
||||
// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
|
||||
// CHECK: {{.*}}.o (.text+0x0): can't create dynamic relocation R_X86_64_64 against local symbol in readonly segment defined in {{.*}}.o
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
.cfi_personality 0x8c, foo
|
||||
.cfi_endproc
|
||||
|
||||
// CHECK: can't create dynamic relocation R_X86_64_64 against symbol foo
|
||||
// CHECK: {{.*}}.o (.eh_frame+0x12): can't create dynamic relocation R_X86_64_64 against symbol 'foo' defined in {{.*}}.o
|
||||
|
|
Loading…
Reference in New Issue