1/*	$NetBSD: elf_machdep.h,v 1.10 2009/05/30 05:56:52 skrll 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 ARCH_ELFSIZE		32	/* MD native binary size */
16
17/* i386 relocations */
18#define	R_386_NONE	0
19#define	R_386_32	1
20#define	R_386_PC32	2
21#define	R_386_GOT32	3
22#define	R_386_PLT32	4
23#define	R_386_COPY	5
24#define	R_386_GLOB_DAT	6
25#define	R_386_JMP_SLOT	7
26#define	R_386_RELATIVE	8
27#define	R_386_GOTOFF	9
28#define	R_386_GOTPC	10
29
30/* TLS relocations */
31#define	R_386_TLS_TPOFF	14
32#define	R_386_TLS_IE	15
33#define	R_386_TLS_GOTIE	16
34#define	R_386_TLS_LE	17
35#define	R_386_TLS_GD	18
36#define	R_386_TLS_LDM	19
37
38/* The following relocations are GNU extensions. */
39#define	R_386_16	20
40#define	R_386_PC16	21
41#define	R_386_8		22
42#define	R_386_PC8	23
43
44/* More TLS relocations */
45#define	R_386_TLS_GD_32		24
46#define	R_386_TLS_GD_PUSH	25
47#define	R_386_TLS_GD_CALL	26
48#define	R_386_TLS_GD_POP	27
49#define	R_386_TLS_LDM_32	28
50#define	R_386_TLS_LDM_PUSH	29
51#define	R_386_TLS_LDM_CALL	30
52#define	R_386_TLS_LDM_POP	31
53#define	R_386_TLS_LDO_32	32
54#define	R_386_TLS_IE_32		33
55#define	R_386_TLS_LE_32		34
56#define	R_386_TLS_DTPMOD32	35
57#define	R_386_TLS_DTPOFF32	36
58#define	R_386_TLS_TPOFF32	37
59#define	R_386_TLS_GOTDESC	39
60#define	R_386_TLS_DESC_CALL	40
61#define	R_386_TLS_DESC		41
62#define	R_386_IRELATIVE		42
63
64#define	R_TYPE(name)	__CONCAT(R_386_,name)
65