1
44
45 package elf
46
47 import "strconv"
48
49
52
53
54 const (
55 EI_CLASS = 4
56 EI_DATA = 5
57 EI_VERSION = 6
58 EI_OSABI = 7
59 EI_ABIVERSION = 8
60 EI_PAD = 9
61 EI_NIDENT = 16
62 )
63
64
65 const ELFMAG = "\177ELF"
66
67
68 type Version byte
69
70 const (
71 EV_NONE Version = 0
72 EV_CURRENT Version = 1
73 )
74
75 var versionStrings = []intName{
76 {0, "EV_NONE"},
77 {1, "EV_CURRENT"},
78 }
79
80 func (i Version) String() string { return stringName(uint32(i), versionStrings, false) }
81 func (i Version) GoString() string { return stringName(uint32(i), versionStrings, true) }
82
83
84 type Class byte
85
86 const (
87 ELFCLASSNONE Class = 0
88 ELFCLASS32 Class = 1
89 ELFCLASS64 Class = 2
90 )
91
92 var classStrings = []intName{
93 {0, "ELFCLASSNONE"},
94 {1, "ELFCLASS32"},
95 {2, "ELFCLASS64"},
96 }
97
98 func (i Class) String() string { return stringName(uint32(i), classStrings, false) }
99 func (i Class) GoString() string { return stringName(uint32(i), classStrings, true) }
100
101
102 type Data byte
103
104 const (
105 ELFDATANONE Data = 0
106 ELFDATA2LSB Data = 1
107 ELFDATA2MSB Data = 2
108 )
109
110 var dataStrings = []intName{
111 {0, "ELFDATANONE"},
112 {1, "ELFDATA2LSB"},
113 {2, "ELFDATA2MSB"},
114 }
115
116 func (i Data) String() string { return stringName(uint32(i), dataStrings, false) }
117 func (i Data) GoString() string { return stringName(uint32(i), dataStrings, true) }
118
119
120 type OSABI byte
121
122 const (
123 ELFOSABI_NONE OSABI = 0
124 ELFOSABI_HPUX OSABI = 1
125 ELFOSABI_NETBSD OSABI = 2
126 ELFOSABI_LINUX OSABI = 3
127 ELFOSABI_HURD OSABI = 4
128 ELFOSABI_86OPEN OSABI = 5
129 ELFOSABI_SOLARIS OSABI = 6
130 ELFOSABI_AIX OSABI = 7
131 ELFOSABI_IRIX OSABI = 8
132 ELFOSABI_FREEBSD OSABI = 9
133 ELFOSABI_TRU64 OSABI = 10
134 ELFOSABI_MODESTO OSABI = 11
135 ELFOSABI_OPENBSD OSABI = 12
136 ELFOSABI_OPENVMS OSABI = 13
137 ELFOSABI_NSK OSABI = 14
138 ELFOSABI_AROS OSABI = 15
139 ELFOSABI_FENIXOS OSABI = 16
140 ELFOSABI_CLOUDABI OSABI = 17
141 ELFOSABI_ARM OSABI = 97
142 ELFOSABI_STANDALONE OSABI = 255
143 )
144
145 var osabiStrings = []intName{
146 {0, "ELFOSABI_NONE"},
147 {1, "ELFOSABI_HPUX"},
148 {2, "ELFOSABI_NETBSD"},
149 {3, "ELFOSABI_LINUX"},
150 {4, "ELFOSABI_HURD"},
151 {5, "ELFOSABI_86OPEN"},
152 {6, "ELFOSABI_SOLARIS"},
153 {7, "ELFOSABI_AIX"},
154 {8, "ELFOSABI_IRIX"},
155 {9, "ELFOSABI_FREEBSD"},
156 {10, "ELFOSABI_TRU64"},
157 {11, "ELFOSABI_MODESTO"},
158 {12, "ELFOSABI_OPENBSD"},
159 {13, "ELFOSABI_OPENVMS"},
160 {14, "ELFOSABI_NSK"},
161 {15, "ELFOSABI_AROS"},
162 {16, "ELFOSABI_FENIXOS"},
163 {17, "ELFOSABI_CLOUDABI"},
164 {97, "ELFOSABI_ARM"},
165 {255, "ELFOSABI_STANDALONE"},
166 }
167
168 func (i OSABI) String() string { return stringName(uint32(i), osabiStrings, false) }
169 func (i OSABI) GoString() string { return stringName(uint32(i), osabiStrings, true) }
170
171
172 type Type uint16
173
174 const (
175 ET_NONE Type = 0
176 ET_REL Type = 1
177 ET_EXEC Type = 2
178 ET_DYN Type = 3
179 ET_CORE Type = 4
180 ET_LOOS Type = 0xfe00
181 ET_HIOS Type = 0xfeff
182 ET_LOPROC Type = 0xff00
183 ET_HIPROC Type = 0xffff
184 )
185
186 var typeStrings = []intName{
187 {0, "ET_NONE"},
188 {1, "ET_REL"},
189 {2, "ET_EXEC"},
190 {3, "ET_DYN"},
191 {4, "ET_CORE"},
192 {0xfe00, "ET_LOOS"},
193 {0xfeff, "ET_HIOS"},
194 {0xff00, "ET_LOPROC"},
195 {0xffff, "ET_HIPROC"},
196 }
197
198 func (i Type) String() string { return stringName(uint32(i), typeStrings, false) }
199 func (i Type) GoString() string { return stringName(uint32(i), typeStrings, true) }
200
201
202 type Machine uint16
203
204 const (
205 EM_NONE Machine = 0
206 EM_M32 Machine = 1
207 EM_SPARC Machine = 2
208 EM_386 Machine = 3
209 EM_68K Machine = 4
210 EM_88K Machine = 5
211 EM_860 Machine = 7
212 EM_MIPS Machine = 8
213 EM_S370 Machine = 9
214 EM_MIPS_RS3_LE Machine = 10
215 EM_PARISC Machine = 15
216 EM_VPP500 Machine = 17
217 EM_SPARC32PLUS Machine = 18
218 EM_960 Machine = 19
219 EM_PPC Machine = 20
220 EM_PPC64 Machine = 21
221 EM_S390 Machine = 22
222 EM_V800 Machine = 36
223 EM_FR20 Machine = 37
224 EM_RH32 Machine = 38
225 EM_RCE Machine = 39
226 EM_ARM Machine = 40
227 EM_SH Machine = 42
228 EM_SPARCV9 Machine = 43
229 EM_TRICORE Machine = 44
230 EM_ARC Machine = 45
231 EM_H8_300 Machine = 46
232 EM_H8_300H Machine = 47
233 EM_H8S Machine = 48
234 EM_H8_500 Machine = 49
235 EM_IA_64 Machine = 50
236 EM_MIPS_X Machine = 51
237 EM_COLDFIRE Machine = 52
238 EM_68HC12 Machine = 53
239 EM_MMA Machine = 54
240 EM_PCP Machine = 55
241 EM_NCPU Machine = 56
242 EM_NDR1 Machine = 57
243 EM_STARCORE Machine = 58
244 EM_ME16 Machine = 59
245 EM_ST100 Machine = 60
246 EM_TINYJ Machine = 61
247 EM_X86_64 Machine = 62
248 EM_PDSP Machine = 63
249 EM_PDP10 Machine = 64
250 EM_PDP11 Machine = 65
251 EM_FX66 Machine = 66
252 EM_ST9PLUS Machine = 67
253 EM_ST7 Machine = 68
254 EM_68HC16 Machine = 69
255 EM_68HC11 Machine = 70
256 EM_68HC08 Machine = 71
257 EM_68HC05 Machine = 72
258 EM_SVX Machine = 73
259 EM_ST19 Machine = 74
260 EM_VAX Machine = 75
261 EM_CRIS Machine = 76
262 EM_JAVELIN Machine = 77
263 EM_FIREPATH Machine = 78
264 EM_ZSP Machine = 79
265 EM_MMIX Machine = 80
266 EM_HUANY Machine = 81
267 EM_PRISM Machine = 82
268 EM_AVR Machine = 83
269 EM_FR30 Machine = 84
270 EM_D10V Machine = 85
271 EM_D30V Machine = 86
272 EM_V850 Machine = 87
273 EM_M32R Machine = 88
274 EM_MN10300 Machine = 89
275 EM_MN10200 Machine = 90
276 EM_PJ Machine = 91
277 EM_OPENRISC Machine = 92
278 EM_ARC_COMPACT Machine = 93
279 EM_XTENSA Machine = 94
280 EM_VIDEOCORE Machine = 95
281 EM_TMM_GPP Machine = 96
282 EM_NS32K Machine = 97
283 EM_TPC Machine = 98
284 EM_SNP1K Machine = 99
285 EM_ST200 Machine = 100
286 EM_IP2K Machine = 101
287 EM_MAX Machine = 102
288 EM_CR Machine = 103
289 EM_F2MC16 Machine = 104
290 EM_MSP430 Machine = 105
291 EM_BLACKFIN Machine = 106
292 EM_SE_C33 Machine = 107
293 EM_SEP Machine = 108
294 EM_ARCA Machine = 109
295 EM_UNICORE Machine = 110
296 EM_EXCESS Machine = 111
297 EM_DXP Machine = 112
298 EM_ALTERA_NIOS2 Machine = 113
299 EM_CRX Machine = 114
300 EM_XGATE Machine = 115
301 EM_C166 Machine = 116
302 EM_M16C Machine = 117
303 EM_DSPIC30F Machine = 118
304 EM_CE Machine = 119
305 EM_M32C Machine = 120
306 EM_TSK3000 Machine = 131
307 EM_RS08 Machine = 132
308 EM_SHARC Machine = 133
309 EM_ECOG2 Machine = 134
310 EM_SCORE7 Machine = 135
311 EM_DSP24 Machine = 136
312 EM_VIDEOCORE3 Machine = 137
313 EM_LATTICEMICO32 Machine = 138
314 EM_SE_C17 Machine = 139
315 EM_TI_C6000 Machine = 140
316 EM_TI_C2000 Machine = 141
317 EM_TI_C5500 Machine = 142
318 EM_TI_ARP32 Machine = 143
319 EM_TI_PRU Machine = 144
320 EM_MMDSP_PLUS Machine = 160
321 EM_CYPRESS_M8C Machine = 161
322 EM_R32C Machine = 162
323 EM_TRIMEDIA Machine = 163
324 EM_QDSP6 Machine = 164
325 EM_8051 Machine = 165
326 EM_STXP7X Machine = 166
327 EM_NDS32 Machine = 167
328 EM_ECOG1 Machine = 168
329 EM_ECOG1X Machine = 168
330 EM_MAXQ30 Machine = 169
331 EM_XIMO16 Machine = 170
332 EM_MANIK Machine = 171
333 EM_CRAYNV2 Machine = 172
334 EM_RX Machine = 173
335 EM_METAG Machine = 174
336 EM_MCST_ELBRUS Machine = 175
337 EM_ECOG16 Machine = 176
338 EM_CR16 Machine = 177
339 EM_ETPU Machine = 178
340 EM_SLE9X Machine = 179
341 EM_L10M Machine = 180
342 EM_K10M Machine = 181
343 EM_AARCH64 Machine = 183
344 EM_AVR32 Machine = 185
345 EM_STM8 Machine = 186
346 EM_TILE64 Machine = 187
347 EM_TILEPRO Machine = 188
348 EM_MICROBLAZE Machine = 189
349 EM_CUDA Machine = 190
350 EM_TILEGX Machine = 191
351 EM_CLOUDSHIELD Machine = 192
352 EM_COREA_1ST Machine = 193
353 EM_COREA_2ND Machine = 194
354 EM_ARC_COMPACT2 Machine = 195
355 EM_OPEN8 Machine = 196
356 EM_RL78 Machine = 197
357 EM_VIDEOCORE5 Machine = 198
358 EM_78KOR Machine = 199
359 EM_56800EX Machine = 200
360 EM_BA1 Machine = 201
361 EM_BA2 Machine = 202
362 EM_XCORE Machine = 203
363 EM_MCHP_PIC Machine = 204
364 EM_INTEL205 Machine = 205
365 EM_INTEL206 Machine = 206
366 EM_INTEL207 Machine = 207
367 EM_INTEL208 Machine = 208
368 EM_INTEL209 Machine = 209
369 EM_KM32 Machine = 210
370 EM_KMX32 Machine = 211
371 EM_KMX16 Machine = 212
372 EM_KMX8 Machine = 213
373 EM_KVARC Machine = 214
374 EM_CDP Machine = 215
375 EM_COGE Machine = 216
376 EM_COOL Machine = 217
377 EM_NORC Machine = 218
378 EM_CSR_KALIMBA Machine = 219
379 EM_Z80 Machine = 220
380 EM_VISIUM Machine = 221
381 EM_FT32 Machine = 222
382 EM_MOXIE Machine = 223
383 EM_AMDGPU Machine = 224
384 EM_RISCV Machine = 243
385 EM_LANAI Machine = 244
386 EM_BPF Machine = 247
387 EM_LOONGARCH Machine = 258
388
389
390 EM_486 Machine = 6
391 EM_MIPS_RS4_BE Machine = 10
392 EM_ALPHA_STD Machine = 41
393 EM_ALPHA Machine = 0x9026
394 )
395
396 var machineStrings = []intName{
397 {0, "EM_NONE"},
398 {1, "EM_M32"},
399 {2, "EM_SPARC"},
400 {3, "EM_386"},
401 {4, "EM_68K"},
402 {5, "EM_88K"},
403 {7, "EM_860"},
404 {8, "EM_MIPS"},
405 {9, "EM_S370"},
406 {10, "EM_MIPS_RS3_LE"},
407 {15, "EM_PARISC"},
408 {17, "EM_VPP500"},
409 {18, "EM_SPARC32PLUS"},
410 {19, "EM_960"},
411 {20, "EM_PPC"},
412 {21, "EM_PPC64"},
413 {22, "EM_S390"},
414 {36, "EM_V800"},
415 {37, "EM_FR20"},
416 {38, "EM_RH32"},
417 {39, "EM_RCE"},
418 {40, "EM_ARM"},
419 {42, "EM_SH"},
420 {43, "EM_SPARCV9"},
421 {44, "EM_TRICORE"},
422 {45, "EM_ARC"},
423 {46, "EM_H8_300"},
424 {47, "EM_H8_300H"},
425 {48, "EM_H8S"},
426 {49, "EM_H8_500"},
427 {50, "EM_IA_64"},
428 {51, "EM_MIPS_X"},
429 {52, "EM_COLDFIRE"},
430 {53, "EM_68HC12"},
431 {54, "EM_MMA"},
432 {55, "EM_PCP"},
433 {56, "EM_NCPU"},
434 {57, "EM_NDR1"},
435 {58, "EM_STARCORE"},
436 {59, "EM_ME16"},
437 {60, "EM_ST100"},
438 {61, "EM_TINYJ"},
439 {62, "EM_X86_64"},
440 {63, "EM_PDSP"},
441 {64, "EM_PDP10"},
442 {65, "EM_PDP11"},
443 {66, "EM_FX66"},
444 {67, "EM_ST9PLUS"},
445 {68, "EM_ST7"},
446 {69, "EM_68HC16"},
447 {70, "EM_68HC11"},
448 {71, "EM_68HC08"},
449 {72, "EM_68HC05"},
450 {73, "EM_SVX"},
451 {74, "EM_ST19"},
452 {75, "EM_VAX"},
453 {76, "EM_CRIS"},
454 {77, "EM_JAVELIN"},
455 {78, "EM_FIREPATH"},
456 {79, "EM_ZSP"},
457 {80, "EM_MMIX"},
458 {81, "EM_HUANY"},
459 {82, "EM_PRISM"},
460 {83, "EM_AVR"},
461 {84, "EM_FR30"},
462 {85, "EM_D10V"},
463 {86, "EM_D30V"},
464 {87, "EM_V850"},
465 {88, "EM_M32R"},
466 {89, "EM_MN10300"},
467 {90, "EM_MN10200"},
468 {91, "EM_PJ"},
469 {92, "EM_OPENRISC"},
470 {93, "EM_ARC_COMPACT"},
471 {94, "EM_XTENSA"},
472 {95, "EM_VIDEOCORE"},
473 {96, "EM_TMM_GPP"},
474 {97, "EM_NS32K"},
475 {98, "EM_TPC"},
476 {99, "EM_SNP1K"},
477 {100, "EM_ST200"},
478 {101, "EM_IP2K"},
479 {102, "EM_MAX"},
480 {103, "EM_CR"},
481 {104, "EM_F2MC16"},
482 {105, "EM_MSP430"},
483 {106, "EM_BLACKFIN"},
484 {107, "EM_SE_C33"},
485 {108, "EM_SEP"},
486 {109, "EM_ARCA"},
487 {110, "EM_UNICORE"},
488 {111, "EM_EXCESS"},
489 {112, "EM_DXP"},
490 {113, "EM_ALTERA_NIOS2"},
491 {114, "EM_CRX"},
492 {115, "EM_XGATE"},
493 {116, "EM_C166"},
494 {117, "EM_M16C"},
495 {118, "EM_DSPIC30F"},
496 {119, "EM_CE"},
497 {120, "EM_M32C"},
498 {131, "EM_TSK3000"},
499 {132, "EM_RS08"},
500 {133, "EM_SHARC"},
501 {134, "EM_ECOG2"},
502 {135, "EM_SCORE7"},
503 {136, "EM_DSP24"},
504 {137, "EM_VIDEOCORE3"},
505 {138, "EM_LATTICEMICO32"},
506 {139, "EM_SE_C17"},
507 {140, "EM_TI_C6000"},
508 {141, "EM_TI_C2000"},
509 {142, "EM_TI_C5500"},
510 {143, "EM_TI_ARP32"},
511 {144, "EM_TI_PRU"},
512 {160, "EM_MMDSP_PLUS"},
513 {161, "EM_CYPRESS_M8C"},
514 {162, "EM_R32C"},
515 {163, "EM_TRIMEDIA"},
516 {164, "EM_QDSP6"},
517 {165, "EM_8051"},
518 {166, "EM_STXP7X"},
519 {167, "EM_NDS32"},
520 {168, "EM_ECOG1"},
521 {168, "EM_ECOG1X"},
522 {169, "EM_MAXQ30"},
523 {170, "EM_XIMO16"},
524 {171, "EM_MANIK"},
525 {172, "EM_CRAYNV2"},
526 {173, "EM_RX"},
527 {174, "EM_METAG"},
528 {175, "EM_MCST_ELBRUS"},
529 {176, "EM_ECOG16"},
530 {177, "EM_CR16"},
531 {178, "EM_ETPU"},
532 {179, "EM_SLE9X"},
533 {180, "EM_L10M"},
534 {181, "EM_K10M"},
535 {183, "EM_AARCH64"},
536 {185, "EM_AVR32"},
537 {186, "EM_STM8"},
538 {187, "EM_TILE64"},
539 {188, "EM_TILEPRO"},
540 {189, "EM_MICROBLAZE"},
541 {190, "EM_CUDA"},
542 {191, "EM_TILEGX"},
543 {192, "EM_CLOUDSHIELD"},
544 {193, "EM_COREA_1ST"},
545 {194, "EM_COREA_2ND"},
546 {195, "EM_ARC_COMPACT2"},
547 {196, "EM_OPEN8"},
548 {197, "EM_RL78"},
549 {198, "EM_VIDEOCORE5"},
550 {199, "EM_78KOR"},
551 {200, "EM_56800EX"},
552 {201, "EM_BA1"},
553 {202, "EM_BA2"},
554 {203, "EM_XCORE"},
555 {204, "EM_MCHP_PIC"},
556 {205, "EM_INTEL205"},
557 {206, "EM_INTEL206"},
558 {207, "EM_INTEL207"},
559 {208, "EM_INTEL208"},
560 {209, "EM_INTEL209"},
561 {210, "EM_KM32"},
562 {211, "EM_KMX32"},
563 {212, "EM_KMX16"},
564 {213, "EM_KMX8"},
565 {214, "EM_KVARC"},
566 {215, "EM_CDP"},
567 {216, "EM_COGE"},
568 {217, "EM_COOL"},
569 {218, "EM_NORC"},
570 {219, "EM_CSR_KALIMBA "},
571 {220, "EM_Z80 "},
572 {221, "EM_VISIUM "},
573 {222, "EM_FT32 "},
574 {223, "EM_MOXIE"},
575 {224, "EM_AMDGPU"},
576 {243, "EM_RISCV"},
577 {244, "EM_LANAI"},
578 {247, "EM_BPF"},
579 {258, "EM_LOONGARCH"},
580
581
582 {6, "EM_486"},
583 {10, "EM_MIPS_RS4_BE"},
584 {41, "EM_ALPHA_STD"},
585 {0x9026, "EM_ALPHA"},
586 }
587
588 func (i Machine) String() string { return stringName(uint32(i), machineStrings, false) }
589 func (i Machine) GoString() string { return stringName(uint32(i), machineStrings, true) }
590
591
592 type SectionIndex int
593
594 const (
595 SHN_UNDEF SectionIndex = 0
596 SHN_LORESERVE SectionIndex = 0xff00
597 SHN_LOPROC SectionIndex = 0xff00
598 SHN_HIPROC SectionIndex = 0xff1f
599 SHN_LOOS SectionIndex = 0xff20
600 SHN_HIOS SectionIndex = 0xff3f
601 SHN_ABS SectionIndex = 0xfff1
602 SHN_COMMON SectionIndex = 0xfff2
603 SHN_XINDEX SectionIndex = 0xffff
604 SHN_HIRESERVE SectionIndex = 0xffff
605 )
606
607 var shnStrings = []intName{
608 {0, "SHN_UNDEF"},
609 {0xff00, "SHN_LOPROC"},
610 {0xff20, "SHN_LOOS"},
611 {0xfff1, "SHN_ABS"},
612 {0xfff2, "SHN_COMMON"},
613 {0xffff, "SHN_XINDEX"},
614 }
615
616 func (i SectionIndex) String() string { return stringName(uint32(i), shnStrings, false) }
617 func (i SectionIndex) GoString() string { return stringName(uint32(i), shnStrings, true) }
618
619
620 type SectionType uint32
621
622 const (
623 SHT_NULL SectionType = 0
624 SHT_PROGBITS SectionType = 1
625 SHT_SYMTAB SectionType = 2
626 SHT_STRTAB SectionType = 3
627 SHT_RELA SectionType = 4
628 SHT_HASH SectionType = 5
629 SHT_DYNAMIC SectionType = 6
630 SHT_NOTE SectionType = 7
631 SHT_NOBITS SectionType = 8
632 SHT_REL SectionType = 9
633 SHT_SHLIB SectionType = 10
634 SHT_DYNSYM SectionType = 11
635 SHT_INIT_ARRAY SectionType = 14
636 SHT_FINI_ARRAY SectionType = 15
637 SHT_PREINIT_ARRAY SectionType = 16
638 SHT_GROUP SectionType = 17
639 SHT_SYMTAB_SHNDX SectionType = 18
640 SHT_LOOS SectionType = 0x60000000
641 SHT_GNU_ATTRIBUTES SectionType = 0x6ffffff5
642 SHT_GNU_HASH SectionType = 0x6ffffff6
643 SHT_GNU_LIBLIST SectionType = 0x6ffffff7
644 SHT_GNU_VERDEF SectionType = 0x6ffffffd
645 SHT_GNU_VERNEED SectionType = 0x6ffffffe
646 SHT_GNU_VERSYM SectionType = 0x6fffffff
647 SHT_HIOS SectionType = 0x6fffffff
648 SHT_LOPROC SectionType = 0x70000000
649 SHT_MIPS_ABIFLAGS SectionType = 0x7000002a
650 SHT_HIPROC SectionType = 0x7fffffff
651 SHT_LOUSER SectionType = 0x80000000
652 SHT_HIUSER SectionType = 0xffffffff
653 )
654
655 var shtStrings = []intName{
656 {0, "SHT_NULL"},
657 {1, "SHT_PROGBITS"},
658 {2, "SHT_SYMTAB"},
659 {3, "SHT_STRTAB"},
660 {4, "SHT_RELA"},
661 {5, "SHT_HASH"},
662 {6, "SHT_DYNAMIC"},
663 {7, "SHT_NOTE"},
664 {8, "SHT_NOBITS"},
665 {9, "SHT_REL"},
666 {10, "SHT_SHLIB"},
667 {11, "SHT_DYNSYM"},
668 {14, "SHT_INIT_ARRAY"},
669 {15, "SHT_FINI_ARRAY"},
670 {16, "SHT_PREINIT_ARRAY"},
671 {17, "SHT_GROUP"},
672 {18, "SHT_SYMTAB_SHNDX"},
673 {0x60000000, "SHT_LOOS"},
674 {0x6ffffff5, "SHT_GNU_ATTRIBUTES"},
675 {0x6ffffff6, "SHT_GNU_HASH"},
676 {0x6ffffff7, "SHT_GNU_LIBLIST"},
677 {0x6ffffffd, "SHT_GNU_VERDEF"},
678 {0x6ffffffe, "SHT_GNU_VERNEED"},
679 {0x6fffffff, "SHT_GNU_VERSYM"},
680 {0x70000000, "SHT_LOPROC"},
681 {0x7000002a, "SHT_MIPS_ABIFLAGS"},
682 {0x7fffffff, "SHT_HIPROC"},
683 {0x80000000, "SHT_LOUSER"},
684 {0xffffffff, "SHT_HIUSER"},
685 }
686
687 func (i SectionType) String() string { return stringName(uint32(i), shtStrings, false) }
688 func (i SectionType) GoString() string { return stringName(uint32(i), shtStrings, true) }
689
690
691 type SectionFlag uint32
692
693 const (
694 SHF_WRITE SectionFlag = 0x1
695 SHF_ALLOC SectionFlag = 0x2
696 SHF_EXECINSTR SectionFlag = 0x4
697 SHF_MERGE SectionFlag = 0x10
698 SHF_STRINGS SectionFlag = 0x20
699 SHF_INFO_LINK SectionFlag = 0x40
700 SHF_LINK_ORDER SectionFlag = 0x80
701 SHF_OS_NONCONFORMING SectionFlag = 0x100
702 SHF_GROUP SectionFlag = 0x200
703 SHF_TLS SectionFlag = 0x400
704 SHF_COMPRESSED SectionFlag = 0x800
705 SHF_MASKOS SectionFlag = 0x0ff00000
706 SHF_MASKPROC SectionFlag = 0xf0000000
707 )
708
709 var shfStrings = []intName{
710 {0x1, "SHF_WRITE"},
711 {0x2, "SHF_ALLOC"},
712 {0x4, "SHF_EXECINSTR"},
713 {0x10, "SHF_MERGE"},
714 {0x20, "SHF_STRINGS"},
715 {0x40, "SHF_INFO_LINK"},
716 {0x80, "SHF_LINK_ORDER"},
717 {0x100, "SHF_OS_NONCONFORMING"},
718 {0x200, "SHF_GROUP"},
719 {0x400, "SHF_TLS"},
720 {0x800, "SHF_COMPRESSED"},
721 }
722
723 func (i SectionFlag) String() string { return flagName(uint32(i), shfStrings, false) }
724 func (i SectionFlag) GoString() string { return flagName(uint32(i), shfStrings, true) }
725
726
727 type CompressionType int
728
729 const (
730 COMPRESS_ZLIB CompressionType = 1
731 COMPRESS_LOOS CompressionType = 0x60000000
732 COMPRESS_HIOS CompressionType = 0x6fffffff
733 COMPRESS_LOPROC CompressionType = 0x70000000
734 COMPRESS_HIPROC CompressionType = 0x7fffffff
735 )
736
737 var compressionStrings = []intName{
738 {0, "COMPRESS_ZLIB"},
739 {0x60000000, "COMPRESS_LOOS"},
740 {0x6fffffff, "COMPRESS_HIOS"},
741 {0x70000000, "COMPRESS_LOPROC"},
742 {0x7fffffff, "COMPRESS_HIPROC"},
743 }
744
745 func (i CompressionType) String() string { return stringName(uint32(i), compressionStrings, false) }
746 func (i CompressionType) GoString() string { return stringName(uint32(i), compressionStrings, true) }
747
748
749 type ProgType int
750
751 const (
752 PT_NULL ProgType = 0
753 PT_LOAD ProgType = 1
754 PT_DYNAMIC ProgType = 2
755 PT_INTERP ProgType = 3
756 PT_NOTE ProgType = 4
757 PT_SHLIB ProgType = 5
758 PT_PHDR ProgType = 6
759 PT_TLS ProgType = 7
760
761 PT_LOOS ProgType = 0x60000000
762
763 PT_GNU_EH_FRAME ProgType = 0x6474e550
764 PT_GNU_STACK ProgType = 0x6474e551
765 PT_GNU_RELRO ProgType = 0x6474e552
766 PT_GNU_PROPERTY ProgType = 0x6474e553
767 PT_GNU_MBIND_LO ProgType = 0x6474e555
768 PT_GNU_MBIND_HI ProgType = 0x6474f554
769
770 PT_PAX_FLAGS ProgType = 0x65041580
771
772 PT_OPENBSD_RANDOMIZE ProgType = 0x65a3dbe6
773 PT_OPENBSD_WXNEEDED ProgType = 0x65a3dbe7
774 PT_OPENBSD_BOOTDATA ProgType = 0x65a41be6
775
776 PT_SUNW_EH_FRAME ProgType = 0x6474e550
777 PT_SUNWSTACK ProgType = 0x6ffffffb
778
779 PT_HIOS ProgType = 0x6fffffff
780
781 PT_LOPROC ProgType = 0x70000000
782
783 PT_ARM_ARCHEXT ProgType = 0x70000000
784 PT_ARM_EXIDX ProgType = 0x70000001
785
786 PT_AARCH64_ARCHEXT ProgType = 0x70000000
787 PT_AARCH64_UNWIND ProgType = 0x70000001
788
789 PT_MIPS_REGINFO ProgType = 0x70000000
790 PT_MIPS_RTPROC ProgType = 0x70000001
791 PT_MIPS_OPTIONS ProgType = 0x70000002
792 PT_MIPS_ABIFLAGS ProgType = 0x70000003
793
794 PT_S390_PGSTE ProgType = 0x70000000
795
796 PT_HIPROC ProgType = 0x7fffffff
797 )
798
799 var ptStrings = []intName{
800 {0, "PT_NULL"},
801 {1, "PT_LOAD"},
802 {2, "PT_DYNAMIC"},
803 {3, "PT_INTERP"},
804 {4, "PT_NOTE"},
805 {5, "PT_SHLIB"},
806 {6, "PT_PHDR"},
807 {7, "PT_TLS"},
808 {0x60000000, "PT_LOOS"},
809 {0x6474e550, "PT_GNU_EH_FRAME"},
810 {0x6474e551, "PT_GNU_STACK"},
811 {0x6474e552, "PT_GNU_RELRO"},
812 {0x6474e553, "PT_GNU_PROPERTY"},
813 {0x65041580, "PT_PAX_FLAGS"},
814 {0x65a3dbe6, "PT_OPENBSD_RANDOMIZE"},
815 {0x65a3dbe7, "PT_OPENBSD_WXNEEDED"},
816 {0x65a41be6, "PT_OPENBSD_BOOTDATA"},
817 {0x6ffffffb, "PT_SUNWSTACK"},
818 {0x6fffffff, "PT_HIOS"},
819 {0x70000000, "PT_LOPROC"},
820
821
822 {0x7fffffff, "PT_HIPROC"},
823 }
824
825 func (i ProgType) String() string { return stringName(uint32(i), ptStrings, false) }
826 func (i ProgType) GoString() string { return stringName(uint32(i), ptStrings, true) }
827
828
829 type ProgFlag uint32
830
831 const (
832 PF_X ProgFlag = 0x1
833 PF_W ProgFlag = 0x2
834 PF_R ProgFlag = 0x4
835 PF_MASKOS ProgFlag = 0x0ff00000
836 PF_MASKPROC ProgFlag = 0xf0000000
837 )
838
839 var pfStrings = []intName{
840 {0x1, "PF_X"},
841 {0x2, "PF_W"},
842 {0x4, "PF_R"},
843 }
844
845 func (i ProgFlag) String() string { return flagName(uint32(i), pfStrings, false) }
846 func (i ProgFlag) GoString() string { return flagName(uint32(i), pfStrings, true) }
847
848
849 type DynTag int
850
851 const (
852 DT_NULL DynTag = 0
853 DT_NEEDED DynTag = 1
854 DT_PLTRELSZ DynTag = 2
855 DT_PLTGOT DynTag = 3
856 DT_HASH DynTag = 4
857 DT_STRTAB DynTag = 5
858 DT_SYMTAB DynTag = 6
859 DT_RELA DynTag = 7
860 DT_RELASZ DynTag = 8
861 DT_RELAENT DynTag = 9
862 DT_STRSZ DynTag = 10
863 DT_SYMENT DynTag = 11
864 DT_INIT DynTag = 12
865 DT_FINI DynTag = 13
866 DT_SONAME DynTag = 14
867 DT_RPATH DynTag = 15
868 DT_SYMBOLIC DynTag = 16
869 DT_REL DynTag = 17
870 DT_RELSZ DynTag = 18
871 DT_RELENT DynTag = 19
872 DT_PLTREL DynTag = 20
873 DT_DEBUG DynTag = 21
874 DT_TEXTREL DynTag = 22
875 DT_JMPREL DynTag = 23
876 DT_BIND_NOW DynTag = 24
877 DT_INIT_ARRAY DynTag = 25
878 DT_FINI_ARRAY DynTag = 26
879 DT_INIT_ARRAYSZ DynTag = 27
880 DT_FINI_ARRAYSZ DynTag = 28
881 DT_RUNPATH DynTag = 29
882 DT_FLAGS DynTag = 30
883 DT_ENCODING DynTag = 32
888 DT_PREINIT_ARRAY DynTag = 32
889 DT_PREINIT_ARRAYSZ DynTag = 33
890 DT_SYMTAB_SHNDX DynTag = 34
891
892 DT_LOOS DynTag = 0x6000000d
893 DT_HIOS DynTag = 0x6ffff000
894
895 DT_VALRNGLO DynTag = 0x6ffffd00
896 DT_GNU_PRELINKED DynTag = 0x6ffffdf5
897 DT_GNU_CONFLICTSZ DynTag = 0x6ffffdf6
898 DT_GNU_LIBLISTSZ DynTag = 0x6ffffdf7
899 DT_CHECKSUM DynTag = 0x6ffffdf8
900 DT_PLTPADSZ DynTag = 0x6ffffdf9
901 DT_MOVEENT DynTag = 0x6ffffdfa
902 DT_MOVESZ DynTag = 0x6ffffdfb
903 DT_FEATURE DynTag = 0x6ffffdfc
904 DT_POSFLAG_1 DynTag = 0x6ffffdfd
905 DT_SYMINSZ DynTag = 0x6ffffdfe
906 DT_SYMINENT DynTag = 0x6ffffdff
907 DT_VALRNGHI DynTag = 0x6ffffdff
908
909 DT_ADDRRNGLO DynTag = 0x6ffffe00
910 DT_GNU_HASH DynTag = 0x6ffffef5
911 DT_TLSDESC_PLT DynTag = 0x6ffffef6
912 DT_TLSDESC_GOT DynTag = 0x6ffffef7
913 DT_GNU_CONFLICT DynTag = 0x6ffffef8
914 DT_GNU_LIBLIST DynTag = 0x6ffffef9
915 DT_CONFIG DynTag = 0x6ffffefa
916 DT_DEPAUDIT DynTag = 0x6ffffefb
917 DT_AUDIT DynTag = 0x6ffffefc
918 DT_PLTPAD DynTag = 0x6ffffefd
919 DT_MOVETAB DynTag = 0x6ffffefe
920 DT_SYMINFO DynTag = 0x6ffffeff
921 DT_ADDRRNGHI DynTag = 0x6ffffeff
922
923 DT_VERSYM DynTag = 0x6ffffff0
924 DT_RELACOUNT DynTag = 0x6ffffff9
925 DT_RELCOUNT DynTag = 0x6ffffffa
926 DT_FLAGS_1 DynTag = 0x6ffffffb
927 DT_VERDEF DynTag = 0x6ffffffc
928 DT_VERDEFNUM DynTag = 0x6ffffffd
929 DT_VERNEED DynTag = 0x6ffffffe
930 DT_VERNEEDNUM DynTag = 0x6fffffff
931
932 DT_LOPROC DynTag = 0x70000000
933
934 DT_MIPS_RLD_VERSION DynTag = 0x70000001
935 DT_MIPS_TIME_STAMP DynTag = 0x70000002
936 DT_MIPS_ICHECKSUM DynTag = 0x70000003
937 DT_MIPS_IVERSION DynTag = 0x70000004
938 DT_MIPS_FLAGS DynTag = 0x70000005
939 DT_MIPS_BASE_ADDRESS DynTag = 0x70000006
940 DT_MIPS_MSYM DynTag = 0x70000007
941 DT_MIPS_CONFLICT DynTag = 0x70000008
942 DT_MIPS_LIBLIST DynTag = 0x70000009
943 DT_MIPS_LOCAL_GOTNO DynTag = 0x7000000a
944 DT_MIPS_CONFLICTNO DynTag = 0x7000000b
945 DT_MIPS_LIBLISTNO DynTag = 0x70000010
946 DT_MIPS_SYMTABNO DynTag = 0x70000011
947 DT_MIPS_UNREFEXTNO DynTag = 0x70000012
948 DT_MIPS_GOTSYM DynTag = 0x70000013
949 DT_MIPS_HIPAGENO DynTag = 0x70000014
950 DT_MIPS_RLD_MAP DynTag = 0x70000016
951 DT_MIPS_DELTA_CLASS DynTag = 0x70000017
952 DT_MIPS_DELTA_CLASS_NO DynTag = 0x70000018
953 DT_MIPS_DELTA_INSTANCE DynTag = 0x70000019
954 DT_MIPS_DELTA_INSTANCE_NO DynTag = 0x7000001a
955 DT_MIPS_DELTA_RELOC DynTag = 0x7000001b
956 DT_MIPS_DELTA_RELOC_NO DynTag = 0x7000001c
957 DT_MIPS_DELTA_SYM DynTag = 0x7000001d
958 DT_MIPS_DELTA_SYM_NO DynTag = 0x7000001e
959 DT_MIPS_DELTA_CLASSSYM DynTag = 0x70000020
960 DT_MIPS_DELTA_CLASSSYM_NO DynTag = 0x70000021
961 DT_MIPS_CXX_FLAGS DynTag = 0x70000022
962 DT_MIPS_PIXIE_INIT DynTag = 0x70000023
963 DT_MIPS_SYMBOL_LIB DynTag = 0x70000024
964 DT_MIPS_LOCALPAGE_GOTIDX DynTag = 0x70000025
965 DT_MIPS_LOCAL_GOTIDX DynTag = 0x70000026
966 DT_MIPS_HIDDEN_GOTIDX DynTag = 0x70000027
967 DT_MIPS_PROTECTED_GOTIDX DynTag = 0x70000028
968 DT_MIPS_OPTIONS DynTag = 0x70000029
969 DT_MIPS_INTERFACE DynTag = 0x7000002a
970 DT_MIPS_DYNSTR_ALIGN DynTag = 0x7000002b
971 DT_MIPS_INTERFACE_SIZE DynTag = 0x7000002c
972 DT_MIPS_RLD_TEXT_RESOLVE_ADDR DynTag = 0x7000002d
973 DT_MIPS_PERF_SUFFIX DynTag = 0x7000002e
974 DT_MIPS_COMPACT_SIZE DynTag = 0x7000002f
975 DT_MIPS_GP_VALUE DynTag = 0x70000030
976 DT_MIPS_AUX_DYNAMIC DynTag = 0x70000031
977 DT_MIPS_PLTGOT DynTag = 0x70000032
978 DT_MIPS_RWPLT DynTag = 0x70000034
979 DT_MIPS_RLD_MAP_REL DynTag = 0x70000035
980
981 DT_PPC_GOT DynTag = 0x70000000
982 DT_PPC_OPT DynTag = 0x70000001
983
984 DT_PPC64_GLINK DynTag = 0x70000000
985 DT_PPC64_OPD DynTag = 0x70000001
986 DT_PPC64_OPDSZ DynTag = 0x70000002
987 DT_PPC64_OPT DynTag = 0x70000003
988
989 DT_SPARC_REGISTER DynTag = 0x70000001
990
991 DT_AUXILIARY DynTag = 0x7ffffffd
992 DT_USED DynTag = 0x7ffffffe
993 DT_FILTER DynTag = 0x7fffffff
994
995 DT_HIPROC DynTag = 0x7fffffff
996 )
997
998 var dtStrings = []intName{
999 {0, "DT_NULL"},
1000 {1, "DT_NEEDED"},
1001 {2, "DT_PLTRELSZ"},
1002 {3, "DT_PLTGOT"},
1003 {4, "DT_HASH"},
1004 {5, "DT_STRTAB"},
1005 {6, "DT_SYMTAB"},
1006 {7, "DT_RELA"},
1007 {8, "DT_RELASZ"},
1008 {9, "DT_RELAENT"},
1009 {10, "DT_STRSZ"},
1010 {11, "DT_SYMENT"},
1011 {12, "DT_INIT"},
1012 {13, "DT_FINI"},
1013 {14, "DT_SONAME"},
1014 {15, "DT_RPATH"},
1015 {16, "DT_SYMBOLIC"},
1016 {17, "DT_REL"},
1017 {18, "DT_RELSZ"},
1018 {19, "DT_RELENT"},
1019 {20, "DT_PLTREL"},
1020 {21, "DT_DEBUG"},
1021 {22, "DT_TEXTREL"},
1022 {23, "DT_JMPREL"},
1023 {24, "DT_BIND_NOW"},
1024 {25, "DT_INIT_ARRAY"},
1025 {26, "DT_FINI_ARRAY"},
1026 {27, "DT_INIT_ARRAYSZ"},
1027 {28, "DT_FINI_ARRAYSZ"},
1028 {29, "DT_RUNPATH"},
1029 {30, "DT_FLAGS"},
1030 {32, "DT_ENCODING"},
1031 {32, "DT_PREINIT_ARRAY"},
1032 {33, "DT_PREINIT_ARRAYSZ"},
1033 {34, "DT_SYMTAB_SHNDX"},
1034 {0x6000000d, "DT_LOOS"},
1035 {0x6ffff000, "DT_HIOS"},
1036 {0x6ffffd00, "DT_VALRNGLO"},
1037 {0x6ffffdf5, "DT_GNU_PRELINKED"},
1038 {0x6ffffdf6, "DT_GNU_CONFLICTSZ"},
1039 {0x6ffffdf7, "DT_GNU_LIBLISTSZ"},
1040 {0x6ffffdf8, "DT_CHECKSUM"},
1041 {0x6ffffdf9, "DT_PLTPADSZ"},
1042 {0x6ffffdfa, "DT_MOVEENT"},
1043 {0x6ffffdfb, "DT_MOVESZ"},
1044 {0x6ffffdfc, "DT_FEATURE"},
1045 {0x6ffffdfd, "DT_POSFLAG_1"},
1046 {0x6ffffdfe, "DT_SYMINSZ"},
1047 {0x6ffffdff, "DT_SYMINENT"},
1048 {0x6ffffdff, "DT_VALRNGHI"},
1049 {0x6ffffe00, "DT_ADDRRNGLO"},
1050 {0x6ffffef5, "DT_GNU_HASH"},
1051 {0x6ffffef6, "DT_TLSDESC_PLT"},
1052 {0x6ffffef7, "DT_TLSDESC_GOT"},
1053 {0x6ffffef8, "DT_GNU_CONFLICT"},
1054 {0x6ffffef9, "DT_GNU_LIBLIST"},
1055 {0x6ffffefa, "DT_CONFIG"},
1056 {0x6ffffefb, "DT_DEPAUDIT"},
1057 {0x6ffffefc, "DT_AUDIT"},
1058 {0x6ffffefd, "DT_PLTPAD"},
1059 {0x6ffffefe, "DT_MOVETAB"},
1060 {0x6ffffeff, "DT_SYMINFO"},
1061 {0x6ffffeff, "DT_ADDRRNGHI"},
1062 {0x6ffffff0, "DT_VERSYM"},
1063 {0x6ffffff9, "DT_RELACOUNT"},
1064 {0x6ffffffa, "DT_RELCOUNT"},
1065 {0x6ffffffb, "DT_FLAGS_1"},
1066 {0x6ffffffc, "DT_VERDEF"},
1067 {0x6ffffffd, "DT_VERDEFNUM"},
1068 {0x6ffffffe, "DT_VERNEED"},
1069 {0x6fffffff, "DT_VERNEEDNUM"},
1070 {0x70000000, "DT_LOPROC"},
1071
1072
1073 {0x7ffffffd, "DT_AUXILIARY"},
1074 {0x7ffffffe, "DT_USED"},
1075 {0x7fffffff, "DT_FILTER"},
1076 }
1077
1078 func (i DynTag) String() string { return stringName(uint32(i), dtStrings, false) }
1079 func (i DynTag) GoString() string { return stringName(uint32(i), dtStrings, true) }
1080
1081
1082 type DynFlag int
1083
1084 const (
1085 DF_ORIGIN DynFlag = 0x0001
1088 DF_SYMBOLIC DynFlag = 0x0002
1089 DF_TEXTREL DynFlag = 0x0004
1090 DF_BIND_NOW DynFlag = 0x0008
1094 DF_STATIC_TLS DynFlag = 0x0010
1097 )
1098
1099 var dflagStrings = []intName{
1100 {0x0001, "DF_ORIGIN"},
1101 {0x0002, "DF_SYMBOLIC"},
1102 {0x0004, "DF_TEXTREL"},
1103 {0x0008, "DF_BIND_NOW"},
1104 {0x0010, "DF_STATIC_TLS"},
1105 }
1106
1107 func (i DynFlag) String() string { return flagName(uint32(i), dflagStrings, false) }
1108 func (i DynFlag) GoString() string { return flagName(uint32(i), dflagStrings, true) }
1109
1110
1111 type NType int
1112
1113 const (
1114 NT_PRSTATUS NType = 1
1115 NT_FPREGSET NType = 2
1116 NT_PRPSINFO NType = 3
1117 )
1118
1119 var ntypeStrings = []intName{
1120 {1, "NT_PRSTATUS"},
1121 {2, "NT_FPREGSET"},
1122 {3, "NT_PRPSINFO"},
1123 }
1124
1125 func (i NType) String() string { return stringName(uint32(i), ntypeStrings, false) }
1126 func (i NType) GoString() string { return stringName(uint32(i), ntypeStrings, true) }
1127
1128
1129 type SymBind int
1130
1131 const (
1132 STB_LOCAL SymBind = 0
1133 STB_GLOBAL SymBind = 1
1134 STB_WEAK SymBind = 2
1135 STB_LOOS SymBind = 10
1136 STB_HIOS SymBind = 12
1137 STB_LOPROC SymBind = 13
1138 STB_HIPROC SymBind = 15
1139 )
1140
1141 var stbStrings = []intName{
1142 {0, "STB_LOCAL"},
1143 {1, "STB_GLOBAL"},
1144 {2, "STB_WEAK"},
1145 {10, "STB_LOOS"},
1146 {12, "STB_HIOS"},
1147 {13, "STB_LOPROC"},
1148 {15, "STB_HIPROC"},
1149 }
1150
1151 func (i SymBind) String() string { return stringName(uint32(i), stbStrings, false) }
1152 func (i SymBind) GoString() string { return stringName(uint32(i), stbStrings, true) }
1153
1154
1155 type SymType int
1156
1157 const (
1158 STT_NOTYPE SymType = 0
1159 STT_OBJECT SymType = 1
1160 STT_FUNC SymType = 2
1161 STT_SECTION SymType = 3
1162 STT_FILE SymType = 4
1163 STT_COMMON SymType = 5
1164 STT_TLS SymType = 6
1165 STT_LOOS SymType = 10
1166 STT_HIOS SymType = 12
1167 STT_LOPROC SymType = 13
1168 STT_HIPROC SymType = 15
1169 )
1170
1171 var sttStrings = []intName{
1172 {0, "STT_NOTYPE"},
1173 {1, "STT_OBJECT"},
1174 {2, "STT_FUNC"},
1175 {3, "STT_SECTION"},
1176 {4, "STT_FILE"},
1177 {5, "STT_COMMON"},
1178 {6, "STT_TLS"},
1179 {10, "STT_LOOS"},
1180 {12, "STT_HIOS"},
1181 {13, "STT_LOPROC"},
1182 {15, "STT_HIPROC"},
1183 }
1184
1185 func (i SymType) String() string { return stringName(uint32(i), sttStrings, false) }
1186 func (i SymType) GoString() string { return stringName(uint32(i), sttStrings, true) }
1187
1188
1189 type SymVis int
1190
1191 const (
1192 STV_DEFAULT SymVis = 0x0
1193 STV_INTERNAL SymVis = 0x1
1194 STV_HIDDEN SymVis = 0x2
1195 STV_PROTECTED SymVis = 0x3
1196 )
1197
1198 var stvStrings = []intName{
1199 {0x0, "STV_DEFAULT"},
1200 {0x1, "STV_INTERNAL"},
1201 {0x2, "STV_HIDDEN"},
1202 {0x3, "STV_PROTECTED"},
1203 }
1204
1205 func (i SymVis) String() string { return stringName(uint32(i), stvStrings, false) }
1206 func (i SymVis) GoString() string { return stringName(uint32(i), stvStrings, true) }
1207
1208
1211
1212
1213 type R_X86_64 int
1214
1215 const (
1216 R_X86_64_NONE R_X86_64 = 0
1217 R_X86_64_64 R_X86_64 = 1
1218 R_X86_64_PC32 R_X86_64 = 2
1219 R_X86_64_GOT32 R_X86_64 = 3
1220 R_X86_64_PLT32 R_X86_64 = 4
1221 R_X86_64_COPY R_X86_64 = 5
1222 R_X86_64_GLOB_DAT R_X86_64 = 6
1223 R_X86_64_JMP_SLOT R_X86_64 = 7
1224 R_X86_64_RELATIVE R_X86_64 = 8
1225 R_X86_64_GOTPCREL R_X86_64 = 9
1226 R_X86_64_32 R_X86_64 = 10
1227 R_X86_64_32S R_X86_64 = 11
1228 R_X86_64_16 R_X86_64 = 12
1229 R_X86_64_PC16 R_X86_64 = 13
1230 R_X86_64_8 R_X86_64 = 14
1231 R_X86_64_PC8 R_X86_64 = 15
1232 R_X86_64_DTPMOD64 R_X86_64 = 16
1233 R_X86_64_DTPOFF64 R_X86_64 = 17
1234 R_X86_64_TPOFF64 R_X86_64 = 18
1235 R_X86_64_TLSGD R_X86_64 = 19
1236 R_X86_64_TLSLD R_X86_64 = 20
1237 R_X86_64_DTPOFF32 R_X86_64 = 21
1238 R_X86_64_GOTTPOFF R_X86_64 = 22
1239 R_X86_64_TPOFF32 R_X86_64 = 23
1240 R_X86_64_PC64 R_X86_64 = 24
1241 R_X86_64_GOTOFF64 R_X86_64 = 25
1242 R_X86_64_GOTPC32 R_X86_64 = 26
1243 R_X86_64_GOT64 R_X86_64 = 27
1244 R_X86_64_GOTPCREL64 R_X86_64 = 28
1245 R_X86_64_GOTPC64 R_X86_64 = 29
1246 R_X86_64_GOTPLT64 R_X86_64 = 30
1247 R_X86_64_PLTOFF64 R_X86_64 = 31
1248 R_X86_64_SIZE32 R_X86_64 = 32
1249 R_X86_64_SIZE64 R_X86_64 = 33
1250 R_X86_64_GOTPC32_TLSDESC R_X86_64 = 34
1251 R_X86_64_TLSDESC_CALL R_X86_64 = 35
1252 R_X86_64_TLSDESC R_X86_64 = 36
1253 R_X86_64_IRELATIVE R_X86_64 = 37
1254 R_X86_64_RELATIVE64 R_X86_64 = 38
1255 R_X86_64_PC32_BND R_X86_64 = 39
1256 R_X86_64_PLT32_BND R_X86_64 = 40
1257 R_X86_64_GOTPCRELX R_X86_64 = 41
1258 R_X86_64_REX_GOTPCRELX R_X86_64 = 42
1259 )
1260
1261 var rx86_64Strings = []intName{
1262 {0, "R_X86_64_NONE"},
1263 {1, "R_X86_64_64"},
1264 {2, "R_X86_64_PC32"},
1265 {3, "R_X86_64_GOT32"},
1266 {4, "R_X86_64_PLT32"},
1267 {5, "R_X86_64_COPY"},
1268 {6, "R_X86_64_GLOB_DAT"},
1269 {7, "R_X86_64_JMP_SLOT"},
1270 {8, "R_X86_64_RELATIVE"},
1271 {9, "R_X86_64_GOTPCREL"},
1272 {10, "R_X86_64_32"},
1273 {11, "R_X86_64_32S"},
1274 {12, "R_X86_64_16"},
1275 {13, "R_X86_64_PC16"},
1276 {14, "R_X86_64_8"},
1277 {15, "R_X86_64_PC8"},
1278 {16, "R_X86_64_DTPMOD64"},
1279 {17, "R_X86_64_DTPOFF64"},
1280 {18, "R_X86_64_TPOFF64"},
1281 {19, "R_X86_64_TLSGD"},
1282 {20, "R_X86_64_TLSLD"},
1283 {21, "R_X86_64_DTPOFF32"},
1284 {22, "R_X86_64_GOTTPOFF"},
1285 {23, "R_X86_64_TPOFF32"},
1286 {24, "R_X86_64_PC64"},
1287 {25, "R_X86_64_GOTOFF64"},
1288 {26, "R_X86_64_GOTPC32"},
1289 {27, "R_X86_64_GOT64"},
1290 {28, "R_X86_64_GOTPCREL64"},
1291 {29, "R_X86_64_GOTPC64"},
1292 {30, "R_X86_64_GOTPLT64"},
1293 {31, "R_X86_64_PLTOFF64"},
1294 {32, "R_X86_64_SIZE32"},
1295 {33, "R_X86_64_SIZE64"},
1296 {34, "R_X86_64_GOTPC32_TLSDESC"},
1297 {35, "R_X86_64_TLSDESC_CALL"},
1298 {36, "R_X86_64_TLSDESC"},
1299 {37, "R_X86_64_IRELATIVE"},
1300 {38, "R_X86_64_RELATIVE64"},
1301 {39, "R_X86_64_PC32_BND"},
1302 {40, "R_X86_64_PLT32_BND"},
1303 {41, "R_X86_64_GOTPCRELX"},
1304 {42, "R_X86_64_REX_GOTPCRELX"},
1305 }
1306
1307 func (i R_X86_64) String() string { return stringName(uint32(i), rx86_64Strings, false) }
1308 func (i R_X86_64) GoString() string { return stringName(uint32(i), rx86_64Strings, true) }
1309
1310
1311 type R_AARCH64 int
1312
1313 const (
1314 R_AARCH64_NONE R_AARCH64 = 0
1315 R_AARCH64_P32_ABS32 R_AARCH64 = 1
1316 R_AARCH64_P32_ABS16 R_AARCH64 = 2
1317 R_AARCH64_P32_PREL32 R_AARCH64 = 3
1318 R_AARCH64_P32_PREL16 R_AARCH64 = 4
1319 R_AARCH64_P32_MOVW_UABS_G0 R_AARCH64 = 5
1320 R_AARCH64_P32_MOVW_UABS_G0_NC R_AARCH64 = 6
1321 R_AARCH64_P32_MOVW_UABS_G1 R_AARCH64 = 7
1322 R_AARCH64_P32_MOVW_SABS_G0 R_AARCH64 = 8
1323 R_AARCH64_P32_LD_PREL_LO19 R_AARCH64 = 9
1324 R_AARCH64_P32_ADR_PREL_LO21 R_AARCH64 = 10
1325 R_AARCH64_P32_ADR_PREL_PG_HI21 R_AARCH64 = 11
1326 R_AARCH64_P32_ADD_ABS_LO12_NC R_AARCH64 = 12
1327 R_AARCH64_P32_LDST8_ABS_LO12_NC R_AARCH64 = 13
1328 R_AARCH64_P32_LDST16_ABS_LO12_NC R_AARCH64 = 14
1329 R_AARCH64_P32_LDST32_ABS_LO12_NC R_AARCH64 = 15
1330 R_AARCH64_P32_LDST64_ABS_LO12_NC R_AARCH64 = 16
1331 R_AARCH64_P32_LDST128_ABS_LO12_NC R_AARCH64 = 17
1332 R_AARCH64_P32_TSTBR14 R_AARCH64 = 18
1333 R_AARCH64_P32_CONDBR19 R_AARCH64 = 19
1334 R_AARCH64_P32_JUMP26 R_AARCH64 = 20
1335 R_AARCH64_P32_CALL26 R_AARCH64 = 21
1336 R_AARCH64_P32_GOT_LD_PREL19 R_AARCH64 = 25
1337 R_AARCH64_P32_ADR_GOT_PAGE R_AARCH64 = 26
1338 R_AARCH64_P32_LD32_GOT_LO12_NC R_AARCH64 = 27
1339 R_AARCH64_P32_TLSGD_ADR_PAGE21 R_AARCH64 = 81
1340 R_AARCH64_P32_TLSGD_ADD_LO12_NC R_AARCH64 = 82
1341 R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 103
1342 R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC R_AARCH64 = 104
1343 R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 105
1344 R_AARCH64_P32_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 106
1345 R_AARCH64_P32_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 107
1346 R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 108
1347 R_AARCH64_P32_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 109
1348 R_AARCH64_P32_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 110
1349 R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 111
1350 R_AARCH64_P32_TLSDESC_LD_PREL19 R_AARCH64 = 122
1351 R_AARCH64_P32_TLSDESC_ADR_PREL21 R_AARCH64 = 123
1352 R_AARCH64_P32_TLSDESC_ADR_PAGE21 R_AARCH64 = 124
1353 R_AARCH64_P32_TLSDESC_LD32_LO12_NC R_AARCH64 = 125
1354 R_AARCH64_P32_TLSDESC_ADD_LO12_NC R_AARCH64 = 126
1355 R_AARCH64_P32_TLSDESC_CALL R_AARCH64 = 127
1356 R_AARCH64_P32_COPY R_AARCH64 = 180
1357 R_AARCH64_P32_GLOB_DAT R_AARCH64 = 181
1358 R_AARCH64_P32_JUMP_SLOT R_AARCH64 = 182
1359 R_AARCH64_P32_RELATIVE R_AARCH64 = 183
1360 R_AARCH64_P32_TLS_DTPMOD R_AARCH64 = 184
1361 R_AARCH64_P32_TLS_DTPREL R_AARCH64 = 185
1362 R_AARCH64_P32_TLS_TPREL R_AARCH64 = 186
1363 R_AARCH64_P32_TLSDESC R_AARCH64 = 187
1364 R_AARCH64_P32_IRELATIVE R_AARCH64 = 188
1365 R_AARCH64_NULL R_AARCH64 = 256
1366 R_AARCH64_ABS64 R_AARCH64 = 257
1367 R_AARCH64_ABS32 R_AARCH64 = 258
1368 R_AARCH64_ABS16 R_AARCH64 = 259
1369 R_AARCH64_PREL64 R_AARCH64 = 260
1370 R_AARCH64_PREL32 R_AARCH64 = 261
1371 R_AARCH64_PREL16 R_AARCH64 = 262
1372 R_AARCH64_MOVW_UABS_G0 R_AARCH64 = 263
1373 R_AARCH64_MOVW_UABS_G0_NC R_AARCH64 = 264
1374 R_AARCH64_MOVW_UABS_G1 R_AARCH64 = 265
1375 R_AARCH64_MOVW_UABS_G1_NC R_AARCH64 = 266
1376 R_AARCH64_MOVW_UABS_G2 R_AARCH64 = 267
1377 R_AARCH64_MOVW_UABS_G2_NC R_AARCH64 = 268
1378 R_AARCH64_MOVW_UABS_G3 R_AARCH64 = 269
1379 R_AARCH64_MOVW_SABS_G0 R_AARCH64 = 270
1380 R_AARCH64_MOVW_SABS_G1 R_AARCH64 = 271
1381 R_AARCH64_MOVW_SABS_G2 R_AARCH64 = 272
1382 R_AARCH64_LD_PREL_LO19 R_AARCH64 = 273
1383 R_AARCH64_ADR_PREL_LO21 R_AARCH64 = 274
1384 R_AARCH64_ADR_PREL_PG_HI21 R_AARCH64 = 275
1385 R_AARCH64_ADR_PREL_PG_HI21_NC R_AARCH64 = 276
1386 R_AARCH64_ADD_ABS_LO12_NC R_AARCH64 = 277
1387 R_AARCH64_LDST8_ABS_LO12_NC R_AARCH64 = 278
1388 R_AARCH64_TSTBR14 R_AARCH64 = 279
1389 R_AARCH64_CONDBR19 R_AARCH64 = 280
1390 R_AARCH64_JUMP26 R_AARCH64 = 282
1391 R_AARCH64_CALL26 R_AARCH64 = 283
1392 R_AARCH64_LDST16_ABS_LO12_NC R_AARCH64 = 284
1393 R_AARCH64_LDST32_ABS_LO12_NC R_AARCH64 = 285
1394 R_AARCH64_LDST64_ABS_LO12_NC R_AARCH64 = 286
1395 R_AARCH64_LDST128_ABS_LO12_NC R_AARCH64 = 299
1396 R_AARCH64_GOT_LD_PREL19 R_AARCH64 = 309
1397 R_AARCH64_LD64_GOTOFF_LO15 R_AARCH64 = 310
1398 R_AARCH64_ADR_GOT_PAGE R_AARCH64 = 311
1399 R_AARCH64_LD64_GOT_LO12_NC R_AARCH64 = 312
1400 R_AARCH64_LD64_GOTPAGE_LO15 R_AARCH64 = 313
1401 R_AARCH64_TLSGD_ADR_PREL21 R_AARCH64 = 512
1402 R_AARCH64_TLSGD_ADR_PAGE21 R_AARCH64 = 513
1403 R_AARCH64_TLSGD_ADD_LO12_NC R_AARCH64 = 514
1404 R_AARCH64_TLSGD_MOVW_G1 R_AARCH64 = 515
1405 R_AARCH64_TLSGD_MOVW_G0_NC R_AARCH64 = 516
1406 R_AARCH64_TLSLD_ADR_PREL21 R_AARCH64 = 517
1407 R_AARCH64_TLSLD_ADR_PAGE21 R_AARCH64 = 518
1408 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 R_AARCH64 = 539
1409 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC R_AARCH64 = 540
1410 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 541
1411 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC R_AARCH64 = 542
1412 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 543
1413 R_AARCH64_TLSLE_MOVW_TPREL_G2 R_AARCH64 = 544
1414 R_AARCH64_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 545
1415 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC R_AARCH64 = 546
1416 R_AARCH64_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 547
1417 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 548
1418 R_AARCH64_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 549
1419 R_AARCH64_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 550
1420 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 551
1421 R_AARCH64_TLSDESC_LD_PREL19 R_AARCH64 = 560
1422 R_AARCH64_TLSDESC_ADR_PREL21 R_AARCH64 = 561
1423 R_AARCH64_TLSDESC_ADR_PAGE21 R_AARCH64 = 562
1424 R_AARCH64_TLSDESC_LD64_LO12_NC R_AARCH64 = 563
1425 R_AARCH64_TLSDESC_ADD_LO12_NC R_AARCH64 = 564
1426 R_AARCH64_TLSDESC_OFF_G1 R_AARCH64 = 565
1427 R_AARCH64_TLSDESC_OFF_G0_NC R_AARCH64 = 566
1428 R_AARCH64_TLSDESC_LDR R_AARCH64 = 567
1429 R_AARCH64_TLSDESC_ADD R_AARCH64 = 568
1430 R_AARCH64_TLSDESC_CALL R_AARCH64 = 569
1431 R_AARCH64_TLSLE_LDST128_TPREL_LO12 R_AARCH64 = 570
1432 R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC R_AARCH64 = 571
1433 R_AARCH64_TLSLD_LDST128_DTPREL_LO12 R_AARCH64 = 572
1434 R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC R_AARCH64 = 573
1435 R_AARCH64_COPY R_AARCH64 = 1024
1436 R_AARCH64_GLOB_DAT R_AARCH64 = 1025
1437 R_AARCH64_JUMP_SLOT R_AARCH64 = 1026
1438 R_AARCH64_RELATIVE R_AARCH64 = 1027
1439 R_AARCH64_TLS_DTPMOD64 R_AARCH64 = 1028
1440 R_AARCH64_TLS_DTPREL64 R_AARCH64 = 1029
1441 R_AARCH64_TLS_TPREL64 R_AARCH64 = 1030
1442 R_AARCH64_TLSDESC R_AARCH64 = 1031
1443 R_AARCH64_IRELATIVE R_AARCH64 = 1032
1444 )
1445
1446 var raarch64Strings = []intName{
1447 {0, "R_AARCH64_NONE"},
1448 {1, "R_AARCH64_P32_ABS32"},
1449 {2, "R_AARCH64_P32_ABS16"},
1450 {3, "R_AARCH64_P32_PREL32"},
1451 {4, "R_AARCH64_P32_PREL16"},
1452 {5, "R_AARCH64_P32_MOVW_UABS_G0"},
1453 {6, "R_AARCH64_P32_MOVW_UABS_G0_NC"},
1454 {7, "R_AARCH64_P32_MOVW_UABS_G1"},
1455 {8, "R_AARCH64_P32_MOVW_SABS_G0"},
1456 {9, "R_AARCH64_P32_LD_PREL_LO19"},
1457 {10, "R_AARCH64_P32_ADR_PREL_LO21"},
1458 {11, "R_AARCH64_P32_ADR_PREL_PG_HI21"},
1459 {12, "R_AARCH64_P32_ADD_ABS_LO12_NC"},
1460 {13, "R_AARCH64_P32_LDST8_ABS_LO12_NC"},
1461 {14, "R_AARCH64_P32_LDST16_ABS_LO12_NC"},
1462 {15, "R_AARCH64_P32_LDST32_ABS_LO12_NC"},
1463 {16, "R_AARCH64_P32_LDST64_ABS_LO12_NC"},
1464 {17, "R_AARCH64_P32_LDST128_ABS_LO12_NC"},
1465 {18, "R_AARCH64_P32_TSTBR14"},
1466 {19, "R_AARCH64_P32_CONDBR19"},
1467 {20, "R_AARCH64_P32_JUMP26"},
1468 {21, "R_AARCH64_P32_CALL26"},
1469 {25, "R_AARCH64_P32_GOT_LD_PREL19"},
1470 {26, "R_AARCH64_P32_ADR_GOT_PAGE"},
1471 {27, "R_AARCH64_P32_LD32_GOT_LO12_NC"},
1472 {81, "R_AARCH64_P32_TLSGD_ADR_PAGE21"},
1473 {82, "R_AARCH64_P32_TLSGD_ADD_LO12_NC"},
1474 {103, "R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21"},
1475 {104, "R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC"},
1476 {105, "R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19"},
1477 {106, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G1"},
1478 {107, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0"},
1479 {108, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC"},
1480 {109, "R_AARCH64_P32_TLSLE_ADD_TPREL_HI12"},
1481 {110, "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12"},
1482 {111, "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC"},
1483 {122, "R_AARCH64_P32_TLSDESC_LD_PREL19"},
1484 {123, "R_AARCH64_P32_TLSDESC_ADR_PREL21"},
1485 {124, "R_AARCH64_P32_TLSDESC_ADR_PAGE21"},
1486 {125, "R_AARCH64_P32_TLSDESC_LD32_LO12_NC"},
1487 {126, "R_AARCH64_P32_TLSDESC_ADD_LO12_NC"},
1488 {127, "R_AARCH64_P32_TLSDESC_CALL"},
1489 {180, "R_AARCH64_P32_COPY"},
1490 {181, "R_AARCH64_P32_GLOB_DAT"},
1491 {182, "R_AARCH64_P32_JUMP_SLOT"},
1492 {183, "R_AARCH64_P32_RELATIVE"},
1493 {184, "R_AARCH64_P32_TLS_DTPMOD"},
1494 {185, "R_AARCH64_P32_TLS_DTPREL"},
1495 {186, "R_AARCH64_P32_TLS_TPREL"},
1496 {187, "R_AARCH64_P32_TLSDESC"},
1497 {188, "R_AARCH64_P32_IRELATIVE"},
1498 {256, "R_AARCH64_NULL"},
1499 {257, "R_AARCH64_ABS64"},
1500 {258, "R_AARCH64_ABS32"},
1501 {259, "R_AARCH64_ABS16"},
1502 {260, "R_AARCH64_PREL64"},
1503 {261, "R_AARCH64_PREL32"},
1504 {262, "R_AARCH64_PREL16"},
1505 {263, "R_AARCH64_MOVW_UABS_G0"},
1506 {264, "R_AARCH64_MOVW_UABS_G0_NC"},
1507 {265, "R_AARCH64_MOVW_UABS_G1"},
1508 {266, "R_AARCH64_MOVW_UABS_G1_NC"},
1509 {267, "R_AARCH64_MOVW_UABS_G2"},
1510 {268, "R_AARCH64_MOVW_UABS_G2_NC"},
1511 {269, "R_AARCH64_MOVW_UABS_G3"},
1512 {270, "R_AARCH64_MOVW_SABS_G0"},
1513 {271, "R_AARCH64_MOVW_SABS_G1"},
1514 {272, "R_AARCH64_MOVW_SABS_G2"},
1515 {273, "R_AARCH64_LD_PREL_LO19"},
1516 {274, "R_AARCH64_ADR_PREL_LO21"},
1517 {275, "R_AARCH64_ADR_PREL_PG_HI21"},
1518 {276, "R_AARCH64_ADR_PREL_PG_HI21_NC"},
1519 {277, "R_AARCH64_ADD_ABS_LO12_NC"},
1520 {278, "R_AARCH64_LDST8_ABS_LO12_NC"},
1521 {279, "R_AARCH64_TSTBR14"},
1522 {280, "R_AARCH64_CONDBR19"},
1523 {282, "R_AARCH64_JUMP26"},
1524 {283, "R_AARCH64_CALL26"},
1525 {284, "R_AARCH64_LDST16_ABS_LO12_NC"},
1526 {285, "R_AARCH64_LDST32_ABS_LO12_NC"},
1527 {286, "R_AARCH64_LDST64_ABS_LO12_NC"},
1528 {299, "R_AARCH64_LDST128_ABS_LO12_NC"},
1529 {309, "R_AARCH64_GOT_LD_PREL19"},
1530 {310, "R_AARCH64_LD64_GOTOFF_LO15"},
1531 {311, "R_AARCH64_ADR_GOT_PAGE"},
1532 {312, "R_AARCH64_LD64_GOT_LO12_NC"},
1533 {313, "R_AARCH64_LD64_GOTPAGE_LO15"},
1534 {512, "R_AARCH64_TLSGD_ADR_PREL21"},
1535 {513, "R_AARCH64_TLSGD_ADR_PAGE21"},
1536 {514, "R_AARCH64_TLSGD_ADD_LO12_NC"},
1537 {515, "R_AARCH64_TLSGD_MOVW_G1"},
1538 {516, "R_AARCH64_TLSGD_MOVW_G0_NC"},
1539 {517, "R_AARCH64_TLSLD_ADR_PREL21"},
1540 {518, "R_AARCH64_TLSLD_ADR_PAGE21"},
1541 {539, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1"},
1542 {540, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC"},
1543 {541, "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21"},
1544 {542, "R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC"},
1545 {543, "R_AARCH64_TLSIE_LD_GOTTPREL_PREL19"},
1546 {544, "R_AARCH64_TLSLE_MOVW_TPREL_G2"},
1547 {545, "R_AARCH64_TLSLE_MOVW_TPREL_G1"},
1548 {546, "R_AARCH64_TLSLE_MOVW_TPREL_G1_NC"},
1549 {547, "R_AARCH64_TLSLE_MOVW_TPREL_G0"},
1550 {548, "R_AARCH64_TLSLE_MOVW_TPREL_G0_NC"},
1551 {549, "R_AARCH64_TLSLE_ADD_TPREL_HI12"},
1552 {550, "R_AARCH64_TLSLE_ADD_TPREL_LO12"},
1553 {551, "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC"},
1554 {560, "R_AARCH64_TLSDESC_LD_PREL19"},
1555 {561, "R_AARCH64_TLSDESC_ADR_PREL21"},
1556 {562, "R_AARCH64_TLSDESC_ADR_PAGE21"},
1557 {563, "R_AARCH64_TLSDESC_LD64_LO12_NC"},
1558 {564, "R_AARCH64_TLSDESC_ADD_LO12_NC"},
1559 {565, "R_AARCH64_TLSDESC_OFF_G1"},
1560 {566, "R_AARCH64_TLSDESC_OFF_G0_NC"},
1561 {567, "R_AARCH64_TLSDESC_LDR"},
1562 {568, "R_AARCH64_TLSDESC_ADD"},
1563 {569, "R_AARCH64_TLSDESC_CALL"},
1564 {570, "R_AARCH64_TLSLE_LDST128_TPREL_LO12"},
1565 {571, "R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC"},
1566 {572, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12"},
1567 {573, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC"},
1568 {1024, "R_AARCH64_COPY"},
1569 {1025, "R_AARCH64_GLOB_DAT"},
1570 {1026, "R_AARCH64_JUMP_SLOT"},
1571 {1027, "R_AARCH64_RELATIVE"},
1572 {1028, "R_AARCH64_TLS_DTPMOD64"},
1573 {1029, "R_AARCH64_TLS_DTPREL64"},
1574 {1030, "R_AARCH64_TLS_TPREL64"},
1575 {1031, "R_AARCH64_TLSDESC"},
1576 {1032, "R_AARCH64_IRELATIVE"},
1577 }
1578
1579 func (i R_AARCH64) String() string { return stringName(uint32(i), raarch64Strings, false) }
1580 func (i R_AARCH64) GoString() string { return stringName(uint32(i), raarch64Strings, true) }
1581
1582
1583 type R_ALPHA int
1584
1585 const (
1586 R_ALPHA_NONE R_ALPHA = 0
1587 R_ALPHA_REFLONG R_ALPHA = 1
1588 R_ALPHA_REFQUAD R_ALPHA = 2
1589 R_ALPHA_GPREL32 R_ALPHA = 3
1590 R_ALPHA_LITERAL R_ALPHA = 4
1591 R_ALPHA_LITUSE R_ALPHA = 5
1592 R_ALPHA_GPDISP R_ALPHA = 6
1593 R_ALPHA_BRADDR R_ALPHA = 7
1594 R_ALPHA_HINT R_ALPHA = 8
1595 R_ALPHA_SREL16 R_ALPHA = 9
1596 R_ALPHA_SREL32 R_ALPHA = 10
1597 R_ALPHA_SREL64 R_ALPHA = 11
1598 R_ALPHA_OP_PUSH R_ALPHA = 12
1599 R_ALPHA_OP_STORE R_ALPHA = 13
1600 R_ALPHA_OP_PSUB R_ALPHA = 14
1601 R_ALPHA_OP_PRSHIFT R_ALPHA = 15
1602 R_ALPHA_GPVALUE R_ALPHA = 16
1603 R_ALPHA_GPRELHIGH R_ALPHA = 17
1604 R_ALPHA_GPRELLOW R_ALPHA = 18
1605 R_ALPHA_IMMED_GP_16 R_ALPHA = 19
1606 R_ALPHA_IMMED_GP_HI32 R_ALPHA = 20
1607 R_ALPHA_IMMED_SCN_HI32 R_ALPHA = 21
1608 R_ALPHA_IMMED_BR_HI32 R_ALPHA = 22
1609 R_ALPHA_IMMED_LO32 R_ALPHA = 23
1610 R_ALPHA_COPY R_ALPHA = 24
1611 R_ALPHA_GLOB_DAT R_ALPHA = 25
1612 R_ALPHA_JMP_SLOT R_ALPHA = 26
1613 R_ALPHA_RELATIVE R_ALPHA = 27
1614 )
1615
1616 var ralphaStrings = []intName{
1617 {0, "R_ALPHA_NONE"},
1618 {1, "R_ALPHA_REFLONG"},
1619 {2, "R_ALPHA_REFQUAD"},
1620 {3, "R_ALPHA_GPREL32"},
1621 {4, "R_ALPHA_LITERAL"},
1622 {5, "R_ALPHA_LITUSE"},
1623 {6, "R_ALPHA_GPDISP"},
1624 {7, "R_ALPHA_BRADDR"},
1625 {8, "R_ALPHA_HINT"},
1626 {9, "R_ALPHA_SREL16"},
1627 {10, "R_ALPHA_SREL32"},
1628 {11, "R_ALPHA_SREL64"},
1629 {12, "R_ALPHA_OP_PUSH"},
1630 {13, "R_ALPHA_OP_STORE"},
1631 {14, "R_ALPHA_OP_PSUB"},
1632 {15, "R_ALPHA_OP_PRSHIFT"},
1633 {16, "R_ALPHA_GPVALUE"},
1634 {17, "R_ALPHA_GPRELHIGH"},
1635 {18, "R_ALPHA_GPRELLOW"},
1636 {19, "R_ALPHA_IMMED_GP_16"},
1637 {20, "R_ALPHA_IMMED_GP_HI32"},
1638 {21, "R_ALPHA_IMMED_SCN_HI32"},
1639 {22, "R_ALPHA_IMMED_BR_HI32"},
1640 {23, "R_ALPHA_IMMED_LO32"},
1641 {24, "R_ALPHA_COPY"},
1642 {25, "R_ALPHA_GLOB_DAT"},
1643 {26, "R_ALPHA_JMP_SLOT"},
1644 {27, "R_ALPHA_RELATIVE"},
1645 }
1646
1647 func (i R_ALPHA) String() string { return stringName(uint32(i), ralphaStrings, false) }
1648 func (i R_ALPHA) GoString() string { return stringName(uint32(i), ralphaStrings, true) }
1649
1650
1651 type R_ARM int
1652
1653 const (
1654 R_ARM_NONE R_ARM = 0
1655 R_ARM_PC24 R_ARM = 1
1656 R_ARM_ABS32 R_ARM = 2
1657 R_ARM_REL32 R_ARM = 3
1658 R_ARM_PC13 R_ARM = 4
1659 R_ARM_ABS16 R_ARM = 5
1660 R_ARM_ABS12 R_ARM = 6
1661 R_ARM_THM_ABS5 R_ARM = 7
1662 R_ARM_ABS8 R_ARM = 8
1663 R_ARM_SBREL32 R_ARM = 9
1664 R_ARM_THM_PC22 R_ARM = 10
1665 R_ARM_THM_PC8 R_ARM = 11
1666 R_ARM_AMP_VCALL9 R_ARM = 12
1667 R_ARM_SWI24 R_ARM = 13
1668 R_ARM_THM_SWI8 R_ARM = 14
1669 R_ARM_XPC25 R_ARM = 15
1670 R_ARM_THM_XPC22 R_ARM = 16
1671 R_ARM_TLS_DTPMOD32 R_ARM = 17
1672 R_ARM_TLS_DTPOFF32 R_ARM = 18
1673 R_ARM_TLS_TPOFF32 R_ARM = 19
1674 R_ARM_COPY R_ARM = 20
1675 R_ARM_GLOB_DAT R_ARM = 21
1676 R_ARM_JUMP_SLOT R_ARM = 22
1677 R_ARM_RELATIVE R_ARM = 23
1678 R_ARM_GOTOFF R_ARM = 24
1679 R_ARM_GOTPC R_ARM = 25
1680 R_ARM_GOT32 R_ARM = 26
1681 R_ARM_PLT32 R_ARM = 27
1682 R_ARM_CALL R_ARM = 28
1683 R_ARM_JUMP24 R_ARM = 29
1684 R_ARM_THM_JUMP24 R_ARM = 30
1685 R_ARM_BASE_ABS R_ARM = 31
1686 R_ARM_ALU_PCREL_7_0 R_ARM = 32
1687 R_ARM_ALU_PCREL_15_8 R_ARM = 33
1688 R_ARM_ALU_PCREL_23_15 R_ARM = 34
1689 R_ARM_LDR_SBREL_11_10_NC R_ARM = 35
1690 R_ARM_ALU_SBREL_19_12_NC R_ARM = 36
1691 R_ARM_ALU_SBREL_27_20_CK R_ARM = 37
1692 R_ARM_TARGET1 R_ARM = 38
1693 R_ARM_SBREL31 R_ARM = 39
1694 R_ARM_V4BX R_ARM = 40
1695 R_ARM_TARGET2 R_ARM = 41
1696 R_ARM_PREL31 R_ARM = 42
1697 R_ARM_MOVW_ABS_NC R_ARM = 43
1698 R_ARM_MOVT_ABS R_ARM = 44
1699 R_ARM_MOVW_PREL_NC R_ARM = 45
1700 R_ARM_MOVT_PREL R_ARM = 46
1701 R_ARM_THM_MOVW_ABS_NC R_ARM = 47
1702 R_ARM_THM_MOVT_ABS R_ARM = 48
1703 R_ARM_THM_MOVW_PREL_NC R_ARM = 49
1704 R_ARM_THM_MOVT_PREL R_ARM = 50
1705 R_ARM_THM_JUMP19 R_ARM = 51
1706 R_ARM_THM_JUMP6 R_ARM = 52
1707 R_ARM_THM_ALU_PREL_11_0 R_ARM = 53
1708 R_ARM_THM_PC12 R_ARM = 54
1709 R_ARM_ABS32_NOI R_ARM = 55
1710 R_ARM_REL32_NOI R_ARM = 56
1711 R_ARM_ALU_PC_G0_NC R_ARM = 57
1712 R_ARM_ALU_PC_G0 R_ARM = 58
1713 R_ARM_ALU_PC_G1_NC R_ARM = 59
1714 R_ARM_ALU_PC_G1 R_ARM = 60
1715 R_ARM_ALU_PC_G2 R_ARM = 61
1716 R_ARM_LDR_PC_G1 R_ARM = 62
1717 R_ARM_LDR_PC_G2 R_ARM = 63
1718 R_ARM_LDRS_PC_G0 R_ARM = 64
1719 R_ARM_LDRS_PC_G1 R_ARM = 65
1720 R_ARM_LDRS_PC_G2 R_ARM = 66
1721 R_ARM_LDC_PC_G0 R_ARM = 67
1722 R_ARM_LDC_PC_G1 R_ARM = 68
1723 R_ARM_LDC_PC_G2 R_ARM = 69
1724 R_ARM_ALU_SB_G0_NC R_ARM = 70
1725 R_ARM_ALU_SB_G0 R_ARM = 71
1726 R_ARM_ALU_SB_G1_NC R_ARM = 72
1727 R_ARM_ALU_SB_G1 R_ARM = 73
1728 R_ARM_ALU_SB_G2 R_ARM = 74
1729 R_ARM_LDR_SB_G0 R_ARM = 75
1730 R_ARM_LDR_SB_G1 R_ARM = 76
1731 R_ARM_LDR_SB_G2 R_ARM = 77
1732 R_ARM_LDRS_SB_G0 R_ARM = 78
1733 R_ARM_LDRS_SB_G1 R_ARM = 79
1734 R_ARM_LDRS_SB_G2 R_ARM = 80
1735 R_ARM_LDC_SB_G0 R_ARM = 81
1736 R_ARM_LDC_SB_G1 R_ARM = 82
1737 R_ARM_LDC_SB_G2 R_ARM = 83
1738 R_ARM_MOVW_BREL_NC R_ARM = 84
1739 R_ARM_MOVT_BREL R_ARM = 85
1740 R_ARM_MOVW_BREL R_ARM = 86
1741 R_ARM_THM_MOVW_BREL_NC R_ARM = 87
1742 R_ARM_THM_MOVT_BREL R_ARM = 88
1743 R_ARM_THM_MOVW_BREL R_ARM = 89
1744 R_ARM_TLS_GOTDESC R_ARM = 90
1745 R_ARM_TLS_CALL R_ARM = 91
1746 R_ARM_TLS_DESCSEQ R_ARM = 92
1747 R_ARM_THM_TLS_CALL R_ARM = 93
1748 R_ARM_PLT32_ABS R_ARM = 94
1749 R_ARM_GOT_ABS R_ARM = 95
1750 R_ARM_GOT_PREL R_ARM = 96
1751 R_ARM_GOT_BREL12 R_ARM = 97
1752 R_ARM_GOTOFF12 R_ARM = 98
1753 R_ARM_GOTRELAX R_ARM = 99
1754 R_ARM_GNU_VTENTRY R_ARM = 100
1755 R_ARM_GNU_VTINHERIT R_ARM = 101
1756 R_ARM_THM_JUMP11 R_ARM = 102
1757 R_ARM_THM_JUMP8 R_ARM = 103
1758 R_ARM_TLS_GD32 R_ARM = 104
1759 R_ARM_TLS_LDM32 R_ARM = 105
1760 R_ARM_TLS_LDO32 R_ARM = 106
1761 R_ARM_TLS_IE32 R_ARM = 107
1762 R_ARM_TLS_LE32 R_ARM = 108
1763 R_ARM_TLS_LDO12 R_ARM = 109
1764 R_ARM_TLS_LE12 R_ARM = 110
1765 R_ARM_TLS_IE12GP R_ARM = 111
1766 R_ARM_PRIVATE_0 R_ARM = 112
1767 R_ARM_PRIVATE_1 R_ARM = 113
1768 R_ARM_PRIVATE_2 R_ARM = 114
1769 R_ARM_PRIVATE_3 R_ARM = 115
1770 R_ARM_PRIVATE_4 R_ARM = 116
1771 R_ARM_PRIVATE_5 R_ARM = 117
1772 R_ARM_PRIVATE_6 R_ARM = 118
1773 R_ARM_PRIVATE_7 R_ARM = 119
1774 R_ARM_PRIVATE_8 R_ARM = 120
1775 R_ARM_PRIVATE_9 R_ARM = 121
1776 R_ARM_PRIVATE_10 R_ARM = 122
1777 R_ARM_PRIVATE_11 R_ARM = 123
1778 R_ARM_PRIVATE_12 R_ARM = 124
1779 R_ARM_PRIVATE_13 R_ARM = 125
1780 R_ARM_PRIVATE_14 R_ARM = 126
1781 R_ARM_PRIVATE_15 R_ARM = 127
1782 R_ARM_ME_TOO R_ARM = 128
1783 R_ARM_THM_TLS_DESCSEQ16 R_ARM = 129
1784 R_ARM_THM_TLS_DESCSEQ32 R_ARM = 130
1785 R_ARM_THM_GOT_BREL12 R_ARM = 131
1786 R_ARM_THM_ALU_ABS_G0_NC R_ARM = 132
1787 R_ARM_THM_ALU_ABS_G1_NC R_ARM = 133
1788 R_ARM_THM_ALU_ABS_G2_NC R_ARM = 134
1789 R_ARM_THM_ALU_ABS_G3 R_ARM = 135
1790 R_ARM_IRELATIVE R_ARM = 160
1791 R_ARM_RXPC25 R_ARM = 249
1792 R_ARM_RSBREL32 R_ARM = 250
1793 R_ARM_THM_RPC22 R_ARM = 251
1794 R_ARM_RREL32 R_ARM = 252
1795 R_ARM_RABS32 R_ARM = 253
1796 R_ARM_RPC24 R_ARM = 254
1797 R_ARM_RBASE R_ARM = 255
1798 )
1799
1800 var rarmStrings = []intName{
1801 {0, "R_ARM_NONE"},
1802 {1, "R_ARM_PC24"},
1803 {2, "R_ARM_ABS32"},
1804 {3, "R_ARM_REL32"},
1805 {4, "R_ARM_PC13"},
1806 {5, "R_ARM_ABS16"},
1807 {6, "R_ARM_ABS12"},
1808 {7, "R_ARM_THM_ABS5"},
1809 {8, "R_ARM_ABS8"},
1810 {9, "R_ARM_SBREL32"},
1811 {10, "R_ARM_THM_PC22"},
1812 {11, "R_ARM_THM_PC8"},
1813 {12, "R_ARM_AMP_VCALL9"},
1814 {13, "R_ARM_SWI24"},
1815 {14, "R_ARM_THM_SWI8"},
1816 {15, "R_ARM_XPC25"},
1817 {16, "R_ARM_THM_XPC22"},
1818 {17, "R_ARM_TLS_DTPMOD32"},
1819 {18, "R_ARM_TLS_DTPOFF32"},
1820 {19, "R_ARM_TLS_TPOFF32"},
1821 {20, "R_ARM_COPY"},
1822 {21, "R_ARM_GLOB_DAT"},
1823 {22, "R_ARM_JUMP_SLOT"},
1824 {23, "R_ARM_RELATIVE"},
1825 {24, "R_ARM_GOTOFF"},
1826 {25, "R_ARM_GOTPC"},
1827 {26, "R_ARM_GOT32"},
1828 {27, "R_ARM_PLT32"},
1829 {28, "R_ARM_CALL"},
1830 {29, "R_ARM_JUMP24"},
1831 {30, "R_ARM_THM_JUMP24"},
1832 {31, "R_ARM_BASE_ABS"},
1833 {32, "R_ARM_ALU_PCREL_7_0"},
1834 {33, "R_ARM_ALU_PCREL_15_8"},
1835 {34, "R_ARM_ALU_PCREL_23_15"},
1836 {35, "R_ARM_LDR_SBREL_11_10_NC"},
1837 {36, "R_ARM_ALU_SBREL_19_12_NC"},
1838 {37, "R_ARM_ALU_SBREL_27_20_CK"},
1839 {38, "R_ARM_TARGET1"},
1840 {39, "R_ARM_SBREL31"},
1841 {40, "R_ARM_V4BX"},
1842 {41, "R_ARM_TARGET2"},
1843 {42, "R_ARM_PREL31"},
1844 {43, "R_ARM_MOVW_ABS_NC"},
1845 {44, "R_ARM_MOVT_ABS"},
1846 {45, "R_ARM_MOVW_PREL_NC"},
1847 {46, "R_ARM_MOVT_PREL"},
1848 {47, "R_ARM_THM_MOVW_ABS_NC"},
1849 {48, "R_ARM_THM_MOVT_ABS"},
1850 {49, "R_ARM_THM_MOVW_PREL_NC"},
1851 {50, "R_ARM_THM_MOVT_PREL"},
1852 {51, "R_ARM_THM_JUMP19"},
1853 {52, "R_ARM_THM_JUMP6"},
1854 {53, "R_ARM_THM_ALU_PREL_11_0"},
1855 {54, "R_ARM_THM_PC12"},
1856 {55, "R_ARM_ABS32_NOI"},
1857 {56, "R_ARM_REL32_NOI"},
1858 {57, "R_ARM_ALU_PC_G0_NC"},
1859 {58, "R_ARM_ALU_PC_G0"},
1860 {59, "R_ARM_ALU_PC_G1_NC"},
1861 {60, "R_ARM_ALU_PC_G1"},
1862 {61, "R_ARM_ALU_PC_G2"},
1863 {62, "R_ARM_LDR_PC_G1"},
1864 {63, "R_ARM_LDR_PC_G2"},
1865 {64, "R_ARM_LDRS_PC_G0"},
1866 {65, "R_ARM_LDRS_PC_G1"},
1867 {66, "R_ARM_LDRS_PC_G2"},
1868 {67, "R_ARM_LDC_PC_G0"},
1869 {68, "R_ARM_LDC_PC_G1"},
1870 {69, "R_ARM_LDC_PC_G2"},
1871 {70, "R_ARM_ALU_SB_G0_NC"},
1872 {71, "R_ARM_ALU_SB_G0"},
1873 {72, "R_ARM_ALU_SB_G1_NC"},
1874 {73, "R_ARM_ALU_SB_G1"},
1875 {74, "R_ARM_ALU_SB_G2"},
1876 {75, "R_ARM_LDR_SB_G0"},
1877 {76, "R_ARM_LDR_SB_G1"},
1878 {77, "R_ARM_LDR_SB_G2"},
1879 {78, "R_ARM_LDRS_SB_G0"},
1880 {79, "R_ARM_LDRS_SB_G1"},
1881 {80, "R_ARM_LDRS_SB_G2"},
1882 {81, "R_ARM_LDC_SB_G0"},
1883 {82, "R_ARM_LDC_SB_G1"},
1884 {83, "R_ARM_LDC_SB_G2"},
1885 {84, "R_ARM_MOVW_BREL_NC"},
1886 {85, "R_ARM_MOVT_BREL"},
1887 {86, "R_ARM_MOVW_BREL"},
1888 {87, "R_ARM_THM_MOVW_BREL_NC"},
1889 {88, "R_ARM_THM_MOVT_BREL"},
1890 {89, "R_ARM_THM_MOVW_BREL"},
1891 {90, "R_ARM_TLS_GOTDESC"},
1892 {91, "R_ARM_TLS_CALL"},
1893 {92, "R_ARM_TLS_DESCSEQ"},
1894 {93, "R_ARM_THM_TLS_CALL"},
1895 {94, "R_ARM_PLT32_ABS"},
1896 {95, "R_ARM_GOT_ABS"},
1897 {96, "R_ARM_GOT_PREL"},
1898 {97, "R_ARM_GOT_BREL12"},
1899 {98, "R_ARM_GOTOFF12"},
1900 {99, "R_ARM_GOTRELAX"},
1901 {100, "R_ARM_GNU_VTENTRY"},
1902 {101, "R_ARM_GNU_VTINHERIT"},
1903 {102, "R_ARM_THM_JUMP11"},
1904 {103, "R_ARM_THM_JUMP8"},
1905 {104, "R_ARM_TLS_GD32"},
1906 {105, "R_ARM_TLS_LDM32"},
1907 {106, "R_ARM_TLS_LDO32"},
1908 {107, "R_ARM_TLS_IE32"},
1909 {108, "R_ARM_TLS_LE32"},
1910 {109, "R_ARM_TLS_LDO12"},
1911 {110, "R_ARM_TLS_LE12"},
1912 {111, "R_ARM_TLS_IE12GP"},
1913 {112, "R_ARM_PRIVATE_0"},
1914 {113, "R_ARM_PRIVATE_1"},
1915 {114, "R_ARM_PRIVATE_2"},
1916 {115, "R_ARM_PRIVATE_3"},
1917 {116, "R_ARM_PRIVATE_4"},
1918 {117, "R_ARM_PRIVATE_5"},
1919 {118, "R_ARM_PRIVATE_6"},
1920 {119, "R_ARM_PRIVATE_7"},
1921 {120, "R_ARM_PRIVATE_8"},
1922 {121, "R_ARM_PRIVATE_9"},
1923 {122, "R_ARM_PRIVATE_10"},
1924 {123, "R_ARM_PRIVATE_11"},
1925 {124, "R_ARM_PRIVATE_12"},
1926 {125, "R_ARM_PRIVATE_13"},
1927 {126, "R_ARM_PRIVATE_14"},
1928 {127, "R_ARM_PRIVATE_15"},
1929 {128, "R_ARM_ME_TOO"},
1930 {129, "R_ARM_THM_TLS_DESCSEQ16"},
1931 {130, "R_ARM_THM_TLS_DESCSEQ32"},
1932 {131, "R_ARM_THM_GOT_BREL12"},
1933 {132, "R_ARM_THM_ALU_ABS_G0_NC"},
1934 {133, "R_ARM_THM_ALU_ABS_G1_NC"},
1935 {134, "R_ARM_THM_ALU_ABS_G2_NC"},
1936 {135, "R_ARM_THM_ALU_ABS_G3"},
1937 {160, "R_ARM_IRELATIVE"},
1938 {249, "R_ARM_RXPC25"},
1939 {250, "R_ARM_RSBREL32"},
1940 {251, "R_ARM_THM_RPC22"},
1941 {252, "R_ARM_RREL32"},
1942 {253, "R_ARM_RABS32"},
1943 {254, "R_ARM_RPC24"},
1944 {255, "R_ARM_RBASE"},
1945 }
1946
1947 func (i R_ARM) String() string { return stringName(uint32(i), rarmStrings, false) }
1948 func (i R_ARM) GoString() string { return stringName(uint32(i), rarmStrings, true) }
1949
1950
1951 type R_386 int
1952
1953 const (
1954 R_386_NONE R_386 = 0
1955 R_386_32 R_386 = 1
1956 R_386_PC32 R_386 = 2
1957 R_386_GOT32 R_386 = 3
1958 R_386_PLT32 R_386 = 4
1959 R_386_COPY R_386 = 5
1960 R_386_GLOB_DAT R_386 = 6
1961 R_386_JMP_SLOT R_386 = 7
1962 R_386_RELATIVE R_386 = 8
1963 R_386_GOTOFF R_386 = 9
1964 R_386_GOTPC R_386 = 10
1965 R_386_32PLT R_386 = 11
1966 R_386_TLS_TPOFF R_386 = 14
1967 R_386_TLS_IE R_386 = 15
1968 R_386_TLS_GOTIE R_386 = 16
1969 R_386_TLS_LE R_386 = 17
1970 R_386_TLS_GD R_386 = 18
1971 R_386_TLS_LDM R_386 = 19
1972 R_386_16 R_386 = 20
1973 R_386_PC16 R_386 = 21
1974 R_386_8 R_386 = 22
1975 R_386_PC8 R_386 = 23
1976 R_386_TLS_GD_32 R_386 = 24
1977 R_386_TLS_GD_PUSH R_386 = 25
1978 R_386_TLS_GD_CALL R_386 = 26
1979 R_386_TLS_GD_POP R_386 = 27
1980 R_386_TLS_LDM_32 R_386 = 28
1981 R_386_TLS_LDM_PUSH R_386 = 29
1982 R_386_TLS_LDM_CALL R_386 = 30
1983 R_386_TLS_LDM_POP R_386 = 31
1984 R_386_TLS_LDO_32 R_386 = 32
1985 R_386_TLS_IE_32 R_386 = 33
1986 R_386_TLS_LE_32 R_386 = 34
1987 R_386_TLS_DTPMOD32 R_386 = 35
1988 R_386_TLS_DTPOFF32 R_386 = 36
1989 R_386_TLS_TPOFF32 R_386 = 37
1990 R_386_SIZE32 R_386 = 38
1991 R_386_TLS_GOTDESC R_386 = 39
1992 R_386_TLS_DESC_CALL R_386 = 40
1993 R_386_TLS_DESC R_386 = 41
1994 R_386_IRELATIVE R_386 = 42
1995 R_386_GOT32X R_386 = 43
1996 )
1997
1998 var r386Strings = []intName{
1999 {0, "R_386_NONE"},
2000 {1, "R_386_32"},
2001 {2, "R_386_PC32"},
2002 {3, "R_386_GOT32"},
2003 {4, "R_386_PLT32"},
2004 {5, "R_386_COPY"},
2005 {6, "R_386_GLOB_DAT"},
2006 {7, "R_386_JMP_SLOT"},
2007 {8, "R_386_RELATIVE"},
2008 {9, "R_386_GOTOFF"},
2009 {10, "R_386_GOTPC"},
2010 {11, "R_386_32PLT"},
2011 {14, "R_386_TLS_TPOFF"},
2012 {15, "R_386_TLS_IE"},
2013 {16, "R_386_TLS_GOTIE"},
2014 {17, "R_386_TLS_LE"},
2015 {18, "R_386_TLS_GD"},
2016 {19, "R_386_TLS_LDM"},
2017 {20, "R_386_16"},
2018 {21, "R_386_PC16"},
2019 {22, "R_386_8"},
2020 {23, "R_386_PC8"},
2021 {24, "R_386_TLS_GD_32"},
2022 {25, "R_386_TLS_GD_PUSH"},
2023 {26, "R_386_TLS_GD_CALL"},
2024 {27, "R_386_TLS_GD_POP"},
2025 {28, "R_386_TLS_LDM_32"},
2026 {29, "R_386_TLS_LDM_PUSH"},
2027 {30, "R_386_TLS_LDM_CALL"},
2028 {31, "R_386_TLS_LDM_POP"},
2029 {32, "R_386_TLS_LDO_32"},
2030 {33, "R_386_TLS_IE_32"},
2031 {34, "R_386_TLS_LE_32"},
2032 {35, "R_386_TLS_DTPMOD32"},
2033 {36, "R_386_TLS_DTPOFF32"},
2034 {37, "R_386_TLS_TPOFF32"},
2035 {38, "R_386_SIZE32"},
2036 {39, "R_386_TLS_GOTDESC"},
2037 {40, "R_386_TLS_DESC_CALL"},
2038 {41, "R_386_TLS_DESC"},
2039 {42, "R_386_IRELATIVE"},
2040 {43, "R_386_GOT32X"},
2041 }
2042
2043 func (i R_386) String() string { return stringName(uint32(i), r386Strings, false) }
2044 func (i R_386) GoString() string { return stringName(uint32(i), r386Strings, true) }
2045
2046
2047 type R_MIPS int
2048
2049 const (
2050 R_MIPS_NONE R_MIPS = 0
2051 R_MIPS_16 R_MIPS = 1
2052 R_MIPS_32 R_MIPS = 2
2053 R_MIPS_REL32 R_MIPS = 3
2054 R_MIPS_26 R_MIPS = 4
2055 R_MIPS_HI16 R_MIPS = 5
2056 R_MIPS_LO16 R_MIPS = 6
2057 R_MIPS_GPREL16 R_MIPS = 7
2058 R_MIPS_LITERAL R_MIPS = 8
2059 R_MIPS_GOT16 R_MIPS = 9
2060 R_MIPS_PC16 R_MIPS = 10
2061 R_MIPS_CALL16 R_MIPS = 11
2062 R_MIPS_GPREL32 R_MIPS = 12
2063 R_MIPS_SHIFT5 R_MIPS = 16
2064 R_MIPS_SHIFT6 R_MIPS = 17
2065 R_MIPS_64 R_MIPS = 18
2066 R_MIPS_GOT_DISP R_MIPS = 19
2067 R_MIPS_GOT_PAGE R_MIPS = 20
2068 R_MIPS_GOT_OFST R_MIPS = 21
2069 R_MIPS_GOT_HI16 R_MIPS = 22
2070 R_MIPS_GOT_LO16 R_MIPS = 23
2071 R_MIPS_SUB R_MIPS = 24
2072 R_MIPS_INSERT_A R_MIPS = 25
2073 R_MIPS_INSERT_B R_MIPS = 26
2074 R_MIPS_DELETE R_MIPS = 27
2075 R_MIPS_HIGHER R_MIPS = 28
2076 R_MIPS_HIGHEST R_MIPS = 29
2077 R_MIPS_CALL_HI16 R_MIPS = 30
2078 R_MIPS_CALL_LO16 R_MIPS = 31
2079 R_MIPS_SCN_DISP R_MIPS = 32
2080 R_MIPS_REL16 R_MIPS = 33
2081 R_MIPS_ADD_IMMEDIATE R_MIPS = 34
2082 R_MIPS_PJUMP R_MIPS = 35
2083 R_MIPS_RELGOT R_MIPS = 36
2084 R_MIPS_JALR R_MIPS = 37
2085
2086 R_MIPS_TLS_DTPMOD32 R_MIPS = 38
2087 R_MIPS_TLS_DTPREL32 R_MIPS = 39
2088 R_MIPS_TLS_DTPMOD64 R_MIPS = 40
2089 R_MIPS_TLS_DTPREL64 R_MIPS = 41
2090 R_MIPS_TLS_GD R_MIPS = 42
2091 R_MIPS_TLS_LDM R_MIPS = 43
2092 R_MIPS_TLS_DTPREL_HI16 R_MIPS = 44
2093 R_MIPS_TLS_DTPREL_LO16 R_MIPS = 45
2094 R_MIPS_TLS_GOTTPREL R_MIPS = 46
2095 R_MIPS_TLS_TPREL32 R_MIPS = 47
2096 R_MIPS_TLS_TPREL64 R_MIPS = 48
2097 R_MIPS_TLS_TPREL_HI16 R_MIPS = 49
2098 R_MIPS_TLS_TPREL_LO16 R_MIPS = 50
2099 )
2100
2101 var rmipsStrings = []intName{
2102 {0, "R_MIPS_NONE"},
2103 {1, "R_MIPS_16"},
2104 {2, "R_MIPS_32"},
2105 {3, "R_MIPS_REL32"},
2106 {4, "R_MIPS_26"},
2107 {5, "R_MIPS_HI16"},
2108 {6, "R_MIPS_LO16"},
2109 {7, "R_MIPS_GPREL16"},
2110 {8, "R_MIPS_LITERAL"},
2111 {9, "R_MIPS_GOT16"},
2112 {10, "R_MIPS_PC16"},
2113 {11, "R_MIPS_CALL16"},
2114 {12, "R_MIPS_GPREL32"},
2115 {16, "R_MIPS_SHIFT5"},
2116 {17, "R_MIPS_SHIFT6"},
2117 {18, "R_MIPS_64"},
2118 {19, "R_MIPS_GOT_DISP"},
2119 {20, "R_MIPS_GOT_PAGE"},
2120 {21, "R_MIPS_GOT_OFST"},
2121 {22, "R_MIPS_GOT_HI16"},
2122 {23, "R_MIPS_GOT_LO16"},
2123 {24, "R_MIPS_SUB"},
2124 {25, "R_MIPS_INSERT_A"},
2125 {26, "R_MIPS_INSERT_B"},
2126 {27, "R_MIPS_DELETE"},
2127 {28, "R_MIPS_HIGHER"},
2128 {29, "R_MIPS_HIGHEST"},
2129 {30, "R_MIPS_CALL_HI16"},
2130 {31, "R_MIPS_CALL_LO16"},
2131 {32, "R_MIPS_SCN_DISP"},
2132 {33, "R_MIPS_REL16"},
2133 {34, "R_MIPS_ADD_IMMEDIATE"},
2134 {35, "R_MIPS_PJUMP"},
2135 {36, "R_MIPS_RELGOT"},
2136 {37, "R_MIPS_JALR"},
2137 {38, "R_MIPS_TLS_DTPMOD32"},
2138 {39, "R_MIPS_TLS_DTPREL32"},
2139 {40, "R_MIPS_TLS_DTPMOD64"},
2140 {41, "R_MIPS_TLS_DTPREL64"},
2141 {42, "R_MIPS_TLS_GD"},
2142 {43, "R_MIPS_TLS_LDM"},
2143 {44, "R_MIPS_TLS_DTPREL_HI16"},
2144 {45, "R_MIPS_TLS_DTPREL_LO16"},
2145 {46, "R_MIPS_TLS_GOTTPREL"},
2146 {47, "R_MIPS_TLS_TPREL32"},
2147 {48, "R_MIPS_TLS_TPREL64"},
2148 {49, "R_MIPS_TLS_TPREL_HI16"},
2149 {50, "R_MIPS_TLS_TPREL_LO16"},
2150 }
2151
2152 func (i R_MIPS) String() string { return stringName(uint32(i), rmipsStrings, false) }
2153 func (i R_MIPS) GoString() string { return stringName(uint32(i), rmipsStrings, true) }
2154
2155
2156 type R_LARCH int
2157
2158 const (
2159 R_LARCH_NONE R_LARCH = 0
2160 R_LARCH_32 R_LARCH = 1
2161 R_LARCH_64 R_LARCH = 2
2162 R_LARCH_RELATIVE R_LARCH = 3
2163 R_LARCH_COPY R_LARCH = 4
2164 R_LARCH_JUMP_SLOT R_LARCH = 5
2165 R_LARCH_TLS_DTPMOD32 R_LARCH = 6
2166 R_LARCH_TLS_DTPMOD64 R_LARCH = 7
2167 R_LARCH_TLS_DTPREL32 R_LARCH = 8
2168 R_LARCH_TLS_DTPREL64 R_LARCH = 9
2169 R_LARCH_TLS_TPREL32 R_LARCH = 10
2170 R_LARCH_TLS_TPREL64 R_LARCH = 11
2171 R_LARCH_IRELATIVE R_LARCH = 12
2172 R_LARCH_MARK_LA R_LARCH = 20
2173 R_LARCH_MARK_PCREL R_LARCH = 21
2174 R_LARCH_SOP_PUSH_PCREL R_LARCH = 22
2175 R_LARCH_SOP_PUSH_ABSOLUTE R_LARCH = 23
2176 R_LARCH_SOP_PUSH_DUP R_LARCH = 24
2177 R_LARCH_SOP_PUSH_GPREL R_LARCH = 25
2178 R_LARCH_SOP_PUSH_TLS_TPREL R_LARCH = 26
2179 R_LARCH_SOP_PUSH_TLS_GOT R_LARCH = 27
2180 R_LARCH_SOP_PUSH_TLS_GD R_LARCH = 28
2181 R_LARCH_SOP_PUSH_PLT_PCREL R_LARCH = 29
2182 R_LARCH_SOP_ASSERT R_LARCH = 30
2183 R_LARCH_SOP_NOT R_LARCH = 31
2184 R_LARCH_SOP_SUB R_LARCH = 32
2185 R_LARCH_SOP_SL R_LARCH = 33
2186 R_LARCH_SOP_SR R_LARCH = 34
2187 R_LARCH_SOP_ADD R_LARCH = 35
2188 R_LARCH_SOP_AND R_LARCH = 36
2189 R_LARCH_SOP_IF_ELSE R_LARCH = 37
2190 R_LARCH_SOP_POP_32_S_10_5 R_LARCH = 38
2191 R_LARCH_SOP_POP_32_U_10_12 R_LARCH = 39
2192 R_LARCH_SOP_POP_32_S_10_12 R_LARCH = 40
2193 R_LARCH_SOP_POP_32_S_10_16 R_LARCH = 41
2194 R_LARCH_SOP_POP_32_S_10_16_S2 R_LARCH = 42
2195 R_LARCH_SOP_POP_32_S_5_20 R_LARCH = 43
2196 R_LARCH_SOP_POP_32_S_0_5_10_16_S2 R_LARCH = 44
2197 R_LARCH_SOP_POP_32_S_0_10_10_16_S2 R_LARCH = 45
2198 R_LARCH_SOP_POP_32_U R_LARCH = 46
2199 R_LARCH_ADD8 R_LARCH = 47
2200 R_LARCH_ADD16 R_LARCH = 48
2201 R_LARCH_ADD24 R_LARCH = 49
2202 R_LARCH_ADD32 R_LARCH = 50
2203 R_LARCH_ADD64 R_LARCH = 51
2204 R_LARCH_SUB8 R_LARCH = 52
2205 R_LARCH_SUB16 R_LARCH = 53
2206 R_LARCH_SUB24 R_LARCH = 54
2207 R_LARCH_SUB32 R_LARCH = 55
2208 R_LARCH_SUB64 R_LARCH = 56
2209 )
2210
2211 var rlarchStrings = []intName{
2212 {0, "R_LARCH_NONE"},
2213 {1, "R_LARCH_32"},
2214 {2, "R_LARCH_64"},
2215 {3, "R_LARCH_RELATIVE"},
2216 {4, "R_LARCH_COPY"},
2217 {5, "R_LARCH_JUMP_SLOT"},
2218 {6, "R_LARCH_TLS_DTPMOD32"},
2219 {7, "R_LARCH_TLS_DTPMOD64"},
2220 {8, "R_LARCH_TLS_DTPREL32"},
2221 {9, "R_LARCH_TLS_DTPREL64"},
2222 {10, "R_LARCH_TLS_TPREL32"},
2223 {11, "R_LARCH_TLS_TPREL64"},
2224 {12, "R_LARCH_IRELATIVE"},
2225 {20, "R_LARCH_MARK_LA"},
2226 {21, "R_LARCH_MARK_PCREL"},
2227 {22, "R_LARCH_SOP_PUSH_PCREL"},
2228 {23, "R_LARCH_SOP_PUSH_ABSOLUTE"},
2229 {24, "R_LARCH_SOP_PUSH_DUP"},
2230 {25, "R_LARCH_SOP_PUSH_GPREL"},
2231 {26, "R_LARCH_SOP_PUSH_TLS_TPREL"},
2232 {27, "R_LARCH_SOP_PUSH_TLS_GOT"},
2233 {28, "R_LARCH_SOP_PUSH_TLS_GD"},
2234 {29, "R_LARCH_SOP_PUSH_PLT_PCREL"},
2235 {30, "R_LARCH_SOP_ASSERT"},
2236 {31, "R_LARCH_SOP_NOT"},
2237 {32, "R_LARCH_SOP_SUB"},
2238 {33, "R_LARCH_SOP_SL"},
2239 {34, "R_LARCH_SOP_SR"},
2240 {35, "R_LARCH_SOP_ADD"},
2241 {36, "R_LARCH_SOP_AND"},
2242 {37, "R_LARCH_SOP_IF_ELSE"},
2243 {38, "R_LARCH_SOP_POP_32_S_10_5"},
2244 {39, "R_LARCH_SOP_POP_32_U_10_12"},
2245 {40, "R_LARCH_SOP_POP_32_S_10_12"},
2246 {41, "R_LARCH_SOP_POP_32_S_10_16"},
2247 {42, "R_LARCH_SOP_POP_32_S_10_16_S2"},
2248 {43, "R_LARCH_SOP_POP_32_S_5_20"},
2249 {44, "R_LARCH_SOP_POP_32_S_0_5_10_16_S2"},
2250 {45, "R_LARCH_SOP_POP_32_S_0_10_10_16_S2"},
2251 {46, "R_LARCH_SOP_POP_32_U"},
2252 {47, "R_LARCH_ADD8"},
2253 {48, "R_LARCH_ADD16"},
2254 {49, "R_LARCH_ADD24"},
2255 {50, "R_LARCH_ADD32"},
2256 {51, "R_LARCH_ADD64"},
2257 {52, "R_LARCH_SUB8"},
2258 {53, "R_LARCH_SUB16"},
2259 {54, "R_LARCH_SUB24"},
2260 {55, "R_LARCH_SUB32"},
2261 {56, "R_LARCH_SUB64"},
2262 }
2263
2264 func (i R_LARCH) String() string { return stringName(uint32(i), rlarchStrings, false) }
2265 func (i R_LARCH) GoString() string { return stringName(uint32(i), rlarchStrings, true) }
2266
2267
2268
2269
2270
2271
2272
2273 type R_PPC int
2274
2275 const (
2276 R_PPC_NONE R_PPC = 0
2277 R_PPC_ADDR32 R_PPC = 1
2278 R_PPC_ADDR24 R_PPC = 2
2279 R_PPC_ADDR16 R_PPC = 3
2280 R_PPC_ADDR16_LO R_PPC = 4
2281 R_PPC_ADDR16_HI R_PPC = 5
2282 R_PPC_ADDR16_HA R_PPC = 6
2283 R_PPC_ADDR14 R_PPC = 7
2284 R_PPC_ADDR14_BRTAKEN R_PPC = 8
2285 R_PPC_ADDR14_BRNTAKEN R_PPC = 9
2286 R_PPC_REL24 R_PPC = 10
2287 R_PPC_REL14 R_PPC = 11
2288 R_PPC_REL14_BRTAKEN R_PPC = 12
2289 R_PPC_REL14_BRNTAKEN R_PPC = 13
2290 R_PPC_GOT16 R_PPC = 14
2291 R_PPC_GOT16_LO R_PPC = 15
2292 R_PPC_GOT16_HI R_PPC = 16
2293 R_PPC_GOT16_HA R_PPC = 17
2294 R_PPC_PLTREL24 R_PPC = 18
2295 R_PPC_COPY R_PPC = 19
2296 R_PPC_GLOB_DAT R_PPC = 20
2297 R_PPC_JMP_SLOT R_PPC = 21
2298 R_PPC_RELATIVE R_PPC = 22
2299 R_PPC_LOCAL24PC R_PPC = 23
2300 R_PPC_UADDR32 R_PPC = 24
2301 R_PPC_UADDR16 R_PPC = 25
2302 R_PPC_REL32 R_PPC = 26
2303 R_PPC_PLT32 R_PPC = 27
2304 R_PPC_PLTREL32 R_PPC = 28
2305 R_PPC_PLT16_LO R_PPC = 29
2306 R_PPC_PLT16_HI R_PPC = 30
2307 R_PPC_PLT16_HA R_PPC = 31
2308 R_PPC_SDAREL16 R_PPC = 32
2309 R_PPC_SECTOFF R_PPC = 33
2310 R_PPC_SECTOFF_LO R_PPC = 34
2311 R_PPC_SECTOFF_HI R_PPC = 35
2312 R_PPC_SECTOFF_HA R_PPC = 36
2313 R_PPC_TLS R_PPC = 67
2314 R_PPC_DTPMOD32 R_PPC = 68
2315 R_PPC_TPREL16 R_PPC = 69
2316 R_PPC_TPREL16_LO R_PPC = 70
2317 R_PPC_TPREL16_HI R_PPC = 71
2318 R_PPC_TPREL16_HA R_PPC = 72
2319 R_PPC_TPREL32 R_PPC = 73
2320 R_PPC_DTPREL16 R_PPC = 74
2321 R_PPC_DTPREL16_LO R_PPC = 75
2322 R_PPC_DTPREL16_HI R_PPC = 76
2323 R_PPC_DTPREL16_HA R_PPC = 77
2324 R_PPC_DTPREL32 R_PPC = 78
2325 R_PPC_GOT_TLSGD16 R_PPC = 79
2326 R_PPC_GOT_TLSGD16_LO R_PPC = 80
2327 R_PPC_GOT_TLSGD16_HI R_PPC = 81
2328 R_PPC_GOT_TLSGD16_HA R_PPC = 82
2329 R_PPC_GOT_TLSLD16 R_PPC = 83
2330 R_PPC_GOT_TLSLD16_LO R_PPC = 84
2331 R_PPC_GOT_TLSLD16_HI R_PPC = 85
2332 R_PPC_GOT_TLSLD16_HA R_PPC = 86
2333 R_PPC_GOT_TPREL16 R_PPC = 87
2334 R_PPC_GOT_TPREL16_LO R_PPC = 88
2335 R_PPC_GOT_TPREL16_HI R_PPC = 89
2336 R_PPC_GOT_TPREL16_HA R_PPC = 90
2337 R_PPC_EMB_NADDR32 R_PPC = 101
2338 R_PPC_EMB_NADDR16 R_PPC = 102
2339 R_PPC_EMB_NADDR16_LO R_PPC = 103
2340 R_PPC_EMB_NADDR16_HI R_PPC = 104
2341 R_PPC_EMB_NADDR16_HA R_PPC = 105
2342 R_PPC_EMB_SDAI16 R_PPC = 106
2343 R_PPC_EMB_SDA2I16 R_PPC = 107
2344 R_PPC_EMB_SDA2REL R_PPC = 108
2345 R_PPC_EMB_SDA21 R_PPC = 109
2346 R_PPC_EMB_MRKREF R_PPC = 110
2347 R_PPC_EMB_RELSEC16 R_PPC = 111
2348 R_PPC_EMB_RELST_LO R_PPC = 112
2349 R_PPC_EMB_RELST_HI R_PPC = 113
2350 R_PPC_EMB_RELST_HA R_PPC = 114
2351 R_PPC_EMB_BIT_FLD R_PPC = 115
2352 R_PPC_EMB_RELSDA R_PPC = 116
2353 )
2354
2355 var rppcStrings = []intName{
2356 {0, "R_PPC_NONE"},
2357 {1, "R_PPC_ADDR32"},
2358 {2, "R_PPC_ADDR24"},
2359 {3, "R_PPC_ADDR16"},
2360 {4, "R_PPC_ADDR16_LO"},
2361 {5, "R_PPC_ADDR16_HI"},
2362 {6, "R_PPC_ADDR16_HA"},
2363 {7, "R_PPC_ADDR14"},
2364 {8, "R_PPC_ADDR14_BRTAKEN"},
2365 {9, "R_PPC_ADDR14_BRNTAKEN"},
2366 {10, "R_PPC_REL24"},
2367 {11, "R_PPC_REL14"},
2368 {12, "R_PPC_REL14_BRTAKEN"},
2369 {13, "R_PPC_REL14_BRNTAKEN"},
2370 {14, "R_PPC_GOT16"},
2371 {15, "R_PPC_GOT16_LO"},
2372 {16, "R_PPC_GOT16_HI"},
2373 {17, "R_PPC_GOT16_HA"},
2374 {18, "R_PPC_PLTREL24"},
2375 {19, "R_PPC_COPY"},
2376 {20, "R_PPC_GLOB_DAT"},
2377 {21, "R_PPC_JMP_SLOT"},
2378 {22, "R_PPC_RELATIVE"},
2379 {23, "R_PPC_LOCAL24PC"},
2380 {24, "R_PPC_UADDR32"},
2381 {25, "R_PPC_UADDR16"},
2382 {26, "R_PPC_REL32"},
2383 {27, "R_PPC_PLT32"},
2384 {28, "R_PPC_PLTREL32"},
2385 {29, "R_PPC_PLT16_LO"},
2386 {30, "R_PPC_PLT16_HI"},
2387 {31, "R_PPC_PLT16_HA"},
2388 {32, "R_PPC_SDAREL16"},
2389 {33, "R_PPC_SECTOFF"},
2390 {34, "R_PPC_SECTOFF_LO"},
2391 {35, "R_PPC_SECTOFF_HI"},
2392 {36, "R_PPC_SECTOFF_HA"},
2393 {67, "R_PPC_TLS"},
2394 {68, "R_PPC_DTPMOD32"},
2395 {69, "R_PPC_TPREL16"},
2396 {70, "R_PPC_TPREL16_LO"},
2397 {71, "R_PPC_TPREL16_HI"},
2398 {72, "R_PPC_TPREL16_HA"},
2399 {73, "R_PPC_TPREL32"},
2400 {74, "R_PPC_DTPREL16"},
2401 {75, "R_PPC_DTPREL16_LO"},
2402 {76, "R_PPC_DTPREL16_HI"},
2403 {77, "R_PPC_DTPREL16_HA"},
2404 {78, "R_PPC_DTPREL32"},
2405 {79, "R_PPC_GOT_TLSGD16"},
2406 {80, "R_PPC_GOT_TLSGD16_LO"},
2407 {81, "R_PPC_GOT_TLSGD16_HI"},
2408 {82, "R_PPC_GOT_TLSGD16_HA"},
2409 {83, "R_PPC_GOT_TLSLD16"},
2410 {84, "R_PPC_GOT_TLSLD16_LO"},
2411 {85, "R_PPC_GOT_TLSLD16_HI"},
2412 {86, "R_PPC_GOT_TLSLD16_HA"},
2413 {87, "R_PPC_GOT_TPREL16"},
2414 {88, "R_PPC_GOT_TPREL16_LO"},
2415 {89, "R_PPC_GOT_TPREL16_HI"},
2416 {90, "R_PPC_GOT_TPREL16_HA"},
2417 {101, "R_PPC_EMB_NADDR32"},
2418 {102, "R_PPC_EMB_NADDR16"},
2419 {103, "R_PPC_EMB_NADDR16_LO"},
2420 {104, "R_PPC_EMB_NADDR16_HI"},
2421 {105, "R_PPC_EMB_NADDR16_HA"},
2422 {106, "R_PPC_EMB_SDAI16"},
2423 {107, "R_PPC_EMB_SDA2I16"},
2424 {108, "R_PPC_EMB_SDA2REL"},
2425 {109, "R_PPC_EMB_SDA21"},
2426 {110, "R_PPC_EMB_MRKREF"},
2427 {111, "R_PPC_EMB_RELSEC16"},
2428 {112, "R_PPC_EMB_RELST_LO"},
2429 {113, "R_PPC_EMB_RELST_HI"},
2430 {114, "R_PPC_EMB_RELST_HA"},
2431 {115, "R_PPC_EMB_BIT_FLD"},
2432 {116, "R_PPC_EMB_RELSDA"},
2433 }
2434
2435 func (i R_PPC) String() string { return stringName(uint32(i), rppcStrings, false) }
2436 func (i R_PPC) GoString() string { return stringName(uint32(i), rppcStrings, true) }
2437
2438
2439
2440
2441
2442
2443
2444 type R_PPC64 int
2445
2446 const (
2447 R_PPC64_NONE R_PPC64 = 0
2448 R_PPC64_ADDR32 R_PPC64 = 1
2449 R_PPC64_ADDR24 R_PPC64 = 2
2450 R_PPC64_ADDR16 R_PPC64 = 3
2451 R_PPC64_ADDR16_LO R_PPC64 = 4
2452 R_PPC64_ADDR16_HI R_PPC64 = 5
2453 R_PPC64_ADDR16_HA R_PPC64 = 6
2454 R_PPC64_ADDR14 R_PPC64 = 7
2455 R_PPC64_ADDR14_BRTAKEN R_PPC64 = 8
2456 R_PPC64_ADDR14_BRNTAKEN R_PPC64 = 9
2457 R_PPC64_REL24 R_PPC64 = 10
2458 R_PPC64_REL14 R_PPC64 = 11
2459 R_PPC64_REL14_BRTAKEN R_PPC64 = 12
2460 R_PPC64_REL14_BRNTAKEN R_PPC64 = 13
2461 R_PPC64_GOT16 R_PPC64 = 14
2462 R_PPC64_GOT16_LO R_PPC64 = 15
2463 R_PPC64_GOT16_HI R_PPC64 = 16
2464 R_PPC64_GOT16_HA R_PPC64 = 17
2465 R_PPC64_JMP_SLOT R_PPC64 = 21
2466 R_PPC64_RELATIVE R_PPC64 = 22
2467 R_PPC64_REL32 R_PPC64 = 26
2468 R_PPC64_ADDR64 R_PPC64 = 38
2469 R_PPC64_ADDR16_HIGHER R_PPC64 = 39
2470 R_PPC64_ADDR16_HIGHERA R_PPC64 = 40
2471 R_PPC64_ADDR16_HIGHEST R_PPC64 = 41
2472 R_PPC64_ADDR16_HIGHESTA R_PPC64 = 42
2473 R_PPC64_REL64 R_PPC64 = 44
2474 R_PPC64_TOC16 R_PPC64 = 47
2475 R_PPC64_TOC16_LO R_PPC64 = 48
2476 R_PPC64_TOC16_HI R_PPC64 = 49
2477 R_PPC64_TOC16_HA R_PPC64 = 50
2478 R_PPC64_TOC R_PPC64 = 51
2479 R_PPC64_PLTGOT16 R_PPC64 = 52
2480 R_PPC64_PLTGOT16_LO R_PPC64 = 53
2481 R_PPC64_PLTGOT16_HI R_PPC64 = 54
2482 R_PPC64_PLTGOT16_HA R_PPC64 = 55
2483 R_PPC64_ADDR16_DS R_PPC64 = 56
2484 R_PPC64_ADDR16_LO_DS R_PPC64 = 57
2485 R_PPC64_GOT16_DS R_PPC64 = 58
2486 R_PPC64_GOT16_LO_DS R_PPC64 = 59
2487 R_PPC64_PLT16_LO_DS R_PPC64 = 60
2488 R_PPC64_SECTOFF_DS R_PPC64 = 61
2489 R_PPC64_SECTOFF_LO_DS R_PPC64 = 61
2490 R_PPC64_TOC16_DS R_PPC64 = 63
2491 R_PPC64_TOC16_LO_DS R_PPC64 = 64
2492 R_PPC64_PLTGOT16_DS R_PPC64 = 65
2493 R_PPC64_PLTGOT_LO_DS R_PPC64 = 66
2494 R_PPC64_TLS R_PPC64 = 67
2495 R_PPC64_DTPMOD64 R_PPC64 = 68
2496 R_PPC64_TPREL16 R_PPC64 = 69
2497 R_PPC64_TPREL16_LO R_PPC64 = 70
2498 R_PPC64_TPREL16_HI R_PPC64 = 71
2499 R_PPC64_TPREL16_HA R_PPC64 = 72
2500 R_PPC64_TPREL64 R_PPC64 = 73
2501 R_PPC64_DTPREL16 R_PPC64 = 74
2502 R_PPC64_DTPREL16_LO R_PPC64 = 75
2503 R_PPC64_DTPREL16_HI R_PPC64 = 76
2504 R_PPC64_DTPREL16_HA R_PPC64 = 77
2505 R_PPC64_DTPREL64 R_PPC64 = 78
2506 R_PPC64_GOT_TLSGD16 R_PPC64 = 79
2507 R_PPC64_GOT_TLSGD16_LO R_PPC64 = 80
2508 R_PPC64_GOT_TLSGD16_HI R_PPC64 = 81
2509 R_PPC64_GOT_TLSGD16_HA R_PPC64 = 82
2510 R_PPC64_GOT_TLSLD16 R_PPC64 = 83
2511 R_PPC64_GOT_TLSLD16_LO R_PPC64 = 84
2512 R_PPC64_GOT_TLSLD16_HI R_PPC64 = 85
2513 R_PPC64_GOT_TLSLD16_HA R_PPC64 = 86
2514 R_PPC64_GOT_TPREL16_DS R_PPC64 = 87
2515 R_PPC64_GOT_TPREL16_LO_DS R_PPC64 = 88
2516 R_PPC64_GOT_TPREL16_HI R_PPC64 = 89
2517 R_PPC64_GOT_TPREL16_HA R_PPC64 = 90
2518 R_PPC64_GOT_DTPREL16_DS R_PPC64 = 91
2519 R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 = 92
2520 R_PPC64_GOT_DTPREL16_HI R_PPC64 = 93
2521 R_PPC64_GOT_DTPREL16_HA R_PPC64 = 94
2522 R_PPC64_TPREL16_DS R_PPC64 = 95
2523 R_PPC64_TPREL16_LO_DS R_PPC64 = 96
2524 R_PPC64_TPREL16_HIGHER R_PPC64 = 97
2525 R_PPC64_TPREL16_HIGHERA R_PPC64 = 98
2526 R_PPC64_TPREL16_HIGHEST R_PPC64 = 99
2527 R_PPC64_TPREL16_HIGHESTA R_PPC64 = 100
2528 R_PPC64_DTPREL16_DS R_PPC64 = 101
2529 R_PPC64_DTPREL16_LO_DS R_PPC64 = 102
2530 R_PPC64_DTPREL16_HIGHER R_PPC64 = 103
2531 R_PPC64_DTPREL16_HIGHERA R_PPC64 = 104
2532 R_PPC64_DTPREL16_HIGHEST R_PPC64 = 105
2533 R_PPC64_DTPREL16_HIGHESTA R_PPC64 = 106
2534 R_PPC64_TLSGD R_PPC64 = 107
2535 R_PPC64_TLSLD R_PPC64 = 108
2536 R_PPC64_TOCSAVE R_PPC64 = 109
2537 R_PPC64_ADDR16_HIGH R_PPC64 = 110
2538 R_PPC64_ADDR16_HIGHA R_PPC64 = 111
2539 R_PPC64_TPREL16_HIGH R_PPC64 = 112
2540 R_PPC64_TPREL16_HIGHA R_PPC64 = 113
2541 R_PPC64_DTPREL16_HIGH R_PPC64 = 114
2542 R_PPC64_DTPREL16_HIGHA R_PPC64 = 115
2543 R_PPC64_REL24_NOTOC R_PPC64 = 116
2544 R_PPC64_ADDR64_LOCAL R_PPC64 = 117
2545 R_PPC64_ENTRY R_PPC64 = 118
2546 R_PPC64_REL16DX_HA R_PPC64 = 246
2547 R_PPC64_JMP_IREL R_PPC64 = 247
2548 R_PPC64_IRELATIVE R_PPC64 = 248
2549 R_PPC64_REL16 R_PPC64 = 249
2550 R_PPC64_REL16_LO R_PPC64 = 250
2551 R_PPC64_REL16_HI R_PPC64 = 251
2552 R_PPC64_REL16_HA R_PPC64 = 252
2553 )
2554
2555 var rppc64Strings = []intName{
2556 {0, "R_PPC64_NONE"},
2557 {1, "R_PPC64_ADDR32"},
2558 {2, "R_PPC64_ADDR24"},
2559 {3, "R_PPC64_ADDR16"},
2560 {4, "R_PPC64_ADDR16_LO"},
2561 {5, "R_PPC64_ADDR16_HI"},
2562 {6, "R_PPC64_ADDR16_HA"},
2563 {7, "R_PPC64_ADDR14"},
2564 {8, "R_PPC64_ADDR14_BRTAKEN"},
2565 {9, "R_PPC64_ADDR14_BRNTAKEN"},
2566 {10, "R_PPC64_REL24"},
2567 {11, "R_PPC64_REL14"},
2568 {12, "R_PPC64_REL14_BRTAKEN"},
2569 {13, "R_PPC64_REL14_BRNTAKEN"},
2570 {14, "R_PPC64_GOT16"},
2571 {15, "R_PPC64_GOT16_LO"},
2572 {16, "R_PPC64_GOT16_HI"},
2573 {17, "R_PPC64_GOT16_HA"},
2574 {21, "R_PPC64_JMP_SLOT"},
2575 {22, "R_PPC64_RELATIVE"},
2576 {26, "R_PPC64_REL32"},
2577 {38, "R_PPC64_ADDR64"},
2578 {39, "R_PPC64_ADDR16_HIGHER"},
2579 {40, "R_PPC64_ADDR16_HIGHERA"},
2580 {41, "R_PPC64_ADDR16_HIGHEST"},
2581 {42, "R_PPC64_ADDR16_HIGHESTA"},
2582 {44, "R_PPC64_REL64"},
2583 {47, "R_PPC64_TOC16"},
2584 {48, "R_PPC64_TOC16_LO"},
2585 {49, "R_PPC64_TOC16_HI"},
2586 {50, "R_PPC64_TOC16_HA"},
2587 {51, "R_PPC64_TOC"},
2588 {52, "R_PPC64_PLTGOT16"},
2589 {53, "R_PPC64_PLTGOT16_LO"},
2590 {54, "R_PPC64_PLTGOT16_HI"},
2591 {55, "R_PPC64_PLTGOT16_HA"},
2592 {56, "R_PPC64_ADDR16_DS"},
2593 {57, "R_PPC64_ADDR16_LO_DS"},
2594 {58, "R_PPC64_GOT16_DS"},
2595 {59, "R_PPC64_GOT16_LO_DS"},
2596 {60, "R_PPC64_PLT16_LO_DS"},
2597 {61, "R_PPC64_SECTOFF_DS"},
2598 {61, "R_PPC64_SECTOFF_LO_DS"},
2599 {63, "R_PPC64_TOC16_DS"},
2600 {64, "R_PPC64_TOC16_LO_DS"},
2601 {65, "R_PPC64_PLTGOT16_DS"},
2602 {66, "R_PPC64_PLTGOT_LO_DS"},
2603 {67, "R_PPC64_TLS"},
2604 {68, "R_PPC64_DTPMOD64"},
2605 {69, "R_PPC64_TPREL16"},
2606 {70, "R_PPC64_TPREL16_LO"},
2607 {71, "R_PPC64_TPREL16_HI"},
2608 {72, "R_PPC64_TPREL16_HA"},
2609 {73, "R_PPC64_TPREL64"},
2610 {74, "R_PPC64_DTPREL16"},
2611 {75, "R_PPC64_DTPREL16_LO"},
2612 {76, "R_PPC64_DTPREL16_HI"},
2613 {77, "R_PPC64_DTPREL16_HA"},
2614 {78, "R_PPC64_DTPREL64"},
2615 {79, "R_PPC64_GOT_TLSGD16"},
2616 {80, "R_PPC64_GOT_TLSGD16_LO"},
2617 {81, "R_PPC64_GOT_TLSGD16_HI"},
2618 {82, "R_PPC64_GOT_TLSGD16_HA"},
2619 {83, "R_PPC64_GOT_TLSLD16"},
2620 {84, "R_PPC64_GOT_TLSLD16_LO"},
2621 {85, "R_PPC64_GOT_TLSLD16_HI"},
2622 {86, "R_PPC64_GOT_TLSLD16_HA"},
2623 {87, "R_PPC64_GOT_TPREL16_DS"},
2624 {88, "R_PPC64_GOT_TPREL16_LO_DS"},
2625 {89, "R_PPC64_GOT_TPREL16_HI"},
2626 {90, "R_PPC64_GOT_TPREL16_HA"},
2627 {91, "R_PPC64_GOT_DTPREL16_DS"},
2628 {92, "R_PPC64_GOT_DTPREL16_LO_DS"},
2629 {93, "R_PPC64_GOT_DTPREL16_HI"},
2630 {94, "R_PPC64_GOT_DTPREL16_HA"},
2631 {95, "R_PPC64_TPREL16_DS"},
2632 {96, "R_PPC64_TPREL16_LO_DS"},
2633 {97, "R_PPC64_TPREL16_HIGHER"},
2634 {98, "R_PPC64_TPREL16_HIGHERA"},
2635 {99, "R_PPC64_TPREL16_HIGHEST"},
2636 {100, "R_PPC64_TPREL16_HIGHESTA"},
2637 {101, "R_PPC64_DTPREL16_DS"},
2638 {102, "R_PPC64_DTPREL16_LO_DS"},
2639 {103, "R_PPC64_DTPREL16_HIGHER"},
2640 {104, "R_PPC64_DTPREL16_HIGHERA"},
2641 {105, "R_PPC64_DTPREL16_HIGHEST"},
2642 {106, "R_PPC64_DTPREL16_HIGHESTA"},
2643 {107, "R_PPC64_TLSGD"},
2644 {108, "R_PPC64_TLSLD"},
2645 {109, "R_PPC64_TOCSAVE"},
2646 {110, "R_PPC64_ADDR16_HIGH"},
2647 {111, "R_PPC64_ADDR16_HIGHA"},
2648 {112, "R_PPC64_TPREL16_HIGH"},
2649 {113, "R_PPC64_TPREL16_HIGHA"},
2650 {114, "R_PPC64_DTPREL16_HIGH"},
2651 {115, "R_PPC64_DTPREL16_HIGHA"},
2652 {116, "R_PPC64_REL24_NOTOC"},
2653 {117, "R_PPC64_ADDR64_LOCAL"},
2654 {118, "R_PPC64_ENTRY"},
2655 {246, "R_PPC64_REL16DX_HA"},
2656 {247, "R_PPC64_JMP_IREL"},
2657 {248, "R_PPC64_IRELATIVE"},
2658 {249, "R_PPC64_REL16"},
2659 {250, "R_PPC64_REL16_LO"},
2660 {251, "R_PPC64_REL16_HI"},
2661 {252, "R_PPC64_REL16_HA"},
2662 }
2663
2664 func (i R_PPC64) String() string { return stringName(uint32(i), rppc64Strings, false) }
2665 func (i R_PPC64) GoString() string { return stringName(uint32(i), rppc64Strings, true) }
2666
2667
2668 type R_RISCV int
2669
2670 const (
2671 R_RISCV_NONE R_RISCV = 0
2672 R_RISCV_32 R_RISCV = 1
2673 R_RISCV_64 R_RISCV = 2
2674 R_RISCV_RELATIVE R_RISCV = 3
2675 R_RISCV_COPY R_RISCV = 4
2676 R_RISCV_JUMP_SLOT R_RISCV = 5
2677 R_RISCV_TLS_DTPMOD32 R_RISCV = 6
2678 R_RISCV_TLS_DTPMOD64 R_RISCV = 7
2679 R_RISCV_TLS_DTPREL32 R_RISCV = 8
2680 R_RISCV_TLS_DTPREL64 R_RISCV = 9
2681 R_RISCV_TLS_TPREL32 R_RISCV = 10
2682 R_RISCV_TLS_TPREL64 R_RISCV = 11
2683 R_RISCV_BRANCH R_RISCV = 16
2684 R_RISCV_JAL R_RISCV = 17
2685 R_RISCV_CALL R_RISCV = 18
2686 R_RISCV_CALL_PLT R_RISCV = 19
2687 R_RISCV_GOT_HI20 R_RISCV = 20
2688 R_RISCV_TLS_GOT_HI20 R_RISCV = 21
2689 R_RISCV_TLS_GD_HI20 R_RISCV = 22
2690 R_RISCV_PCREL_HI20 R_RISCV = 23
2691 R_RISCV_PCREL_LO12_I R_RISCV = 24
2692 R_RISCV_PCREL_LO12_S R_RISCV = 25
2693 R_RISCV_HI20 R_RISCV = 26
2694 R_RISCV_LO12_I R_RISCV = 27
2695 R_RISCV_LO12_S R_RISCV = 28
2696 R_RISCV_TPREL_HI20 R_RISCV = 29
2697 R_RISCV_TPREL_LO12_I R_RISCV = 30
2698 R_RISCV_TPREL_LO12_S R_RISCV = 31
2699 R_RISCV_TPREL_ADD R_RISCV = 32
2700 R_RISCV_ADD8 R_RISCV = 33
2701 R_RISCV_ADD16 R_RISCV = 34
2702 R_RISCV_ADD32 R_RISCV = 35
2703 R_RISCV_ADD64 R_RISCV = 36
2704 R_RISCV_SUB8 R_RISCV = 37
2705 R_RISCV_SUB16 R_RISCV = 38
2706 R_RISCV_SUB32 R_RISCV = 39
2707 R_RISCV_SUB64 R_RISCV = 40
2708 R_RISCV_GNU_VTINHERIT R_RISCV = 41
2709 R_RISCV_GNU_VTENTRY R_RISCV = 42
2710 R_RISCV_ALIGN R_RISCV = 43
2711 R_RISCV_RVC_BRANCH R_RISCV = 44
2712 R_RISCV_RVC_JUMP R_RISCV = 45
2713 R_RISCV_RVC_LUI R_RISCV = 46
2714 R_RISCV_GPREL_I R_RISCV = 47
2715 R_RISCV_GPREL_S R_RISCV = 48
2716 R_RISCV_TPREL_I R_RISCV = 49
2717 R_RISCV_TPREL_S R_RISCV = 50
2718 R_RISCV_RELAX R_RISCV = 51
2719 R_RISCV_SUB6 R_RISCV = 52
2720 R_RISCV_SET6 R_RISCV = 53
2721 R_RISCV_SET8 R_RISCV = 54
2722 R_RISCV_SET16 R_RISCV = 55
2723 R_RISCV_SET32 R_RISCV = 56
2724 R_RISCV_32_PCREL R_RISCV = 57
2725 )
2726
2727 var rriscvStrings = []intName{
2728 {0, "R_RISCV_NONE"},
2729 {1, "R_RISCV_32"},
2730 {2, "R_RISCV_64"},
2731 {3, "R_RISCV_RELATIVE"},
2732 {4, "R_RISCV_COPY"},
2733 {5, "R_RISCV_JUMP_SLOT"},
2734 {6, "R_RISCV_TLS_DTPMOD32"},
2735 {7, "R_RISCV_TLS_DTPMOD64"},
2736 {8, "R_RISCV_TLS_DTPREL32"},
2737 {9, "R_RISCV_TLS_DTPREL64"},
2738 {10, "R_RISCV_TLS_TPREL32"},
2739 {11, "R_RISCV_TLS_TPREL64"},
2740 {16, "R_RISCV_BRANCH"},
2741 {17, "R_RISCV_JAL"},
2742 {18, "R_RISCV_CALL"},
2743 {19, "R_RISCV_CALL_PLT"},
2744 {20, "R_RISCV_GOT_HI20"},
2745 {21, "R_RISCV_TLS_GOT_HI20"},
2746 {22, "R_RISCV_TLS_GD_HI20"},
2747 {23, "R_RISCV_PCREL_HI20"},
2748 {24, "R_RISCV_PCREL_LO12_I"},
2749 {25, "R_RISCV_PCREL_LO12_S"},
2750 {26, "R_RISCV_HI20"},
2751 {27, "R_RISCV_LO12_I"},
2752 {28, "R_RISCV_LO12_S"},
2753 {29, "R_RISCV_TPREL_HI20"},
2754 {30, "R_RISCV_TPREL_LO12_I"},
2755 {31, "R_RISCV_TPREL_LO12_S"},
2756 {32, "R_RISCV_TPREL_ADD"},
2757 {33, "R_RISCV_ADD8"},
2758 {34, "R_RISCV_ADD16"},
2759 {35, "R_RISCV_ADD32"},
2760 {36, "R_RISCV_ADD64"},
2761 {37, "R_RISCV_SUB8"},
2762 {38, "R_RISCV_SUB16"},
2763 {39, "R_RISCV_SUB32"},
2764 {40, "R_RISCV_SUB64"},
2765 {41, "R_RISCV_GNU_VTINHERIT"},
2766 {42, "R_RISCV_GNU_VTENTRY"},
2767 {43, "R_RISCV_ALIGN"},
2768 {44, "R_RISCV_RVC_BRANCH"},
2769 {45, "R_RISCV_RVC_JUMP"},
2770 {46, "R_RISCV_RVC_LUI"},
2771 {47, "R_RISCV_GPREL_I"},
2772 {48, "R_RISCV_GPREL_S"},
2773 {49, "R_RISCV_TPREL_I"},
2774 {50, "R_RISCV_TPREL_S"},
2775 {51, "R_RISCV_RELAX"},
2776 {52, "R_RISCV_SUB6"},
2777 {53, "R_RISCV_SET6"},
2778 {54, "R_RISCV_SET8"},
2779 {55, "R_RISCV_SET16"},
2780 {56, "R_RISCV_SET32"},
2781 {57, "R_RISCV_32_PCREL"},
2782 }
2783
2784 func (i R_RISCV) String() string { return stringName(uint32(i), rriscvStrings, false) }
2785 func (i R_RISCV) GoString() string { return stringName(uint32(i), rriscvStrings, true) }
2786
2787
2788 type R_390 int
2789
2790 const (
2791 R_390_NONE R_390 = 0
2792 R_390_8 R_390 = 1
2793 R_390_12 R_390 = 2
2794 R_390_16 R_390 = 3
2795 R_390_32 R_390 = 4
2796 R_390_PC32 R_390 = 5
2797 R_390_GOT12 R_390 = 6
2798 R_390_GOT32 R_390 = 7
2799 R_390_PLT32 R_390 = 8
2800 R_390_COPY R_390 = 9
2801 R_390_GLOB_DAT R_390 = 10
2802 R_390_JMP_SLOT R_390 = 11
2803 R_390_RELATIVE R_390 = 12
2804 R_390_GOTOFF R_390 = 13
2805 R_390_GOTPC R_390 = 14
2806 R_390_GOT16 R_390 = 15
2807 R_390_PC16 R_390 = 16
2808 R_390_PC16DBL R_390 = 17
2809 R_390_PLT16DBL R_390 = 18
2810 R_390_PC32DBL R_390 = 19
2811 R_390_PLT32DBL R_390 = 20
2812 R_390_GOTPCDBL R_390 = 21
2813 R_390_64 R_390 = 22
2814 R_390_PC64 R_390 = 23
2815 R_390_GOT64 R_390 = 24
2816 R_390_PLT64 R_390 = 25
2817 R_390_GOTENT R_390 = 26
2818 R_390_GOTOFF16 R_390 = 27
2819 R_390_GOTOFF64 R_390 = 28
2820 R_390_GOTPLT12 R_390 = 29
2821 R_390_GOTPLT16 R_390 = 30
2822 R_390_GOTPLT32 R_390 = 31
2823 R_390_GOTPLT64 R_390 = 32
2824 R_390_GOTPLTENT R_390 = 33
2825 R_390_GOTPLTOFF16 R_390 = 34
2826 R_390_GOTPLTOFF32 R_390 = 35
2827 R_390_GOTPLTOFF64 R_390 = 36
2828 R_390_TLS_LOAD R_390 = 37
2829 R_390_TLS_GDCALL R_390 = 38
2830 R_390_TLS_LDCALL R_390 = 39
2831 R_390_TLS_GD32 R_390 = 40
2832 R_390_TLS_GD64 R_390 = 41
2833 R_390_TLS_GOTIE12 R_390 = 42
2834 R_390_TLS_GOTIE32 R_390 = 43
2835 R_390_TLS_GOTIE64 R_390 = 44
2836 R_390_TLS_LDM32 R_390 = 45
2837 R_390_TLS_LDM64 R_390 = 46
2838 R_390_TLS_IE32 R_390 = 47
2839 R_390_TLS_IE64 R_390 = 48
2840 R_390_TLS_IEENT R_390 = 49
2841 R_390_TLS_LE32 R_390 = 50
2842 R_390_TLS_LE64 R_390 = 51
2843 R_390_TLS_LDO32 R_390 = 52
2844 R_390_TLS_LDO64 R_390 = 53
2845 R_390_TLS_DTPMOD R_390 = 54
2846 R_390_TLS_DTPOFF R_390 = 55
2847 R_390_TLS_TPOFF R_390 = 56
2848 R_390_20 R_390 = 57
2849 R_390_GOT20 R_390 = 58
2850 R_390_GOTPLT20 R_390 = 59
2851 R_390_TLS_GOTIE20 R_390 = 60
2852 )
2853
2854 var r390Strings = []intName{
2855 {0, "R_390_NONE"},
2856 {1, "R_390_8"},
2857 {2, "R_390_12"},
2858 {3, "R_390_16"},
2859 {4, "R_390_32"},
2860 {5, "R_390_PC32"},
2861 {6, "R_390_GOT12"},
2862 {7, "R_390_GOT32"},
2863 {8, "R_390_PLT32"},
2864 {9, "R_390_COPY"},
2865 {10, "R_390_GLOB_DAT"},
2866 {11, "R_390_JMP_SLOT"},
2867 {12, "R_390_RELATIVE"},
2868 {13, "R_390_GOTOFF"},
2869 {14, "R_390_GOTPC"},
2870 {15, "R_390_GOT16"},
2871 {16, "R_390_PC16"},
2872 {17, "R_390_PC16DBL"},
2873 {18, "R_390_PLT16DBL"},
2874 {19, "R_390_PC32DBL"},
2875 {20, "R_390_PLT32DBL"},
2876 {21, "R_390_GOTPCDBL"},
2877 {22, "R_390_64"},
2878 {23, "R_390_PC64"},
2879 {24, "R_390_GOT64"},
2880 {25, "R_390_PLT64"},
2881 {26, "R_390_GOTENT"},
2882 {27, "R_390_GOTOFF16"},
2883 {28, "R_390_GOTOFF64"},
2884 {29, "R_390_GOTPLT12"},
2885 {30, "R_390_GOTPLT16"},
2886 {31, "R_390_GOTPLT32"},
2887 {32, "R_390_GOTPLT64"},
2888 {33, "R_390_GOTPLTENT"},
2889 {34, "R_390_GOTPLTOFF16"},
2890 {35, "R_390_GOTPLTOFF32"},
2891 {36, "R_390_GOTPLTOFF64"},
2892 {37, "R_390_TLS_LOAD"},
2893 {38, "R_390_TLS_GDCALL"},
2894 {39, "R_390_TLS_LDCALL"},
2895 {40, "R_390_TLS_GD32"},
2896 {41, "R_390_TLS_GD64"},
2897 {42, "R_390_TLS_GOTIE12"},
2898 {43, "R_390_TLS_GOTIE32"},
2899 {44, "R_390_TLS_GOTIE64"},
2900 {45, "R_390_TLS_LDM32"},
2901 {46, "R_390_TLS_LDM64"},
2902 {47, "R_390_TLS_IE32"},
2903 {48, "R_390_TLS_IE64"},
2904 {49, "R_390_TLS_IEENT"},
2905 {50, "R_390_TLS_LE32"},
2906 {51, "R_390_TLS_LE64"},
2907 {52, "R_390_TLS_LDO32"},
2908 {53, "R_390_TLS_LDO64"},
2909 {54, "R_390_TLS_DTPMOD"},
2910 {55, "R_390_TLS_DTPOFF"},
2911 {56, "R_390_TLS_TPOFF"},
2912 {57, "R_390_20"},
2913 {58, "R_390_GOT20"},
2914 {59, "R_390_GOTPLT20"},
2915 {60, "R_390_TLS_GOTIE20"},
2916 }
2917
2918 func (i R_390) String() string { return stringName(uint32(i), r390Strings, false) }
2919 func (i R_390) GoString() string { return stringName(uint32(i), r390Strings, true) }
2920
2921
2922 type R_SPARC int
2923
2924 const (
2925 R_SPARC_NONE R_SPARC = 0
2926 R_SPARC_8 R_SPARC = 1
2927 R_SPARC_16 R_SPARC = 2
2928 R_SPARC_32 R_SPARC = 3
2929 R_SPARC_DISP8 R_SPARC = 4
2930 R_SPARC_DISP16 R_SPARC = 5
2931 R_SPARC_DISP32 R_SPARC = 6
2932 R_SPARC_WDISP30 R_SPARC = 7
2933 R_SPARC_WDISP22 R_SPARC = 8
2934 R_SPARC_HI22 R_SPARC = 9
2935 R_SPARC_22 R_SPARC = 10
2936 R_SPARC_13 R_SPARC = 11
2937 R_SPARC_LO10 R_SPARC = 12
2938 R_SPARC_GOT10 R_SPARC = 13
2939 R_SPARC_GOT13 R_SPARC = 14
2940 R_SPARC_GOT22 R_SPARC = 15
2941 R_SPARC_PC10 R_SPARC = 16
2942 R_SPARC_PC22 R_SPARC = 17
2943 R_SPARC_WPLT30 R_SPARC = 18
2944 R_SPARC_COPY R_SPARC = 19
2945 R_SPARC_GLOB_DAT R_SPARC = 20
2946 R_SPARC_JMP_SLOT R_SPARC = 21
2947 R_SPARC_RELATIVE R_SPARC = 22
2948 R_SPARC_UA32 R_SPARC = 23
2949 R_SPARC_PLT32 R_SPARC = 24
2950 R_SPARC_HIPLT22 R_SPARC = 25
2951 R_SPARC_LOPLT10 R_SPARC = 26
2952 R_SPARC_PCPLT32 R_SPARC = 27
2953 R_SPARC_PCPLT22 R_SPARC = 28
2954 R_SPARC_PCPLT10 R_SPARC = 29
2955 R_SPARC_10 R_SPARC = 30
2956 R_SPARC_11 R_SPARC = 31
2957 R_SPARC_64 R_SPARC = 32
2958 R_SPARC_OLO10 R_SPARC = 33
2959 R_SPARC_HH22 R_SPARC = 34
2960 R_SPARC_HM10 R_SPARC = 35
2961 R_SPARC_LM22 R_SPARC = 36
2962 R_SPARC_PC_HH22 R_SPARC = 37
2963 R_SPARC_PC_HM10 R_SPARC = 38
2964 R_SPARC_PC_LM22 R_SPARC = 39
2965 R_SPARC_WDISP16 R_SPARC = 40
2966 R_SPARC_WDISP19 R_SPARC = 41
2967 R_SPARC_GLOB_JMP R_SPARC = 42
2968 R_SPARC_7 R_SPARC = 43
2969 R_SPARC_5 R_SPARC = 44
2970 R_SPARC_6 R_SPARC = 45
2971 R_SPARC_DISP64 R_SPARC = 46
2972 R_SPARC_PLT64 R_SPARC = 47
2973 R_SPARC_HIX22 R_SPARC = 48
2974 R_SPARC_LOX10 R_SPARC = 49
2975 R_SPARC_H44 R_SPARC = 50
2976 R_SPARC_M44 R_SPARC = 51
2977 R_SPARC_L44 R_SPARC = 52
2978 R_SPARC_REGISTER R_SPARC = 53
2979 R_SPARC_UA64 R_SPARC = 54
2980 R_SPARC_UA16 R_SPARC = 55
2981 )
2982
2983 var rsparcStrings = []intName{
2984 {0, "R_SPARC_NONE"},
2985 {1, "R_SPARC_8"},
2986 {2, "R_SPARC_16"},
2987 {3, "R_SPARC_32"},
2988 {4, "R_SPARC_DISP8"},
2989 {5, "R_SPARC_DISP16"},
2990 {6, "R_SPARC_DISP32"},
2991 {7, "R_SPARC_WDISP30"},
2992 {8, "R_SPARC_WDISP22"},
2993 {9, "R_SPARC_HI22"},
2994 {10, "R_SPARC_22"},
2995 {11, "R_SPARC_13"},
2996 {12, "R_SPARC_LO10"},
2997 {13, "R_SPARC_GOT10"},
2998 {14, "R_SPARC_GOT13"},
2999 {15, "R_SPARC_GOT22"},
3000 {16, "R_SPARC_PC10"},
3001 {17, "R_SPARC_PC22"},
3002 {18, "R_SPARC_WPLT30"},
3003 {19, "R_SPARC_COPY"},
3004 {20, "R_SPARC_GLOB_DAT"},
3005 {21, "R_SPARC_JMP_SLOT"},
3006 {22, "R_SPARC_RELATIVE"},
3007 {23, "R_SPARC_UA32"},
3008 {24, "R_SPARC_PLT32"},
3009 {25, "R_SPARC_HIPLT22"},
3010 {26, "R_SPARC_LOPLT10"},
3011 {27, "R_SPARC_PCPLT32"},
3012 {28, "R_SPARC_PCPLT22"},
3013 {29, "R_SPARC_PCPLT10"},
3014 {30, "R_SPARC_10"},
3015 {31, "R_SPARC_11"},
3016 {32, "R_SPARC_64"},
3017 {33, "R_SPARC_OLO10"},
3018 {34, "R_SPARC_HH22"},
3019 {35, "R_SPARC_HM10"},
3020 {36, "R_SPARC_LM22"},
3021 {37, "R_SPARC_PC_HH22"},
3022 {38, "R_SPARC_PC_HM10"},
3023 {39, "R_SPARC_PC_LM22"},
3024 {40, "R_SPARC_WDISP16"},
3025 {41, "R_SPARC_WDISP19"},
3026 {42, "R_SPARC_GLOB_JMP"},
3027 {43, "R_SPARC_7"},
3028 {44, "R_SPARC_5"},
3029 {45, "R_SPARC_6"},
3030 {46, "R_SPARC_DISP64"},
3031 {47, "R_SPARC_PLT64"},
3032 {48, "R_SPARC_HIX22"},
3033 {49, "R_SPARC_LOX10"},
3034 {50, "R_SPARC_H44"},
3035 {51, "R_SPARC_M44"},
3036 {52, "R_SPARC_L44"},
3037 {53, "R_SPARC_REGISTER"},
3038 {54, "R_SPARC_UA64"},
3039 {55, "R_SPARC_UA16"},
3040 }
3041
3042 func (i R_SPARC) String() string { return stringName(uint32(i), rsparcStrings, false) }
3043 func (i R_SPARC) GoString() string { return stringName(uint32(i), rsparcStrings, true) }
3044
3045
3046 const ARM_MAGIC_TRAMP_NUMBER = 0x5c000003
3047
3048
3049 type Header32 struct {
3050 Ident [EI_NIDENT]byte
3051 Type uint16
3052 Machine uint16
3053 Version uint32
3054 Entry uint32
3055 Phoff uint32
3056 Shoff uint32
3057 Flags uint32
3058 Ehsize uint16
3059 Phentsize uint16
3060 Phnum uint16
3061 Shentsize uint16
3062 Shnum uint16
3063 Shstrndx uint16
3064 }
3065
3066
3067 type Section32 struct {
3068 Name uint32
3069 Type uint32
3070 Flags uint32
3071 Addr uint32
3072 Off uint32
3073 Size uint32
3074 Link uint32
3075 Info uint32
3076 Addralign uint32
3077 Entsize uint32
3078 }
3079
3080
3081 type Prog32 struct {
3082 Type uint32
3083 Off uint32
3084 Vaddr uint32
3085 Paddr uint32
3086 Filesz uint32
3087 Memsz uint32
3088 Flags uint32
3089 Align uint32
3090 }
3091
3092
3093 type Dyn32 struct {
3094 Tag int32
3095 Val uint32
3096 }
3097
3098
3099 type Chdr32 struct {
3100 Type uint32
3101 Size uint32
3102 Addralign uint32
3103 }
3104
3105
3108
3109
3110 type Rel32 struct {
3111 Off uint32
3112 Info uint32
3113 }
3114
3115
3116 type Rela32 struct {
3117 Off uint32
3118 Info uint32
3119 Addend int32
3120 }
3121
3122 func R_SYM32(info uint32) uint32 { return info >> 8 }
3123 func R_TYPE32(info uint32) uint32 { return info & 0xff }
3124 func R_INFO32(sym, typ uint32) uint32 { return sym<<8 | typ }
3125
3126
3127 type Sym32 struct {
3128 Name uint32
3129 Value uint32
3130 Size uint32
3131 Info uint8
3132 Other uint8
3133 Shndx uint16
3134 }
3135
3136 const Sym32Size = 16
3137
3138 func ST_BIND(info uint8) SymBind { return SymBind(info >> 4) }
3139 func ST_TYPE(info uint8) SymType { return SymType(info & 0xF) }
3140 func ST_INFO(bind SymBind, typ SymType) uint8 {
3141 return uint8(bind)<<4 | uint8(typ)&0xf
3142 }
3143 func ST_VISIBILITY(other uint8) SymVis { return SymVis(other & 3) }
3144
3145
3148
3149
3150 type Header64 struct {
3151 Ident [EI_NIDENT]byte
3152 Type uint16
3153 Machine uint16
3154 Version uint32
3155 Entry uint64
3156 Phoff uint64
3157 Shoff uint64
3158 Flags uint32
3159 Ehsize uint16
3160 Phentsize uint16
3161 Phnum uint16
3162 Shentsize uint16
3163 Shnum uint16
3164 Shstrndx uint16
3165 }
3166
3167
3168 type Section64 struct {
3169 Name uint32
3170 Type uint32
3171 Flags uint64
3172 Addr uint64
3173 Off uint64
3174 Size uint64
3175 Link uint32
3176 Info uint32
3177 Addralign uint64
3178 Entsize uint64
3179 }
3180
3181
3182 type Prog64 struct {
3183 Type uint32
3184 Flags uint32
3185 Off uint64
3186 Vaddr uint64
3187 Paddr uint64
3188 Filesz uint64
3189 Memsz uint64
3190 Align uint64
3191 }
3192
3193
3194 type Dyn64 struct {
3195 Tag int64
3196 Val uint64
3197 }
3198
3199
3200 type Chdr64 struct {
3201 Type uint32
3202 _ uint32
3203 Size uint64
3204 Addralign uint64
3205 }
3206
3207
3210
3211
3212 type Rel64 struct {
3213 Off uint64
3214 Info uint64
3215 }
3216
3217
3218 type Rela64 struct {
3219 Off uint64
3220 Info uint64
3221 Addend int64
3222 }
3223
3224 func R_SYM64(info uint64) uint32 { return uint32(info >> 32) }
3225 func R_TYPE64(info uint64) uint32 { return uint32(info) }
3226 func R_INFO(sym, typ uint32) uint64 { return uint64(sym)<<32 | uint64(typ) }
3227
3228
3229 type Sym64 struct {
3230 Name uint32
3231 Info uint8
3232 Other uint8
3233 Shndx uint16
3234 Value uint64
3235 Size uint64
3236 }
3237
3238 const Sym64Size = 24
3239
3240 type intName struct {
3241 i uint32
3242 s string
3243 }
3244
3245 func stringName(i uint32, names []intName, goSyntax bool) string {
3246 for _, n := range names {
3247 if n.i == i {
3248 if goSyntax {
3249 return "elf." + n.s
3250 }
3251 return n.s
3252 }
3253 }
3254
3255
3256
3257 for j := len(names) - 1; j >= 0; j-- {
3258 n := names[j]
3259 if n.i < i {
3260 s := n.s
3261 if goSyntax {
3262 s = "elf." + s
3263 }
3264 return s + "+" + strconv.FormatUint(uint64(i-n.i), 10)
3265 }
3266 }
3267
3268 return strconv.FormatUint(uint64(i), 10)
3269 }
3270
3271 func flagName(i uint32, names []intName, goSyntax bool) string {
3272 s := ""
3273 for _, n := range names {
3274 if n.i&i == n.i {
3275 if len(s) > 0 {
3276 s += "+"
3277 }
3278 if goSyntax {
3279 s += "elf."
3280 }
3281 s += n.s
3282 i -= n.i
3283 }
3284 }
3285 if len(s) == 0 {
3286 return "0x" + strconv.FormatUint(uint64(i), 16)
3287 }
3288 if i != 0 {
3289 s += "+0x" + strconv.FormatUint(uint64(i), 16)
3290 }
3291 return s
3292 }
3293
View as plain text