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