master
 1/*	$NetBSD: elf_machdep.h,v 1.13 2017/11/06 03:47:46 christos Exp $	*/
 2
 3#define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2LSB
 4#define	ELF32_MACHDEP_ID_CASES						\
 5		case EM_386:						\
 6		case EM_486:						\
 7			break;
 8
 9#define	ELF64_MACHDEP_ENDIANNESS	XXX	/* break compilation */
10#define	ELF64_MACHDEP_ID_CASES						\
11		/* no 64-bit ELF machine types supported */
12
13#define	ELF32_MACHDEP_ID		EM_386
14
15#define	KERN_ELFSIZE		32
16#define ARCH_ELFSIZE		32	/* MD native binary size */
17
18/* i386 relocations */
19#define	R_386_NONE	0
20#define	R_386_32	1
21#define	R_386_PC32	2
22#define	R_386_GOT32	3
23#define	R_386_PLT32	4
24#define	R_386_COPY	5
25#define	R_386_GLOB_DAT	6
26#define	R_386_JMP_SLOT	7
27#define	R_386_RELATIVE	8
28#define	R_386_GOTOFF	9
29#define	R_386_GOTPC	10
30#define	R_386_32PLT	11
31
32/* TLS relocations */
33#define	R_386_TLS_TPOFF	14
34#define	R_386_TLS_IE	15
35#define	R_386_TLS_GOTIE	16
36#define	R_386_TLS_LE	17
37#define	R_386_TLS_GD	18
38#define	R_386_TLS_LDM	19
39
40/* The following relocations are GNU extensions. */
41#define	R_386_16	20
42#define	R_386_PC16	21
43#define	R_386_8		22
44#define	R_386_PC8	23
45
46/* More TLS relocations */
47#define	R_386_TLS_GD_32		24
48#define	R_386_TLS_GD_PUSH	25
49#define	R_386_TLS_GD_CALL	26
50#define	R_386_TLS_GD_POP	27
51#define	R_386_TLS_LDM_32	28
52#define	R_386_TLS_LDM_PUSH	29
53#define	R_386_TLS_LDM_CALL	30
54#define	R_386_TLS_LDM_POP	31
55#define	R_386_TLS_LDO_32	32
56#define	R_386_TLS_IE_32		33
57#define	R_386_TLS_LE_32		34
58#define	R_386_TLS_DTPMOD32	35
59#define	R_386_TLS_DTPOFF32	36
60#define	R_386_TLS_TPOFF32	37
61
62#define R_386_SIZE32		38
63
64/* More TLS relocations */
65#define	R_386_TLS_GOTDESC	39
66#define	R_386_TLS_DESC_CALL	40
67#define	R_386_TLS_DESC		41
68
69#define R_386_IRELATIVE		42
70#define R_386_GOT32X		43
71
72#define	R_TYPE(name)	__CONCAT(R_386_,name)