elf_machdep.h revision 1.13
1/*	$NetBSD: elf_machdep.h,v 1.13 2017/11/06 03:47:48 christos Exp $	*/
2
3#include <machine/endian_machdep.h>
4
5#if _BYTE_ORDER == _LITTLE_ENDIAN
6#define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2LSB
7#else
8#define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2MSB
9#endif
10#define	ELF32_MACHDEP_ID_CASES						\
11		case EM_SH:						\
12			break;
13
14#define	ELF64_MACHDEP_ENDIANNESS	XXX	/* break compilation */
15#define	ELF64_MACHDEP_ID_CASES						\
16		/* no 64-bit ELF machine types supported */
17
18#define	ELF32_MACHDEP_ID	EM_SH
19
20#define	KERN_ELFSIZE		32
21#define	ARCH_ELFSIZE		32	/* MD native binary size */
22
23/*
24 * SuperH ELF header flags.
25 */
26#define	EF_SH_MACH_MASK		0x1f
27
28#define	EF_SH_UNKNOWN		0x00
29#define	EF_SH_SH1		0x01
30#define	EF_SH_SH2		0x02
31#define	EF_SH_SH3		0x03
32#define	EF_SH_DSP		0x04
33#define	EF_SH_SH3_DSP		0x05
34#define	EF_SH_SH3E		0x08
35#define	EF_SH_SH4		0x09
36
37#define	EF_SH_HAS_DSP(x)	((x) & EF_SH_DSP)
38#define	EF_SH_HAS_FP(x)		((x) & EF_SH_SH3E)
39
40
41#define	R_SH_NONE		0
42#define	R_SH_DIR32		1
43#define	R_SH_REL32		2
44#define	R_SH_DIR8WPN		3
45#define	R_SH_IND12W		4
46#define	R_SH_DIR8WPL		5
47#define	R_SH_DIR8WPZ		6
48#define	R_SH_DIR8BP		7
49#define	R_SH_DIR8W		8
50#define	R_SH_DIR8L		9
51#define	R_SH_LOOP_START		10
52#define	R_SH_LOOP_END		11
53#define	R_SH_GNU_VTINHERIT	22
54#define	R_SH_GNU_VTENTRY	23
55#define	R_SH_SWITCH8		24
56#define	R_SH_SWITCH16		25
57#define	R_SH_SWITCH32		26
58#define	R_SH_USES		27
59#define	R_SH_COUNT		28
60#define	R_SH_ALIGN		29
61#define	R_SH_CODE		30
62#define	R_SH_DATA		31
63#define	R_SH_LABEL		32
64
65/* TLS relocations */
66#define	R_SH_TLS_GD_32		144
67#define	R_SH_TLS_LD_32		145
68#define	R_SH_TLS_LDO_32		146
69#define	R_SH_TLS_IE_32		147
70#define	R_SH_TLS_LE_32		148
71#define	R_SH_TLS_DTPMOD32	149
72#define	R_SH_TLS_DTPOFF32	150
73#define	R_SH_TLS_TPOFF32	151
74
75#define	R_SH_GOT32		160
76#define	R_SH_PLT32		161
77#define	R_SH_COPY		162
78#define	R_SH_GLOB_DAT		163
79#define	R_SH_JMP_SLOT		164
80#define	R_SH_RELATIVE		165
81#define	R_SH_GOTOFF		166
82#define	R_SH_GOTPC		167
83
84#define	R_TYPE(name)	__CONCAT(R_SH_,name)
85