1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -t | FileCheck %s 2 3// Test that we produce the correct relocation. 4 5bar: 6 movl $bar, %edx # R_X86_64_32 7 movq $bar, %rdx # R_X86_64_32S 8 movq $bar, bar(%rip) # R_X86_64_32S 9 movl bar, %edx # R_X86_64_32S 10 movq bar, %rdx # R_X86_64_32S 11.long bar # R_X86_64_32 12 leaq foo@GOTTPOFF(%rip), %rax # R_X86_64_GOTTPOFF 13 leaq foo@TLSGD(%rip), %rax # R_X86_64_TLSGD 14 leaq foo@TPOFF(%rax), %rax # R_X86_64_TPOFF32 15 leaq foo@TLSLD(%rip), %rdi # R_X86_64_TLSLD 16 leaq foo@dtpoff(%rax), %rcx # R_X86_64_DTPOFF32 17 movabs foo@GOT, %rax # R_X86_64_GOT64 18 movabs foo@GOTOFF, %rax # R_X86_64_GOTOFF64 19 pushq $bar 20 movq foo(%rip), %rdx 21 leaq foo-bar(%r14),%r14 22 addq $bar,%rax # R_X86_64_32S 23 .quad foo@DTPOFF 24 movabsq $baz@TPOFF, %rax 25 26// CHECK: Section { 27// CHECK: Name: .rela.text 28// CHECK: Relocations [ 29// CHECK-NEXT: 0x1 R_X86_64_32 .text 30// CHECK-NEXT: 0x8 R_X86_64_32S .text 31// CHECK-NEXT: 0x13 R_X86_64_32S .text 32// CHECK-NEXT: 0x1A R_X86_64_32S .text 33// CHECK-NEXT: 0x22 R_X86_64_32S .text 34// CHECK-NEXT: 0x26 R_X86_64_32 .text 35// CHECK-NEXT: 0x2D R_X86_64_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC 36// CHECK-NEXT: 0x34 R_X86_64_TLSGD foo 0xFFFFFFFFFFFFFFFC 37// CHECK-NEXT: 0x3B R_X86_64_TPOFF32 foo 0x0 38// CHECK-NEXT: 0x42 R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC 39// CHECK-NEXT: 0x49 R_X86_64_DTPOFF32 foo 0x0 40// CHECK-NEXT: 0x4F R_X86_64_GOT64 foo 0x0 41// CHECK-NEXT: 0x59 R_X86_64_GOTOFF64 foo 0x0 42// CHECK-NEXT: 0x62 R_X86_64_32S .text 0x0 43// CHECK-NEXT: 0x69 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC 44// CHECK-NEXT: 0x70 R_X86_64_PC32 foo 0x70 45// CHECK-NEXT: 0x77 R_X86_64_32S .text 0x0 46// CHECK-NEXT: 0x7B R_X86_64_DTPOFF64 foo 0x0 47// CHECK-NEXT: 0x85 R_X86_64_TPOFF64 baz 0x0 48// CHECK-NEXT: ] 49// CHECK-NEXT: } 50 51// CHECK: Symbol { 52// CHECK: Name: .text (0) 53// CHECK-NEXT: Value: 54// CHECK-NEXT: Size: 55// CHECK-NEXT: Binding: Local 56// CHECK-NEXT: Type: Section 57// CHECK-NEXT: Other: 0 58// CHECK-NEXT: Section: .text (0x1) 59// CHECK-NEXT: } 60