| // REQUIRES: x86 |
| // RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o |
| // RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/relocation-copy.s -o %t2.o |
| // RUN: ld.lld -shared %t2.o -o %t.so |
| // RUN: not ld.lld -z nocopyreloc %t.o %t.so -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error: |
| |
| // CHECK: error: unresolvable relocation R_X86_64_32S against symbol 'x'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| // CHECK: error: unresolvable relocation R_X86_64_32S against symbol 'y'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| // CHECK: error: unresolvable relocation R_X86_64_32S against symbol 'z'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| // CHECK: error: unresolvable relocation R_X86_64_32 against symbol 'x'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| // CHECK: error: unresolvable relocation R_X86_64_32 against symbol 'y'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| // CHECK: error: unresolvable relocation R_X86_64_32 against symbol 'z'; recompile with -fPIC or remove '-z nocopyreloc' |
| // CHECK-NEXT: >>> defined in {{.*}}.so |
| // CHECK-NEXT: >>> referenced by {{.*}}.o:(.text+0x{{.*}}) |
| |
| .text |
| .global _start |
| _start: |
| movl $5, x |
| movl $7, y |
| movl $9, z |
| movl $x, %edx |
| movl $y, %edx |
| movl $z, %edx |