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_RISCV_ATTRIBUTES SectionType = 0x70000003
650 SHT_MIPS_ABIFLAGS SectionType = 0x7000002a
651 SHT_HIPROC SectionType = 0x7fffffff
652 SHT_LOUSER SectionType = 0x80000000
653 SHT_HIUSER SectionType = 0xffffffff
654 )
655
656 var shtStrings = []intName{
657 {0, "SHT_NULL"},
658 {1, "SHT_PROGBITS"},
659 {2, "SHT_SYMTAB"},
660 {3, "SHT_STRTAB"},
661 {4, "SHT_RELA"},
662 {5, "SHT_HASH"},
663 {6, "SHT_DYNAMIC"},
664 {7, "SHT_NOTE"},
665 {8, "SHT_NOBITS"},
666 {9, "SHT_REL"},
667 {10, "SHT_SHLIB"},
668 {11, "SHT_DYNSYM"},
669 {14, "SHT_INIT_ARRAY"},
670 {15, "SHT_FINI_ARRAY"},
671 {16, "SHT_PREINIT_ARRAY"},
672 {17, "SHT_GROUP"},
673 {18, "SHT_SYMTAB_SHNDX"},
674 {0x60000000, "SHT_LOOS"},
675 {0x6ffffff5, "SHT_GNU_ATTRIBUTES"},
676 {0x6ffffff6, "SHT_GNU_HASH"},
677 {0x6ffffff7, "SHT_GNU_LIBLIST"},
678 {0x6ffffffd, "SHT_GNU_VERDEF"},
679 {0x6ffffffe, "SHT_GNU_VERNEED"},
680 {0x6fffffff, "SHT_GNU_VERSYM"},
681 {0x70000000, "SHT_LOPROC"},
682
683
684 {0x7000002a, "SHT_MIPS_ABIFLAGS"},
685 {0x7fffffff, "SHT_HIPROC"},
686 {0x80000000, "SHT_LOUSER"},
687 {0xffffffff, "SHT_HIUSER"},
688 }
689
690 func (i SectionType) String() string { return stringName(uint32(i), shtStrings, false) }
691 func (i SectionType) GoString() string { return stringName(uint32(i), shtStrings, true) }
692
693
694 type SectionFlag uint32
695
696 const (
697 SHF_WRITE SectionFlag = 0x1
698 SHF_ALLOC SectionFlag = 0x2
699 SHF_EXECINSTR SectionFlag = 0x4
700 SHF_MERGE SectionFlag = 0x10
701 SHF_STRINGS SectionFlag = 0x20
702 SHF_INFO_LINK SectionFlag = 0x40
703 SHF_LINK_ORDER SectionFlag = 0x80
704 SHF_OS_NONCONFORMING SectionFlag = 0x100
705 SHF_GROUP SectionFlag = 0x200
706 SHF_TLS SectionFlag = 0x400
707 SHF_COMPRESSED SectionFlag = 0x800
708 SHF_MASKOS SectionFlag = 0x0ff00000
709 SHF_MASKPROC SectionFlag = 0xf0000000
710 )
711
712 var shfStrings = []intName{
713 {0x1, "SHF_WRITE"},
714 {0x2, "SHF_ALLOC"},
715 {0x4, "SHF_EXECINSTR"},
716 {0x10, "SHF_MERGE"},
717 {0x20, "SHF_STRINGS"},
718 {0x40, "SHF_INFO_LINK"},
719 {0x80, "SHF_LINK_ORDER"},
720 {0x100, "SHF_OS_NONCONFORMING"},
721 {0x200, "SHF_GROUP"},
722 {0x400, "SHF_TLS"},
723 {0x800, "SHF_COMPRESSED"},
724 }
725
726 func (i SectionFlag) String() string { return flagName(uint32(i), shfStrings, false) }
727 func (i SectionFlag) GoString() string { return flagName(uint32(i), shfStrings, true) }
728
729
730 type CompressionType int
731
732 const (
733 COMPRESS_ZLIB CompressionType = 1
734 COMPRESS_ZSTD CompressionType = 2
735 COMPRESS_LOOS CompressionType = 0x60000000
736 COMPRESS_HIOS CompressionType = 0x6fffffff
737 COMPRESS_LOPROC CompressionType = 0x70000000
738 COMPRESS_HIPROC CompressionType = 0x7fffffff
739 )
740
741 var compressionStrings = []intName{
742 {1, "COMPRESS_ZLIB"},
743 {2, "COMPRESS_ZSTD"},
744 {0x60000000, "COMPRESS_LOOS"},
745 {0x6fffffff, "COMPRESS_HIOS"},
746 {0x70000000, "COMPRESS_LOPROC"},
747 {0x7fffffff, "COMPRESS_HIPROC"},
748 }
749
750 func (i CompressionType) String() string { return stringName(uint32(i), compressionStrings, false) }
751 func (i CompressionType) GoString() string { return stringName(uint32(i), compressionStrings, true) }
752
753
754 type ProgType int
755
756 const (
757 PT_NULL ProgType = 0
758 PT_LOAD ProgType = 1
759 PT_DYNAMIC ProgType = 2
760 PT_INTERP ProgType = 3
761 PT_NOTE ProgType = 4
762 PT_SHLIB ProgType = 5
763 PT_PHDR ProgType = 6
764 PT_TLS ProgType = 7
765
766 PT_LOOS ProgType = 0x60000000
767
768 PT_GNU_EH_FRAME ProgType = 0x6474e550
769 PT_GNU_STACK ProgType = 0x6474e551
770 PT_GNU_RELRO ProgType = 0x6474e552
771 PT_GNU_PROPERTY ProgType = 0x6474e553
772 PT_GNU_MBIND_LO ProgType = 0x6474e555
773 PT_GNU_MBIND_HI ProgType = 0x6474f554
774
775 PT_PAX_FLAGS ProgType = 0x65041580
776
777 PT_OPENBSD_RANDOMIZE ProgType = 0x65a3dbe6
778 PT_OPENBSD_WXNEEDED ProgType = 0x65a3dbe7
779 PT_OPENBSD_NOBTCFI ProgType = 0x65a3dbe8
780 PT_OPENBSD_BOOTDATA ProgType = 0x65a41be6
781
782 PT_SUNW_EH_FRAME ProgType = 0x6474e550
783 PT_SUNWSTACK ProgType = 0x6ffffffb
784
785 PT_HIOS ProgType = 0x6fffffff
786
787 PT_LOPROC ProgType = 0x70000000
788
789 PT_ARM_ARCHEXT ProgType = 0x70000000
790 PT_ARM_EXIDX ProgType = 0x70000001
791
792 PT_AARCH64_ARCHEXT ProgType = 0x70000000
793 PT_AARCH64_UNWIND ProgType = 0x70000001
794
795 PT_MIPS_REGINFO ProgType = 0x70000000
796 PT_MIPS_RTPROC ProgType = 0x70000001
797 PT_MIPS_OPTIONS ProgType = 0x70000002
798 PT_MIPS_ABIFLAGS ProgType = 0x70000003
799
800 PT_RISCV_ATTRIBUTES ProgType = 0x70000003
801
802 PT_S390_PGSTE ProgType = 0x70000000
803
804 PT_HIPROC ProgType = 0x7fffffff
805 )
806
807 var ptStrings = []intName{
808 {0, "PT_NULL"},
809 {1, "PT_LOAD"},
810 {2, "PT_DYNAMIC"},
811 {3, "PT_INTERP"},
812 {4, "PT_NOTE"},
813 {5, "PT_SHLIB"},
814 {6, "PT_PHDR"},
815 {7, "PT_TLS"},
816 {0x60000000, "PT_LOOS"},
817 {0x6474e550, "PT_GNU_EH_FRAME"},
818 {0x6474e551, "PT_GNU_STACK"},
819 {0x6474e552, "PT_GNU_RELRO"},
820 {0x6474e553, "PT_GNU_PROPERTY"},
821 {0x65041580, "PT_PAX_FLAGS"},
822 {0x65a3dbe6, "PT_OPENBSD_RANDOMIZE"},
823 {0x65a3dbe7, "PT_OPENBSD_WXNEEDED"},
824 {0x65a41be6, "PT_OPENBSD_BOOTDATA"},
825 {0x6ffffffb, "PT_SUNWSTACK"},
826 {0x6fffffff, "PT_HIOS"},
827 {0x70000000, "PT_LOPROC"},
828
829
830 {0x7fffffff, "PT_HIPROC"},
831 }
832
833 func (i ProgType) String() string { return stringName(uint32(i), ptStrings, false) }
834 func (i ProgType) GoString() string { return stringName(uint32(i), ptStrings, true) }
835
836
837 type ProgFlag uint32
838
839 const (
840 PF_X ProgFlag = 0x1
841 PF_W ProgFlag = 0x2
842 PF_R ProgFlag = 0x4
843 PF_MASKOS ProgFlag = 0x0ff00000
844 PF_MASKPROC ProgFlag = 0xf0000000
845 )
846
847 var pfStrings = []intName{
848 {0x1, "PF_X"},
849 {0x2, "PF_W"},
850 {0x4, "PF_R"},
851 }
852
853 func (i ProgFlag) String() string { return flagName(uint32(i), pfStrings, false) }
854 func (i ProgFlag) GoString() string { return flagName(uint32(i), pfStrings, true) }
855
856
857 type DynTag int
858
859 const (
860 DT_NULL DynTag = 0
861 DT_NEEDED DynTag = 1
862 DT_PLTRELSZ DynTag = 2
863 DT_PLTGOT DynTag = 3
864 DT_HASH DynTag = 4
865 DT_STRTAB DynTag = 5
866 DT_SYMTAB DynTag = 6
867 DT_RELA DynTag = 7
868 DT_RELASZ DynTag = 8
869 DT_RELAENT DynTag = 9
870 DT_STRSZ DynTag = 10
871 DT_SYMENT DynTag = 11
872 DT_INIT DynTag = 12
873 DT_FINI DynTag = 13
874 DT_SONAME DynTag = 14
875 DT_RPATH DynTag = 15
876 DT_SYMBOLIC DynTag = 16
877 DT_REL DynTag = 17
878 DT_RELSZ DynTag = 18
879 DT_RELENT DynTag = 19
880 DT_PLTREL DynTag = 20
881 DT_DEBUG DynTag = 21
882 DT_TEXTREL DynTag = 22
883 DT_JMPREL DynTag = 23
884 DT_BIND_NOW DynTag = 24
885 DT_INIT_ARRAY DynTag = 25
886 DT_FINI_ARRAY DynTag = 26
887 DT_INIT_ARRAYSZ DynTag = 27
888 DT_FINI_ARRAYSZ DynTag = 28
889 DT_RUNPATH DynTag = 29
890 DT_FLAGS DynTag = 30
891 DT_ENCODING DynTag = 32
896 DT_PREINIT_ARRAY DynTag = 32
897 DT_PREINIT_ARRAYSZ DynTag = 33
898 DT_SYMTAB_SHNDX DynTag = 34
899
900 DT_LOOS DynTag = 0x6000000d
901 DT_HIOS DynTag = 0x6ffff000
902
903 DT_VALRNGLO DynTag = 0x6ffffd00
904 DT_GNU_PRELINKED DynTag = 0x6ffffdf5
905 DT_GNU_CONFLICTSZ DynTag = 0x6ffffdf6
906 DT_GNU_LIBLISTSZ DynTag = 0x6ffffdf7
907 DT_CHECKSUM DynTag = 0x6ffffdf8
908 DT_PLTPADSZ DynTag = 0x6ffffdf9
909 DT_MOVEENT DynTag = 0x6ffffdfa
910 DT_MOVESZ DynTag = 0x6ffffdfb
911 DT_FEATURE DynTag = 0x6ffffdfc
912 DT_POSFLAG_1 DynTag = 0x6ffffdfd
913 DT_SYMINSZ DynTag = 0x6ffffdfe
914 DT_SYMINENT DynTag = 0x6ffffdff
915 DT_VALRNGHI DynTag = 0x6ffffdff
916
917 DT_ADDRRNGLO DynTag = 0x6ffffe00
918 DT_GNU_HASH DynTag = 0x6ffffef5
919 DT_TLSDESC_PLT DynTag = 0x6ffffef6
920 DT_TLSDESC_GOT DynTag = 0x6ffffef7
921 DT_GNU_CONFLICT DynTag = 0x6ffffef8
922 DT_GNU_LIBLIST DynTag = 0x6ffffef9
923 DT_CONFIG DynTag = 0x6ffffefa
924 DT_DEPAUDIT DynTag = 0x6ffffefb
925 DT_AUDIT DynTag = 0x6ffffefc
926 DT_PLTPAD DynTag = 0x6ffffefd
927 DT_MOVETAB DynTag = 0x6ffffefe
928 DT_SYMINFO DynTag = 0x6ffffeff
929 DT_ADDRRNGHI DynTag = 0x6ffffeff
930
931 DT_VERSYM DynTag = 0x6ffffff0
932 DT_RELACOUNT DynTag = 0x6ffffff9
933 DT_RELCOUNT DynTag = 0x6ffffffa
934 DT_FLAGS_1 DynTag = 0x6ffffffb
935 DT_VERDEF DynTag = 0x6ffffffc
936 DT_VERDEFNUM DynTag = 0x6ffffffd
937 DT_VERNEED DynTag = 0x6ffffffe
938 DT_VERNEEDNUM DynTag = 0x6fffffff
939
940 DT_LOPROC DynTag = 0x70000000
941
942 DT_MIPS_RLD_VERSION DynTag = 0x70000001
943 DT_MIPS_TIME_STAMP DynTag = 0x70000002
944 DT_MIPS_ICHECKSUM DynTag = 0x70000003
945 DT_MIPS_IVERSION DynTag = 0x70000004
946 DT_MIPS_FLAGS DynTag = 0x70000005
947 DT_MIPS_BASE_ADDRESS DynTag = 0x70000006
948 DT_MIPS_MSYM DynTag = 0x70000007
949 DT_MIPS_CONFLICT DynTag = 0x70000008
950 DT_MIPS_LIBLIST DynTag = 0x70000009
951 DT_MIPS_LOCAL_GOTNO DynTag = 0x7000000a
952 DT_MIPS_CONFLICTNO DynTag = 0x7000000b
953 DT_MIPS_LIBLISTNO DynTag = 0x70000010
954 DT_MIPS_SYMTABNO DynTag = 0x70000011
955 DT_MIPS_UNREFEXTNO DynTag = 0x70000012
956 DT_MIPS_GOTSYM DynTag = 0x70000013
957 DT_MIPS_HIPAGENO DynTag = 0x70000014
958 DT_MIPS_RLD_MAP DynTag = 0x70000016
959 DT_MIPS_DELTA_CLASS DynTag = 0x70000017
960 DT_MIPS_DELTA_CLASS_NO DynTag = 0x70000018
961 DT_MIPS_DELTA_INSTANCE DynTag = 0x70000019
962 DT_MIPS_DELTA_INSTANCE_NO DynTag = 0x7000001a
963 DT_MIPS_DELTA_RELOC DynTag = 0x7000001b
964 DT_MIPS_DELTA_RELOC_NO DynTag = 0x7000001c
965 DT_MIPS_DELTA_SYM DynTag = 0x7000001d
966 DT_MIPS_DELTA_SYM_NO DynTag = 0x7000001e
967 DT_MIPS_DELTA_CLASSSYM DynTag = 0x70000020
968 DT_MIPS_DELTA_CLASSSYM_NO DynTag = 0x70000021
969 DT_MIPS_CXX_FLAGS DynTag = 0x70000022
970 DT_MIPS_PIXIE_INIT DynTag = 0x70000023
971 DT_MIPS_SYMBOL_LIB DynTag = 0x70000024
972 DT_MIPS_LOCALPAGE_GOTIDX DynTag = 0x70000025
973 DT_MIPS_LOCAL_GOTIDX DynTag = 0x70000026
974 DT_MIPS_HIDDEN_GOTIDX DynTag = 0x70000027
975 DT_MIPS_PROTECTED_GOTIDX DynTag = 0x70000028
976 DT_MIPS_OPTIONS DynTag = 0x70000029
977 DT_MIPS_INTERFACE DynTag = 0x7000002a
978 DT_MIPS_DYNSTR_ALIGN DynTag = 0x7000002b
979 DT_MIPS_INTERFACE_SIZE DynTag = 0x7000002c
980 DT_MIPS_RLD_TEXT_RESOLVE_ADDR DynTag = 0x7000002d
981 DT_MIPS_PERF_SUFFIX DynTag = 0x7000002e
982 DT_MIPS_COMPACT_SIZE DynTag = 0x7000002f
983 DT_MIPS_GP_VALUE DynTag = 0x70000030
984 DT_MIPS_AUX_DYNAMIC DynTag = 0x70000031
985 DT_MIPS_PLTGOT DynTag = 0x70000032
986 DT_MIPS_RWPLT DynTag = 0x70000034
987 DT_MIPS_RLD_MAP_REL DynTag = 0x70000035
988
989 DT_PPC_GOT DynTag = 0x70000000
990 DT_PPC_OPT DynTag = 0x70000001
991
992 DT_PPC64_GLINK DynTag = 0x70000000
993 DT_PPC64_OPD DynTag = 0x70000001
994 DT_PPC64_OPDSZ DynTag = 0x70000002
995 DT_PPC64_OPT DynTag = 0x70000003
996
997 DT_SPARC_REGISTER DynTag = 0x70000001
998
999 DT_AUXILIARY DynTag = 0x7ffffffd
1000 DT_USED DynTag = 0x7ffffffe
1001 DT_FILTER DynTag = 0x7fffffff
1002
1003 DT_HIPROC DynTag = 0x7fffffff
1004 )
1005
1006 var dtStrings = []intName{
1007 {0, "DT_NULL"},
1008 {1, "DT_NEEDED"},
1009 {2, "DT_PLTRELSZ"},
1010 {3, "DT_PLTGOT"},
1011 {4, "DT_HASH"},
1012 {5, "DT_STRTAB"},
1013 {6, "DT_SYMTAB"},
1014 {7, "DT_RELA"},
1015 {8, "DT_RELASZ"},
1016 {9, "DT_RELAENT"},
1017 {10, "DT_STRSZ"},
1018 {11, "DT_SYMENT"},
1019 {12, "DT_INIT"},
1020 {13, "DT_FINI"},
1021 {14, "DT_SONAME"},
1022 {15, "DT_RPATH"},
1023 {16, "DT_SYMBOLIC"},
1024 {17, "DT_REL"},
1025 {18, "DT_RELSZ"},
1026 {19, "DT_RELENT"},
1027 {20, "DT_PLTREL"},
1028 {21, "DT_DEBUG"},
1029 {22, "DT_TEXTREL"},
1030 {23, "DT_JMPREL"},
1031 {24, "DT_BIND_NOW"},
1032 {25, "DT_INIT_ARRAY"},
1033 {26, "DT_FINI_ARRAY"},
1034 {27, "DT_INIT_ARRAYSZ"},
1035 {28, "DT_FINI_ARRAYSZ"},
1036 {29, "DT_RUNPATH"},
1037 {30, "DT_FLAGS"},
1038 {32, "DT_ENCODING"},
1039 {32, "DT_PREINIT_ARRAY"},
1040 {33, "DT_PREINIT_ARRAYSZ"},
1041 {34, "DT_SYMTAB_SHNDX"},
1042 {0x6000000d, "DT_LOOS"},
1043 {0x6ffff000, "DT_HIOS"},
1044 {0x6ffffd00, "DT_VALRNGLO"},
1045 {0x6ffffdf5, "DT_GNU_PRELINKED"},
1046 {0x6ffffdf6, "DT_GNU_CONFLICTSZ"},
1047 {0x6ffffdf7, "DT_GNU_LIBLISTSZ"},
1048 {0x6ffffdf8, "DT_CHECKSUM"},
1049 {0x6ffffdf9, "DT_PLTPADSZ"},
1050 {0x6ffffdfa, "DT_MOVEENT"},
1051 {0x6ffffdfb, "DT_MOVESZ"},
1052 {0x6ffffdfc, "DT_FEATURE"},
1053 {0x6ffffdfd, "DT_POSFLAG_1"},
1054 {0x6ffffdfe, "DT_SYMINSZ"},
1055 {0x6ffffdff, "DT_SYMINENT"},
1056 {0x6ffffdff, "DT_VALRNGHI"},
1057 {0x6ffffe00, "DT_ADDRRNGLO"},
1058 {0x6ffffef5, "DT_GNU_HASH"},
1059 {0x6ffffef6, "DT_TLSDESC_PLT"},
1060 {0x6ffffef7, "DT_TLSDESC_GOT"},
1061 {0x6ffffef8, "DT_GNU_CONFLICT"},
1062 {0x6ffffef9, "DT_GNU_LIBLIST"},
1063 {0x6ffffefa, "DT_CONFIG"},
1064 {0x6ffffefb, "DT_DEPAUDIT"},
1065 {0x6ffffefc, "DT_AUDIT"},
1066 {0x6ffffefd, "DT_PLTPAD"},
1067 {0x6ffffefe, "DT_MOVETAB"},
1068 {0x6ffffeff, "DT_SYMINFO"},
1069 {0x6ffffeff, "DT_ADDRRNGHI"},
1070 {0x6ffffff0, "DT_VERSYM"},
1071 {0x6ffffff9, "DT_RELACOUNT"},
1072 {0x6ffffffa, "DT_RELCOUNT"},
1073 {0x6ffffffb, "DT_FLAGS_1"},
1074 {0x6ffffffc, "DT_VERDEF"},
1075 {0x6ffffffd, "DT_VERDEFNUM"},
1076 {0x6ffffffe, "DT_VERNEED"},
1077 {0x6fffffff, "DT_VERNEEDNUM"},
1078 {0x70000000, "DT_LOPROC"},
1079
1080
1081 {0x7ffffffd, "DT_AUXILIARY"},
1082 {0x7ffffffe, "DT_USED"},
1083 {0x7fffffff, "DT_FILTER"},
1084 }
1085
1086 func (i DynTag) String() string { return stringName(uint32(i), dtStrings, false) }
1087 func (i DynTag) GoString() string { return stringName(uint32(i), dtStrings, true) }
1088
1089
1090 type DynFlag int
1091
1092 const (
1093 DF_ORIGIN DynFlag = 0x0001
1096 DF_SYMBOLIC DynFlag = 0x0002
1097 DF_TEXTREL DynFlag = 0x0004
1098 DF_BIND_NOW DynFlag = 0x0008
1102 DF_STATIC_TLS DynFlag = 0x0010
1105 )
1106
1107 var dflagStrings = []intName{
1108 {0x0001, "DF_ORIGIN"},
1109 {0x0002, "DF_SYMBOLIC"},
1110 {0x0004, "DF_TEXTREL"},
1111 {0x0008, "DF_BIND_NOW"},
1112 {0x0010, "DF_STATIC_TLS"},
1113 }
1114
1115 func (i DynFlag) String() string { return flagName(uint32(i), dflagStrings, false) }
1116 func (i DynFlag) GoString() string { return flagName(uint32(i), dflagStrings, true) }
1117
1118
1119 type DynFlag1 uint32
1120
1121 const (
1122
1123
1124 DF_1_NOW DynFlag1 = 0x00000001
1125
1126 DF_1_GLOBAL DynFlag1 = 0x00000002
1127
1128 DF_1_GROUP DynFlag1 = 0x00000004
1129
1130 DF_1_NODELETE DynFlag1 = 0x00000008
1131
1132
1133 DF_1_LOADFLTR DynFlag1 = 0x00000010
1134
1135
1136 DF_1_INITFIRST DynFlag1 = 0x00000020
1137
1138 DF_1_NOOPEN DynFlag1 = 0x00000040
1139
1140 DF_1_ORIGIN DynFlag1 = 0x00000080
1141
1142 DF_1_DIRECT DynFlag1 = 0x00000100
1143
1144 DF_1_TRANS DynFlag1 = 0x00000200
1145
1146
1147 DF_1_INTERPOSE DynFlag1 = 0x00000400
1148
1149
1150 DF_1_NODEFLIB DynFlag1 = 0x00000800
1151
1152
1153
1154 DF_1_NODUMP DynFlag1 = 0x00001000
1155
1156
1157 DF_1_CONFALT DynFlag1 = 0x00002000
1158
1159
1160 DF_1_ENDFILTEE DynFlag1 = 0x00004000
1161
1162 DF_1_DISPRELDNE DynFlag1 = 0x00008000
1163
1164 DF_1_DISPRELPND DynFlag1 = 0x00010000
1165
1166
1167 DF_1_NODIRECT DynFlag1 = 0x00020000
1168
1169 DF_1_IGNMULDEF DynFlag1 = 0x00040000
1170
1171 DF_1_NOKSYMS DynFlag1 = 0x00080000
1172
1173 DF_1_NOHDR DynFlag1 = 0x00100000
1174
1175
1176 DF_1_EDITED DynFlag1 = 0x00200000
1177
1178 DF_1_NORELOC DynFlag1 = 0x00400000
1179
1180
1181
1182 DF_1_SYMINTPOSE DynFlag1 = 0x00800000
1183
1184 DF_1_GLOBAUDIT DynFlag1 = 0x01000000
1185
1186 DF_1_SINGLETON DynFlag1 = 0x02000000
1187
1188 DF_1_STUB DynFlag1 = 0x04000000
1189
1190 DF_1_PIE DynFlag1 = 0x08000000
1191
1192 DF_1_KMOD DynFlag1 = 0x10000000
1193
1194 DF_1_WEAKFILTER DynFlag1 = 0x20000000
1195
1196 DF_1_NOCOMMON DynFlag1 = 0x40000000
1197 )
1198
1199 var dflag1Strings = []intName{
1200 {0x00000001, "DF_1_NOW"},
1201 {0x00000002, "DF_1_GLOBAL"},
1202 {0x00000004, "DF_1_GROUP"},
1203 {0x00000008, "DF_1_NODELETE"},
1204 {0x00000010, "DF_1_LOADFLTR"},
1205 {0x00000020, "DF_1_INITFIRST"},
1206 {0x00000040, "DF_1_NOOPEN"},
1207 {0x00000080, "DF_1_ORIGIN"},
1208 {0x00000100, "DF_1_DIRECT"},
1209 {0x00000200, "DF_1_TRANS"},
1210 {0x00000400, "DF_1_INTERPOSE"},
1211 {0x00000800, "DF_1_NODEFLIB"},
1212 {0x00001000, "DF_1_NODUMP"},
1213 {0x00002000, "DF_1_CONFALT"},
1214 {0x00004000, "DF_1_ENDFILTEE"},
1215 {0x00008000, "DF_1_DISPRELDNE"},
1216 {0x00010000, "DF_1_DISPRELPND"},
1217 {0x00020000, "DF_1_NODIRECT"},
1218 {0x00040000, "DF_1_IGNMULDEF"},
1219 {0x00080000, "DF_1_NOKSYMS"},
1220 {0x00100000, "DF_1_NOHDR"},
1221 {0x00200000, "DF_1_EDITED"},
1222 {0x00400000, "DF_1_NORELOC"},
1223 {0x00800000, "DF_1_SYMINTPOSE"},
1224 {0x01000000, "DF_1_GLOBAUDIT"},
1225 {0x02000000, "DF_1_SINGLETON"},
1226 {0x04000000, "DF_1_STUB"},
1227 {0x08000000, "DF_1_PIE"},
1228 {0x10000000, "DF_1_KMOD"},
1229 {0x20000000, "DF_1_WEAKFILTER"},
1230 {0x40000000, "DF_1_NOCOMMON"},
1231 }
1232
1233 func (i DynFlag1) String() string { return flagName(uint32(i), dflag1Strings, false) }
1234 func (i DynFlag1) GoString() string { return flagName(uint32(i), dflag1Strings, true) }
1235
1236
1237 type NType int
1238
1239 const (
1240 NT_PRSTATUS NType = 1
1241 NT_FPREGSET NType = 2
1242 NT_PRPSINFO NType = 3
1243 )
1244
1245 var ntypeStrings = []intName{
1246 {1, "NT_PRSTATUS"},
1247 {2, "NT_FPREGSET"},
1248 {3, "NT_PRPSINFO"},
1249 }
1250
1251 func (i NType) String() string { return stringName(uint32(i), ntypeStrings, false) }
1252 func (i NType) GoString() string { return stringName(uint32(i), ntypeStrings, true) }
1253
1254
1255 type SymBind int
1256
1257 const (
1258 STB_LOCAL SymBind = 0
1259 STB_GLOBAL SymBind = 1
1260 STB_WEAK SymBind = 2
1261 STB_LOOS SymBind = 10
1262 STB_HIOS SymBind = 12
1263 STB_LOPROC SymBind = 13
1264 STB_HIPROC SymBind = 15
1265 )
1266
1267 var stbStrings = []intName{
1268 {0, "STB_LOCAL"},
1269 {1, "STB_GLOBAL"},
1270 {2, "STB_WEAK"},
1271 {10, "STB_LOOS"},
1272 {12, "STB_HIOS"},
1273 {13, "STB_LOPROC"},
1274 {15, "STB_HIPROC"},
1275 }
1276
1277 func (i SymBind) String() string { return stringName(uint32(i), stbStrings, false) }
1278 func (i SymBind) GoString() string { return stringName(uint32(i), stbStrings, true) }
1279
1280
1281 type SymType int
1282
1283 const (
1284 STT_NOTYPE SymType = 0
1285 STT_OBJECT SymType = 1
1286 STT_FUNC SymType = 2
1287 STT_SECTION SymType = 3
1288 STT_FILE SymType = 4
1289 STT_COMMON SymType = 5
1290 STT_TLS SymType = 6
1291 STT_LOOS SymType = 10
1292 STT_HIOS SymType = 12
1293 STT_LOPROC SymType = 13
1294 STT_HIPROC SymType = 15
1295
1296
1297 STT_RELC SymType = 8
1298 STT_SRELC SymType = 9
1299 STT_GNU_IFUNC SymType = 10
1300 )
1301
1302 var sttStrings = []intName{
1303 {0, "STT_NOTYPE"},
1304 {1, "STT_OBJECT"},
1305 {2, "STT_FUNC"},
1306 {3, "STT_SECTION"},
1307 {4, "STT_FILE"},
1308 {5, "STT_COMMON"},
1309 {6, "STT_TLS"},
1310 {8, "STT_RELC"},
1311 {9, "STT_SRELC"},
1312 {10, "STT_LOOS"},
1313 {12, "STT_HIOS"},
1314 {13, "STT_LOPROC"},
1315 {15, "STT_HIPROC"},
1316 }
1317
1318 func (i SymType) String() string { return stringName(uint32(i), sttStrings, false) }
1319 func (i SymType) GoString() string { return stringName(uint32(i), sttStrings, true) }
1320
1321
1322 type SymVis int
1323
1324 const (
1325 STV_DEFAULT SymVis = 0x0
1326 STV_INTERNAL SymVis = 0x1
1327 STV_HIDDEN SymVis = 0x2
1328 STV_PROTECTED SymVis = 0x3
1329 )
1330
1331 var stvStrings = []intName{
1332 {0x0, "STV_DEFAULT"},
1333 {0x1, "STV_INTERNAL"},
1334 {0x2, "STV_HIDDEN"},
1335 {0x3, "STV_PROTECTED"},
1336 }
1337
1338 func (i SymVis) String() string { return stringName(uint32(i), stvStrings, false) }
1339 func (i SymVis) GoString() string { return stringName(uint32(i), stvStrings, true) }
1340
1341
1344
1345
1346 type R_X86_64 int
1347
1348 const (
1349 R_X86_64_NONE R_X86_64 = 0
1350 R_X86_64_64 R_X86_64 = 1
1351 R_X86_64_PC32 R_X86_64 = 2
1352 R_X86_64_GOT32 R_X86_64 = 3
1353 R_X86_64_PLT32 R_X86_64 = 4
1354 R_X86_64_COPY R_X86_64 = 5
1355 R_X86_64_GLOB_DAT R_X86_64 = 6
1356 R_X86_64_JMP_SLOT R_X86_64 = 7
1357 R_X86_64_RELATIVE R_X86_64 = 8
1358 R_X86_64_GOTPCREL R_X86_64 = 9
1359 R_X86_64_32 R_X86_64 = 10
1360 R_X86_64_32S R_X86_64 = 11
1361 R_X86_64_16 R_X86_64 = 12
1362 R_X86_64_PC16 R_X86_64 = 13
1363 R_X86_64_8 R_X86_64 = 14
1364 R_X86_64_PC8 R_X86_64 = 15
1365 R_X86_64_DTPMOD64 R_X86_64 = 16
1366 R_X86_64_DTPOFF64 R_X86_64 = 17
1367 R_X86_64_TPOFF64 R_X86_64 = 18
1368 R_X86_64_TLSGD R_X86_64 = 19
1369 R_X86_64_TLSLD R_X86_64 = 20
1370 R_X86_64_DTPOFF32 R_X86_64 = 21
1371 R_X86_64_GOTTPOFF R_X86_64 = 22
1372 R_X86_64_TPOFF32 R_X86_64 = 23
1373 R_X86_64_PC64 R_X86_64 = 24
1374 R_X86_64_GOTOFF64 R_X86_64 = 25
1375 R_X86_64_GOTPC32 R_X86_64 = 26
1376 R_X86_64_GOT64 R_X86_64 = 27
1377 R_X86_64_GOTPCREL64 R_X86_64 = 28
1378 R_X86_64_GOTPC64 R_X86_64 = 29
1379 R_X86_64_GOTPLT64 R_X86_64 = 30
1380 R_X86_64_PLTOFF64 R_X86_64 = 31
1381 R_X86_64_SIZE32 R_X86_64 = 32
1382 R_X86_64_SIZE64 R_X86_64 = 33
1383 R_X86_64_GOTPC32_TLSDESC R_X86_64 = 34
1384 R_X86_64_TLSDESC_CALL R_X86_64 = 35
1385 R_X86_64_TLSDESC R_X86_64 = 36
1386 R_X86_64_IRELATIVE R_X86_64 = 37
1387 R_X86_64_RELATIVE64 R_X86_64 = 38
1388 R_X86_64_PC32_BND R_X86_64 = 39
1389 R_X86_64_PLT32_BND R_X86_64 = 40
1390 R_X86_64_GOTPCRELX R_X86_64 = 41
1391 R_X86_64_REX_GOTPCRELX R_X86_64 = 42
1392 )
1393
1394 var rx86_64Strings = []intName{
1395 {0, "R_X86_64_NONE"},
1396 {1, "R_X86_64_64"},
1397 {2, "R_X86_64_PC32"},
1398 {3, "R_X86_64_GOT32"},
1399 {4, "R_X86_64_PLT32"},
1400 {5, "R_X86_64_COPY"},
1401 {6, "R_X86_64_GLOB_DAT"},
1402 {7, "R_X86_64_JMP_SLOT"},
1403 {8, "R_X86_64_RELATIVE"},
1404 {9, "R_X86_64_GOTPCREL"},
1405 {10, "R_X86_64_32"},
1406 {11, "R_X86_64_32S"},
1407 {12, "R_X86_64_16"},
1408 {13, "R_X86_64_PC16"},
1409 {14, "R_X86_64_8"},
1410 {15, "R_X86_64_PC8"},
1411 {16, "R_X86_64_DTPMOD64"},
1412 {17, "R_X86_64_DTPOFF64"},
1413 {18, "R_X86_64_TPOFF64"},
1414 {19, "R_X86_64_TLSGD"},
1415 {20, "R_X86_64_TLSLD"},
1416 {21, "R_X86_64_DTPOFF32"},
1417 {22, "R_X86_64_GOTTPOFF"},
1418 {23, "R_X86_64_TPOFF32"},
1419 {24, "R_X86_64_PC64"},
1420 {25, "R_X86_64_GOTOFF64"},
1421 {26, "R_X86_64_GOTPC32"},
1422 {27, "R_X86_64_GOT64"},
1423 {28, "R_X86_64_GOTPCREL64"},
1424 {29, "R_X86_64_GOTPC64"},
1425 {30, "R_X86_64_GOTPLT64"},
1426 {31, "R_X86_64_PLTOFF64"},
1427 {32, "R_X86_64_SIZE32"},
1428 {33, "R_X86_64_SIZE64"},
1429 {34, "R_X86_64_GOTPC32_TLSDESC"},
1430 {35, "R_X86_64_TLSDESC_CALL"},
1431 {36, "R_X86_64_TLSDESC"},
1432 {37, "R_X86_64_IRELATIVE"},
1433 {38, "R_X86_64_RELATIVE64"},
1434 {39, "R_X86_64_PC32_BND"},
1435 {40, "R_X86_64_PLT32_BND"},
1436 {41, "R_X86_64_GOTPCRELX"},
1437 {42, "R_X86_64_REX_GOTPCRELX"},
1438 }
1439
1440 func (i R_X86_64) String() string { return stringName(uint32(i), rx86_64Strings, false) }
1441 func (i R_X86_64) GoString() string { return stringName(uint32(i), rx86_64Strings, true) }
1442
1443
1444 type R_AARCH64 int
1445
1446 const (
1447 R_AARCH64_NONE R_AARCH64 = 0
1448 R_AARCH64_P32_ABS32 R_AARCH64 = 1
1449 R_AARCH64_P32_ABS16 R_AARCH64 = 2
1450 R_AARCH64_P32_PREL32 R_AARCH64 = 3
1451 R_AARCH64_P32_PREL16 R_AARCH64 = 4
1452 R_AARCH64_P32_MOVW_UABS_G0 R_AARCH64 = 5
1453 R_AARCH64_P32_MOVW_UABS_G0_NC R_AARCH64 = 6
1454 R_AARCH64_P32_MOVW_UABS_G1 R_AARCH64 = 7
1455 R_AARCH64_P32_MOVW_SABS_G0 R_AARCH64 = 8
1456 R_AARCH64_P32_LD_PREL_LO19 R_AARCH64 = 9
1457 R_AARCH64_P32_ADR_PREL_LO21 R_AARCH64 = 10
1458 R_AARCH64_P32_ADR_PREL_PG_HI21 R_AARCH64 = 11
1459 R_AARCH64_P32_ADD_ABS_LO12_NC R_AARCH64 = 12
1460 R_AARCH64_P32_LDST8_ABS_LO12_NC R_AARCH64 = 13
1461 R_AARCH64_P32_LDST16_ABS_LO12_NC R_AARCH64 = 14
1462 R_AARCH64_P32_LDST32_ABS_LO12_NC R_AARCH64 = 15
1463 R_AARCH64_P32_LDST64_ABS_LO12_NC R_AARCH64 = 16
1464 R_AARCH64_P32_LDST128_ABS_LO12_NC R_AARCH64 = 17
1465 R_AARCH64_P32_TSTBR14 R_AARCH64 = 18
1466 R_AARCH64_P32_CONDBR19 R_AARCH64 = 19
1467 R_AARCH64_P32_JUMP26 R_AARCH64 = 20
1468 R_AARCH64_P32_CALL26 R_AARCH64 = 21
1469 R_AARCH64_P32_GOT_LD_PREL19 R_AARCH64 = 25
1470 R_AARCH64_P32_ADR_GOT_PAGE R_AARCH64 = 26
1471 R_AARCH64_P32_LD32_GOT_LO12_NC R_AARCH64 = 27
1472 R_AARCH64_P32_TLSGD_ADR_PAGE21 R_AARCH64 = 81
1473 R_AARCH64_P32_TLSGD_ADD_LO12_NC R_AARCH64 = 82
1474 R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 103
1475 R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC R_AARCH64 = 104
1476 R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 105
1477 R_AARCH64_P32_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 106
1478 R_AARCH64_P32_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 107
1479 R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 108
1480 R_AARCH64_P32_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 109
1481 R_AARCH64_P32_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 110
1482 R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 111
1483 R_AARCH64_P32_TLSDESC_LD_PREL19 R_AARCH64 = 122
1484 R_AARCH64_P32_TLSDESC_ADR_PREL21 R_AARCH64 = 123
1485 R_AARCH64_P32_TLSDESC_ADR_PAGE21 R_AARCH64 = 124
1486 R_AARCH64_P32_TLSDESC_LD32_LO12_NC R_AARCH64 = 125
1487 R_AARCH64_P32_TLSDESC_ADD_LO12_NC R_AARCH64 = 126
1488 R_AARCH64_P32_TLSDESC_CALL R_AARCH64 = 127
1489 R_AARCH64_P32_COPY R_AARCH64 = 180
1490 R_AARCH64_P32_GLOB_DAT R_AARCH64 = 181
1491 R_AARCH64_P32_JUMP_SLOT R_AARCH64 = 182
1492 R_AARCH64_P32_RELATIVE R_AARCH64 = 183
1493 R_AARCH64_P32_TLS_DTPMOD R_AARCH64 = 184
1494 R_AARCH64_P32_TLS_DTPREL R_AARCH64 = 185
1495 R_AARCH64_P32_TLS_TPREL R_AARCH64 = 186
1496 R_AARCH64_P32_TLSDESC R_AARCH64 = 187
1497 R_AARCH64_P32_IRELATIVE R_AARCH64 = 188
1498 R_AARCH64_NULL R_AARCH64 = 256
1499 R_AARCH64_ABS64 R_AARCH64 = 257
1500 R_AARCH64_ABS32 R_AARCH64 = 258
1501 R_AARCH64_ABS16 R_AARCH64 = 259
1502 R_AARCH64_PREL64 R_AARCH64 = 260
1503 R_AARCH64_PREL32 R_AARCH64 = 261
1504 R_AARCH64_PREL16 R_AARCH64 = 262
1505 R_AARCH64_MOVW_UABS_G0 R_AARCH64 = 263
1506 R_AARCH64_MOVW_UABS_G0_NC R_AARCH64 = 264
1507 R_AARCH64_MOVW_UABS_G1 R_AARCH64 = 265
1508 R_AARCH64_MOVW_UABS_G1_NC R_AARCH64 = 266
1509 R_AARCH64_MOVW_UABS_G2 R_AARCH64 = 267
1510 R_AARCH64_MOVW_UABS_G2_NC R_AARCH64 = 268
1511 R_AARCH64_MOVW_UABS_G3 R_AARCH64 = 269
1512 R_AARCH64_MOVW_SABS_G0 R_AARCH64 = 270
1513 R_AARCH64_MOVW_SABS_G1 R_AARCH64 = 271
1514 R_AARCH64_MOVW_SABS_G2 R_AARCH64 = 272
1515 R_AARCH64_LD_PREL_LO19 R_AARCH64 = 273
1516 R_AARCH64_ADR_PREL_LO21 R_AARCH64 = 274
1517 R_AARCH64_ADR_PREL_PG_HI21 R_AARCH64 = 275
1518 R_AARCH64_ADR_PREL_PG_HI21_NC R_AARCH64 = 276
1519 R_AARCH64_ADD_ABS_LO12_NC R_AARCH64 = 277
1520 R_AARCH64_LDST8_ABS_LO12_NC R_AARCH64 = 278
1521 R_AARCH64_TSTBR14 R_AARCH64 = 279
1522 R_AARCH64_CONDBR19 R_AARCH64 = 280
1523 R_AARCH64_JUMP26 R_AARCH64 = 282
1524 R_AARCH64_CALL26 R_AARCH64 = 283
1525 R_AARCH64_LDST16_ABS_LO12_NC R_AARCH64 = 284
1526 R_AARCH64_LDST32_ABS_LO12_NC R_AARCH64 = 285
1527 R_AARCH64_LDST64_ABS_LO12_NC R_AARCH64 = 286
1528 R_AARCH64_LDST128_ABS_LO12_NC R_AARCH64 = 299
1529 R_AARCH64_GOT_LD_PREL19 R_AARCH64 = 309
1530 R_AARCH64_LD64_GOTOFF_LO15 R_AARCH64 = 310
1531 R_AARCH64_ADR_GOT_PAGE R_AARCH64 = 311
1532 R_AARCH64_LD64_GOT_LO12_NC R_AARCH64 = 312
1533 R_AARCH64_LD64_GOTPAGE_LO15 R_AARCH64 = 313
1534 R_AARCH64_TLSGD_ADR_PREL21 R_AARCH64 = 512
1535 R_AARCH64_TLSGD_ADR_PAGE21 R_AARCH64 = 513
1536 R_AARCH64_TLSGD_ADD_LO12_NC R_AARCH64 = 514
1537 R_AARCH64_TLSGD_MOVW_G1 R_AARCH64 = 515
1538 R_AARCH64_TLSGD_MOVW_G0_NC R_AARCH64 = 516
1539 R_AARCH64_TLSLD_ADR_PREL21 R_AARCH64 = 517
1540 R_AARCH64_TLSLD_ADR_PAGE21 R_AARCH64 = 518
1541 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 R_AARCH64 = 539
1542 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC R_AARCH64 = 540
1543 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 541
1544 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC R_AARCH64 = 542
1545 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 543
1546 R_AARCH64_TLSLE_MOVW_TPREL_G2 R_AARCH64 = 544
1547 R_AARCH64_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 545
1548 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC R_AARCH64 = 546
1549 R_AARCH64_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 547
1550 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 548
1551 R_AARCH64_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 549
1552 R_AARCH64_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 550
1553 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 551
1554 R_AARCH64_TLSDESC_LD_PREL19 R_AARCH64 = 560
1555 R_AARCH64_TLSDESC_ADR_PREL21 R_AARCH64 = 561
1556 R_AARCH64_TLSDESC_ADR_PAGE21 R_AARCH64 = 562
1557 R_AARCH64_TLSDESC_LD64_LO12_NC R_AARCH64 = 563
1558 R_AARCH64_TLSDESC_ADD_LO12_NC R_AARCH64 = 564
1559 R_AARCH64_TLSDESC_OFF_G1 R_AARCH64 = 565
1560 R_AARCH64_TLSDESC_OFF_G0_NC R_AARCH64 = 566
1561 R_AARCH64_TLSDESC_LDR R_AARCH64 = 567
1562 R_AARCH64_TLSDESC_ADD R_AARCH64 = 568
1563 R_AARCH64_TLSDESC_CALL R_AARCH64 = 569
1564 R_AARCH64_TLSLE_LDST128_TPREL_LO12 R_AARCH64 = 570
1565 R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC R_AARCH64 = 571
1566 R_AARCH64_TLSLD_LDST128_DTPREL_LO12 R_AARCH64 = 572
1567 R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC R_AARCH64 = 573
1568 R_AARCH64_COPY R_AARCH64 = 1024
1569 R_AARCH64_GLOB_DAT R_AARCH64 = 1025
1570 R_AARCH64_JUMP_SLOT R_AARCH64 = 1026
1571 R_AARCH64_RELATIVE R_AARCH64 = 1027
1572 R_AARCH64_TLS_DTPMOD64 R_AARCH64 = 1028
1573 R_AARCH64_TLS_DTPREL64 R_AARCH64 = 1029
1574 R_AARCH64_TLS_TPREL64 R_AARCH64 = 1030
1575 R_AARCH64_TLSDESC R_AARCH64 = 1031
1576 R_AARCH64_IRELATIVE R_AARCH64 = 1032
1577 )
1578
1579 var raarch64Strings = []intName{
1580 {0, "R_AARCH64_NONE"},
1581 {1, "R_AARCH64_P32_ABS32"},
1582 {2, "R_AARCH64_P32_ABS16"},
1583 {3, "R_AARCH64_P32_PREL32"},
1584 {4, "R_AARCH64_P32_PREL16"},
1585 {5, "R_AARCH64_P32_MOVW_UABS_G0"},
1586 {6, "R_AARCH64_P32_MOVW_UABS_G0_NC"},
1587 {7, "R_AARCH64_P32_MOVW_UABS_G1"},
1588 {8, "R_AARCH64_P32_MOVW_SABS_G0"},
1589 {9, "R_AARCH64_P32_LD_PREL_LO19"},
1590 {10, "R_AARCH64_P32_ADR_PREL_LO21"},
1591 {11, "R_AARCH64_P32_ADR_PREL_PG_HI21"},
1592 {12, "R_AARCH64_P32_ADD_ABS_LO12_NC"},
1593 {13, "R_AARCH64_P32_LDST8_ABS_LO12_NC"},
1594 {14, "R_AARCH64_P32_LDST16_ABS_LO12_NC"},
1595 {15, "R_AARCH64_P32_LDST32_ABS_LO12_NC"},
1596 {16, "R_AARCH64_P32_LDST64_ABS_LO12_NC"},
1597 {17, "R_AARCH64_P32_LDST128_ABS_LO12_NC"},
1598 {18, "R_AARCH64_P32_TSTBR14"},
1599 {19, "R_AARCH64_P32_CONDBR19"},
1600 {20, "R_AARCH64_P32_JUMP26"},
1601 {21, "R_AARCH64_P32_CALL26"},
1602 {25, "R_AARCH64_P32_GOT_LD_PREL19"},
1603 {26, "R_AARCH64_P32_ADR_GOT_PAGE"},
1604 {27, "R_AARCH64_P32_LD32_GOT_LO12_NC"},
1605 {81, "R_AARCH64_P32_TLSGD_ADR_PAGE21"},
1606 {82, "R_AARCH64_P32_TLSGD_ADD_LO12_NC"},
1607 {103, "R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21"},
1608 {104, "R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC"},
1609 {105, "R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19"},
1610 {106, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G1"},
1611 {107, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0"},
1612 {108, "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC"},
1613 {109, "R_AARCH64_P32_TLSLE_ADD_TPREL_HI12"},
1614 {110, "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12"},
1615 {111, "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC"},
1616 {122, "R_AARCH64_P32_TLSDESC_LD_PREL19"},
1617 {123, "R_AARCH64_P32_TLSDESC_ADR_PREL21"},
1618 {124, "R_AARCH64_P32_TLSDESC_ADR_PAGE21"},
1619 {125, "R_AARCH64_P32_TLSDESC_LD32_LO12_NC"},
1620 {126, "R_AARCH64_P32_TLSDESC_ADD_LO12_NC"},
1621 {127, "R_AARCH64_P32_TLSDESC_CALL"},
1622 {180, "R_AARCH64_P32_COPY"},
1623 {181, "R_AARCH64_P32_GLOB_DAT"},
1624 {182, "R_AARCH64_P32_JUMP_SLOT"},
1625 {183, "R_AARCH64_P32_RELATIVE"},
1626 {184, "R_AARCH64_P32_TLS_DTPMOD"},
1627 {185, "R_AARCH64_P32_TLS_DTPREL"},
1628 {186, "R_AARCH64_P32_TLS_TPREL"},
1629 {187, "R_AARCH64_P32_TLSDESC"},
1630 {188, "R_AARCH64_P32_IRELATIVE"},
1631 {256, "R_AARCH64_NULL"},
1632 {257, "R_AARCH64_ABS64"},
1633 {258, "R_AARCH64_ABS32"},
1634 {259, "R_AARCH64_ABS16"},
1635 {260, "R_AARCH64_PREL64"},
1636 {261, "R_AARCH64_PREL32"},
1637 {262, "R_AARCH64_PREL16"},
1638 {263, "R_AARCH64_MOVW_UABS_G0"},
1639 {264, "R_AARCH64_MOVW_UABS_G0_NC"},
1640 {265, "R_AARCH64_MOVW_UABS_G1"},
1641 {266, "R_AARCH64_MOVW_UABS_G1_NC"},
1642 {267, "R_AARCH64_MOVW_UABS_G2"},
1643 {268, "R_AARCH64_MOVW_UABS_G2_NC"},
1644 {269, "R_AARCH64_MOVW_UABS_G3"},
1645 {270, "R_AARCH64_MOVW_SABS_G0"},
1646 {271, "R_AARCH64_MOVW_SABS_G1"},
1647 {272, "R_AARCH64_MOVW_SABS_G2"},
1648 {273, "R_AARCH64_LD_PREL_LO19"},
1649 {274, "R_AARCH64_ADR_PREL_LO21"},
1650 {275, "R_AARCH64_ADR_PREL_PG_HI21"},
1651 {276, "R_AARCH64_ADR_PREL_PG_HI21_NC"},
1652 {277, "R_AARCH64_ADD_ABS_LO12_NC"},
1653 {278, "R_AARCH64_LDST8_ABS_LO12_NC"},
1654 {279, "R_AARCH64_TSTBR14"},
1655 {280, "R_AARCH64_CONDBR19"},
1656 {282, "R_AARCH64_JUMP26"},
1657 {283, "R_AARCH64_CALL26"},
1658 {284, "R_AARCH64_LDST16_ABS_LO12_NC"},
1659 {285, "R_AARCH64_LDST32_ABS_LO12_NC"},
1660 {286, "R_AARCH64_LDST64_ABS_LO12_NC"},
1661 {299, "R_AARCH64_LDST128_ABS_LO12_NC"},
1662 {309, "R_AARCH64_GOT_LD_PREL19"},
1663 {310, "R_AARCH64_LD64_GOTOFF_LO15"},
1664 {311, "R_AARCH64_ADR_GOT_PAGE"},
1665 {312, "R_AARCH64_LD64_GOT_LO12_NC"},
1666 {313, "R_AARCH64_LD64_GOTPAGE_LO15"},
1667 {512, "R_AARCH64_TLSGD_ADR_PREL21"},
1668 {513, "R_AARCH64_TLSGD_ADR_PAGE21"},
1669 {514, "R_AARCH64_TLSGD_ADD_LO12_NC"},
1670 {515, "R_AARCH64_TLSGD_MOVW_G1"},
1671 {516, "R_AARCH64_TLSGD_MOVW_G0_NC"},
1672 {517, "R_AARCH64_TLSLD_ADR_PREL21"},
1673 {518, "R_AARCH64_TLSLD_ADR_PAGE21"},
1674 {539, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1"},
1675 {540, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC"},
1676 {541, "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21"},
1677 {542, "R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC"},
1678 {543, "R_AARCH64_TLSIE_LD_GOTTPREL_PREL19"},
1679 {544, "R_AARCH64_TLSLE_MOVW_TPREL_G2"},
1680 {545, "R_AARCH64_TLSLE_MOVW_TPREL_G1"},
1681 {546, "R_AARCH64_TLSLE_MOVW_TPREL_G1_NC"},
1682 {547, "R_AARCH64_TLSLE_MOVW_TPREL_G0"},
1683 {548, "R_AARCH64_TLSLE_MOVW_TPREL_G0_NC"},
1684 {549, "R_AARCH64_TLSLE_ADD_TPREL_HI12"},
1685 {550, "R_AARCH64_TLSLE_ADD_TPREL_LO12"},
1686 {551, "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC"},
1687 {560, "R_AARCH64_TLSDESC_LD_PREL19"},
1688 {561, "R_AARCH64_TLSDESC_ADR_PREL21"},
1689 {562, "R_AARCH64_TLSDESC_ADR_PAGE21"},
1690 {563, "R_AARCH64_TLSDESC_LD64_LO12_NC"},
1691 {564, "R_AARCH64_TLSDESC_ADD_LO12_NC"},
1692 {565, "R_AARCH64_TLSDESC_OFF_G1"},
1693 {566, "R_AARCH64_TLSDESC_OFF_G0_NC"},
1694 {567, "R_AARCH64_TLSDESC_LDR"},
1695 {568, "R_AARCH64_TLSDESC_ADD"},
1696 {569, "R_AARCH64_TLSDESC_CALL"},
1697 {570, "R_AARCH64_TLSLE_LDST128_TPREL_LO12"},
1698 {571, "R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC"},
1699 {572, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12"},
1700 {573, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC"},
1701 {1024, "R_AARCH64_COPY"},
1702 {1025, "R_AARCH64_GLOB_DAT"},
1703 {1026, "R_AARCH64_JUMP_SLOT"},
1704 {1027, "R_AARCH64_RELATIVE"},
1705 {1028, "R_AARCH64_TLS_DTPMOD64"},
1706 {1029, "R_AARCH64_TLS_DTPREL64"},
1707 {1030, "R_AARCH64_TLS_TPREL64"},
1708 {1031, "R_AARCH64_TLSDESC"},
1709 {1032, "R_AARCH64_IRELATIVE"},
1710 }
1711
1712 func (i R_AARCH64) String() string { return stringName(uint32(i), raarch64Strings, false) }
1713 func (i R_AARCH64) GoString() string { return stringName(uint32(i), raarch64Strings, true) }
1714
1715
1716 type R_ALPHA int
1717
1718 const (
1719 R_ALPHA_NONE R_ALPHA = 0
1720 R_ALPHA_REFLONG R_ALPHA = 1
1721 R_ALPHA_REFQUAD R_ALPHA = 2
1722 R_ALPHA_GPREL32 R_ALPHA = 3
1723 R_ALPHA_LITERAL R_ALPHA = 4
1724 R_ALPHA_LITUSE R_ALPHA = 5
1725 R_ALPHA_GPDISP R_ALPHA = 6
1726 R_ALPHA_BRADDR R_ALPHA = 7
1727 R_ALPHA_HINT R_ALPHA = 8
1728 R_ALPHA_SREL16 R_ALPHA = 9
1729 R_ALPHA_SREL32 R_ALPHA = 10
1730 R_ALPHA_SREL64 R_ALPHA = 11
1731 R_ALPHA_OP_PUSH R_ALPHA = 12
1732 R_ALPHA_OP_STORE R_ALPHA = 13
1733 R_ALPHA_OP_PSUB R_ALPHA = 14
1734 R_ALPHA_OP_PRSHIFT R_ALPHA = 15
1735 R_ALPHA_GPVALUE R_ALPHA = 16
1736 R_ALPHA_GPRELHIGH R_ALPHA = 17
1737 R_ALPHA_GPRELLOW R_ALPHA = 18
1738 R_ALPHA_IMMED_GP_16 R_ALPHA = 19
1739 R_ALPHA_IMMED_GP_HI32 R_ALPHA = 20
1740 R_ALPHA_IMMED_SCN_HI32 R_ALPHA = 21
1741 R_ALPHA_IMMED_BR_HI32 R_ALPHA = 22
1742 R_ALPHA_IMMED_LO32 R_ALPHA = 23
1743 R_ALPHA_COPY R_ALPHA = 24
1744 R_ALPHA_GLOB_DAT R_ALPHA = 25
1745 R_ALPHA_JMP_SLOT R_ALPHA = 26
1746 R_ALPHA_RELATIVE R_ALPHA = 27
1747 )
1748
1749 var ralphaStrings = []intName{
1750 {0, "R_ALPHA_NONE"},
1751 {1, "R_ALPHA_REFLONG"},
1752 {2, "R_ALPHA_REFQUAD"},
1753 {3, "R_ALPHA_GPREL32"},
1754 {4, "R_ALPHA_LITERAL"},
1755 {5, "R_ALPHA_LITUSE"},
1756 {6, "R_ALPHA_GPDISP"},
1757 {7, "R_ALPHA_BRADDR"},
1758 {8, "R_ALPHA_HINT"},
1759 {9, "R_ALPHA_SREL16"},
1760 {10, "R_ALPHA_SREL32"},
1761 {11, "R_ALPHA_SREL64"},
1762 {12, "R_ALPHA_OP_PUSH"},
1763 {13, "R_ALPHA_OP_STORE"},
1764 {14, "R_ALPHA_OP_PSUB"},
1765 {15, "R_ALPHA_OP_PRSHIFT"},
1766 {16, "R_ALPHA_GPVALUE"},
1767 {17, "R_ALPHA_GPRELHIGH"},
1768 {18, "R_ALPHA_GPRELLOW"},
1769 {19, "R_ALPHA_IMMED_GP_16"},
1770 {20, "R_ALPHA_IMMED_GP_HI32"},
1771 {21, "R_ALPHA_IMMED_SCN_HI32"},
1772 {22, "R_ALPHA_IMMED_BR_HI32"},
1773 {23, "R_ALPHA_IMMED_LO32"},
1774 {24, "R_ALPHA_COPY"},
1775 {25, "R_ALPHA_GLOB_DAT"},
1776 {26, "R_ALPHA_JMP_SLOT"},
1777 {27, "R_ALPHA_RELATIVE"},
1778 }
1779
1780 func (i R_ALPHA) String() string { return stringName(uint32(i), ralphaStrings, false) }
1781 func (i R_ALPHA) GoString() string { return stringName(uint32(i), ralphaStrings, true) }
1782
1783
1784 type R_ARM int
1785
1786 const (
1787 R_ARM_NONE R_ARM = 0
1788 R_ARM_PC24 R_ARM = 1
1789 R_ARM_ABS32 R_ARM = 2
1790 R_ARM_REL32 R_ARM = 3
1791 R_ARM_PC13 R_ARM = 4
1792 R_ARM_ABS16 R_ARM = 5
1793 R_ARM_ABS12 R_ARM = 6
1794 R_ARM_THM_ABS5 R_ARM = 7
1795 R_ARM_ABS8 R_ARM = 8
1796 R_ARM_SBREL32 R_ARM = 9
1797 R_ARM_THM_PC22 R_ARM = 10
1798 R_ARM_THM_PC8 R_ARM = 11
1799 R_ARM_AMP_VCALL9 R_ARM = 12
1800 R_ARM_SWI24 R_ARM = 13
1801 R_ARM_THM_SWI8 R_ARM = 14
1802 R_ARM_XPC25 R_ARM = 15
1803 R_ARM_THM_XPC22 R_ARM = 16
1804 R_ARM_TLS_DTPMOD32 R_ARM = 17
1805 R_ARM_TLS_DTPOFF32 R_ARM = 18
1806 R_ARM_TLS_TPOFF32 R_ARM = 19
1807 R_ARM_COPY R_ARM = 20
1808 R_ARM_GLOB_DAT R_ARM = 21
1809 R_ARM_JUMP_SLOT R_ARM = 22
1810 R_ARM_RELATIVE R_ARM = 23
1811 R_ARM_GOTOFF R_ARM = 24
1812 R_ARM_GOTPC R_ARM = 25
1813 R_ARM_GOT32 R_ARM = 26
1814 R_ARM_PLT32 R_ARM = 27
1815 R_ARM_CALL R_ARM = 28
1816 R_ARM_JUMP24 R_ARM = 29
1817 R_ARM_THM_JUMP24 R_ARM = 30
1818 R_ARM_BASE_ABS R_ARM = 31
1819 R_ARM_ALU_PCREL_7_0 R_ARM = 32
1820 R_ARM_ALU_PCREL_15_8 R_ARM = 33
1821 R_ARM_ALU_PCREL_23_15 R_ARM = 34
1822 R_ARM_LDR_SBREL_11_10_NC R_ARM = 35
1823 R_ARM_ALU_SBREL_19_12_NC R_ARM = 36
1824 R_ARM_ALU_SBREL_27_20_CK R_ARM = 37
1825 R_ARM_TARGET1 R_ARM = 38
1826 R_ARM_SBREL31 R_ARM = 39
1827 R_ARM_V4BX R_ARM = 40
1828 R_ARM_TARGET2 R_ARM = 41
1829 R_ARM_PREL31 R_ARM = 42
1830 R_ARM_MOVW_ABS_NC R_ARM = 43
1831 R_ARM_MOVT_ABS R_ARM = 44
1832 R_ARM_MOVW_PREL_NC R_ARM = 45
1833 R_ARM_MOVT_PREL R_ARM = 46
1834 R_ARM_THM_MOVW_ABS_NC R_ARM = 47
1835 R_ARM_THM_MOVT_ABS R_ARM = 48
1836 R_ARM_THM_MOVW_PREL_NC R_ARM = 49
1837 R_ARM_THM_MOVT_PREL R_ARM = 50
1838 R_ARM_THM_JUMP19 R_ARM = 51
1839 R_ARM_THM_JUMP6 R_ARM = 52
1840 R_ARM_THM_ALU_PREL_11_0 R_ARM = 53
1841 R_ARM_THM_PC12 R_ARM = 54
1842 R_ARM_ABS32_NOI R_ARM = 55
1843 R_ARM_REL32_NOI R_ARM = 56
1844 R_ARM_ALU_PC_G0_NC R_ARM = 57
1845 R_ARM_ALU_PC_G0 R_ARM = 58
1846 R_ARM_ALU_PC_G1_NC R_ARM = 59
1847 R_ARM_ALU_PC_G1 R_ARM = 60
1848 R_ARM_ALU_PC_G2 R_ARM = 61
1849 R_ARM_LDR_PC_G1 R_ARM = 62
1850 R_ARM_LDR_PC_G2 R_ARM = 63
1851 R_ARM_LDRS_PC_G0 R_ARM = 64
1852 R_ARM_LDRS_PC_G1 R_ARM = 65
1853 R_ARM_LDRS_PC_G2 R_ARM = 66
1854 R_ARM_LDC_PC_G0 R_ARM = 67
1855 R_ARM_LDC_PC_G1 R_ARM = 68
1856 R_ARM_LDC_PC_G2 R_ARM = 69
1857 R_ARM_ALU_SB_G0_NC R_ARM = 70
1858 R_ARM_ALU_SB_G0 R_ARM = 71
1859 R_ARM_ALU_SB_G1_NC R_ARM = 72
1860 R_ARM_ALU_SB_G1 R_ARM = 73
1861 R_ARM_ALU_SB_G2 R_ARM = 74
1862 R_ARM_LDR_SB_G0 R_ARM = 75
1863 R_ARM_LDR_SB_G1 R_ARM = 76
1864 R_ARM_LDR_SB_G2 R_ARM = 77
1865 R_ARM_LDRS_SB_G0 R_ARM = 78
1866 R_ARM_LDRS_SB_G1 R_ARM = 79
1867 R_ARM_LDRS_SB_G2 R_ARM = 80
1868 R_ARM_LDC_SB_G0 R_ARM = 81
1869 R_ARM_LDC_SB_G1 R_ARM = 82
1870 R_ARM_LDC_SB_G2 R_ARM = 83
1871 R_ARM_MOVW_BREL_NC R_ARM = 84
1872 R_ARM_MOVT_BREL R_ARM = 85
1873 R_ARM_MOVW_BREL R_ARM = 86
1874 R_ARM_THM_MOVW_BREL_NC R_ARM = 87
1875 R_ARM_THM_MOVT_BREL R_ARM = 88
1876 R_ARM_THM_MOVW_BREL R_ARM = 89
1877 R_ARM_TLS_GOTDESC R_ARM = 90
1878 R_ARM_TLS_CALL R_ARM = 91
1879 R_ARM_TLS_DESCSEQ R_ARM = 92
1880 R_ARM_THM_TLS_CALL R_ARM = 93
1881 R_ARM_PLT32_ABS R_ARM = 94
1882 R_ARM_GOT_ABS R_ARM = 95
1883 R_ARM_GOT_PREL R_ARM = 96
1884 R_ARM_GOT_BREL12 R_ARM = 97
1885 R_ARM_GOTOFF12 R_ARM = 98
1886 R_ARM_GOTRELAX R_ARM = 99
1887 R_ARM_GNU_VTENTRY R_ARM = 100
1888 R_ARM_GNU_VTINHERIT R_ARM = 101
1889 R_ARM_THM_JUMP11 R_ARM = 102
1890 R_ARM_THM_JUMP8 R_ARM = 103
1891 R_ARM_TLS_GD32 R_ARM = 104
1892 R_ARM_TLS_LDM32 R_ARM = 105
1893 R_ARM_TLS_LDO32 R_ARM = 106
1894 R_ARM_TLS_IE32 R_ARM = 107
1895 R_ARM_TLS_LE32 R_ARM = 108
1896 R_ARM_TLS_LDO12 R_ARM = 109
1897 R_ARM_TLS_LE12 R_ARM = 110
1898 R_ARM_TLS_IE12GP R_ARM = 111
1899 R_ARM_PRIVATE_0 R_ARM = 112
1900 R_ARM_PRIVATE_1 R_ARM = 113
1901 R_ARM_PRIVATE_2 R_ARM = 114
1902 R_ARM_PRIVATE_3 R_ARM = 115
1903 R_ARM_PRIVATE_4 R_ARM = 116
1904 R_ARM_PRIVATE_5 R_ARM = 117
1905 R_ARM_PRIVATE_6 R_ARM = 118
1906 R_ARM_PRIVATE_7 R_ARM = 119
1907 R_ARM_PRIVATE_8 R_ARM = 120
1908 R_ARM_PRIVATE_9 R_ARM = 121
1909 R_ARM_PRIVATE_10 R_ARM = 122
1910 R_ARM_PRIVATE_11 R_ARM = 123
1911 R_ARM_PRIVATE_12 R_ARM = 124
1912 R_ARM_PRIVATE_13 R_ARM = 125
1913 R_ARM_PRIVATE_14 R_ARM = 126
1914 R_ARM_PRIVATE_15 R_ARM = 127
1915 R_ARM_ME_TOO R_ARM = 128
1916 R_ARM_THM_TLS_DESCSEQ16 R_ARM = 129
1917 R_ARM_THM_TLS_DESCSEQ32 R_ARM = 130
1918 R_ARM_THM_GOT_BREL12 R_ARM = 131
1919 R_ARM_THM_ALU_ABS_G0_NC R_ARM = 132
1920 R_ARM_THM_ALU_ABS_G1_NC R_ARM = 133
1921 R_ARM_THM_ALU_ABS_G2_NC R_ARM = 134
1922 R_ARM_THM_ALU_ABS_G3 R_ARM = 135
1923 R_ARM_IRELATIVE R_ARM = 160
1924 R_ARM_RXPC25 R_ARM = 249
1925 R_ARM_RSBREL32 R_ARM = 250
1926 R_ARM_THM_RPC22 R_ARM = 251
1927 R_ARM_RREL32 R_ARM = 252
1928 R_ARM_RABS32 R_ARM = 253
1929 R_ARM_RPC24 R_ARM = 254
1930 R_ARM_RBASE R_ARM = 255
1931 )
1932
1933 var rarmStrings = []intName{
1934 {0, "R_ARM_NONE"},
1935 {1, "R_ARM_PC24"},
1936 {2, "R_ARM_ABS32"},
1937 {3, "R_ARM_REL32"},
1938 {4, "R_ARM_PC13"},
1939 {5, "R_ARM_ABS16"},
1940 {6, "R_ARM_ABS12"},
1941 {7, "R_ARM_THM_ABS5"},
1942 {8, "R_ARM_ABS8"},
1943 {9, "R_ARM_SBREL32"},
1944 {10, "R_ARM_THM_PC22"},
1945 {11, "R_ARM_THM_PC8"},
1946 {12, "R_ARM_AMP_VCALL9"},
1947 {13, "R_ARM_SWI24"},
1948 {14, "R_ARM_THM_SWI8"},
1949 {15, "R_ARM_XPC25"},
1950 {16, "R_ARM_THM_XPC22"},
1951 {17, "R_ARM_TLS_DTPMOD32"},
1952 {18, "R_ARM_TLS_DTPOFF32"},
1953 {19, "R_ARM_TLS_TPOFF32"},
1954 {20, "R_ARM_COPY"},
1955 {21, "R_ARM_GLOB_DAT"},
1956 {22, "R_ARM_JUMP_SLOT"},
1957 {23, "R_ARM_RELATIVE"},
1958 {24, "R_ARM_GOTOFF"},
1959 {25, "R_ARM_GOTPC"},
1960 {26, "R_ARM_GOT32"},
1961 {27, "R_ARM_PLT32"},
1962 {28, "R_ARM_CALL"},
1963 {29, "R_ARM_JUMP24"},
1964 {30, "R_ARM_THM_JUMP24"},
1965 {31, "R_ARM_BASE_ABS"},
1966 {32, "R_ARM_ALU_PCREL_7_0"},
1967 {33, "R_ARM_ALU_PCREL_15_8"},
1968 {34, "R_ARM_ALU_PCREL_23_15"},
1969 {35, "R_ARM_LDR_SBREL_11_10_NC"},
1970 {36, "R_ARM_ALU_SBREL_19_12_NC"},
1971 {37, "R_ARM_ALU_SBREL_27_20_CK"},
1972 {38, "R_ARM_TARGET1"},
1973 {39, "R_ARM_SBREL31"},
1974 {40, "R_ARM_V4BX"},
1975 {41, "R_ARM_TARGET2"},
1976 {42, "R_ARM_PREL31"},
1977 {43, "R_ARM_MOVW_ABS_NC"},
1978 {44, "R_ARM_MOVT_ABS"},
1979 {45, "R_ARM_MOVW_PREL_NC"},
1980 {46, "R_ARM_MOVT_PREL"},
1981 {47, "R_ARM_THM_MOVW_ABS_NC"},
1982 {48, "R_ARM_THM_MOVT_ABS"},
1983 {49, "R_ARM_THM_MOVW_PREL_NC"},
1984 {50, "R_ARM_THM_MOVT_PREL"},
1985 {51, "R_ARM_THM_JUMP19"},
1986 {52, "R_ARM_THM_JUMP6"},
1987 {53, "R_ARM_THM_ALU_PREL_11_0"},
1988 {54, "R_ARM_THM_PC12"},
1989 {55, "R_ARM_ABS32_NOI"},
1990 {56, "R_ARM_REL32_NOI"},
1991 {57, "R_ARM_ALU_PC_G0_NC"},
1992 {58, "R_ARM_ALU_PC_G0"},
1993 {59, "R_ARM_ALU_PC_G1_NC"},
1994 {60, "R_ARM_ALU_PC_G1"},
1995 {61, "R_ARM_ALU_PC_G2"},
1996 {62, "R_ARM_LDR_PC_G1"},
1997 {63, "R_ARM_LDR_PC_G2"},
1998 {64, "R_ARM_LDRS_PC_G0"},
1999 {65, "R_ARM_LDRS_PC_G1"},
2000 {66, "R_ARM_LDRS_PC_G2"},
2001 {67, "R_ARM_LDC_PC_G0"},
2002 {68, "R_ARM_LDC_PC_G1"},
2003 {69, "R_ARM_LDC_PC_G2"},
2004 {70, "R_ARM_ALU_SB_G0_NC"},
2005 {71, "R_ARM_ALU_SB_G0"},
2006 {72, "R_ARM_ALU_SB_G1_NC"},
2007 {73, "R_ARM_ALU_SB_G1"},
2008 {74, "R_ARM_ALU_SB_G2"},
2009 {75, "R_ARM_LDR_SB_G0"},
2010 {76, "R_ARM_LDR_SB_G1"},
2011 {77, "R_ARM_LDR_SB_G2"},
2012 {78, "R_ARM_LDRS_SB_G0"},
2013 {79, "R_ARM_LDRS_SB_G1"},
2014 {80, "R_ARM_LDRS_SB_G2"},
2015 {81, "R_ARM_LDC_SB_G0"},
2016 {82, "R_ARM_LDC_SB_G1"},
2017 {83, "R_ARM_LDC_SB_G2"},
2018 {84, "R_ARM_MOVW_BREL_NC"},
2019 {85, "R_ARM_MOVT_BREL"},
2020 {86, "R_ARM_MOVW_BREL"},
2021 {87, "R_ARM_THM_MOVW_BREL_NC"},
2022 {88, "R_ARM_THM_MOVT_BREL"},
2023 {89, "R_ARM_THM_MOVW_BREL"},
2024 {90, "R_ARM_TLS_GOTDESC"},
2025 {91, "R_ARM_TLS_CALL"},
2026 {92, "R_ARM_TLS_DESCSEQ"},
2027 {93, "R_ARM_THM_TLS_CALL"},
2028 {94, "R_ARM_PLT32_ABS"},
2029 {95, "R_ARM_GOT_ABS"},
2030 {96, "R_ARM_GOT_PREL"},
2031 {97, "R_ARM_GOT_BREL12"},
2032 {98, "R_ARM_GOTOFF12"},
2033 {99, "R_ARM_GOTRELAX"},
2034 {100, "R_ARM_GNU_VTENTRY"},
2035 {101, "R_ARM_GNU_VTINHERIT"},
2036 {102, "R_ARM_THM_JUMP11"},
2037 {103, "R_ARM_THM_JUMP8"},
2038 {104, "R_ARM_TLS_GD32"},
2039 {105, "R_ARM_TLS_LDM32"},
2040 {106, "R_ARM_TLS_LDO32"},
2041 {107, "R_ARM_TLS_IE32"},
2042 {108, "R_ARM_TLS_LE32"},
2043 {109, "R_ARM_TLS_LDO12"},
2044 {110, "R_ARM_TLS_LE12"},
2045 {111, "R_ARM_TLS_IE12GP"},
2046 {112, "R_ARM_PRIVATE_0"},
2047 {113, "R_ARM_PRIVATE_1"},
2048 {114, "R_ARM_PRIVATE_2"},
2049 {115, "R_ARM_PRIVATE_3"},
2050 {116, "R_ARM_PRIVATE_4"},
2051 {117, "R_ARM_PRIVATE_5"},
2052 {118, "R_ARM_PRIVATE_6"},
2053 {119, "R_ARM_PRIVATE_7"},
2054 {120, "R_ARM_PRIVATE_8"},
2055 {121, "R_ARM_PRIVATE_9"},
2056 {122, "R_ARM_PRIVATE_10"},
2057 {123, "R_ARM_PRIVATE_11"},
2058 {124, "R_ARM_PRIVATE_12"},
2059 {125, "R_ARM_PRIVATE_13"},
2060 {126, "R_ARM_PRIVATE_14"},
2061 {127, "R_ARM_PRIVATE_15"},
2062 {128, "R_ARM_ME_TOO"},
2063 {129, "R_ARM_THM_TLS_DESCSEQ16"},
2064 {130, "R_ARM_THM_TLS_DESCSEQ32"},
2065 {131, "R_ARM_THM_GOT_BREL12"},
2066 {132, "R_ARM_THM_ALU_ABS_G0_NC"},
2067 {133, "R_ARM_THM_ALU_ABS_G1_NC"},
2068 {134, "R_ARM_THM_ALU_ABS_G2_NC"},
2069 {135, "R_ARM_THM_ALU_ABS_G3"},
2070 {160, "R_ARM_IRELATIVE"},
2071 {249, "R_ARM_RXPC25"},
2072 {250, "R_ARM_RSBREL32"},
2073 {251, "R_ARM_THM_RPC22"},
2074 {252, "R_ARM_RREL32"},
2075 {253, "R_ARM_RABS32"},
2076 {254, "R_ARM_RPC24"},
2077 {255, "R_ARM_RBASE"},
2078 }
2079
2080 func (i R_ARM) String() string { return stringName(uint32(i), rarmStrings, false) }
2081 func (i R_ARM) GoString() string { return stringName(uint32(i), rarmStrings, true) }
2082
2083
2084 type R_386 int
2085
2086 const (
2087 R_386_NONE R_386 = 0
2088 R_386_32 R_386 = 1
2089 R_386_PC32 R_386 = 2
2090 R_386_GOT32 R_386 = 3
2091 R_386_PLT32 R_386 = 4
2092 R_386_COPY R_386 = 5
2093 R_386_GLOB_DAT R_386 = 6
2094 R_386_JMP_SLOT R_386 = 7
2095 R_386_RELATIVE R_386 = 8
2096 R_386_GOTOFF R_386 = 9
2097 R_386_GOTPC R_386 = 10
2098 R_386_32PLT R_386 = 11
2099 R_386_TLS_TPOFF R_386 = 14
2100 R_386_TLS_IE R_386 = 15
2101 R_386_TLS_GOTIE R_386 = 16
2102 R_386_TLS_LE R_386 = 17
2103 R_386_TLS_GD R_386 = 18
2104 R_386_TLS_LDM R_386 = 19
2105 R_386_16 R_386 = 20
2106 R_386_PC16 R_386 = 21
2107 R_386_8 R_386 = 22
2108 R_386_PC8 R_386 = 23
2109 R_386_TLS_GD_32 R_386 = 24
2110 R_386_TLS_GD_PUSH R_386 = 25
2111 R_386_TLS_GD_CALL R_386 = 26
2112 R_386_TLS_GD_POP R_386 = 27
2113 R_386_TLS_LDM_32 R_386 = 28
2114 R_386_TLS_LDM_PUSH R_386 = 29
2115 R_386_TLS_LDM_CALL R_386 = 30
2116 R_386_TLS_LDM_POP R_386 = 31
2117 R_386_TLS_LDO_32 R_386 = 32
2118 R_386_TLS_IE_32 R_386 = 33
2119 R_386_TLS_LE_32 R_386 = 34
2120 R_386_TLS_DTPMOD32 R_386 = 35
2121 R_386_TLS_DTPOFF32 R_386 = 36
2122 R_386_TLS_TPOFF32 R_386 = 37
2123 R_386_SIZE32 R_386 = 38
2124 R_386_TLS_GOTDESC R_386 = 39
2125 R_386_TLS_DESC_CALL R_386 = 40
2126 R_386_TLS_DESC R_386 = 41
2127 R_386_IRELATIVE R_386 = 42
2128 R_386_GOT32X R_386 = 43
2129 )
2130
2131 var r386Strings = []intName{
2132 {0, "R_386_NONE"},
2133 {1, "R_386_32"},
2134 {2, "R_386_PC32"},
2135 {3, "R_386_GOT32"},
2136 {4, "R_386_PLT32"},
2137 {5, "R_386_COPY"},
2138 {6, "R_386_GLOB_DAT"},
2139 {7, "R_386_JMP_SLOT"},
2140 {8, "R_386_RELATIVE"},
2141 {9, "R_386_GOTOFF"},
2142 {10, "R_386_GOTPC"},
2143 {11, "R_386_32PLT"},
2144 {14, "R_386_TLS_TPOFF"},
2145 {15, "R_386_TLS_IE"},
2146 {16, "R_386_TLS_GOTIE"},
2147 {17, "R_386_TLS_LE"},
2148 {18, "R_386_TLS_GD"},
2149 {19, "R_386_TLS_LDM"},
2150 {20, "R_386_16"},
2151 {21, "R_386_PC16"},
2152 {22, "R_386_8"},
2153 {23, "R_386_PC8"},
2154 {24, "R_386_TLS_GD_32"},
2155 {25, "R_386_TLS_GD_PUSH"},
2156 {26, "R_386_TLS_GD_CALL"},
2157 {27, "R_386_TLS_GD_POP"},
2158 {28, "R_386_TLS_LDM_32"},
2159 {29, "R_386_TLS_LDM_PUSH"},
2160 {30, "R_386_TLS_LDM_CALL"},
2161 {31, "R_386_TLS_LDM_POP"},
2162 {32, "R_386_TLS_LDO_32"},
2163 {33, "R_386_TLS_IE_32"},
2164 {34, "R_386_TLS_LE_32"},
2165 {35, "R_386_TLS_DTPMOD32"},
2166 {36, "R_386_TLS_DTPOFF32"},
2167 {37, "R_386_TLS_TPOFF32"},
2168 {38, "R_386_SIZE32"},
2169 {39, "R_386_TLS_GOTDESC"},
2170 {40, "R_386_TLS_DESC_CALL"},
2171 {41, "R_386_TLS_DESC"},
2172 {42, "R_386_IRELATIVE"},
2173 {43, "R_386_GOT32X"},
2174 }
2175
2176 func (i R_386) String() string { return stringName(uint32(i), r386Strings, false) }
2177 func (i R_386) GoString() string { return stringName(uint32(i), r386Strings, true) }
2178
2179
2180 type R_MIPS int
2181
2182 const (
2183 R_MIPS_NONE R_MIPS = 0
2184 R_MIPS_16 R_MIPS = 1
2185 R_MIPS_32 R_MIPS = 2
2186 R_MIPS_REL32 R_MIPS = 3
2187 R_MIPS_26 R_MIPS = 4
2188 R_MIPS_HI16 R_MIPS = 5
2189 R_MIPS_LO16 R_MIPS = 6
2190 R_MIPS_GPREL16 R_MIPS = 7
2191 R_MIPS_LITERAL R_MIPS = 8
2192 R_MIPS_GOT16 R_MIPS = 9
2193 R_MIPS_PC16 R_MIPS = 10
2194 R_MIPS_CALL16 R_MIPS = 11
2195 R_MIPS_GPREL32 R_MIPS = 12
2196 R_MIPS_SHIFT5 R_MIPS = 16
2197 R_MIPS_SHIFT6 R_MIPS = 17
2198 R_MIPS_64 R_MIPS = 18
2199 R_MIPS_GOT_DISP R_MIPS = 19
2200 R_MIPS_GOT_PAGE R_MIPS = 20
2201 R_MIPS_GOT_OFST R_MIPS = 21
2202 R_MIPS_GOT_HI16 R_MIPS = 22
2203 R_MIPS_GOT_LO16 R_MIPS = 23
2204 R_MIPS_SUB R_MIPS = 24
2205 R_MIPS_INSERT_A R_MIPS = 25
2206 R_MIPS_INSERT_B R_MIPS = 26
2207 R_MIPS_DELETE R_MIPS = 27
2208 R_MIPS_HIGHER R_MIPS = 28
2209 R_MIPS_HIGHEST R_MIPS = 29
2210 R_MIPS_CALL_HI16 R_MIPS = 30
2211 R_MIPS_CALL_LO16 R_MIPS = 31
2212 R_MIPS_SCN_DISP R_MIPS = 32
2213 R_MIPS_REL16 R_MIPS = 33
2214 R_MIPS_ADD_IMMEDIATE R_MIPS = 34
2215 R_MIPS_PJUMP R_MIPS = 35
2216 R_MIPS_RELGOT R_MIPS = 36
2217 R_MIPS_JALR R_MIPS = 37
2218
2219 R_MIPS_TLS_DTPMOD32 R_MIPS = 38
2220 R_MIPS_TLS_DTPREL32 R_MIPS = 39
2221 R_MIPS_TLS_DTPMOD64 R_MIPS = 40
2222 R_MIPS_TLS_DTPREL64 R_MIPS = 41
2223 R_MIPS_TLS_GD R_MIPS = 42
2224 R_MIPS_TLS_LDM R_MIPS = 43
2225 R_MIPS_TLS_DTPREL_HI16 R_MIPS = 44
2226 R_MIPS_TLS_DTPREL_LO16 R_MIPS = 45
2227 R_MIPS_TLS_GOTTPREL R_MIPS = 46
2228 R_MIPS_TLS_TPREL32 R_MIPS = 47
2229 R_MIPS_TLS_TPREL64 R_MIPS = 48
2230 R_MIPS_TLS_TPREL_HI16 R_MIPS = 49
2231 R_MIPS_TLS_TPREL_LO16 R_MIPS = 50
2232
2233 R_MIPS_PC32 R_MIPS = 248
2234 )
2235
2236 var rmipsStrings = []intName{
2237 {0, "R_MIPS_NONE"},
2238 {1, "R_MIPS_16"},
2239 {2, "R_MIPS_32"},
2240 {3, "R_MIPS_REL32"},
2241 {4, "R_MIPS_26"},
2242 {5, "R_MIPS_HI16"},
2243 {6, "R_MIPS_LO16"},
2244 {7, "R_MIPS_GPREL16"},
2245 {8, "R_MIPS_LITERAL"},
2246 {9, "R_MIPS_GOT16"},
2247 {10, "R_MIPS_PC16"},
2248 {11, "R_MIPS_CALL16"},
2249 {12, "R_MIPS_GPREL32"},
2250 {16, "R_MIPS_SHIFT5"},
2251 {17, "R_MIPS_SHIFT6"},
2252 {18, "R_MIPS_64"},
2253 {19, "R_MIPS_GOT_DISP"},
2254 {20, "R_MIPS_GOT_PAGE"},
2255 {21, "R_MIPS_GOT_OFST"},
2256 {22, "R_MIPS_GOT_HI16"},
2257 {23, "R_MIPS_GOT_LO16"},
2258 {24, "R_MIPS_SUB"},
2259 {25, "R_MIPS_INSERT_A"},
2260 {26, "R_MIPS_INSERT_B"},
2261 {27, "R_MIPS_DELETE"},
2262 {28, "R_MIPS_HIGHER"},
2263 {29, "R_MIPS_HIGHEST"},
2264 {30, "R_MIPS_CALL_HI16"},
2265 {31, "R_MIPS_CALL_LO16"},
2266 {32, "R_MIPS_SCN_DISP"},
2267 {33, "R_MIPS_REL16"},
2268 {34, "R_MIPS_ADD_IMMEDIATE"},
2269 {35, "R_MIPS_PJUMP"},
2270 {36, "R_MIPS_RELGOT"},
2271 {37, "R_MIPS_JALR"},
2272 {38, "R_MIPS_TLS_DTPMOD32"},
2273 {39, "R_MIPS_TLS_DTPREL32"},
2274 {40, "R_MIPS_TLS_DTPMOD64"},
2275 {41, "R_MIPS_TLS_DTPREL64"},
2276 {42, "R_MIPS_TLS_GD"},
2277 {43, "R_MIPS_TLS_LDM"},
2278 {44, "R_MIPS_TLS_DTPREL_HI16"},
2279 {45, "R_MIPS_TLS_DTPREL_LO16"},
2280 {46, "R_MIPS_TLS_GOTTPREL"},
2281 {47, "R_MIPS_TLS_TPREL32"},
2282 {48, "R_MIPS_TLS_TPREL64"},
2283 {49, "R_MIPS_TLS_TPREL_HI16"},
2284 {50, "R_MIPS_TLS_TPREL_LO16"},
2285 {248, "R_MIPS_PC32"},
2286 }
2287
2288 func (i R_MIPS) String() string { return stringName(uint32(i), rmipsStrings, false) }
2289 func (i R_MIPS) GoString() string { return stringName(uint32(i), rmipsStrings, true) }
2290
2291
2292 type R_LARCH int
2293
2294 const (
2295 R_LARCH_NONE R_LARCH = 0
2296 R_LARCH_32 R_LARCH = 1
2297 R_LARCH_64 R_LARCH = 2
2298 R_LARCH_RELATIVE R_LARCH = 3
2299 R_LARCH_COPY R_LARCH = 4
2300 R_LARCH_JUMP_SLOT R_LARCH = 5
2301 R_LARCH_TLS_DTPMOD32 R_LARCH = 6
2302 R_LARCH_TLS_DTPMOD64 R_LARCH = 7
2303 R_LARCH_TLS_DTPREL32 R_LARCH = 8
2304 R_LARCH_TLS_DTPREL64 R_LARCH = 9
2305 R_LARCH_TLS_TPREL32 R_LARCH = 10
2306 R_LARCH_TLS_TPREL64 R_LARCH = 11
2307 R_LARCH_IRELATIVE R_LARCH = 12
2308 R_LARCH_MARK_LA R_LARCH = 20
2309 R_LARCH_MARK_PCREL R_LARCH = 21
2310 R_LARCH_SOP_PUSH_PCREL R_LARCH = 22
2311 R_LARCH_SOP_PUSH_ABSOLUTE R_LARCH = 23
2312 R_LARCH_SOP_PUSH_DUP R_LARCH = 24
2313 R_LARCH_SOP_PUSH_GPREL R_LARCH = 25
2314 R_LARCH_SOP_PUSH_TLS_TPREL R_LARCH = 26
2315 R_LARCH_SOP_PUSH_TLS_GOT R_LARCH = 27
2316 R_LARCH_SOP_PUSH_TLS_GD R_LARCH = 28
2317 R_LARCH_SOP_PUSH_PLT_PCREL R_LARCH = 29
2318 R_LARCH_SOP_ASSERT R_LARCH = 30
2319 R_LARCH_SOP_NOT R_LARCH = 31
2320 R_LARCH_SOP_SUB R_LARCH = 32
2321 R_LARCH_SOP_SL R_LARCH = 33
2322 R_LARCH_SOP_SR R_LARCH = 34
2323 R_LARCH_SOP_ADD R_LARCH = 35
2324 R_LARCH_SOP_AND R_LARCH = 36
2325 R_LARCH_SOP_IF_ELSE R_LARCH = 37
2326 R_LARCH_SOP_POP_32_S_10_5 R_LARCH = 38
2327 R_LARCH_SOP_POP_32_U_10_12 R_LARCH = 39
2328 R_LARCH_SOP_POP_32_S_10_12 R_LARCH = 40
2329 R_LARCH_SOP_POP_32_S_10_16 R_LARCH = 41
2330 R_LARCH_SOP_POP_32_S_10_16_S2 R_LARCH = 42
2331 R_LARCH_SOP_POP_32_S_5_20 R_LARCH = 43
2332 R_LARCH_SOP_POP_32_S_0_5_10_16_S2 R_LARCH = 44
2333 R_LARCH_SOP_POP_32_S_0_10_10_16_S2 R_LARCH = 45
2334 R_LARCH_SOP_POP_32_U R_LARCH = 46
2335 R_LARCH_ADD8 R_LARCH = 47
2336 R_LARCH_ADD16 R_LARCH = 48
2337 R_LARCH_ADD24 R_LARCH = 49
2338 R_LARCH_ADD32 R_LARCH = 50
2339 R_LARCH_ADD64 R_LARCH = 51
2340 R_LARCH_SUB8 R_LARCH = 52
2341 R_LARCH_SUB16 R_LARCH = 53
2342 R_LARCH_SUB24 R_LARCH = 54
2343 R_LARCH_SUB32 R_LARCH = 55
2344 R_LARCH_SUB64 R_LARCH = 56
2345 R_LARCH_GNU_VTINHERIT R_LARCH = 57
2346 R_LARCH_GNU_VTENTRY R_LARCH = 58
2347 R_LARCH_B16 R_LARCH = 64
2348 R_LARCH_B21 R_LARCH = 65
2349 R_LARCH_B26 R_LARCH = 66
2350 R_LARCH_ABS_HI20 R_LARCH = 67
2351 R_LARCH_ABS_LO12 R_LARCH = 68
2352 R_LARCH_ABS64_LO20 R_LARCH = 69
2353 R_LARCH_ABS64_HI12 R_LARCH = 70
2354 R_LARCH_PCALA_HI20 R_LARCH = 71
2355 R_LARCH_PCALA_LO12 R_LARCH = 72
2356 R_LARCH_PCALA64_LO20 R_LARCH = 73
2357 R_LARCH_PCALA64_HI12 R_LARCH = 74
2358 R_LARCH_GOT_PC_HI20 R_LARCH = 75
2359 R_LARCH_GOT_PC_LO12 R_LARCH = 76
2360 R_LARCH_GOT64_PC_LO20 R_LARCH = 77
2361 R_LARCH_GOT64_PC_HI12 R_LARCH = 78
2362 R_LARCH_GOT_HI20 R_LARCH = 79
2363 R_LARCH_GOT_LO12 R_LARCH = 80
2364 R_LARCH_GOT64_LO20 R_LARCH = 81
2365 R_LARCH_GOT64_HI12 R_LARCH = 82
2366 R_LARCH_TLS_LE_HI20 R_LARCH = 83
2367 R_LARCH_TLS_LE_LO12 R_LARCH = 84
2368 R_LARCH_TLS_LE64_LO20 R_LARCH = 85
2369 R_LARCH_TLS_LE64_HI12 R_LARCH = 86
2370 R_LARCH_TLS_IE_PC_HI20 R_LARCH = 87
2371 R_LARCH_TLS_IE_PC_LO12 R_LARCH = 88
2372 R_LARCH_TLS_IE64_PC_LO20 R_LARCH = 89
2373 R_LARCH_TLS_IE64_PC_HI12 R_LARCH = 90
2374 R_LARCH_TLS_IE_HI20 R_LARCH = 91
2375 R_LARCH_TLS_IE_LO12 R_LARCH = 92
2376 R_LARCH_TLS_IE64_LO20 R_LARCH = 93
2377 R_LARCH_TLS_IE64_HI12 R_LARCH = 94
2378 R_LARCH_TLS_LD_PC_HI20 R_LARCH = 95
2379 R_LARCH_TLS_LD_HI20 R_LARCH = 96
2380 R_LARCH_TLS_GD_PC_HI20 R_LARCH = 97
2381 R_LARCH_TLS_GD_HI20 R_LARCH = 98
2382 R_LARCH_32_PCREL R_LARCH = 99
2383 R_LARCH_RELAX R_LARCH = 100
2384 R_LARCH_DELETE R_LARCH = 101
2385 R_LARCH_ALIGN R_LARCH = 102
2386 R_LARCH_PCREL20_S2 R_LARCH = 103
2387 R_LARCH_CFA R_LARCH = 104
2388 R_LARCH_ADD6 R_LARCH = 105
2389 R_LARCH_SUB6 R_LARCH = 106
2390 R_LARCH_ADD_ULEB128 R_LARCH = 107
2391 R_LARCH_SUB_ULEB128 R_LARCH = 108
2392 R_LARCH_64_PCREL R_LARCH = 109
2393 )
2394
2395 var rlarchStrings = []intName{
2396 {0, "R_LARCH_NONE"},
2397 {1, "R_LARCH_32"},
2398 {2, "R_LARCH_64"},
2399 {3, "R_LARCH_RELATIVE"},
2400 {4, "R_LARCH_COPY"},
2401 {5, "R_LARCH_JUMP_SLOT"},
2402 {6, "R_LARCH_TLS_DTPMOD32"},
2403 {7, "R_LARCH_TLS_DTPMOD64"},
2404 {8, "R_LARCH_TLS_DTPREL32"},
2405 {9, "R_LARCH_TLS_DTPREL64"},
2406 {10, "R_LARCH_TLS_TPREL32"},
2407 {11, "R_LARCH_TLS_TPREL64"},
2408 {12, "R_LARCH_IRELATIVE"},
2409 {20, "R_LARCH_MARK_LA"},
2410 {21, "R_LARCH_MARK_PCREL"},
2411 {22, "R_LARCH_SOP_PUSH_PCREL"},
2412 {23, "R_LARCH_SOP_PUSH_ABSOLUTE"},
2413 {24, "R_LARCH_SOP_PUSH_DUP"},
2414 {25, "R_LARCH_SOP_PUSH_GPREL"},
2415 {26, "R_LARCH_SOP_PUSH_TLS_TPREL"},
2416 {27, "R_LARCH_SOP_PUSH_TLS_GOT"},
2417 {28, "R_LARCH_SOP_PUSH_TLS_GD"},
2418 {29, "R_LARCH_SOP_PUSH_PLT_PCREL"},
2419 {30, "R_LARCH_SOP_ASSERT"},
2420 {31, "R_LARCH_SOP_NOT"},
2421 {32, "R_LARCH_SOP_SUB"},
2422 {33, "R_LARCH_SOP_SL"},
2423 {34, "R_LARCH_SOP_SR"},
2424 {35, "R_LARCH_SOP_ADD"},
2425 {36, "R_LARCH_SOP_AND"},
2426 {37, "R_LARCH_SOP_IF_ELSE"},
2427 {38, "R_LARCH_SOP_POP_32_S_10_5"},
2428 {39, "R_LARCH_SOP_POP_32_U_10_12"},
2429 {40, "R_LARCH_SOP_POP_32_S_10_12"},
2430 {41, "R_LARCH_SOP_POP_32_S_10_16"},
2431 {42, "R_LARCH_SOP_POP_32_S_10_16_S2"},
2432 {43, "R_LARCH_SOP_POP_32_S_5_20"},
2433 {44, "R_LARCH_SOP_POP_32_S_0_5_10_16_S2"},
2434 {45, "R_LARCH_SOP_POP_32_S_0_10_10_16_S2"},
2435 {46, "R_LARCH_SOP_POP_32_U"},
2436 {47, "R_LARCH_ADD8"},
2437 {48, "R_LARCH_ADD16"},
2438 {49, "R_LARCH_ADD24"},
2439 {50, "R_LARCH_ADD32"},
2440 {51, "R_LARCH_ADD64"},
2441 {52, "R_LARCH_SUB8"},
2442 {53, "R_LARCH_SUB16"},
2443 {54, "R_LARCH_SUB24"},
2444 {55, "R_LARCH_SUB32"},
2445 {56, "R_LARCH_SUB64"},
2446 {57, "R_LARCH_GNU_VTINHERIT"},
2447 {58, "R_LARCH_GNU_VTENTRY"},
2448 {64, "R_LARCH_B16"},
2449 {65, "R_LARCH_B21"},
2450 {66, "R_LARCH_B26"},
2451 {67, "R_LARCH_ABS_HI20"},
2452 {68, "R_LARCH_ABS_LO12"},
2453 {69, "R_LARCH_ABS64_LO20"},
2454 {70, "R_LARCH_ABS64_HI12"},
2455 {71, "R_LARCH_PCALA_HI20"},
2456 {72, "R_LARCH_PCALA_LO12"},
2457 {73, "R_LARCH_PCALA64_LO20"},
2458 {74, "R_LARCH_PCALA64_HI12"},
2459 {75, "R_LARCH_GOT_PC_HI20"},
2460 {76, "R_LARCH_GOT_PC_LO12"},
2461 {77, "R_LARCH_GOT64_PC_LO20"},
2462 {78, "R_LARCH_GOT64_PC_HI12"},
2463 {79, "R_LARCH_GOT_HI20"},
2464 {80, "R_LARCH_GOT_LO12"},
2465 {81, "R_LARCH_GOT64_LO20"},
2466 {82, "R_LARCH_GOT64_HI12"},
2467 {83, "R_LARCH_TLS_LE_HI20"},
2468 {84, "R_LARCH_TLS_LE_LO12"},
2469 {85, "R_LARCH_TLS_LE64_LO20"},
2470 {86, "R_LARCH_TLS_LE64_HI12"},
2471 {87, "R_LARCH_TLS_IE_PC_HI20"},
2472 {88, "R_LARCH_TLS_IE_PC_LO12"},
2473 {89, "R_LARCH_TLS_IE64_PC_LO20"},
2474 {90, "R_LARCH_TLS_IE64_PC_HI12"},
2475 {91, "R_LARCH_TLS_IE_HI20"},
2476 {92, "R_LARCH_TLS_IE_LO12"},
2477 {93, "R_LARCH_TLS_IE64_LO20"},
2478 {94, "R_LARCH_TLS_IE64_HI12"},
2479 {95, "R_LARCH_TLS_LD_PC_HI20"},
2480 {96, "R_LARCH_TLS_LD_HI20"},
2481 {97, "R_LARCH_TLS_GD_PC_HI20"},
2482 {98, "R_LARCH_TLS_GD_HI20"},
2483 {99, "R_LARCH_32_PCREL"},
2484 {100, "R_LARCH_RELAX"},
2485 {101, "R_LARCH_DELETE"},
2486 {102, "R_LARCH_ALIGN"},
2487 {103, "R_LARCH_PCREL20_S2"},
2488 {104, "R_LARCH_CFA"},
2489 {105, "R_LARCH_ADD6"},
2490 {106, "R_LARCH_SUB6"},
2491 {107, "R_LARCH_ADD_ULEB128"},
2492 {108, "R_LARCH_SUB_ULEB128"},
2493 {109, "R_LARCH_64_PCREL"},
2494 }
2495
2496 func (i R_LARCH) String() string { return stringName(uint32(i), rlarchStrings, false) }
2497 func (i R_LARCH) GoString() string { return stringName(uint32(i), rlarchStrings, true) }
2498
2499
2500
2501
2502
2503
2504
2505 type R_PPC int
2506
2507 const (
2508 R_PPC_NONE R_PPC = 0
2509 R_PPC_ADDR32 R_PPC = 1
2510 R_PPC_ADDR24 R_PPC = 2
2511 R_PPC_ADDR16 R_PPC = 3
2512 R_PPC_ADDR16_LO R_PPC = 4
2513 R_PPC_ADDR16_HI R_PPC = 5
2514 R_PPC_ADDR16_HA R_PPC = 6
2515 R_PPC_ADDR14 R_PPC = 7
2516 R_PPC_ADDR14_BRTAKEN R_PPC = 8
2517 R_PPC_ADDR14_BRNTAKEN R_PPC = 9
2518 R_PPC_REL24 R_PPC = 10
2519 R_PPC_REL14 R_PPC = 11
2520 R_PPC_REL14_BRTAKEN R_PPC = 12
2521 R_PPC_REL14_BRNTAKEN R_PPC = 13
2522 R_PPC_GOT16 R_PPC = 14
2523 R_PPC_GOT16_LO R_PPC = 15
2524 R_PPC_GOT16_HI R_PPC = 16
2525 R_PPC_GOT16_HA R_PPC = 17
2526 R_PPC_PLTREL24 R_PPC = 18
2527 R_PPC_COPY R_PPC = 19
2528 R_PPC_GLOB_DAT R_PPC = 20
2529 R_PPC_JMP_SLOT R_PPC = 21
2530 R_PPC_RELATIVE R_PPC = 22
2531 R_PPC_LOCAL24PC R_PPC = 23
2532 R_PPC_UADDR32 R_PPC = 24
2533 R_PPC_UADDR16 R_PPC = 25
2534 R_PPC_REL32 R_PPC = 26
2535 R_PPC_PLT32 R_PPC = 27
2536 R_PPC_PLTREL32 R_PPC = 28
2537 R_PPC_PLT16_LO R_PPC = 29
2538 R_PPC_PLT16_HI R_PPC = 30
2539 R_PPC_PLT16_HA R_PPC = 31
2540 R_PPC_SDAREL16 R_PPC = 32
2541 R_PPC_SECTOFF R_PPC = 33
2542 R_PPC_SECTOFF_LO R_PPC = 34
2543 R_PPC_SECTOFF_HI R_PPC = 35
2544 R_PPC_SECTOFF_HA R_PPC = 36
2545 R_PPC_TLS R_PPC = 67
2546 R_PPC_DTPMOD32 R_PPC = 68
2547 R_PPC_TPREL16 R_PPC = 69
2548 R_PPC_TPREL16_LO R_PPC = 70
2549 R_PPC_TPREL16_HI R_PPC = 71
2550 R_PPC_TPREL16_HA R_PPC = 72
2551 R_PPC_TPREL32 R_PPC = 73
2552 R_PPC_DTPREL16 R_PPC = 74
2553 R_PPC_DTPREL16_LO R_PPC = 75
2554 R_PPC_DTPREL16_HI R_PPC = 76
2555 R_PPC_DTPREL16_HA R_PPC = 77
2556 R_PPC_DTPREL32 R_PPC = 78
2557 R_PPC_GOT_TLSGD16 R_PPC = 79
2558 R_PPC_GOT_TLSGD16_LO R_PPC = 80
2559 R_PPC_GOT_TLSGD16_HI R_PPC = 81
2560 R_PPC_GOT_TLSGD16_HA R_PPC = 82
2561 R_PPC_GOT_TLSLD16 R_PPC = 83
2562 R_PPC_GOT_TLSLD16_LO R_PPC = 84
2563 R_PPC_GOT_TLSLD16_HI R_PPC = 85
2564 R_PPC_GOT_TLSLD16_HA R_PPC = 86
2565 R_PPC_GOT_TPREL16 R_PPC = 87
2566 R_PPC_GOT_TPREL16_LO R_PPC = 88
2567 R_PPC_GOT_TPREL16_HI R_PPC = 89
2568 R_PPC_GOT_TPREL16_HA R_PPC = 90
2569 R_PPC_EMB_NADDR32 R_PPC = 101
2570 R_PPC_EMB_NADDR16 R_PPC = 102
2571 R_PPC_EMB_NADDR16_LO R_PPC = 103
2572 R_PPC_EMB_NADDR16_HI R_PPC = 104
2573 R_PPC_EMB_NADDR16_HA R_PPC = 105
2574 R_PPC_EMB_SDAI16 R_PPC = 106
2575 R_PPC_EMB_SDA2I16 R_PPC = 107
2576 R_PPC_EMB_SDA2REL R_PPC = 108
2577 R_PPC_EMB_SDA21 R_PPC = 109
2578 R_PPC_EMB_MRKREF R_PPC = 110
2579 R_PPC_EMB_RELSEC16 R_PPC = 111
2580 R_PPC_EMB_RELST_LO R_PPC = 112
2581 R_PPC_EMB_RELST_HI R_PPC = 113
2582 R_PPC_EMB_RELST_HA R_PPC = 114
2583 R_PPC_EMB_BIT_FLD R_PPC = 115
2584 R_PPC_EMB_RELSDA R_PPC = 116
2585 )
2586
2587 var rppcStrings = []intName{
2588 {0, "R_PPC_NONE"},
2589 {1, "R_PPC_ADDR32"},
2590 {2, "R_PPC_ADDR24"},
2591 {3, "R_PPC_ADDR16"},
2592 {4, "R_PPC_ADDR16_LO"},
2593 {5, "R_PPC_ADDR16_HI"},
2594 {6, "R_PPC_ADDR16_HA"},
2595 {7, "R_PPC_ADDR14"},
2596 {8, "R_PPC_ADDR14_BRTAKEN"},
2597 {9, "R_PPC_ADDR14_BRNTAKEN"},
2598 {10, "R_PPC_REL24"},
2599 {11, "R_PPC_REL14"},
2600 {12, "R_PPC_REL14_BRTAKEN"},
2601 {13, "R_PPC_REL14_BRNTAKEN"},
2602 {14, "R_PPC_GOT16"},
2603 {15, "R_PPC_GOT16_LO"},
2604 {16, "R_PPC_GOT16_HI"},
2605 {17, "R_PPC_GOT16_HA"},
2606 {18, "R_PPC_PLTREL24"},
2607 {19, "R_PPC_COPY"},
2608 {20, "R_PPC_GLOB_DAT"},
2609 {21, "R_PPC_JMP_SLOT"},
2610 {22, "R_PPC_RELATIVE"},
2611 {23, "R_PPC_LOCAL24PC"},
2612 {24, "R_PPC_UADDR32"},
2613 {25, "R_PPC_UADDR16"},
2614 {26, "R_PPC_REL32"},
2615 {27, "R_PPC_PLT32"},
2616 {28, "R_PPC_PLTREL32"},
2617 {29, "R_PPC_PLT16_LO"},
2618 {30, "R_PPC_PLT16_HI"},
2619 {31, "R_PPC_PLT16_HA"},
2620 {32, "R_PPC_SDAREL16"},
2621 {33, "R_PPC_SECTOFF"},
2622 {34, "R_PPC_SECTOFF_LO"},
2623 {35, "R_PPC_SECTOFF_HI"},
2624 {36, "R_PPC_SECTOFF_HA"},
2625 {67, "R_PPC_TLS"},
2626 {68, "R_PPC_DTPMOD32"},
2627 {69, "R_PPC_TPREL16"},
2628 {70, "R_PPC_TPREL16_LO"},
2629 {71, "R_PPC_TPREL16_HI"},
2630 {72, "R_PPC_TPREL16_HA"},
2631 {73, "R_PPC_TPREL32"},
2632 {74, "R_PPC_DTPREL16"},
2633 {75, "R_PPC_DTPREL16_LO"},
2634 {76, "R_PPC_DTPREL16_HI"},
2635 {77, "R_PPC_DTPREL16_HA"},
2636 {78, "R_PPC_DTPREL32"},
2637 {79, "R_PPC_GOT_TLSGD16"},
2638 {80, "R_PPC_GOT_TLSGD16_LO"},
2639 {81, "R_PPC_GOT_TLSGD16_HI"},
2640 {82, "R_PPC_GOT_TLSGD16_HA"},
2641 {83, "R_PPC_GOT_TLSLD16"},
2642 {84, "R_PPC_GOT_TLSLD16_LO"},
2643 {85, "R_PPC_GOT_TLSLD16_HI"},
2644 {86, "R_PPC_GOT_TLSLD16_HA"},
2645 {87, "R_PPC_GOT_TPREL16"},
2646 {88, "R_PPC_GOT_TPREL16_LO"},
2647 {89, "R_PPC_GOT_TPREL16_HI"},
2648 {90, "R_PPC_GOT_TPREL16_HA"},
2649 {101, "R_PPC_EMB_NADDR32"},
2650 {102, "R_PPC_EMB_NADDR16"},
2651 {103, "R_PPC_EMB_NADDR16_LO"},
2652 {104, "R_PPC_EMB_NADDR16_HI"},
2653 {105, "R_PPC_EMB_NADDR16_HA"},
2654 {106, "R_PPC_EMB_SDAI16"},
2655 {107, "R_PPC_EMB_SDA2I16"},
2656 {108, "R_PPC_EMB_SDA2REL"},
2657 {109, "R_PPC_EMB_SDA21"},
2658 {110, "R_PPC_EMB_MRKREF"},
2659 {111, "R_PPC_EMB_RELSEC16"},
2660 {112, "R_PPC_EMB_RELST_LO"},
2661 {113, "R_PPC_EMB_RELST_HI"},
2662 {114, "R_PPC_EMB_RELST_HA"},
2663 {115, "R_PPC_EMB_BIT_FLD"},
2664 {116, "R_PPC_EMB_RELSDA"},
2665 }
2666
2667 func (i R_PPC) String() string { return stringName(uint32(i), rppcStrings, false) }
2668 func (i R_PPC) GoString() string { return stringName(uint32(i), rppcStrings, true) }
2669
2670
2671
2672
2673
2674
2675
2676 type R_PPC64 int
2677
2678 const (
2679 R_PPC64_NONE R_PPC64 = 0
2680 R_PPC64_ADDR32 R_PPC64 = 1
2681 R_PPC64_ADDR24 R_PPC64 = 2
2682 R_PPC64_ADDR16 R_PPC64 = 3
2683 R_PPC64_ADDR16_LO R_PPC64 = 4
2684 R_PPC64_ADDR16_HI R_PPC64 = 5
2685 R_PPC64_ADDR16_HA R_PPC64 = 6
2686 R_PPC64_ADDR14 R_PPC64 = 7
2687 R_PPC64_ADDR14_BRTAKEN R_PPC64 = 8
2688 R_PPC64_ADDR14_BRNTAKEN R_PPC64 = 9
2689 R_PPC64_REL24 R_PPC64 = 10
2690 R_PPC64_REL14 R_PPC64 = 11
2691 R_PPC64_REL14_BRTAKEN R_PPC64 = 12
2692 R_PPC64_REL14_BRNTAKEN R_PPC64 = 13
2693 R_PPC64_GOT16 R_PPC64 = 14
2694 R_PPC64_GOT16_LO R_PPC64 = 15
2695 R_PPC64_GOT16_HI R_PPC64 = 16
2696 R_PPC64_GOT16_HA R_PPC64 = 17
2697 R_PPC64_COPY R_PPC64 = 19
2698 R_PPC64_GLOB_DAT R_PPC64 = 20
2699 R_PPC64_JMP_SLOT R_PPC64 = 21
2700 R_PPC64_RELATIVE R_PPC64 = 22
2701 R_PPC64_UADDR32 R_PPC64 = 24
2702 R_PPC64_UADDR16 R_PPC64 = 25
2703 R_PPC64_REL32 R_PPC64 = 26
2704 R_PPC64_PLT32 R_PPC64 = 27
2705 R_PPC64_PLTREL32 R_PPC64 = 28
2706 R_PPC64_PLT16_LO R_PPC64 = 29
2707 R_PPC64_PLT16_HI R_PPC64 = 30
2708 R_PPC64_PLT16_HA R_PPC64 = 31
2709 R_PPC64_SECTOFF R_PPC64 = 33
2710 R_PPC64_SECTOFF_LO R_PPC64 = 34
2711 R_PPC64_SECTOFF_HI R_PPC64 = 35
2712 R_PPC64_SECTOFF_HA R_PPC64 = 36
2713 R_PPC64_REL30 R_PPC64 = 37
2714 R_PPC64_ADDR64 R_PPC64 = 38
2715 R_PPC64_ADDR16_HIGHER R_PPC64 = 39
2716 R_PPC64_ADDR16_HIGHERA R_PPC64 = 40
2717 R_PPC64_ADDR16_HIGHEST R_PPC64 = 41
2718 R_PPC64_ADDR16_HIGHESTA R_PPC64 = 42
2719 R_PPC64_UADDR64 R_PPC64 = 43
2720 R_PPC64_REL64 R_PPC64 = 44
2721 R_PPC64_PLT64 R_PPC64 = 45
2722 R_PPC64_PLTREL64 R_PPC64 = 46
2723 R_PPC64_TOC16 R_PPC64 = 47
2724 R_PPC64_TOC16_LO R_PPC64 = 48
2725 R_PPC64_TOC16_HI R_PPC64 = 49
2726 R_PPC64_TOC16_HA R_PPC64 = 50
2727 R_PPC64_TOC R_PPC64 = 51
2728 R_PPC64_PLTGOT16 R_PPC64 = 52
2729 R_PPC64_PLTGOT16_LO R_PPC64 = 53
2730 R_PPC64_PLTGOT16_HI R_PPC64 = 54
2731 R_PPC64_PLTGOT16_HA R_PPC64 = 55
2732 R_PPC64_ADDR16_DS R_PPC64 = 56
2733 R_PPC64_ADDR16_LO_DS R_PPC64 = 57
2734 R_PPC64_GOT16_DS R_PPC64 = 58
2735 R_PPC64_GOT16_LO_DS R_PPC64 = 59
2736 R_PPC64_PLT16_LO_DS R_PPC64 = 60
2737 R_PPC64_SECTOFF_DS R_PPC64 = 61
2738 R_PPC64_SECTOFF_LO_DS R_PPC64 = 62
2739 R_PPC64_TOC16_DS R_PPC64 = 63
2740 R_PPC64_TOC16_LO_DS R_PPC64 = 64
2741 R_PPC64_PLTGOT16_DS R_PPC64 = 65
2742 R_PPC64_PLTGOT_LO_DS R_PPC64 = 66
2743 R_PPC64_TLS R_PPC64 = 67
2744 R_PPC64_DTPMOD64 R_PPC64 = 68
2745 R_PPC64_TPREL16 R_PPC64 = 69
2746 R_PPC64_TPREL16_LO R_PPC64 = 70
2747 R_PPC64_TPREL16_HI R_PPC64 = 71
2748 R_PPC64_TPREL16_HA R_PPC64 = 72
2749 R_PPC64_TPREL64 R_PPC64 = 73
2750 R_PPC64_DTPREL16 R_PPC64 = 74
2751 R_PPC64_DTPREL16_LO R_PPC64 = 75
2752 R_PPC64_DTPREL16_HI R_PPC64 = 76
2753 R_PPC64_DTPREL16_HA R_PPC64 = 77
2754 R_PPC64_DTPREL64 R_PPC64 = 78
2755 R_PPC64_GOT_TLSGD16 R_PPC64 = 79
2756 R_PPC64_GOT_TLSGD16_LO R_PPC64 = 80
2757 R_PPC64_GOT_TLSGD16_HI R_PPC64 = 81
2758 R_PPC64_GOT_TLSGD16_HA R_PPC64 = 82
2759 R_PPC64_GOT_TLSLD16 R_PPC64 = 83
2760 R_PPC64_GOT_TLSLD16_LO R_PPC64 = 84
2761 R_PPC64_GOT_TLSLD16_HI R_PPC64 = 85
2762 R_PPC64_GOT_TLSLD16_HA R_PPC64 = 86
2763 R_PPC64_GOT_TPREL16_DS R_PPC64 = 87
2764 R_PPC64_GOT_TPREL16_LO_DS R_PPC64 = 88
2765 R_PPC64_GOT_TPREL16_HI R_PPC64 = 89
2766 R_PPC64_GOT_TPREL16_HA R_PPC64 = 90
2767 R_PPC64_GOT_DTPREL16_DS R_PPC64 = 91
2768 R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 = 92
2769 R_PPC64_GOT_DTPREL16_HI R_PPC64 = 93
2770 R_PPC64_GOT_DTPREL16_HA R_PPC64 = 94
2771 R_PPC64_TPREL16_DS R_PPC64 = 95
2772 R_PPC64_TPREL16_LO_DS R_PPC64 = 96
2773 R_PPC64_TPREL16_HIGHER R_PPC64 = 97
2774 R_PPC64_TPREL16_HIGHERA R_PPC64 = 98
2775 R_PPC64_TPREL16_HIGHEST R_PPC64 = 99
2776 R_PPC64_TPREL16_HIGHESTA R_PPC64 = 100
2777 R_PPC64_DTPREL16_DS R_PPC64 = 101
2778 R_PPC64_DTPREL16_LO_DS R_PPC64 = 102
2779 R_PPC64_DTPREL16_HIGHER R_PPC64 = 103
2780 R_PPC64_DTPREL16_HIGHERA R_PPC64 = 104
2781 R_PPC64_DTPREL16_HIGHEST R_PPC64 = 105
2782 R_PPC64_DTPREL16_HIGHESTA R_PPC64 = 106
2783 R_PPC64_TLSGD R_PPC64 = 107
2784 R_PPC64_TLSLD R_PPC64 = 108
2785 R_PPC64_TOCSAVE R_PPC64 = 109
2786 R_PPC64_ADDR16_HIGH R_PPC64 = 110
2787 R_PPC64_ADDR16_HIGHA R_PPC64 = 111
2788 R_PPC64_TPREL16_HIGH R_PPC64 = 112
2789 R_PPC64_TPREL16_HIGHA R_PPC64 = 113
2790 R_PPC64_DTPREL16_HIGH R_PPC64 = 114
2791 R_PPC64_DTPREL16_HIGHA R_PPC64 = 115
2792 R_PPC64_REL24_NOTOC R_PPC64 = 116
2793 R_PPC64_ADDR64_LOCAL R_PPC64 = 117
2794 R_PPC64_ENTRY R_PPC64 = 118
2795 R_PPC64_PLTSEQ R_PPC64 = 119
2796 R_PPC64_PLTCALL R_PPC64 = 120
2797 R_PPC64_PLTSEQ_NOTOC R_PPC64 = 121
2798 R_PPC64_PLTCALL_NOTOC R_PPC64 = 122
2799 R_PPC64_PCREL_OPT R_PPC64 = 123
2800 R_PPC64_REL24_P9NOTOC R_PPC64 = 124
2801 R_PPC64_D34 R_PPC64 = 128
2802 R_PPC64_D34_LO R_PPC64 = 129
2803 R_PPC64_D34_HI30 R_PPC64 = 130
2804 R_PPC64_D34_HA30 R_PPC64 = 131
2805 R_PPC64_PCREL34 R_PPC64 = 132
2806 R_PPC64_GOT_PCREL34 R_PPC64 = 133
2807 R_PPC64_PLT_PCREL34 R_PPC64 = 134
2808 R_PPC64_PLT_PCREL34_NOTOC R_PPC64 = 135
2809 R_PPC64_ADDR16_HIGHER34 R_PPC64 = 136
2810 R_PPC64_ADDR16_HIGHERA34 R_PPC64 = 137
2811 R_PPC64_ADDR16_HIGHEST34 R_PPC64 = 138
2812 R_PPC64_ADDR16_HIGHESTA34 R_PPC64 = 139
2813 R_PPC64_REL16_HIGHER34 R_PPC64 = 140
2814 R_PPC64_REL16_HIGHERA34 R_PPC64 = 141
2815 R_PPC64_REL16_HIGHEST34 R_PPC64 = 142
2816 R_PPC64_REL16_HIGHESTA34 R_PPC64 = 143
2817 R_PPC64_D28 R_PPC64 = 144
2818 R_PPC64_PCREL28 R_PPC64 = 145
2819 R_PPC64_TPREL34 R_PPC64 = 146
2820 R_PPC64_DTPREL34 R_PPC64 = 147
2821 R_PPC64_GOT_TLSGD_PCREL34 R_PPC64 = 148
2822 R_PPC64_GOT_TLSLD_PCREL34 R_PPC64 = 149
2823 R_PPC64_GOT_TPREL_PCREL34 R_PPC64 = 150
2824 R_PPC64_GOT_DTPREL_PCREL34 R_PPC64 = 151
2825 R_PPC64_REL16_HIGH R_PPC64 = 240
2826 R_PPC64_REL16_HIGHA R_PPC64 = 241
2827 R_PPC64_REL16_HIGHER R_PPC64 = 242
2828 R_PPC64_REL16_HIGHERA R_PPC64 = 243
2829 R_PPC64_REL16_HIGHEST R_PPC64 = 244
2830 R_PPC64_REL16_HIGHESTA R_PPC64 = 245
2831 R_PPC64_REL16DX_HA R_PPC64 = 246
2832 R_PPC64_JMP_IREL R_PPC64 = 247
2833 R_PPC64_IRELATIVE R_PPC64 = 248
2834 R_PPC64_REL16 R_PPC64 = 249
2835 R_PPC64_REL16_LO R_PPC64 = 250
2836 R_PPC64_REL16_HI R_PPC64 = 251
2837 R_PPC64_REL16_HA R_PPC64 = 252
2838 R_PPC64_GNU_VTINHERIT R_PPC64 = 253
2839 R_PPC64_GNU_VTENTRY R_PPC64 = 254
2840 )
2841
2842 var rppc64Strings = []intName{
2843 {0, "R_PPC64_NONE"},
2844 {1, "R_PPC64_ADDR32"},
2845 {2, "R_PPC64_ADDR24"},
2846 {3, "R_PPC64_ADDR16"},
2847 {4, "R_PPC64_ADDR16_LO"},
2848 {5, "R_PPC64_ADDR16_HI"},
2849 {6, "R_PPC64_ADDR16_HA"},
2850 {7, "R_PPC64_ADDR14"},
2851 {8, "R_PPC64_ADDR14_BRTAKEN"},
2852 {9, "R_PPC64_ADDR14_BRNTAKEN"},
2853 {10, "R_PPC64_REL24"},
2854 {11, "R_PPC64_REL14"},
2855 {12, "R_PPC64_REL14_BRTAKEN"},
2856 {13, "R_PPC64_REL14_BRNTAKEN"},
2857 {14, "R_PPC64_GOT16"},
2858 {15, "R_PPC64_GOT16_LO"},
2859 {16, "R_PPC64_GOT16_HI"},
2860 {17, "R_PPC64_GOT16_HA"},
2861 {19, "R_PPC64_COPY"},
2862 {20, "R_PPC64_GLOB_DAT"},
2863 {21, "R_PPC64_JMP_SLOT"},
2864 {22, "R_PPC64_RELATIVE"},
2865 {24, "R_PPC64_UADDR32"},
2866 {25, "R_PPC64_UADDR16"},
2867 {26, "R_PPC64_REL32"},
2868 {27, "R_PPC64_PLT32"},
2869 {28, "R_PPC64_PLTREL32"},
2870 {29, "R_PPC64_PLT16_LO"},
2871 {30, "R_PPC64_PLT16_HI"},
2872 {31, "R_PPC64_PLT16_HA"},
2873 {33, "R_PPC64_SECTOFF"},
2874 {34, "R_PPC64_SECTOFF_LO"},
2875 {35, "R_PPC64_SECTOFF_HI"},
2876 {36, "R_PPC64_SECTOFF_HA"},
2877 {37, "R_PPC64_REL30"},
2878 {38, "R_PPC64_ADDR64"},
2879 {39, "R_PPC64_ADDR16_HIGHER"},
2880 {40, "R_PPC64_ADDR16_HIGHERA"},
2881 {41, "R_PPC64_ADDR16_HIGHEST"},
2882 {42, "R_PPC64_ADDR16_HIGHESTA"},
2883 {43, "R_PPC64_UADDR64"},
2884 {44, "R_PPC64_REL64"},
2885 {45, "R_PPC64_PLT64"},
2886 {46, "R_PPC64_PLTREL64"},
2887 {47, "R_PPC64_TOC16"},
2888 {48, "R_PPC64_TOC16_LO"},
2889 {49, "R_PPC64_TOC16_HI"},
2890 {50, "R_PPC64_TOC16_HA"},
2891 {51, "R_PPC64_TOC"},
2892 {52, "R_PPC64_PLTGOT16"},
2893 {53, "R_PPC64_PLTGOT16_LO"},
2894 {54, "R_PPC64_PLTGOT16_HI"},
2895 {55, "R_PPC64_PLTGOT16_HA"},
2896 {56, "R_PPC64_ADDR16_DS"},
2897 {57, "R_PPC64_ADDR16_LO_DS"},
2898 {58, "R_PPC64_GOT16_DS"},
2899 {59, "R_PPC64_GOT16_LO_DS"},
2900 {60, "R_PPC64_PLT16_LO_DS"},
2901 {61, "R_PPC64_SECTOFF_DS"},
2902 {62, "R_PPC64_SECTOFF_LO_DS"},
2903 {63, "R_PPC64_TOC16_DS"},
2904 {64, "R_PPC64_TOC16_LO_DS"},
2905 {65, "R_PPC64_PLTGOT16_DS"},
2906 {66, "R_PPC64_PLTGOT_LO_DS"},
2907 {67, "R_PPC64_TLS"},
2908 {68, "R_PPC64_DTPMOD64"},
2909 {69, "R_PPC64_TPREL16"},
2910 {70, "R_PPC64_TPREL16_LO"},
2911 {71, "R_PPC64_TPREL16_HI"},
2912 {72, "R_PPC64_TPREL16_HA"},
2913 {73, "R_PPC64_TPREL64"},
2914 {74, "R_PPC64_DTPREL16"},
2915 {75, "R_PPC64_DTPREL16_LO"},
2916 {76, "R_PPC64_DTPREL16_HI"},
2917 {77, "R_PPC64_DTPREL16_HA"},
2918 {78, "R_PPC64_DTPREL64"},
2919 {79, "R_PPC64_GOT_TLSGD16"},
2920 {80, "R_PPC64_GOT_TLSGD16_LO"},
2921 {81, "R_PPC64_GOT_TLSGD16_HI"},
2922 {82, "R_PPC64_GOT_TLSGD16_HA"},
2923 {83, "R_PPC64_GOT_TLSLD16"},
2924 {84, "R_PPC64_GOT_TLSLD16_LO"},
2925 {85, "R_PPC64_GOT_TLSLD16_HI"},
2926 {86, "R_PPC64_GOT_TLSLD16_HA"},
2927 {87, "R_PPC64_GOT_TPREL16_DS"},
2928 {88, "R_PPC64_GOT_TPREL16_LO_DS"},
2929 {89, "R_PPC64_GOT_TPREL16_HI"},
2930 {90, "R_PPC64_GOT_TPREL16_HA"},
2931 {91, "R_PPC64_GOT_DTPREL16_DS"},
2932 {92, "R_PPC64_GOT_DTPREL16_LO_DS"},
2933 {93, "R_PPC64_GOT_DTPREL16_HI"},
2934 {94, "R_PPC64_GOT_DTPREL16_HA"},
2935 {95, "R_PPC64_TPREL16_DS"},
2936 {96, "R_PPC64_TPREL16_LO_DS"},
2937 {97, "R_PPC64_TPREL16_HIGHER"},
2938 {98, "R_PPC64_TPREL16_HIGHERA"},
2939 {99, "R_PPC64_TPREL16_HIGHEST"},
2940 {100, "R_PPC64_TPREL16_HIGHESTA"},
2941 {101, "R_PPC64_DTPREL16_DS"},
2942 {102, "R_PPC64_DTPREL16_LO_DS"},
2943 {103, "R_PPC64_DTPREL16_HIGHER"},
2944 {104, "R_PPC64_DTPREL16_HIGHERA"},
2945 {105, "R_PPC64_DTPREL16_HIGHEST"},
2946 {106, "R_PPC64_DTPREL16_HIGHESTA"},
2947 {107, "R_PPC64_TLSGD"},
2948 {108, "R_PPC64_TLSLD"},
2949 {109, "R_PPC64_TOCSAVE"},
2950 {110, "R_PPC64_ADDR16_HIGH"},
2951 {111, "R_PPC64_ADDR16_HIGHA"},
2952 {112, "R_PPC64_TPREL16_HIGH"},
2953 {113, "R_PPC64_TPREL16_HIGHA"},
2954 {114, "R_PPC64_DTPREL16_HIGH"},
2955 {115, "R_PPC64_DTPREL16_HIGHA"},
2956 {116, "R_PPC64_REL24_NOTOC"},
2957 {117, "R_PPC64_ADDR64_LOCAL"},
2958 {118, "R_PPC64_ENTRY"},
2959 {119, "R_PPC64_PLTSEQ"},
2960 {120, "R_PPC64_PLTCALL"},
2961 {121, "R_PPC64_PLTSEQ_NOTOC"},
2962 {122, "R_PPC64_PLTCALL_NOTOC"},
2963 {123, "R_PPC64_PCREL_OPT"},
2964 {124, "R_PPC64_REL24_P9NOTOC"},
2965 {128, "R_PPC64_D34"},
2966 {129, "R_PPC64_D34_LO"},
2967 {130, "R_PPC64_D34_HI30"},
2968 {131, "R_PPC64_D34_HA30"},
2969 {132, "R_PPC64_PCREL34"},
2970 {133, "R_PPC64_GOT_PCREL34"},
2971 {134, "R_PPC64_PLT_PCREL34"},
2972 {135, "R_PPC64_PLT_PCREL34_NOTOC"},
2973 {136, "R_PPC64_ADDR16_HIGHER34"},
2974 {137, "R_PPC64_ADDR16_HIGHERA34"},
2975 {138, "R_PPC64_ADDR16_HIGHEST34"},
2976 {139, "R_PPC64_ADDR16_HIGHESTA34"},
2977 {140, "R_PPC64_REL16_HIGHER34"},
2978 {141, "R_PPC64_REL16_HIGHERA34"},
2979 {142, "R_PPC64_REL16_HIGHEST34"},
2980 {143, "R_PPC64_REL16_HIGHESTA34"},
2981 {144, "R_PPC64_D28"},
2982 {145, "R_PPC64_PCREL28"},
2983 {146, "R_PPC64_TPREL34"},
2984 {147, "R_PPC64_DTPREL34"},
2985 {148, "R_PPC64_GOT_TLSGD_PCREL34"},
2986 {149, "R_PPC64_GOT_TLSLD_PCREL34"},
2987 {150, "R_PPC64_GOT_TPREL_PCREL34"},
2988 {151, "R_PPC64_GOT_DTPREL_PCREL34"},
2989 {240, "R_PPC64_REL16_HIGH"},
2990 {241, "R_PPC64_REL16_HIGHA"},
2991 {242, "R_PPC64_REL16_HIGHER"},
2992 {243, "R_PPC64_REL16_HIGHERA"},
2993 {244, "R_PPC64_REL16_HIGHEST"},
2994 {245, "R_PPC64_REL16_HIGHESTA"},
2995 {246, "R_PPC64_REL16DX_HA"},
2996 {247, "R_PPC64_JMP_IREL"},
2997 {248, "R_PPC64_IRELATIVE"},
2998 {249, "R_PPC64_REL16"},
2999 {250, "R_PPC64_REL16_LO"},
3000 {251, "R_PPC64_REL16_HI"},
3001 {252, "R_PPC64_REL16_HA"},
3002 {253, "R_PPC64_GNU_VTINHERIT"},
3003 {254, "R_PPC64_GNU_VTENTRY"},
3004 }
3005
3006 func (i R_PPC64) String() string { return stringName(uint32(i), rppc64Strings, false) }
3007 func (i R_PPC64) GoString() string { return stringName(uint32(i), rppc64Strings, true) }
3008
3009
3010 type R_RISCV int
3011
3012 const (
3013 R_RISCV_NONE R_RISCV = 0
3014 R_RISCV_32 R_RISCV = 1
3015 R_RISCV_64 R_RISCV = 2
3016 R_RISCV_RELATIVE R_RISCV = 3
3017 R_RISCV_COPY R_RISCV = 4
3018 R_RISCV_JUMP_SLOT R_RISCV = 5
3019 R_RISCV_TLS_DTPMOD32 R_RISCV = 6
3020 R_RISCV_TLS_DTPMOD64 R_RISCV = 7
3021 R_RISCV_TLS_DTPREL32 R_RISCV = 8
3022 R_RISCV_TLS_DTPREL64 R_RISCV = 9
3023 R_RISCV_TLS_TPREL32 R_RISCV = 10
3024 R_RISCV_TLS_TPREL64 R_RISCV = 11
3025 R_RISCV_BRANCH R_RISCV = 16
3026 R_RISCV_JAL R_RISCV = 17
3027 R_RISCV_CALL R_RISCV = 18
3028 R_RISCV_CALL_PLT R_RISCV = 19
3029 R_RISCV_GOT_HI20 R_RISCV = 20
3030 R_RISCV_TLS_GOT_HI20 R_RISCV = 21
3031 R_RISCV_TLS_GD_HI20 R_RISCV = 22
3032 R_RISCV_PCREL_HI20 R_RISCV = 23
3033 R_RISCV_PCREL_LO12_I R_RISCV = 24
3034 R_RISCV_PCREL_LO12_S R_RISCV = 25
3035 R_RISCV_HI20 R_RISCV = 26
3036 R_RISCV_LO12_I R_RISCV = 27
3037 R_RISCV_LO12_S R_RISCV = 28
3038 R_RISCV_TPREL_HI20 R_RISCV = 29
3039 R_RISCV_TPREL_LO12_I R_RISCV = 30
3040 R_RISCV_TPREL_LO12_S R_RISCV = 31
3041 R_RISCV_TPREL_ADD R_RISCV = 32
3042 R_RISCV_ADD8 R_RISCV = 33
3043 R_RISCV_ADD16 R_RISCV = 34
3044 R_RISCV_ADD32 R_RISCV = 35
3045 R_RISCV_ADD64 R_RISCV = 36
3046 R_RISCV_SUB8 R_RISCV = 37
3047 R_RISCV_SUB16 R_RISCV = 38
3048 R_RISCV_SUB32 R_RISCV = 39
3049 R_RISCV_SUB64 R_RISCV = 40
3050 R_RISCV_GNU_VTINHERIT R_RISCV = 41
3051 R_RISCV_GNU_VTENTRY R_RISCV = 42
3052 R_RISCV_ALIGN R_RISCV = 43
3053 R_RISCV_RVC_BRANCH R_RISCV = 44
3054 R_RISCV_RVC_JUMP R_RISCV = 45
3055 R_RISCV_RVC_LUI R_RISCV = 46
3056 R_RISCV_GPREL_I R_RISCV = 47
3057 R_RISCV_GPREL_S R_RISCV = 48
3058 R_RISCV_TPREL_I R_RISCV = 49
3059 R_RISCV_TPREL_S R_RISCV = 50
3060 R_RISCV_RELAX R_RISCV = 51
3061 R_RISCV_SUB6 R_RISCV = 52
3062 R_RISCV_SET6 R_RISCV = 53
3063 R_RISCV_SET8 R_RISCV = 54
3064 R_RISCV_SET16 R_RISCV = 55
3065 R_RISCV_SET32 R_RISCV = 56
3066 R_RISCV_32_PCREL R_RISCV = 57
3067 )
3068
3069 var rriscvStrings = []intName{
3070 {0, "R_RISCV_NONE"},
3071 {1, "R_RISCV_32"},
3072 {2, "R_RISCV_64"},
3073 {3, "R_RISCV_RELATIVE"},
3074 {4, "R_RISCV_COPY"},
3075 {5, "R_RISCV_JUMP_SLOT"},
3076 {6, "R_RISCV_TLS_DTPMOD32"},
3077 {7, "R_RISCV_TLS_DTPMOD64"},
3078 {8, "R_RISCV_TLS_DTPREL32"},
3079 {9, "R_RISCV_TLS_DTPREL64"},
3080 {10, "R_RISCV_TLS_TPREL32"},
3081 {11, "R_RISCV_TLS_TPREL64"},
3082 {16, "R_RISCV_BRANCH"},
3083 {17, "R_RISCV_JAL"},
3084 {18, "R_RISCV_CALL"},
3085 {19, "R_RISCV_CALL_PLT"},
3086 {20, "R_RISCV_GOT_HI20"},
3087 {21, "R_RISCV_TLS_GOT_HI20"},
3088 {22, "R_RISCV_TLS_GD_HI20"},
3089 {23, "R_RISCV_PCREL_HI20"},
3090 {24, "R_RISCV_PCREL_LO12_I"},
3091 {25, "R_RISCV_PCREL_LO12_S"},
3092 {26, "R_RISCV_HI20"},
3093 {27, "R_RISCV_LO12_I"},
3094 {28, "R_RISCV_LO12_S"},
3095 {29, "R_RISCV_TPREL_HI20"},
3096 {30, "R_RISCV_TPREL_LO12_I"},
3097 {31, "R_RISCV_TPREL_LO12_S"},
3098 {32, "R_RISCV_TPREL_ADD"},
3099 {33, "R_RISCV_ADD8"},
3100 {34, "R_RISCV_ADD16"},
3101 {35, "R_RISCV_ADD32"},
3102 {36, "R_RISCV_ADD64"},
3103 {37, "R_RISCV_SUB8"},
3104 {38, "R_RISCV_SUB16"},
3105 {39, "R_RISCV_SUB32"},
3106 {40, "R_RISCV_SUB64"},
3107 {41, "R_RISCV_GNU_VTINHERIT"},
3108 {42, "R_RISCV_GNU_VTENTRY"},
3109 {43, "R_RISCV_ALIGN"},
3110 {44, "R_RISCV_RVC_BRANCH"},
3111 {45, "R_RISCV_RVC_JUMP"},
3112 {46, "R_RISCV_RVC_LUI"},
3113 {47, "R_RISCV_GPREL_I"},
3114 {48, "R_RISCV_GPREL_S"},
3115 {49, "R_RISCV_TPREL_I"},
3116 {50, "R_RISCV_TPREL_S"},
3117 {51, "R_RISCV_RELAX"},
3118 {52, "R_RISCV_SUB6"},
3119 {53, "R_RISCV_SET6"},
3120 {54, "R_RISCV_SET8"},
3121 {55, "R_RISCV_SET16"},
3122 {56, "R_RISCV_SET32"},
3123 {57, "R_RISCV_32_PCREL"},
3124 }
3125
3126 func (i R_RISCV) String() string { return stringName(uint32(i), rriscvStrings, false) }
3127 func (i R_RISCV) GoString() string { return stringName(uint32(i), rriscvStrings, true) }
3128
3129
3130 type R_390 int
3131
3132 const (
3133 R_390_NONE R_390 = 0
3134 R_390_8 R_390 = 1
3135 R_390_12 R_390 = 2
3136 R_390_16 R_390 = 3
3137 R_390_32 R_390 = 4
3138 R_390_PC32 R_390 = 5
3139 R_390_GOT12 R_390 = 6
3140 R_390_GOT32 R_390 = 7
3141 R_390_PLT32 R_390 = 8
3142 R_390_COPY R_390 = 9
3143 R_390_GLOB_DAT R_390 = 10
3144 R_390_JMP_SLOT R_390 = 11
3145 R_390_RELATIVE R_390 = 12
3146 R_390_GOTOFF R_390 = 13
3147 R_390_GOTPC R_390 = 14
3148 R_390_GOT16 R_390 = 15
3149 R_390_PC16 R_390 = 16
3150 R_390_PC16DBL R_390 = 17
3151 R_390_PLT16DBL R_390 = 18
3152 R_390_PC32DBL R_390 = 19
3153 R_390_PLT32DBL R_390 = 20
3154 R_390_GOTPCDBL R_390 = 21
3155 R_390_64 R_390 = 22
3156 R_390_PC64 R_390 = 23
3157 R_390_GOT64 R_390 = 24
3158 R_390_PLT64 R_390 = 25
3159 R_390_GOTENT R_390 = 26
3160 R_390_GOTOFF16 R_390 = 27
3161 R_390_GOTOFF64 R_390 = 28
3162 R_390_GOTPLT12 R_390 = 29
3163 R_390_GOTPLT16 R_390 = 30
3164 R_390_GOTPLT32 R_390 = 31
3165 R_390_GOTPLT64 R_390 = 32
3166 R_390_GOTPLTENT R_390 = 33
3167 R_390_GOTPLTOFF16 R_390 = 34
3168 R_390_GOTPLTOFF32 R_390 = 35
3169 R_390_GOTPLTOFF64 R_390 = 36
3170 R_390_TLS_LOAD R_390 = 37
3171 R_390_TLS_GDCALL R_390 = 38
3172 R_390_TLS_LDCALL R_390 = 39
3173 R_390_TLS_GD32 R_390 = 40
3174 R_390_TLS_GD64 R_390 = 41
3175 R_390_TLS_GOTIE12 R_390 = 42
3176 R_390_TLS_GOTIE32 R_390 = 43
3177 R_390_TLS_GOTIE64 R_390 = 44
3178 R_390_TLS_LDM32 R_390 = 45
3179 R_390_TLS_LDM64 R_390 = 46
3180 R_390_TLS_IE32 R_390 = 47
3181 R_390_TLS_IE64 R_390 = 48
3182 R_390_TLS_IEENT R_390 = 49
3183 R_390_TLS_LE32 R_390 = 50
3184 R_390_TLS_LE64 R_390 = 51
3185 R_390_TLS_LDO32 R_390 = 52
3186 R_390_TLS_LDO64 R_390 = 53
3187 R_390_TLS_DTPMOD R_390 = 54
3188 R_390_TLS_DTPOFF R_390 = 55
3189 R_390_TLS_TPOFF R_390 = 56
3190 R_390_20 R_390 = 57
3191 R_390_GOT20 R_390 = 58
3192 R_390_GOTPLT20 R_390 = 59
3193 R_390_TLS_GOTIE20 R_390 = 60
3194 )
3195
3196 var r390Strings = []intName{
3197 {0, "R_390_NONE"},
3198 {1, "R_390_8"},
3199 {2, "R_390_12"},
3200 {3, "R_390_16"},
3201 {4, "R_390_32"},
3202 {5, "R_390_PC32"},
3203 {6, "R_390_GOT12"},
3204 {7, "R_390_GOT32"},
3205 {8, "R_390_PLT32"},
3206 {9, "R_390_COPY"},
3207 {10, "R_390_GLOB_DAT"},
3208 {11, "R_390_JMP_SLOT"},
3209 {12, "R_390_RELATIVE"},
3210 {13, "R_390_GOTOFF"},
3211 {14, "R_390_GOTPC"},
3212 {15, "R_390_GOT16"},
3213 {16, "R_390_PC16"},
3214 {17, "R_390_PC16DBL"},
3215 {18, "R_390_PLT16DBL"},
3216 {19, "R_390_PC32DBL"},
3217 {20, "R_390_PLT32DBL"},
3218 {21, "R_390_GOTPCDBL"},
3219 {22, "R_390_64"},
3220 {23, "R_390_PC64"},
3221 {24, "R_390_GOT64"},
3222 {25, "R_390_PLT64"},
3223 {26, "R_390_GOTENT"},
3224 {27, "R_390_GOTOFF16"},
3225 {28, "R_390_GOTOFF64"},
3226 {29, "R_390_GOTPLT12"},
3227 {30, "R_390_GOTPLT16"},
3228 {31, "R_390_GOTPLT32"},
3229 {32, "R_390_GOTPLT64"},
3230 {33, "R_390_GOTPLTENT"},
3231 {34, "R_390_GOTPLTOFF16"},
3232 {35, "R_390_GOTPLTOFF32"},
3233 {36, "R_390_GOTPLTOFF64"},
3234 {37, "R_390_TLS_LOAD"},
3235 {38, "R_390_TLS_GDCALL"},
3236 {39, "R_390_TLS_LDCALL"},
3237 {40, "R_390_TLS_GD32"},
3238 {41, "R_390_TLS_GD64"},
3239 {42, "R_390_TLS_GOTIE12"},
3240 {43, "R_390_TLS_GOTIE32"},
3241 {44, "R_390_TLS_GOTIE64"},
3242 {45, "R_390_TLS_LDM32"},
3243 {46, "R_390_TLS_LDM64"},
3244 {47, "R_390_TLS_IE32"},
3245 {48, "R_390_TLS_IE64"},
3246 {49, "R_390_TLS_IEENT"},
3247 {50, "R_390_TLS_LE32"},
3248 {51, "R_390_TLS_LE64"},
3249 {52, "R_390_TLS_LDO32"},
3250 {53, "R_390_TLS_LDO64"},
3251 {54, "R_390_TLS_DTPMOD"},
3252 {55, "R_390_TLS_DTPOFF"},
3253 {56, "R_390_TLS_TPOFF"},
3254 {57, "R_390_20"},
3255 {58, "R_390_GOT20"},
3256 {59, "R_390_GOTPLT20"},
3257 {60, "R_390_TLS_GOTIE20"},
3258 }
3259
3260 func (i R_390) String() string { return stringName(uint32(i), r390Strings, false) }
3261 func (i R_390) GoString() string { return stringName(uint32(i), r390Strings, true) }
3262
3263
3264 type R_SPARC int
3265
3266 const (
3267 R_SPARC_NONE R_SPARC = 0
3268 R_SPARC_8 R_SPARC = 1
3269 R_SPARC_16 R_SPARC = 2
3270 R_SPARC_32 R_SPARC = 3
3271 R_SPARC_DISP8 R_SPARC = 4
3272 R_SPARC_DISP16 R_SPARC = 5
3273 R_SPARC_DISP32 R_SPARC = 6
3274 R_SPARC_WDISP30 R_SPARC = 7
3275 R_SPARC_WDISP22 R_SPARC = 8
3276 R_SPARC_HI22 R_SPARC = 9
3277 R_SPARC_22 R_SPARC = 10
3278 R_SPARC_13 R_SPARC = 11
3279 R_SPARC_LO10 R_SPARC = 12
3280 R_SPARC_GOT10 R_SPARC = 13
3281 R_SPARC_GOT13 R_SPARC = 14
3282 R_SPARC_GOT22 R_SPARC = 15
3283 R_SPARC_PC10 R_SPARC = 16
3284 R_SPARC_PC22 R_SPARC = 17
3285 R_SPARC_WPLT30 R_SPARC = 18
3286 R_SPARC_COPY R_SPARC = 19
3287 R_SPARC_GLOB_DAT R_SPARC = 20
3288 R_SPARC_JMP_SLOT R_SPARC = 21
3289 R_SPARC_RELATIVE R_SPARC = 22
3290 R_SPARC_UA32 R_SPARC = 23
3291 R_SPARC_PLT32 R_SPARC = 24
3292 R_SPARC_HIPLT22 R_SPARC = 25
3293 R_SPARC_LOPLT10 R_SPARC = 26
3294 R_SPARC_PCPLT32 R_SPARC = 27
3295 R_SPARC_PCPLT22 R_SPARC = 28
3296 R_SPARC_PCPLT10 R_SPARC = 29
3297 R_SPARC_10 R_SPARC = 30
3298 R_SPARC_11 R_SPARC = 31
3299 R_SPARC_64 R_SPARC = 32
3300 R_SPARC_OLO10 R_SPARC = 33
3301 R_SPARC_HH22 R_SPARC = 34
3302 R_SPARC_HM10 R_SPARC = 35
3303 R_SPARC_LM22 R_SPARC = 36
3304 R_SPARC_PC_HH22 R_SPARC = 37
3305 R_SPARC_PC_HM10 R_SPARC = 38
3306 R_SPARC_PC_LM22 R_SPARC = 39
3307 R_SPARC_WDISP16 R_SPARC = 40
3308 R_SPARC_WDISP19 R_SPARC = 41
3309 R_SPARC_GLOB_JMP R_SPARC = 42
3310 R_SPARC_7 R_SPARC = 43
3311 R_SPARC_5 R_SPARC = 44
3312 R_SPARC_6 R_SPARC = 45
3313 R_SPARC_DISP64 R_SPARC = 46
3314 R_SPARC_PLT64 R_SPARC = 47
3315 R_SPARC_HIX22 R_SPARC = 48
3316 R_SPARC_LOX10 R_SPARC = 49
3317 R_SPARC_H44 R_SPARC = 50
3318 R_SPARC_M44 R_SPARC = 51
3319 R_SPARC_L44 R_SPARC = 52
3320 R_SPARC_REGISTER R_SPARC = 53
3321 R_SPARC_UA64 R_SPARC = 54
3322 R_SPARC_UA16 R_SPARC = 55
3323 )
3324
3325 var rsparcStrings = []intName{
3326 {0, "R_SPARC_NONE"},
3327 {1, "R_SPARC_8"},
3328 {2, "R_SPARC_16"},
3329 {3, "R_SPARC_32"},
3330 {4, "R_SPARC_DISP8"},
3331 {5, "R_SPARC_DISP16"},
3332 {6, "R_SPARC_DISP32"},
3333 {7, "R_SPARC_WDISP30"},
3334 {8, "R_SPARC_WDISP22"},
3335 {9, "R_SPARC_HI22"},
3336 {10, "R_SPARC_22"},
3337 {11, "R_SPARC_13"},
3338 {12, "R_SPARC_LO10"},
3339 {13, "R_SPARC_GOT10"},
3340 {14, "R_SPARC_GOT13"},
3341 {15, "R_SPARC_GOT22"},
3342 {16, "R_SPARC_PC10"},
3343 {17, "R_SPARC_PC22"},
3344 {18, "R_SPARC_WPLT30"},
3345 {19, "R_SPARC_COPY"},
3346 {20, "R_SPARC_GLOB_DAT"},
3347 {21, "R_SPARC_JMP_SLOT"},
3348 {22, "R_SPARC_RELATIVE"},
3349 {23, "R_SPARC_UA32"},
3350 {24, "R_SPARC_PLT32"},
3351 {25, "R_SPARC_HIPLT22"},
3352 {26, "R_SPARC_LOPLT10"},
3353 {27, "R_SPARC_PCPLT32"},
3354 {28, "R_SPARC_PCPLT22"},
3355 {29, "R_SPARC_PCPLT10"},
3356 {30, "R_SPARC_10"},
3357 {31, "R_SPARC_11"},
3358 {32, "R_SPARC_64"},
3359 {33, "R_SPARC_OLO10"},
3360 {34, "R_SPARC_HH22"},
3361 {35, "R_SPARC_HM10"},
3362 {36, "R_SPARC_LM22"},
3363 {37, "R_SPARC_PC_HH22"},
3364 {38, "R_SPARC_PC_HM10"},
3365 {39, "R_SPARC_PC_LM22"},
3366 {40, "R_SPARC_WDISP16"},
3367 {41, "R_SPARC_WDISP19"},
3368 {42, "R_SPARC_GLOB_JMP"},
3369 {43, "R_SPARC_7"},
3370 {44, "R_SPARC_5"},
3371 {45, "R_SPARC_6"},
3372 {46, "R_SPARC_DISP64"},
3373 {47, "R_SPARC_PLT64"},
3374 {48, "R_SPARC_HIX22"},
3375 {49, "R_SPARC_LOX10"},
3376 {50, "R_SPARC_H44"},
3377 {51, "R_SPARC_M44"},
3378 {52, "R_SPARC_L44"},
3379 {53, "R_SPARC_REGISTER"},
3380 {54, "R_SPARC_UA64"},
3381 {55, "R_SPARC_UA16"},
3382 }
3383
3384 func (i R_SPARC) String() string { return stringName(uint32(i), rsparcStrings, false) }
3385 func (i R_SPARC) GoString() string { return stringName(uint32(i), rsparcStrings, true) }
3386
3387
3388 const ARM_MAGIC_TRAMP_NUMBER = 0x5c000003
3389
3390
3391 type Header32 struct {
3392 Ident [EI_NIDENT]byte
3393 Type uint16
3394 Machine uint16
3395 Version uint32
3396 Entry uint32
3397 Phoff uint32
3398 Shoff uint32
3399 Flags uint32
3400 Ehsize uint16
3401 Phentsize uint16
3402 Phnum uint16
3403 Shentsize uint16
3404 Shnum uint16
3405 Shstrndx uint16
3406 }
3407
3408
3409 type Section32 struct {
3410 Name uint32
3411 Type uint32
3412 Flags uint32
3413 Addr uint32
3414 Off uint32
3415 Size uint32
3416 Link uint32
3417 Info uint32
3418 Addralign uint32
3419 Entsize uint32
3420 }
3421
3422
3423 type Prog32 struct {
3424 Type uint32
3425 Off uint32
3426 Vaddr uint32
3427 Paddr uint32
3428 Filesz uint32
3429 Memsz uint32
3430 Flags uint32
3431 Align uint32
3432 }
3433
3434
3435 type Dyn32 struct {
3436 Tag int32
3437 Val uint32
3438 }
3439
3440
3441 type Chdr32 struct {
3442 Type uint32
3443 Size uint32
3444 Addralign uint32
3445 }
3446
3447
3450
3451
3452 type Rel32 struct {
3453 Off uint32
3454 Info uint32
3455 }
3456
3457
3458 type Rela32 struct {
3459 Off uint32
3460 Info uint32
3461 Addend int32
3462 }
3463
3464 func R_SYM32(info uint32) uint32 { return info >> 8 }
3465 func R_TYPE32(info uint32) uint32 { return info & 0xff }
3466 func R_INFO32(sym, typ uint32) uint32 { return sym<<8 | typ }
3467
3468
3469 type Sym32 struct {
3470 Name uint32
3471 Value uint32
3472 Size uint32
3473 Info uint8
3474 Other uint8
3475 Shndx uint16
3476 }
3477
3478 const Sym32Size = 16
3479
3480 func ST_BIND(info uint8) SymBind { return SymBind(info >> 4) }
3481 func ST_TYPE(info uint8) SymType { return SymType(info & 0xF) }
3482 func ST_INFO(bind SymBind, typ SymType) uint8 {
3483 return uint8(bind)<<4 | uint8(typ)&0xf
3484 }
3485 func ST_VISIBILITY(other uint8) SymVis { return SymVis(other & 3) }
3486
3487
3490
3491
3492 type Header64 struct {
3493 Ident [EI_NIDENT]byte
3494 Type uint16
3495 Machine uint16
3496 Version uint32
3497 Entry uint64
3498 Phoff uint64
3499 Shoff uint64
3500 Flags uint32
3501 Ehsize uint16
3502 Phentsize uint16
3503 Phnum uint16
3504 Shentsize uint16
3505 Shnum uint16
3506 Shstrndx uint16
3507 }
3508
3509
3510 type Section64 struct {
3511 Name uint32
3512 Type uint32
3513 Flags uint64
3514 Addr uint64
3515 Off uint64
3516 Size uint64
3517 Link uint32
3518 Info uint32
3519 Addralign uint64
3520 Entsize uint64
3521 }
3522
3523
3524 type Prog64 struct {
3525 Type uint32
3526 Flags uint32
3527 Off uint64
3528 Vaddr uint64
3529 Paddr uint64
3530 Filesz uint64
3531 Memsz uint64
3532 Align uint64
3533 }
3534
3535
3536 type Dyn64 struct {
3537 Tag int64
3538 Val uint64
3539 }
3540
3541
3542 type Chdr64 struct {
3543 Type uint32
3544 _ uint32
3545 Size uint64
3546 Addralign uint64
3547 }
3548
3549
3552
3553
3554 type Rel64 struct {
3555 Off uint64
3556 Info uint64
3557 }
3558
3559
3560 type Rela64 struct {
3561 Off uint64
3562 Info uint64
3563 Addend int64
3564 }
3565
3566 func R_SYM64(info uint64) uint32 { return uint32(info >> 32) }
3567 func R_TYPE64(info uint64) uint32 { return uint32(info) }
3568 func R_INFO(sym, typ uint32) uint64 { return uint64(sym)<<32 | uint64(typ) }
3569
3570
3571 type Sym64 struct {
3572 Name uint32
3573 Info uint8
3574 Other uint8
3575 Shndx uint16
3576 Value uint64
3577 Size uint64
3578 }
3579
3580 const Sym64Size = 24
3581
3582 type intName struct {
3583 i uint32
3584 s string
3585 }
3586
3587
3588 type DynamicVersionFlag uint16
3589
3590 const (
3591 VER_FLG_BASE DynamicVersionFlag = 0x1
3592 VER_FLG_WEAK DynamicVersionFlag = 0x2
3593 VER_FLG_INFO DynamicVersionFlag = 0x4
3594 )
3595
3596 func stringName(i uint32, names []intName, goSyntax bool) string {
3597 for _, n := range names {
3598 if n.i == i {
3599 if goSyntax {
3600 return "elf." + n.s
3601 }
3602 return n.s
3603 }
3604 }
3605
3606
3607
3608 for j := len(names) - 1; j >= 0; j-- {
3609 n := names[j]
3610 if n.i < i {
3611 s := n.s
3612 if goSyntax {
3613 s = "elf." + s
3614 }
3615 return s + "+" + strconv.FormatUint(uint64(i-n.i), 10)
3616 }
3617 }
3618
3619 return strconv.FormatUint(uint64(i), 10)
3620 }
3621
3622 func flagName(i uint32, names []intName, goSyntax bool) string {
3623 s := ""
3624 for _, n := range names {
3625 if n.i&i == n.i {
3626 if len(s) > 0 {
3627 s += "+"
3628 }
3629 if goSyntax {
3630 s += "elf."
3631 }
3632 s += n.s
3633 i -= n.i
3634 }
3635 }
3636 if len(s) == 0 {
3637 return "0x" + strconv.FormatUint(uint64(i), 16)
3638 }
3639 if i != 0 {
3640 s += "+0x" + strconv.FormatUint(uint64(i), 16)
3641 }
3642 return s
3643 }
3644
View as plain text