xref: /llvm-project/lld/test/ELF/apply-dynamic-relocs.s (revision 9e1319df7e6508795e6f643c8b50306a5046d0b5)
18f10a5f4SFangrui Song# REQUIRES: x86
28f10a5f4SFangrui Song
38f10a5f4SFangrui Song## On RELA targets, --apply-dynamic-relocs writes addends to the relocated positions.
48f10a5f4SFangrui Song
58f10a5f4SFangrui Song# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
68f10a5f4SFangrui Song# RUN: ld.lld %t.o -o %t.so -shared --apply-dynamic-relocs
7*9e1319dfSFangrui Song# RUN: llvm-readobj -S --section-data -l -r %t.so | FileCheck -check-prefixes=CHECK,APPLY %s
88f10a5f4SFangrui Song
98f10a5f4SFangrui Song# RUN: ld.lld %t.o -o %t2.so -shared
10*9e1319dfSFangrui Song# RUN: llvm-readobj -S --section-data -l -r %t2.so | FileCheck -check-prefixes=CHECK,NOAPPLY %s
118f10a5f4SFangrui Song# RUN: ld.lld %t.o -o %t3.so -shared --no-apply-dynamic-relocs
128f10a5f4SFangrui Song# RUN: cmp %t2.so %t3.so
138f10a5f4SFangrui Song
148f10a5f4SFangrui Song# CHECK:        Name: .got
158f10a5f4SFangrui Song# CHECK:        Address: 0x[[GOT:.*]]
168f10a5f4SFangrui Song# CHECK:        SectionData (
17d4306e90SFangrui Song# APPLY-NEXT:     0000: 30220000 00000000                |
188f10a5f4SFangrui Song# NOAPPLY-NEXT:   0000: 00000000 00000000                |
198f10a5f4SFangrui Song# CHECK-NEXT:   )
208f10a5f4SFangrui Song
218f10a5f4SFangrui Song# CHECK:      Type: PT_DYNAMIC
22d4306e90SFangrui Song# CHECK-NEXT: Offset: 0x230
23*9e1319dfSFangrui Song# CHECK-NEXT: VirtualAddress: 0x[[DYNAMIC:.*]]
24*9e1319dfSFangrui Song# CHECK-NEXT: PhysicalAddress: 0x[[DYNAMIC]]
25*9e1319dfSFangrui Song
26*9e1319dfSFangrui Song# CHECK:      Relocations [
27*9e1319dfSFangrui Song# CHECK-NEXT:   Section ({{.*}}) .rela.dyn {
28*9e1319dfSFangrui Song# CHECK-NEXT:     0x[[GOT]] R_X86_64_RELATIVE - 0x[[DYNAMIC]]
29*9e1319dfSFangrui Song# CHECK-NEXT:   }
30*9e1319dfSFangrui Song# CHECK-NEXT: ]
318f10a5f4SFangrui Song
328f10a5f4SFangrui Songcmpq    $0, _DYNAMIC@GOTPCREL(%rip)
33