xref: /netbsd/sys/arch/powerpc/include/elf_machdep.h (revision 6550d01e)
1 /*	$NetBSD: elf_machdep.h,v 1.9 2011/01/15 10:00:07 matt Exp $	*/
2 
3 #define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2MSB
4 #define	ELF32_MACHDEP_ID_CASES						\
5 		case EM_PPC:						\
6 			break;
7 
8 #define	ELF64_MACHDEP_ENDIANNESS	ELFDATA2MSB
9 #define	ELF64_MACHDEP_ID_CASES						\
10 		case EM_PPC64:						\
11 			break;
12 
13 #define	ELF32_MACHDEP_ID	EM_PPC
14 #define	ELF64_MACHDEP_ID	EM_PPC64
15 
16 #ifdef _LP64
17 #define ARCH_ELFSIZE		64	/* MD native binary size */
18 #else
19 #define ARCH_ELFSIZE		32	/* MD native binary size */
20 #endif
21 
22 /* Specify the value of _GLOBAL_OFFSET_TABLE_ */
23 #define	DT_PPC_GOT		DT_LOPROC
24 
25 #define	R_PPC_NONE 		0
26 #define	R_PPC_32 		1
27 #define	R_PPC_24 		2
28 #define	R_PPC_16 		3
29 #define	R_PPC_16_LO 		4
30 #define	R_PPC_16_HI 		5 /* R_PPC_ADDIS */
31 #define	R_PPC_16_HA 		6
32 #define	R_PPC_14 		7
33 #define	R_PPC_14_TAKEN 		8
34 #define	R_PPC_14_NTAKEN 	9
35 #define	R_PPC_REL24 		10 /* R_PPC_BRANCH */
36 #define	R_PPC_REL14 		11
37 #define	R_PPC_REL14_TAKEN 	12
38 #define	R_PPC_REL14_NTAKEN 	13
39 #define	R_PPC_GOT16 		14
40 #define	R_PPC_GOT16_LO 		15
41 #define	R_PPC_GOT16_HI 		16
42 #define	R_PPC_GOT16_HA 		17
43 #define	R_PPC_PLT24 		18
44 #define	R_PPC_COPY 		19
45 #define	R_PPC_GLOB_DAT 		20
46 #define	R_PPC_JMP_SLOT 		21
47 #define	R_PPC_RELATIVE 		22
48 #define	R_PPC_LOCAL24PC 	23
49 #define	R_PPC_U32 		24
50 #define	R_PPC_U16 		25
51 #define	R_PPC_REL32 		26
52 #define	R_PPC_PLT32 		27
53 #define	R_PPC_PLTREL32 		28
54 #define	R_PPC_PLT16_LO 		29
55 #define	R_PPC_PLT16_HI 		30
56 #define	R_PPC_PLT16_HA 		31
57 #define	R_PPC_SDAREL16 		32
58 #define	R_PPC_SECTOFF 		33
59 #define	R_PPC_SECTOFF_LO 	34
60 #define	R_PPC_SECTOFF_HI	35
61 #define	R_PPC_SECTOFF_HA	36
62 #define	R_PPC_ADDR30 		37
63 
64 /* TLS relocations */
65 #define	R_PPC_TLS		67
66 
67 #define	R_PPC_DTPMOD32		68
68 #define	R_PPC_TPREL16		69
69 #define	R_PPC_TPREL16_LO	70
70 #define	R_PPC_TPREL16_HI	71
71 #define	R_PPC_TPREL16_HA	72
72 #define	R_PPC_TPREL32		73
73 #define	R_PPC_DTPREL16		74
74 #define	R_PPC_DTPREL16_LO	75
75 #define	R_PPC_DTPREL16_HI	76
76 #define	R_PPC_DTPREL16_HA	77
77 #define	R_PPC_DTPREL32		78
78 
79 #define	R_PPC_GOT_TLSGD16	79
80 #define	R_PPC_GOT_TLSGD16_LO	80
81 #define	R_PPC_GOT_TLSGD16_HI	81
82 #define	R_PPC_GOT_TLSGD16_HA	82
83 #define	R_PPC_GOT_TLSLD16	83
84 #define	R_PPC_GOT_TLSLD16_LO	84
85 #define	R_PPC_GOT_TLSLD16_HI	85
86 #define	R_PPC_GOT_TLSLD16_HA	86
87 
88 #define	R_PPC_GOT_TPREL16	87
89 #define	R_PPC_GOT_TPREL16_LO	88
90 #define	R_PPC_GOT_TPREL16_HI	89
91 #define	R_PPC_GOT_TPREL16_HA	90
92 #define	R_PPC_GOT_DTPREL16	91
93 #define	R_PPC_GOT_DTPREL16_LO	92
94 #define	R_PPC_GOT_DTPREL16_HI	93
95 #define	R_PPC_GOT_DTPREL16_HA	94
96 #define	R_PPC_TLSGD		95
97 #define	R_PPC_TLSLD		96
98 
99 /* Used for the secure-plt PIC code sequences */
100 #define	R_PPC_REL16		249
101 #define	R_PPC_REL16_LO		250
102 #define	R_PPC_REL16_HI		251
103 #define	R_PPC_REL16_HA		252
104 
105 #define R_TYPE(name) 		__CONCAT(R_PPC_,name)
106