diff options
Diffstat (limited to 'test/ELF/copy-relocation-zero-abs-addr.s')
-rw-r--r-- | test/ELF/copy-relocation-zero-abs-addr.s | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/ELF/copy-relocation-zero-abs-addr.s b/test/ELF/copy-relocation-zero-abs-addr.s new file mode 100644 index 000000000..fae963e9b --- /dev/null +++ b/test/ELF/copy-relocation-zero-abs-addr.s @@ -0,0 +1,44 @@ +// REQUIRES: x86 +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/copy-relocation-zero-abs-addr.s -o %t.o +// RUN: ld.lld -shared -o %t2.so %t.o +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t3.o +// RUN: ld.lld %t2.so %t3.o -o %t4 +// RUN: llvm-readobj -symbols %t2.so | FileCheck -check-prefix=ABSADDR %s +// RUN: llvm-readobj -s -r --expand-relocs %t4 | FileCheck %s + +// This tests that symbols with absolute addresses are properly +// handled. Normal DSO symbols are handled as usual. + +.text +.globl _start +_start: + movl $5, foo + +// ABSADDR: Name: ver1 +// ABSADDR-NEXT: Value: 0x0 +// ABSADDR-NEXT: Size: 0 +// ABSADDR-NEXT: Binding: Global +// ABSADDR-NEXT: Type: None +// ABSADDR-NEXT: Other: 0 +// ABSADDR-NEXT: Section: Absolute (0xFFF1) +// ABSADDR-NEXT: } +// ABSADDR-NEXT: Symbol { +// ABSADDR-NEXT: Name: ver2 +// ABSADDR-NEXT: Value: 0x0 +// ABSADDR-NEXT: Size: 0 +// ABSADDR-NEXT: Binding: Global +// ABSADDR-NEXT: Type: None +// ABSADDR-NEXT: Other: 0 +// ABSADDR-NEXT: Section: Absolute (0xFFF1) +// ABSADDR-NEXT: } + +// CHECK: Relocations [ +// CHECK-NEXT: Section (5) .rela.dyn { +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: +// CHECK-NEXT: Type: R_X86_64_COPY +// CHECK-NEXT: Symbol: foo +// CHECK-NEXT: Addend: +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: ] |