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