1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | 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 pushq $bar 18 movq foo(%rip), %rdx 19 leaq foo-bar(%r14),%r14 20 addq $bar,%rax # R_X86_64_32S 21 22 23// CHECK: # Section 1 24// CHECK: (('sh_name', 0x00000006) # '.text' 25 26// CHECK: # Relocation 0 27// CHECK-NEXT: (('r_offset', 0x0000000000000001) 28// CHECK-NEXT: ('r_sym', 0x00000002) 29// CHECK-NEXT: ('r_type', 0x0000000a) 30// CHECK-NEXT: ('r_addend', 31 32// CHECK: # Relocation 1 33// CHECK-NEXT: (('r_offset', 0x0000000000000008) 34// CHECK-NEXT: ('r_sym', 0x00000002) 35// CHECK-NEXT: ('r_type', 0x0000000b) 36// CHECK-NEXT: ('r_addend', 37 38// CHECK: # Relocation 2 39// CHECK-NEXT: (('r_offset', 0x0000000000000013) 40// CHECK-NEXT: ('r_sym', 0x00000002) 41// CHECK-NEXT: ('r_type', 0x0000000b) 42// CHECK-NEXT: ('r_addend', 43 44// CHECK: # Relocation 3 45// CHECK-NEXT: (('r_offset', 0x000000000000001a) 46// CHECK-NEXT: ('r_sym', 0x00000002) 47// CHECK-NEXT: ('r_type', 0x0000000b) 48// CHECK-NEXT: ('r_addend', 49 50// CHECK: # Relocation 4 51// CHECK-NEXT: (('r_offset', 0x0000000000000022) 52// CHECK-NEXT: ('r_sym', 0x00000002) 53// CHECK-NEXT: ('r_type', 0x0000000b) 54// CHECK-NEXT: ('r_addend', 55 56// CHECK: # Relocation 5 57// CHECK-NEXT: (('r_offset', 0x0000000000000026) 58// CHECK-NEXT: ('r_sym', 0x00000002) 59// CHECK-NEXT: ('r_type', 0x0000000a) 60// CHECK-NEXT: ('r_addend', 61 62// CHECK: # Relocation 6 63// CHECK-NEXT: (('r_offset', 0x000000000000002d) 64// CHECK-NEXT: ('r_sym', 0x00000006) 65// CHECK-NEXT: ('r_type', 0x00000016) 66// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc) 67 68// CHECK: # Relocation 7 69// CHECK-NEXT: (('r_offset', 0x0000000000000034) 70// CHECK-NEXT: ('r_sym', 0x00000006) 71// CHECK-NEXT: ('r_type', 0x00000013) 72// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc) 73 74// CHECK: # Relocation 8 75// CHECK-NEXT: (('r_offset', 0x000000000000003b) 76// CHECK-NEXT: ('r_sym', 0x00000006) 77// CHECK-NEXT: ('r_type', 0x00000017) 78// CHECK-NEXT: ('r_addend', 0x0000000000000000) 79 80// CHECK: # Relocation 9 81// CHECK-NEXT: (('r_offset', 0x0000000000000042) 82// CHECK-NEXT: ('r_sym', 0x00000006) 83// CHECK-NEXT: ('r_type', 0x00000014) 84// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc) 85 86// CHECK: # Relocation 10 87// CHECK-NEXT: (('r_offset', 0x0000000000000049) 88// CHECK-NEXT: ('r_sym', 0x00000006) 89// CHECK-NEXT: ('r_type', 0x00000015) 90// CHECK-NEXT: ('r_addend', 0x0000000000000000) 91 92// CHECK: # Relocation 11 93// CHECK-NEXT: (('r_offset', 0x000000000000004e) 94// CHECK-NEXT: ('r_sym', 0x00000002) 95// CHECK-NEXT: ('r_type', 0x0000000b) 96// CHECK-NEXT: ('r_addend', 0x0000000000000000) 97 98// CHECK: # Relocation 12 99// CHECK-NEXT: (('r_offset', 0x0000000000000055) 100// CHECK-NEXT: ('r_sym', 0x00000006) 101// CHECK-NEXT: ('r_type', 0x00000002) 102// CHECK-NEXT: ('r_addend', 0xfffffffffffffffc) 103 104// CHECK: # Relocation 13 105// CHECK-NEXT: (('r_offset', 0x000000000000005c) 106// CHECK-NEXT: ('r_sym', 0x00000006) 107// CHECK-NEXT: ('r_type', 0x00000002) 108// CHECK-NEXT: ('r_addend', 0x000000000000005c) 109 110// CHECK: # Relocation 14 111// CHECK-NEXT: (('r_offset', 0x0000000000000063) 112// CHECK-NEXT: ('r_sym', 0x00000002) 113// CHECK-NEXT: ('r_type', 0x0000000b) 114// CHECK-NEXT: ('r_addend', 0x0000000000000000) 115 116// CHECK: # Symbol 2 117// CHECK: (('st_name', 0x00000000) # '' 118// CHECK: ('st_bind', 0x0) 119// CHECK: ('st_type', 0x3) 120// CHECK: ('st_other', 0x00) 121// CHECK: ('st_shndx', 0x0001) 122