1 /* Copyright (c) 2019, David Anderson
2 All rights reserved.
3 
4 Redistribution and use in source and binary forms, with
5 or without modification, are permitted provided that the
6 following conditions are met:
7 
8     Redistributions of source code must retain the above
9     copyright notice, this list of conditions and the following
10     disclaimer.
11 
12     Redistributions in binary form must reproduce the above
13     copyright notice, this list of conditions and the following
14     disclaimer in the documentation and/or other materials
15     provided with the distribution.
16 
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
18 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
19 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
29 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 */
32 #ifndef DWARF_ELF_DEFINES_H
33 #define DWARF_ELF_DEFINES_H
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif /* __cplusplus */
38 
39 /*  Use the system headers if they are available. */
40 #ifdef HAVE_ELF_H
41 #include <elf.h>
42 #endif /* HAVE_ELF_H */
43 
44 /*  Relocation definitions are in sys/elf_{mach}.h on Solaris.  */
45 #ifdef HAVE_LIBELF_H
46 #include <libelf.h>
47 #else
48 #ifdef HAVE_LIBELF_LIBELF_H
49 #include <libelf/libelf.h>
50 #endif /* HAVE_LIBELF_LIBELF_H */
51 #endif /* HAVE_LIBELF_H */
52 
53 /* Standard Elf section types. */
54 #ifndef SHT_NULL
55 #define SHT_NULL 0
56 #endif
57 #ifndef SHT_PROGBITS
58 #define SHT_PROGBITS 1
59 #endif
60 #ifndef SHT_SYMTAB
61 #define SHT_SYMTAB 2
62 #endif
63 #ifndef SHT_STRTAB
64 #define SHT_STRTAB 3
65 #endif
66 #ifndef SHT_RELA
67 #define SHT_RELA 4
68 #endif
69 #ifndef SHT_REL
70 #define SHT_REL 9
71 #endif
72 
73 #ifndef DW_GROUPNUMBER_BASE
74 #define DW_GROUPNUMBER_BASE 1
75 #endif
76 #ifndef DW_GROUPNUMBER_DWO
77 #define DW_GROUPNUMBER_DWO  2
78 #endif
79 
80 #ifndef SHF_GROUP
81 #define SHF_GROUP  (1 << 9)
82 #endif /* SHF_GROUP */
83 
84 #ifndef STN_UNDEF
85 #define STN_UNDEF  0
86 #endif /* STN_UNDEF */
87 
88 #ifndef SHT_HASH
89 #define SHT_HASH 5
90 #endif
91 #ifndef SHT_DYNAMIC
92 #define SHT_DYNAMIC 6
93 #endif
94 #ifndef SHT_NOTE
95 #define SHT_NOTE 7
96 #endif
97 #ifndef SHT_NOBITS
98 #define SHT_NOBITS 8
99 #endif
100 #ifndef SHT_REL
101 #define SHT_REL  9
102 #endif
103 #ifndef SHT_SHLIB
104 #define SHT_SHLIB 10
105 #endif
106 #ifndef SHT_DYNSYM
107 #define SHT_DYNSYM 11
108 #endif
109 #ifndef SHT_GROUP
110 #define SHT_GROUP  17
111 #endif /* SHT_GROUP */
112 
113 /* Symbol Types, Elf standard. */
114 #define STT_NOTYPE  0
115 #define STT_OBJECT  1
116 #define STT_FUNC    2
117 #define STT_SECTION 3
118 #define STT_FILE    4
119 
120 #ifndef PT_NULL
121 #define PT_NULL 0
122 #endif
123 #ifndef PT_LOAD
124 #define PT_LOAD 1
125 #endif
126 #ifndef PT_DYNAMIC
127 #define PT_DYNAMIC 2
128 #endif
129 #ifndef PT_INTERP
130 #define PT_INTERP 3
131 #endif
132 #ifndef PT_NOTE
133 #define PT_NOTE 4
134 #endif
135 #ifndef PT_SHLIB
136 #define PT_SHLIB 5
137 #endif
138 #ifndef PT_PHDR
139 #define PT_PHDR 6
140 #endif
141 #ifndef PT_LOPROC
142 #define PT_LOPROC 0x70000000
143 #endif
144 #ifndef PT_HIPROC
145 #define PT_HIPROC 0x7fffffff
146 #endif
147 
148 #ifndef PF_X
149 #define PF_X            (1 << 0)
150 #endif
151 #ifndef PF_W
152 #define PF_W            (1 << 1)
153 #endif
154 #ifndef PF_R
155 #define PF_R            (1 << 2)
156 #endif
157 #ifndef PF_MASKOS
158 #define PF_MASKOS       0x0ff00000
159 #endif
160 #ifndef PF_MASKPROC
161 #define PF_MASKPROC     0xf0000000
162 #endif
163 
164 
165 #ifndef ET_NONE
166 #define ET_NONE          0
167 #endif
168 #ifndef ET_REL
169 #define ET_REL           1
170 #endif
171 #ifndef ET_EXEC
172 #define ET_EXEC          2
173 #endif
174 #ifndef ET_DYN
175 #define ET_DYN           3
176 #endif
177 #ifndef ET_CORE
178 #define ET_CORE          4
179 #endif
180 #ifndef ET_NUM
181 #define ET_NUM           5
182 #endif
183 #ifndef ET_LOOS
184 #define ET_LOOS          0xfe00
185 #endif
186 #ifndef ET_HIOS
187 #define ET_HIOS          0xfeff
188 #endif
189 #ifndef ET_LOPROC
190 #define ET_LOPROC        0xff00
191 #endif
192 #ifndef ET_HIPROC
193 #define ET_HIPROC        0xffff
194 #endif
195 
196 
197 #ifndef EM_NONE
198 #define EM_NONE          0
199 #endif
200 #ifndef EM_M32
201 #define EM_M32           1
202 #endif
203 #ifndef EM_SPARC
204 #define EM_SPARC         2
205 #endif
206 #ifndef EM_386
207 #define EM_386           3
208 #endif
209 #ifndef EM_68K
210 #define EM_68K           4
211 #endif
212 #ifndef EM_88K
213 #define EM_88K           5
214 #endif
215 #ifndef EM_IAMCU
216 #define EM_IAMCU         6
217 #endif
218 #ifndef EM_860
219 #define EM_860           7
220 #endif
221 #ifndef EM_MIPS
222 #define EM_MIPS          8
223 #endif
224 #ifndef EM_S370
225 #define EM_S370          9
226 #endif
227 #ifndef EM_MIPS_RS3_LE
228 #define EM_MIPS_RS3_LE   10
229 #endif
230 #ifndef EM_PARISC
231 #define EM_PARISC        15
232 #endif
233 #ifndef EM_VPP500
234 #define EM_VPP500        17
235 #endif
236 #ifndef EM_SPARC32PLUS
237 #define EM_SPARC32PLUS   18
238 #endif
239 #ifndef EM_960
240 #define EM_960           19
241 #endif
242 #ifndef EM_PPC
243 #define EM_PPC           20
244 #endif
245 #ifndef EM_PPC64
246 #define EM_PPC64         21
247 #endif
248 #ifndef EM_S390
249 #define EM_S390          22
250 #endif
251 #ifndef EM_SPU
252 #define EM_SPU           23
253 #endif
254 #ifndef EM_V800
255 #define EM_V800          36
256 #endif
257 #ifndef EM_FR20
258 #define EM_FR20          37
259 #endif
260 #ifndef EM_RH32
261 #define EM_RH32          38
262 #endif
263 #ifndef EM_RCE
264 #define EM_RCE           39
265 #endif
266 #ifndef EM_ARM
267 #define EM_ARM           40
268 #endif
269 #ifndef EM_FAKE_ALPHA
270 #define EM_FAKE_ALPHA    41
271 #endif
272 #ifndef EM_SH
273 #define EM_SH            42
274 #endif
275 #ifndef EM_SPARCV9
276 #define EM_SPARCV9       43
277 #endif
278 #ifndef EM_TRICORE
279 #define EM_TRICORE       44
280 #endif
281 #ifndef EM_ARC
282 #define EM_ARC           45
283 #endif
284 #ifndef EM_H8_300
285 #define EM_H8_300        46
286 #endif
287 #ifndef EM_H8_300H
288 #define EM_H8_300H       47
289 #endif
290 #ifndef EM_H8S
291 #define EM_H8S           48
292 #endif
293 #ifndef EM_H8_500
294 #define EM_H8_500        49
295 #endif
296 #ifndef EM_IA_64
297 #define EM_IA_64         50
298 #endif
299 #ifndef EM_MIPS_X
300 #define EM_MIPS_X        51
301 #endif
302 #ifndef EM_COLDFIRE
303 #define EM_COLDFIRE      52
304 #endif
305 #ifndef EM_68HC12
306 #define EM_68HC12        53
307 #endif
308 #ifndef EM_MMA
309 #define EM_MMA           54
310 #endif
311 #ifndef EM_PCP
312 #define EM_PCP           55
313 #endif
314 #ifndef EM_NCPU
315 #define EM_NCPU          56
316 #endif
317 #ifndef EM_NDR1
318 #define EM_NDR1          57
319 #endif
320 #ifndef EM_STARCORE
321 #define EM_STARCORE      58
322 #endif
323 #ifndef EM_ME16
324 #define EM_ME16          59
325 #endif
326 #ifndef EM_ST100
327 #define EM_ST100         60
328 #endif
329 #ifndef EM_TINYJ
330 #define EM_TINYJ         61
331 #endif
332 #ifndef EM_X86_64
333 #define EM_X86_64        62
334 #endif
335 #ifndef EM_PDSP
336 #define EM_PDSP          63
337 #endif
338 #ifndef EM_PDP10
339 #define EM_PDP10         64
340 #endif
341 #ifndef EM_PDP11
342 #define EM_PDP11         65
343 #endif
344 #ifndef EM_FX66
345 #define EM_FX66          66
346 #endif
347 #ifndef EM_ST9PLUS
348 #define EM_ST9PLUS       67
349 #endif
350 #ifndef EM_ST7
351 #define EM_ST7           68
352 #endif
353 #ifndef EM_68HC16
354 #define EM_68HC16        69
355 #endif
356 #ifndef EM_68HC11
357 #define EM_68HC11        70
358 #endif
359 #ifndef EM_68HC08
360 #define EM_68HC08        71
361 #endif
362 #ifndef EM_68HC05
363 #define EM_68HC05        72
364 #endif
365 #ifndef EM_SVX
366 #define EM_SVX           73
367 #endif
368 #ifndef EM_ST19
369 #define EM_ST19          74
370 #endif
371 #ifndef EM_VAX
372 #define EM_VAX           75
373 #endif
374 #ifndef EM_CRIS
375 #define EM_CRIS          76
376 #endif
377 #ifndef EM_JAVELIN
378 #define EM_JAVELIN       77
379 #endif
380 #ifndef EM_FIREPATH
381 #define EM_FIREPATH      78
382 #endif
383 #ifndef EM_ZSP
384 #define EM_ZSP           79
385 #endif
386 #ifndef EM_MMIX
387 #define EM_MMIX          80
388 #endif
389 #ifndef EM_HUANY
390 #define EM_HUANY         81
391 #endif
392 #ifndef EM_PRISM
393 #define EM_PRISM         82
394 #endif
395 #ifndef EM_AVR
396 #define EM_AVR           83
397 #endif
398 #ifndef EM_FR30
399 #define EM_FR30          84
400 #endif
401 #ifndef EM_D10V
402 #define EM_D10V          85
403 #endif
404 #ifndef EM_D30V
405 #define EM_D30V          86
406 #endif
407 #ifndef EM_V850
408 #define EM_V850          87
409 #endif
410 #ifndef EM_M32R
411 #define EM_M32R          88
412 #endif
413 #ifndef EM_MN10300
414 #define EM_MN10300       89
415 #endif
416 #ifndef EM_MN10200
417 #define EM_MN10200       90
418 #endif
419 #ifndef EM_PJ
420 #define EM_PJ            91
421 #endif
422 #ifndef EM_OPENRISC
423 #define EM_OPENRISC      92
424 #endif
425 #ifndef EM_ARC_COMPACT
426 #define EM_ARC_COMPACT   93
427 #endif
428 #ifndef EM_XTENSA
429 #define EM_XTENSA        94
430 #endif
431 #ifndef EM_VIDEOCORE
432 #define EM_VIDEOCORE     95
433 #endif
434 #ifndef EM_TMM_GPP
435 #define EM_TMM_GPP       96
436 #endif
437 #ifndef EM_NS32K
438 #define EM_NS32K         97
439 #endif
440 #ifndef EM_TPC
441 #define EM_TPC           98
442 #endif
443 #ifndef EM_SNP1K
444 #define EM_SNP1K         99
445 #endif
446 #ifndef EM_ST200
447 #define EM_ST200         100
448 #endif
449 #ifndef EM_IP2K
450 #define EM_IP2K          101
451 #endif
452 #ifndef EM_MAX
453 #define EM_MAX           102
454 #endif
455 #ifndef EM_CR
456 #define EM_CR            103
457 #endif
458 #ifndef EM_F2MC16
459 #define EM_F2MC16        104
460 #endif
461 #ifndef EM_MSP430
462 #define EM_MSP430        105
463 #endif
464 #ifndef EM_BLACKFIN
465 #define EM_BLACKFIN      106
466 #endif
467 #ifndef EM_SE_C33
468 #define EM_SE_C33        107
469 #endif
470 #ifndef EM_SEP
471 #define EM_SEP           108
472 #endif
473 #ifndef EM_ARCA
474 #define EM_ARCA          109
475 #endif
476 #ifndef EM_UNICORE
477 #define EM_UNICORE       110
478 #endif
479 #ifndef EM_EXCESS
480 #define EM_EXCESS        111
481 #endif
482 #ifndef EM_DXP
483 #define EM_DXP           112
484 #endif
485 #ifndef EM_ALTERA_NIOS2
486 #define EM_ALTERA_NIOS2  113
487 #endif
488 #ifndef EM_CRX
489 #define EM_CRX           114
490 #endif
491 #ifndef EM_XGATE
492 #define EM_XGATE         115
493 #endif
494 #ifndef EM_C166
495 #define EM_C166          116
496 #endif
497 #ifndef EM_M16C
498 #define EM_M16C          117
499 #endif
500 #ifndef EM_DSPIC30F
501 #define EM_DSPIC30F      118
502 #endif
503 #ifndef EM_CE
504 #define EM_CE            119
505 #endif
506 #ifndef EM_M32C
507 #define EM_M32C          120
508 #endif
509 #ifndef EM_TSK3000
510 #define EM_TSK3000       131
511 #endif
512 #ifndef EM_RS08
513 #define EM_RS08          132
514 #endif
515 #ifndef EM_SHARC
516 #define EM_SHARC         133
517 #endif
518 #ifndef EM_ECOG2
519 #define EM_ECOG2         134
520 #endif
521 #ifndef EM_SCORE7
522 #define EM_SCORE7        135
523 #endif
524 #ifndef EM_DSP24
525 #define EM_DSP24         136
526 #endif
527 #ifndef EM_VIDEOCORE3
528 #define EM_VIDEOCORE3    137
529 #endif
530 #ifndef EM_LATTICEMICO32
531 #define EM_LATTICEMICO32 138
532 #endif
533 #ifndef EM_SE_C17
534 #define EM_SE_C17        139
535 #endif
536 #ifndef EM_TI_C6000
537 #define EM_TI_C6000      140
538 #endif
539 #ifndef EM_TI_C2000
540 #define EM_TI_C2000      141
541 #endif
542 #ifndef EM_TI_C5500
543 #define EM_TI_C5500      142
544 #endif
545 #ifndef EM_TI_ARP32
546 #define EM_TI_ARP32      143
547 #endif
548 #ifndef EM_TI_PRU
549 #define EM_TI_PRU        144
550 #endif
551 #ifndef EM_MMDSP_PLUS
552 #define EM_MMDSP_PLUS    160
553 #endif
554 #ifndef EM_CYPRESS_M8C
555 #define EM_CYPRESS_M8C   161
556 #endif
557 #ifndef EM_R32C
558 #define EM_R32C          162
559 #endif
560 #ifndef EM_TRIMEDIA
561 #define EM_TRIMEDIA      163
562 #endif
563 #ifndef EM_QDSP6
564 #define EM_QDSP6         164
565 #endif
566 #ifndef EM_QUALCOMM_DSP6
567 #define EM_QUALCOMM_DSP6 164
568 #endif
569 #ifndef EM_8051
570 #define EM_8051          165
571 #endif
572 #ifndef EM_STXP7X
573 #define EM_STXP7X        166
574 #endif
575 #ifndef EM_NDS32
576 #define EM_NDS32         167
577 #endif
578 #ifndef EM_ECOG1X
579 #define EM_ECOG1X        168
580 #endif
581 #ifndef EM_MAXQ30
582 #define EM_MAXQ30        169
583 #endif
584 #ifndef EM_XIMO16
585 #define EM_XIMO16        170
586 #endif
587 #ifndef EM_MANIK
588 #define EM_MANIK         171
589 #endif
590 #ifndef EM_CRAYNV2
591 #define EM_CRAYNV2       172
592 #endif
593 #ifndef EM_RX
594 #define EM_RX            173
595 #endif
596 #ifndef EM_METAG
597 #define EM_METAG         174
598 #endif
599 #ifndef EM_MCST_ELBRUS
600 #define EM_MCST_ELBRUS   175
601 #endif
602 #ifndef EM_ECOG16
603 #define EM_ECOG16        176
604 #endif
605 #ifndef EM_CR16
606 #define EM_CR16          177
607 #endif
608 #ifndef EM_ETPU
609 #define EM_ETPU          178
610 #endif
611 #ifndef EM_SLE9X
612 #define EM_SLE9X         179
613 #endif
614 #ifndef EM_L10M
615 #define EM_L10M          180
616 #endif
617 #ifndef EM_K10M
618 #define EM_K10M          181
619 #endif
620 #ifndef EM_AARCH64
621 #define EM_AARCH64       183
622 #endif
623 #ifndef EM_AVR32
624 #define EM_AVR32         185
625 #endif
626 #ifndef EM_STM8
627 #define EM_STM8          186
628 #endif
629 #ifndef EM_TILE64
630 #define EM_TILE64        187
631 #endif
632 #ifndef EM_TILEPRO
633 #define EM_TILEPRO       188
634 #endif
635 #ifndef EM_MICROBLAZE
636 #define EM_MICROBLAZE    189
637 #endif
638 #ifndef EM_CUDA
639 #define EM_CUDA          190
640 #endif
641 #ifndef EM_TILEGX
642 #define EM_TILEGX        191
643 #endif
644 #ifndef EM_CLOUDSHIELD
645 #define EM_CLOUDSHIELD   192
646 #endif
647 #ifndef EM_COREA_1ST
648 #define EM_COREA_1ST     193
649 #endif
650 #ifndef EM_COREA_2ND
651 #define EM_COREA_2ND     194
652 #endif
653 #ifndef EM_ARC_COMPACT2
654 #define EM_ARC_COMPACT2  195
655 #endif
656 #ifndef EM_OPEN8
657 #define EM_OPEN8         196
658 #endif
659 #ifndef EM_RL78
660 #define EM_RL78          197
661 #endif
662 #ifndef EM_VIDEOCORE5
663 #define EM_VIDEOCORE5    198
664 #endif
665 #ifndef EM_78KOR
666 #define EM_78KOR         199
667 #endif
668 #ifndef EM_56800EX
669 #define EM_56800EX       200
670 #endif
671 #ifndef EM_BA1
672 #define EM_BA1           201
673 #endif
674 #ifndef EM_BA2
675 #define EM_BA2           202
676 #endif
677 #ifndef EM_XCORE
678 #define EM_XCORE         203
679 #endif
680 #ifndef EM_MCHP_PIC
681 #define EM_MCHP_PIC      204
682 #endif
683 #ifndef EM_KM32
684 #define EM_KM32          210
685 #endif
686 #ifndef EM_KMX32
687 #define EM_KMX32         211
688 #endif
689 #ifndef EM_EMX16
690 #define EM_EMX16         212
691 #endif
692 #ifndef EM_EMX8
693 #define EM_EMX8          213
694 #endif
695 #ifndef EM_KVARC
696 #define EM_KVARC         214
697 #endif
698 #ifndef EM_CDP
699 #define EM_CDP           215
700 #endif
701 #ifndef EM_COGE
702 #define EM_COGE          216
703 #endif
704 #ifndef EM_COOL
705 #define EM_COOL          217
706 #endif
707 #ifndef EM_NORC
708 #define EM_NORC          218
709 #endif
710 #ifndef EM_CSR_KALIMBA
711 #define EM_CSR_KALIMBA   219
712 #endif
713 #ifndef EM_Z80
714 #define EM_Z80           220
715 #endif
716 #ifndef EM_VISIUM
717 #define EM_VISIUM        221
718 #endif
719 #ifndef EM_FT32
720 #define EM_FT32          222
721 #endif
722 #ifndef EM_MOXIE
723 #define EM_MOXIE         223
724 #endif
725 #ifndef EM_AMDGPU
726 #define EM_AMDGPU        224
727 #endif
728 #ifndef EM_RISCV
729 #define EM_RISCV         243
730 #endif
731 #ifndef EM_BPF
732 #define EM_BPF           247
733 #endif
734 
735 /* Standard Elf dynamic tags. */
736 #ifndef DT_NULL
737 #define DT_NULL 0
738 #endif
739 #ifndef DT_NEEDED
740 #define DT_NEEDED 1
741 #endif
742 #ifndef DT_PLTRELSZ
743 #define DT_PLTRELSZ 2
744 #endif
745 #ifndef DT_PLTGOT
746 #define DT_PLTGOT 3
747 #endif
748 #ifndef DT_HASH
749 #define DT_HASH 4
750 #endif
751 #ifndef DT_STRTAB
752 #define DT_STRTAB 5
753 #endif
754 #ifndef DT_SYMTAB
755 #define DT_SYMTAB 6
756 #endif
757 #ifndef DT_RELA
758 #define DT_RELA 7
759 #endif
760 #ifndef DT_REL
761 #define DT_REL 17
762 #endif
763 #ifndef DT_RELASZ
764 #define DT_RELASZ 8
765 #endif
766 #ifndef DT_RELAENT
767 #define DT_RELAENT 9
768 #endif
769 #ifndef DT_STRSZ
770 #define DT_STRSZ  10
771 #endif
772 
773 #ifndef DT_SYMENT
774 #define DT_SYMENT 11
775 #endif
776 
777 #ifndef DT_INIT
778 #define DT_INIT 12
779 #endif
780 
781 #ifndef DT_FINI
782 #define DT_FINI 13
783 #endif
784 
785 #ifndef DT_SONAME
786 #define DT_SONAME 14
787 #endif
788 
789 #ifndef DT_RPATH
790 #define DT_RPATH 15
791 #endif
792 
793 #ifndef DT_SYMBOLIC
794 #define DT_SYMBOLIC 16
795 #endif
796 
797 #ifndef DT_REL
798 #define DT_REL 17
799 #endif
800 #ifndef DT_RELSZ
801 #define DT_RELSZ 18
802 #endif
803 
804 #ifndef DT_RELENT
805 #define DT_RELENT 19
806 #endif
807 
808 #ifndef DT_PLTREL
809 #define DT_PLTREL 20
810 #endif
811 
812 #ifndef DT_DEBUG
813 #define DT_DEBUG 21
814 #endif
815 
816 #ifndef DT_TEXTREL
817 #define DT_TEXTREL 22
818 #endif
819 
820 #ifndef DT_JMPREL
821 #define DT_JMPREL 23
822 #endif
823 
824 #ifndef SHN_UNDEF
825 #define SHN_UNDEF 0
826 #endif
827 #ifndef SHN_LORESERVE
828 #define SHN_LORESERVE 0xff00
829 #endif
830 #ifndef SHN_LOPROC
831 #define SHN_LOPROC 0xff00
832 #endif
833 #ifndef SHN_HIPROC
834 #define SHN_HIPROC 0xff1f
835 #endif
836 #ifndef SHN_ABS
837 #define SHN_ABS 0xfff1
838 #endif
839 #ifndef SHN_COMMON
840 #define SHN_COMMON 0xfff2
841 #endif
842 #ifndef SHN_HIRESERVE
843 #define SHN_HIRESERVE 0xffff
844 #endif
845 
846 #ifndef EV_CURRENT
847 #define EV_CURRENT       1
848 #endif
849 #ifndef EV_NONE
850 #define EV_NONE          0
851 #endif
852 
853 #ifndef EI_MAG0
854 #define EI_MAG0          0
855 #endif
856 #ifndef EI_MAG1
857 #define EI_MAG1          1
858 #endif
859 #ifndef EI_MAG2
860 #define EI_MAG2          2
861 #endif
862 #ifndef EI_MAG3
863 #define EI_MAG3          3
864 #endif
865 #ifndef EI_CLASS
866 #define EI_CLASS         4
867 #endif
868 #ifndef EI_DATA
869 #define EI_DATA          5
870 #endif
871 #ifndef EI_VERSION
872 #define EI_VERSION       6
873 #endif
874 #ifndef EI_PAD
875 #define EI_PAD           7
876 #endif
877 #ifndef EI_OSABI
878 #define EI_OSABI         7
879 #endif
880 #ifndef EI_NIDENT
881 #define EI_NIDENT        16
882 #endif
883 #ifndef EI_ABIVERSION
884 #define EI_ABIVERSION       8
885 #endif
886 
887 #ifndef ELFMAG0
888 #define ELFMAG0          0x7f
889 #endif
890 #ifndef ELFMAG1
891 #define ELFMAG1          'E'
892 #endif
893 #ifndef ELFMAG2
894 #define ELFMAG2          'L'
895 #endif
896 #ifndef ELFMAG3
897 #define ELFMAG3          'F'
898 #endif
899 #ifndef ELFCLASSNONE
900 #define ELFCLASSNONE     0
901 #endif
902 #ifndef ELFCLASS32
903 #define ELFCLASS32       1
904 #endif
905 #ifndef ELFCLASS64
906 #define ELFCLASS64       2
907 #endif
908 #ifndef ELFDATANONE
909 #define ELFDATANONE      0
910 #endif
911 #ifndef ELFDATA2LSB
912 #define ELFDATA2LSB      1
913 #endif
914 #ifndef ELFDATA2MSB
915 #define ELFDATA2MSB      2
916 #endif
917 
918 #ifndef ELFOSABI_NONE
919 #define ELFOSABI_NONE       0
920 #endif
921 #ifndef ELFOSABI_SYSV
922 #define ELFOSABI_SYSV       0
923 #endif
924 #ifndef ELFOSABI_HPUX
925 #define ELFOSABI_HPUX       1
926 #endif
927 #ifndef ELFOSABI_NETBSD
928 #define ELFOSABI_NETBSD     2
929 #endif
930 #ifndef ELFOSABI_GNU
931 #define ELFOSABI_GNU        3
932 #endif
933 #ifndef ELFOSABI_LINUX
934 #define ELFOSABI_LINUX      ELFOSABI_GNU
935 #endif
936 #ifndef ELFOSABI_SOLARIS
937 #define ELFOSABI_SOLARIS    6
938 #endif
939 #ifndef ELFOSABI_AIX
940 #define ELFOSABI_AIX        7
941 #endif
942 #ifndef ELFOSABI_IRIX
943 #define ELFOSABI_IRIX       8
944 #endif
945 #ifndef ELFOSABI_FREEBSD
946 #define ELFOSABI_FREEBSD    9
947 #endif
948 #ifndef ELFOSABI_TRU64
949 #define ELFOSABI_TRU64      10
950 #endif
951 #ifndef ELFOSABI_MODESTO
952 #define ELFOSABI_MODESTO    11
953 #endif
954 #ifndef ELFOSABI_OPENBSD
955 #define ELFOSABI_OPENBSD    12
956 #endif
957 #ifndef ELFOSABI_ARM_AEABI
958 #define ELFOSABI_ARM_AEABI  64
959 #endif
960 #ifndef ELFOSABI_ARM
961 #define ELFOSABI_ARM        97
962 #endif
963 #ifndef ELFOSABI_STANDALONE
964 #define ELFOSABI_STANDALONE 255
965 #endif
966 
967 
968 /* for the producer code. */
969 #ifndef R_MIPS_NONE
970 #define R_MIPS_NONE 0
971 #endif
972 #ifndef R_QUALCOMM_REL32
973 #define R_QUALCOMM_REL32   6
974 #endif
975 /*  For Freebsd: */
976 #ifndef R_PPC64_ADDR32
977 #define R_PPC64_ADDR32     1
978 #endif
979 #ifndef R_PPC64_DTPREL32
980 #define R_PPC64_DTPREL32 110
981 #endif
982 #ifndef R_PPC64_DTPREL64
983 #define R_PPC64_DTPREL64 78
984 #endif
985 #ifndef R_PPC_DTPREL32
986 #define R_PPC_DTPREL32   78
987 #endif
988 /* The following two probably useless. */
989 #ifndef R_X86_64_PC32_BND
990 #define R_X86_64_PC32_BND 39
991 #endif
992 #ifndef R_X86_64_PLT32_BND
993 #define R_X86_64_PLT32_BND  40
994 #endif
995 
996 #ifndef R_386_32
997 #define R_386_32                               1
998 #endif /* R_386_32 */
999 #ifndef R_386_PC32
1000 #define R_386_PC32                             2
1001 #endif /* R_386_PC32 */
1002 #ifndef R_386_TLS_DTPOFF32
1003 #define R_386_TLS_DTPOFF32                     36
1004 #endif /* R_386_TLS_DTPOFF32 */
1005 #ifndef R_386_TLS_LDO_32
1006 #define R_386_TLS_LDO_32                       32
1007 #endif /* R_386_TLS_LDO_32 */
1008 #ifndef R_390_32
1009 #define R_390_32                               4
1010 #endif /* R_390_32 */
1011 #ifndef R_390_64
1012 #define R_390_64                               22
1013 #endif /* R_390_64 */
1014 #ifndef R_390_TLS_LDO32
1015 #define R_390_TLS_LDO32                        52
1016 #endif /* R_390_TLS_LDO32 */
1017 #ifndef R_390_TLS_LDO64
1018 #define R_390_TLS_LDO64                        53
1019 #endif /* R_390_TLS_LDO64 */
1020 #ifndef R_AARCH64_ABS32
1021 #define R_AARCH64_ABS32                        258
1022 #endif /* R_AARCH64_ABS32 */
1023 #ifndef R_AARCH64_ABS64
1024 #define R_AARCH64_ABS64                        257
1025 #endif /* R_AARCH64_ABS64 */
1026 #ifndef R_ARM_ABS32
1027 #define R_ARM_ABS32                            2
1028 #endif /* R_ARM_ABS32 */
1029 #ifndef R_ARM_TLS_LDO32
1030 #define R_ARM_TLS_LDO32                        106
1031 #endif /* R_ARM_TLS_LDO32 */
1032 #ifndef R_IA64_DIR32LSB
1033 #define R_IA64_DIR32LSB                        0x25
1034 #endif /* R_IA64_DIR32LSB */
1035 #ifndef R_IA64_DIR64LSB
1036 #define R_IA64_DIR64LSB                        0x27
1037 #endif /* R_IA64_DIR64LSB */
1038 #ifndef R_IA64_DTPREL32LSB
1039 #define R_IA64_DTPREL32LSB                     0xb5
1040 #endif /* R_IA64_DTPREL32LSB */
1041 #ifndef R_IA64_DTPREL64LSB
1042 #define R_IA64_DTPREL64LSB                     0xb7
1043 #endif /* R_IA64_DTPREL64LSB */
1044 #ifndef R_IA64_REL32LSB
1045 #define R_IA64_REL32LSB                        0x6d
1046 #endif /* R_IA64_REL32LSB */
1047 #ifndef R_IA64_SECREL32LSB
1048 #define R_IA64_SECREL32LSB                     0x65
1049 #endif /* R_IA64_SECREL32LSB */
1050 #ifndef R_IA64_SECREL64LSB
1051 #define R_IA64_SECREL64LSB                     0x67
1052 #endif /* R_IA64_SECREL64LSB */
1053 #ifndef R_MIPS_32
1054 #define R_MIPS_32                              2
1055 #endif /* R_MIPS_32 */
1056 #ifndef R_MIPS_64
1057 #define R_MIPS_64                              18
1058 #endif /* R_MIPS_64 */
1059 #ifndef R_MIPS_TLS_DTPREL32
1060 #define R_MIPS_TLS_DTPREL32                    39
1061 #endif /* R_MIPS_TLS_DTPREL32 */
1062 #ifndef R_MIPS_TLS_DTPREL64
1063 #define R_MIPS_TLS_DTPREL64                    41
1064 #endif /* R_MIPS_TLS_DTPREL64 */
1065 #ifndef R_PPC64_ADDR64
1066 #define R_PPC64_ADDR64                         38
1067 #endif /* R_PPC64_ADDR64 */
1068 #ifndef R_PPC64_DTPREL32
1069 #define R_PPC64_DTPREL32                       110
1070 #endif /* R_PPC64_DTPREL32 */
1071 #ifndef R_PPC64_DTPREL64
1072 #define R_PPC64_DTPREL64                       78
1073 #endif /* R_PPC64_DTPREL64 */
1074 #ifndef R_PPC_ADDR32
1075 #define R_PPC_ADDR32                           1
1076 #endif /* R_PPC_ADDR32 */
1077 #ifndef R_PPC_DTPREL32
1078 #define R_PPC_DTPREL32                         78
1079 #endif /* R_PPC_DTPREL32 */
1080 #ifndef R_QUALCOMM_REL32
1081 #define R_QUALCOMM_REL32                       6
1082 #endif /* R_QUALCOMM_REL32 */
1083 #ifndef R_SH_DIR32
1084 #define R_SH_DIR32                             1
1085 #endif /* R_SH_DIR32 */
1086 #ifndef R_SH_TLS_DTPOFF32
1087 #define R_SH_TLS_DTPOFF32                      150
1088 #endif /* R_SH_TLS_DTPOFF32 */
1089 #ifndef R_SPARC_TLS_DTPOFF32
1090 #define R_SPARC_TLS_DTPOFF32                   76
1091 #endif /* R_SPARC_TLS_DTPOFF32 */
1092 #ifndef R_SPARC_TLS_DTPOFF64
1093 #define R_SPARC_TLS_DTPOFF64                   77
1094 #endif /* R_SPARC_TLS_DTPOFF64 */
1095 #ifndef R_SPARC_UA32
1096 #define R_SPARC_UA32                           23
1097 #endif /* R_SPARC_UA32 */
1098 #ifndef R_SPARC_UA64
1099 #define R_SPARC_UA64                           54
1100 #endif /* R_SPARC_UA64 */
1101 #ifndef R_X86_64_32
1102 #define R_X86_64_32                            10
1103 #endif /* R_X86_64_32 */
1104 #ifndef R_X86_64_64
1105 #define R_X86_64_64                            1
1106 #endif /* R_X86_64_64 */
1107 #ifndef R_X86_64_DTPOFF32
1108 #define R_X86_64_DTPOFF32                      21
1109 #endif /* R_X86_64_DTPOFF32 */
1110 #ifndef R_X86_64_DTPOFF64
1111 #define R_X86_64_DTPOFF64                      17
1112 #endif /* R_X86_64_DTPOFF64 */
1113 #ifndef R_X86_64_PC32
1114 #define R_X86_64_PC32                          2
1115 #endif /* R_X86_64_PC32 */
1116 
1117 #ifdef __cplusplus
1118 }
1119 #endif /* __cplusplus */
1120 
1121 #endif /* DWARF_ELF_DEFINES_H */
1122