1## Test that llvm-readobj/llvm-readelf shows proper relocation type 2## names and values for x86_64 target. 3 4# RUN: yaml2obj %s -o %t-x86_64.o 5# RUN: llvm-readobj -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=LLVM 6# RUN: llvm-readelf -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=GNU 7 8# LLVM: Type: R_X86_64_NONE (0) 9# LLVM: Type: R_X86_64_64 (1) 10# LLVM: Type: R_X86_64_PC32 (2) 11# LLVM: Type: R_X86_64_GOT32 (3) 12# LLVM: Type: R_X86_64_PLT32 (4) 13# LLVM: Type: R_X86_64_COPY (5) 14# LLVM: Type: R_X86_64_GLOB_DAT (6) 15# LLVM: Type: R_X86_64_JUMP_SLOT (7) 16# LLVM: Type: R_X86_64_RELATIVE (8) 17# LLVM: Type: R_X86_64_GOTPCREL (9) 18# LLVM: Type: R_X86_64_32 (10) 19# LLVM: Type: R_X86_64_32S (11) 20# LLVM: Type: R_X86_64_16 (12) 21# LLVM: Type: R_X86_64_PC16 (13) 22# LLVM: Type: R_X86_64_8 (14) 23# LLVM: Type: R_X86_64_PC8 (15) 24# LLVM: Type: R_X86_64_DTPMOD64 (16) 25# LLVM: Type: R_X86_64_DTPOFF64 (17) 26# LLVM: Type: R_X86_64_TPOFF64 (18) 27# LLVM: Type: R_X86_64_TLSGD (19) 28# LLVM: Type: R_X86_64_TLSLD (20) 29# LLVM: Type: R_X86_64_DTPOFF32 (21) 30# LLVM: Type: R_X86_64_GOTTPOFF (22) 31# LLVM: Type: R_X86_64_TPOFF32 (23) 32# LLVM: Type: R_X86_64_PC64 (24) 33# LLVM: Type: R_X86_64_GOTOFF64 (25) 34# LLVM: Type: R_X86_64_GOTPC32 (26) 35# LLVM: Type: R_X86_64_GOT64 (27) 36# LLVM: Type: R_X86_64_GOTPCREL64 (28) 37# LLVM: Type: R_X86_64_GOTPC64 (29) 38# LLVM: Type: R_X86_64_GOTPLT64 (30) 39# LLVM: Type: R_X86_64_PLTOFF64 (31) 40# LLVM: Type: R_X86_64_SIZE32 (32) 41# LLVM: Type: R_X86_64_SIZE64 (33) 42# LLVM: Type: R_X86_64_GOTPC32_TLSDESC (34) 43# LLVM: Type: R_X86_64_TLSDESC_CALL (35) 44# LLVM: Type: R_X86_64_TLSDESC (36) 45# LLVM: Type: R_X86_64_IRELATIVE (37) 46# LLVM: Type: R_X86_64_GOTPCRELX (41) 47# LLVM: Type: R_X86_64_REX_GOTPCRELX (42) 48 49# GNU: Relocation section '.rela.text' at offset 0x40 contains 40 entries: 50# GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend 51# GNU-NEXT: 0000000000000003 0000000100000000 R_X86_64_NONE 0000000000000000 foo + 0 52# GNU-NEXT: 000000000000000a 0000000100000001 R_X86_64_64 0000000000000000 foo + 0 53# GNU-NEXT: 0000000000000011 0000000100000002 R_X86_64_PC32 0000000000000000 foo + 0 54# GNU-NEXT: 0000000000000018 0000000100000003 R_X86_64_GOT32 0000000000000000 foo + 0 55# GNU-NEXT: 000000000000001f 0000000100000004 R_X86_64_PLT32 0000000000000000 foo + 0 56# GNU-NEXT: 0000000000000026 0000000100000005 R_X86_64_COPY 0000000000000000 foo + 0 57# GNU-NEXT: 000000000000002d 0000000100000006 R_X86_64_GLOB_DAT 0000000000000000 foo + 0 58# GNU-NEXT: 0000000000000034 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 foo + 0 59# GNU-NEXT: 000000000000003b 0000000100000008 R_X86_64_RELATIVE 0000000000000000 foo + 0 60# GNU-NEXT: 0000000000000042 0000000100000009 R_X86_64_GOTPCREL 0000000000000000 foo + 0 61# GNU-NEXT: 0000000000000049 000000010000000a R_X86_64_32 0000000000000000 foo + 0 62# GNU-NEXT: 0000000000000050 000000010000000b R_X86_64_32S 0000000000000000 foo + 0 63# GNU-NEXT: 0000000000000057 000000010000000c R_X86_64_16 0000000000000000 foo + 0 64# GNU-NEXT: 000000000000005e 000000010000000d R_X86_64_PC16 0000000000000000 foo + 0 65# GNU-NEXT: 0000000000000065 000000010000000e R_X86_64_8 0000000000000000 foo + 0 66# GNU-NEXT: 000000000000006c 000000010000000f R_X86_64_PC8 0000000000000000 foo + 0 67# GNU-NEXT: 0000000000000073 0000000100000010 R_X86_64_DTPMOD64 0000000000000000 foo + 0 68# GNU-NEXT: 000000000000007a 0000000100000011 R_X86_64_DTPOFF64 0000000000000000 foo + 0 69# GNU-NEXT: 0000000000000081 0000000100000012 R_X86_64_TPOFF64 0000000000000000 foo + 0 70# GNU-NEXT: 0000000000000088 0000000100000013 R_X86_64_TLSGD 0000000000000000 foo + 0 71# GNU-NEXT: 000000000000008f 0000000100000014 R_X86_64_TLSLD 0000000000000000 foo + 0 72# GNU-NEXT: 0000000000000096 0000000100000015 R_X86_64_DTPOFF32 0000000000000000 foo + 0 73# GNU-NEXT: 000000000000009d 0000000100000016 R_X86_64_GOTTPOFF 0000000000000000 foo + 0 74# GNU-NEXT: 00000000000000a4 0000000100000017 R_X86_64_TPOFF32 0000000000000000 foo + 0 75# GNU-NEXT: 00000000000000ab 0000000100000018 R_X86_64_PC64 0000000000000000 foo + 0 76# GNU-NEXT: 00000000000000b2 0000000100000019 R_X86_64_GOTOFF64 0000000000000000 foo + 0 77# GNU-NEXT: 00000000000000b9 000000010000001a R_X86_64_GOTPC32 0000000000000000 foo + 0 78# GNU-NEXT: 00000000000000c0 000000010000001b R_X86_64_GOT64 0000000000000000 foo + 0 79# GNU-NEXT: 00000000000000c7 000000010000001c R_X86_64_GOTPCREL64 0000000000000000 foo + 0 80# GNU-NEXT: 00000000000000ce 000000010000001d R_X86_64_GOTPC64 0000000000000000 foo + 0 81# GNU-NEXT: 00000000000000d5 000000010000001e R_X86_64_GOTPLT64 0000000000000000 foo + 0 82# GNU-NEXT: 00000000000000dc 000000010000001f R_X86_64_PLTOFF64 0000000000000000 foo + 0 83# GNU-NEXT: 00000000000000e3 0000000100000020 R_X86_64_SIZE32 0000000000000000 foo + 0 84# GNU-NEXT: 00000000000000ea 0000000100000021 R_X86_64_SIZE64 0000000000000000 foo + 0 85# GNU-NEXT: 00000000000000f1 0000000100000022 R_X86_64_GOTPC32_TLSDESC 0000000000000000 foo + 0 86# GNU-NEXT: 00000000000000f8 0000000100000023 R_X86_64_TLSDESC_CALL 0000000000000000 foo + 0 87# GNU-NEXT: 00000000000000ff 0000000100000024 R_X86_64_TLSDESC 0000000000000000 foo + 0 88# GNU-NEXT: 0000000000000106 0000000100000025 R_X86_64_IRELATIVE 0000000000000000 foo + 0 89# GNU-NEXT: 000000000000010a 0000000100000029 R_X86_64_GOTPCRELX 0000000000000000 foo + 0 90# GNU-NEXT: 000000000000010e 000000010000002a R_X86_64_REX_GOTPCRELX 0000000000000000 foo + 0 91 92--- !ELF 93FileHeader: 94 Class: ELFCLASS64 95 Data: ELFDATA2LSB 96 Type: ET_REL 97 Machine: EM_X86_64 98Sections: 99 - Name: .rela.text 100 Type: SHT_RELA 101 Relocations: 102 - Offset: 0x0000000000000003 103 Type: R_X86_64_NONE 104 Symbol: foo 105 - Offset: 0x000000000000000A 106 Type: R_X86_64_64 107 Symbol: foo 108 - Offset: 0x0000000000000011 109 Type: R_X86_64_PC32 110 Symbol: foo 111 - Offset: 0x0000000000000018 112 Type: R_X86_64_GOT32 113 Symbol: foo 114 - Offset: 0x000000000000001F 115 Type: R_X86_64_PLT32 116 Symbol: foo 117 - Offset: 0x0000000000000026 118 Type: R_X86_64_COPY 119 Symbol: foo 120 - Offset: 0x000000000000002D 121 Type: R_X86_64_GLOB_DAT 122 Symbol: foo 123 - Offset: 0x0000000000000034 124 Type: R_X86_64_JUMP_SLOT 125 Symbol: foo 126 - Offset: 0x000000000000003B 127 Type: R_X86_64_RELATIVE 128 Symbol: foo 129 - Offset: 0x0000000000000042 130 Type: R_X86_64_GOTPCREL 131 Symbol: foo 132 - Offset: 0x0000000000000049 133 Type: R_X86_64_32 134 Symbol: foo 135 - Offset: 0x0000000000000050 136 Type: R_X86_64_32S 137 Symbol: foo 138 - Offset: 0x0000000000000057 139 Type: R_X86_64_16 140 Symbol: foo 141 - Offset: 0x000000000000005E 142 Type: R_X86_64_PC16 143 Symbol: foo 144 - Offset: 0x0000000000000065 145 Type: R_X86_64_8 146 Symbol: foo 147 - Offset: 0x000000000000006C 148 Type: R_X86_64_PC8 149 Symbol: foo 150 - Offset: 0x0000000000000073 151 Type: R_X86_64_DTPMOD64 152 Symbol: foo 153 - Offset: 0x000000000000007A 154 Type: R_X86_64_DTPOFF64 155 Symbol: foo 156 - Offset: 0x0000000000000081 157 Type: R_X86_64_TPOFF64 158 Symbol: foo 159 - Offset: 0x0000000000000088 160 Type: R_X86_64_TLSGD 161 Symbol: foo 162 - Offset: 0x000000000000008F 163 Type: R_X86_64_TLSLD 164 Symbol: foo 165 - Offset: 0x0000000000000096 166 Type: R_X86_64_DTPOFF32 167 Symbol: foo 168 - Offset: 0x000000000000009D 169 Type: R_X86_64_GOTTPOFF 170 Symbol: foo 171 - Offset: 0x00000000000000A4 172 Type: R_X86_64_TPOFF32 173 Symbol: foo 174 - Offset: 0x00000000000000AB 175 Type: R_X86_64_PC64 176 Symbol: foo 177 - Offset: 0x00000000000000B2 178 Type: R_X86_64_GOTOFF64 179 Symbol: foo 180 - Offset: 0x00000000000000B9 181 Type: R_X86_64_GOTPC32 182 Symbol: foo 183 - Offset: 0x00000000000000C0 184 Type: R_X86_64_GOT64 185 Symbol: foo 186 - Offset: 0x00000000000000C7 187 Type: R_X86_64_GOTPCREL64 188 Symbol: foo 189 - Offset: 0x00000000000000CE 190 Type: R_X86_64_GOTPC64 191 Symbol: foo 192 - Offset: 0x00000000000000D5 193 Type: R_X86_64_GOTPLT64 194 Symbol: foo 195 - Offset: 0x00000000000000DC 196 Type: R_X86_64_PLTOFF64 197 Symbol: foo 198 - Offset: 0x00000000000000E3 199 Type: R_X86_64_SIZE32 200 Symbol: foo 201 - Offset: 0x00000000000000EA 202 Type: R_X86_64_SIZE64 203 Symbol: foo 204 - Offset: 0x00000000000000F1 205 Type: R_X86_64_GOTPC32_TLSDESC 206 Symbol: foo 207 - Offset: 0x00000000000000F8 208 Type: R_X86_64_TLSDESC_CALL 209 Symbol: foo 210 - Offset: 0x00000000000000FF 211 Type: R_X86_64_TLSDESC 212 Symbol: foo 213 - Offset: 0x0000000000000106 214 Type: R_X86_64_IRELATIVE 215 Symbol: foo 216 - Offset: 0x000000000000010A 217 Type: R_X86_64_GOTPCRELX 218 Symbol: foo 219 - Offset: 0x000000000000010E 220 Type: R_X86_64_REX_GOTPCRELX 221 Symbol: foo 222Symbols: 223 - Name: foo 224 Binding: STB_GLOBAL 225