1/* $NetBSD: elf_machdep.h,v 1.6 2017/11/06 03:47:45 christos Exp $ */
2
3#if !defined __i386__
4
5#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB
6#define ELF32_MACHDEP_ID_CASES \
7 case EM_386: \
8 break;
9
10#define ELF64_MACHDEP_ENDIANNESS ELFDATA2LSB
11#define ELF64_MACHDEP_ID_CASES \
12 case EM_X86_64: \
13 break;
14
15#define ELF32_MACHDEP_ID EM_386
16#define ELF64_MACHDEP_ID EM_X86_64
17
18#define KERN_ELFSIZE 64
19#define ARCH_ELFSIZE 64 /* MD native binary size */
20
21/* x86-64 relocations */
22
23#define R_X86_64_NONE 0
24#define R_X86_64_64 1
25#define R_X86_64_PC32 2
26#define R_X86_64_GOT32 3
27#define R_X86_64_PLT32 4
28#define R_X86_64_COPY 5
29#define R_X86_64_GLOB_DAT 6
30#define R_X86_64_JUMP_SLOT 7
31#define R_X86_64_RELATIVE 8
32#define R_X86_64_GOTPCREL 9
33#define R_X86_64_32 10
34#define R_X86_64_32S 11
35#define R_X86_64_16 12
36#define R_X86_64_PC16 13
37#define R_X86_64_8 14
38#define R_X86_64_PC8 15
39
40/* TLS relocations */
41#define R_X86_64_DTPMOD64 16
42#define R_X86_64_DTPOFF64 17
43#define R_X86_64_TPOFF64 18
44#define R_X86_64_TLSGD 19
45#define R_X86_64_TLSLD 20
46#define R_X86_64_DTPOFF32 21
47#define R_X86_64_GOTTPOFF 22
48#define R_X86_64_TPOFF32 23
49
50#define R_X86_64_PC64 24
51#define R_X86_64_GOTOFF64 25
52#define R_X86_64_GOTPC32 26
53#define R_X86_64_GOT64 27
54#define R_X86_64_GOTPCREL64 28
55#define R_X86_64_GOTPC64 29
56#define R_X86_64_GOTPLT64 30
57#define R_X86_64_PLTOFF64 31
58#define R_X86_64_SIZE32 32
59#define R_X86_64_SIZE64 33
60#define R_X86_64_GOTPC32_TLSDESC 34
61#define R_X86_64_TLSDESC_CALL 35
62#define R_X86_64_TLSDESC 36
63#define R_X86_64_IRELATIVE 37
64#define R_X86_64_RELATIVE64 38
65#define R_X86_64_PC32_BND 39
66#define R_X86_64_PLT32_BND 40
67#define R_X86_64_GOTPCRELX 41
68#define R_X86_64_REX_GOTPCRELX 42
69
70#define R_TYPE(name) __CONCAT(R_X86_64_,name)
71
72#else /* !__i386__ */
73
74#include <i386/elf_machdep.h>
75
76#endif /* !__i386__ */
77