about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2013-09-15 14:53:34 +0000
committerSzabolcs Nagy <nsz@port70.net>2013-09-16 15:16:55 +0000
commit268375c1c017c0bdefeed1a330811e433c4dfaef (patch)
tree0f3a8825bef465c2c45e07462f8446d541652072
parent271c21194467838d6ca63d83faeebc966e204c03 (diff)
downloadmusl-268375c1c017c0bdefeed1a330811e433c4dfaef.tar.gz
musl-268375c1c017c0bdefeed1a330811e433c4dfaef.tar.xz
musl-268375c1c017c0bdefeed1a330811e433c4dfaef.zip
update include/elf.h following glibc changes
the changes were verified using various sources:
linux: include/uapi/linux/elf.h
binutils: include/elf/common.h
glibc: elf/elf.h
sysv gabi: http://www.sco.com/developers/gabi/latest/contents.html
sun linker docs: http://docs.oracle.com/cd/E18752_01/pdf/817-1984.pdf
and platform specific docs

- fixed:
EF_MIPS_* E_MIPS_* e_flags: fixed accoding to glibc and binutils

- added:
ELFOSABI_GNU for EI_OSABI entry: glibc, binutils and sysv gabi
EM_* e_machine values: updated according to linux and glibc
PN_XNUM e_phnum value: from glibc and linux, see oracle docs
NT_* note types: updated according to linux and glibc
DF_1_* flags for DT_FLAGS_1 entry: following glibc and oracle docs
AT_HWCAP2 auxv entry for more hwcap bits accoding to linux and glibc
R_386_SIZE32 relocation according to glibc and binutils
EF_ARM_ABI_FLOAT_* e_flags: added following glibc and binutils
R_AARCH64_* relocs: added following glibc and aarch64 elf specs
R_ARM_* relocs: according to glibc, binutils and arm elf specs
R_X86_64_* relocs: added missing relocs following glibc

- removed:
HWCAP_SPARC_* flags were moved to arch specific header in glibc
R_ARM_SWI24 reloc is marked as obsolete in glibc, not present in binutils
  not specified in arm elf spec, R_ARM_TLS_DESC reused its number
  see http://www.codesourcery.com/publications/RFC-TLSDESC-ARM.txt

- glibc changes not pulled in:
ELFOSABI_ARM_AEABI (bare-metal system, binutils and glibc disagrees about the name)
R_68K_* relocs for unsupported platform
R_SPARC_* ditto
EF_SH* ditto (e_flags)
EF_S390* ditto (e_flags)
R_390* ditto
R_MN10300* ditto
R_TILE* ditto
-rw-r--r--include/elf.h170
1 files changed, 143 insertions, 27 deletions
diff --git a/include/elf.h b/include/elf.h
index 0075f9fc..690e44a5 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -105,6 +105,7 @@ typedef struct {
 #define ELFOSABI_HPUX		1
 #define ELFOSABI_NETBSD		2
 #define ELFOSABI_LINUX		3
+#define ELFOSABI_GNU		3
 #define ELFOSABI_SOLARIS	6
 #define ELFOSABI_AIX		7
 #define ELFOSABI_IRIX		8
@@ -211,7 +212,11 @@ typedef struct {
 #define EM_OPENRISC	92
 #define EM_ARC_A5	93
 #define EM_XTENSA	94
-#define EM_NUM		95
+#define EM_AARCH64	183
+#define EM_TILEPRO	188
+#define EM_MICROBLAZE	189
+#define EM_TILEGX	191
+#define EM_NUM		192
 #define EM_ALPHA	0x9026
 
 #define EV_NONE		0
@@ -487,6 +492,8 @@ typedef struct {
 #define PT_HIPROC	0x7fffffff
 
 
+#define PN_XNUM 0xffff
+
 
 #define PF_X		(1 << 0)
 #define PF_W		(1 << 1)
@@ -512,12 +519,31 @@ typedef struct {
 #define NT_LWPSTATUS	16
 #define NT_LWPSINFO	17
 #define NT_PRFPXREG	20
+#define NT_SIGINFO	0x53494749
+#define NT_FILE		0x46494c45
 #define NT_PRXFPREG	0x46e62b7f
 #define NT_PPC_VMX	0x100
 #define NT_PPC_SPE	0x101
 #define NT_PPC_VSX	0x102
 #define NT_386_TLS	0x200
 #define NT_386_IOPERM	0x201
+#define NT_X86_XSTATE	0x202
+#define NT_S390_HIGH_GPRS	0x300
+#define NT_S390_TIMER	0x301
+#define NT_S390_TODCMP	0x302
+#define NT_S390_TODPREG	0x303
+#define NT_S390_CTRS	0x304
+#define NT_S390_PREFIX	0x305
+#define NT_S390_LAST_BREAK	0x306
+#define NT_S390_SYSTEM_CALL	0x307
+#define NT_S390_TDB	0x308
+#define NT_ARM_VFP	0x400
+#define NT_ARM_TLS	0x401
+#define NT_ARM_HW_BREAK	0x402
+#define NT_ARM_HW_WATCH	0x403
+#define NT_METAG_CBUF	0x500
+#define NT_METAG_RPIPE	0x501
+#define NT_METAG_TLS	0x502
 #define NT_VERSION	1
 
 
@@ -666,7 +692,15 @@ typedef struct {
 #define DF_1_ENDFILTEE	0x00004000
 #define	DF_1_DISPRELDNE	0x00008000
 #define	DF_1_DISPRELPND	0x00010000
-
+#define	DF_1_NODIRECT	0x00020000
+#define	DF_1_IGNMULDEF	0x00040000
+#define	DF_1_NOKSYMS	0x00080000
+#define	DF_1_NOHDR	0x00100000
+#define	DF_1_EDITED	0x00200000
+#define	DF_1_NORELOC	0x00400000
+#define	DF_1_SYMINTPOSE	0x00800000
+#define	DF_1_GLOBAUDIT	0x01000000
+#define	DF_1_SINGLETON	0x02000000
 
 #define DTF_1_PARINIT	0x00000001
 #define DTF_1_CONFEXP	0x00000002
@@ -832,6 +866,8 @@ typedef struct {
 
 #define AT_RANDOM	25
 
+#define AT_HWCAP2	26
+
 #define AT_EXECFN	31
 
 
@@ -979,6 +1015,7 @@ typedef struct {
 #define R_386_TLS_DTPMOD32 35
 #define R_386_TLS_DTPOFF32 36
 #define R_386_TLS_TPOFF32  37
+#define R_386_SIZE32       38
 #define R_386_TLS_GOTDESC  39
 #define R_386_TLS_DESC_CALL 40
 #define R_386_TLS_DESC     41
@@ -1109,20 +1146,6 @@ typedef struct {
 #define DT_SPARC_NUM	2
 
 
-
-#define HWCAP_SPARC_FLUSH	1
-#define HWCAP_SPARC_STBAR	2
-#define HWCAP_SPARC_SWAP	4
-#define HWCAP_SPARC_MULDIV	8
-#define HWCAP_SPARC_V9		16
-#define HWCAP_SPARC_ULTRA3	32
-#define HWCAP_SPARC_BLKINIT	64
-#define HWCAP_SPARC_N2		128
-
-
-
-
-
 #define EF_MIPS_NOREORDER   1
 #define EF_MIPS_PIC	    2
 #define EF_MIPS_CPIC	    4
@@ -1139,9 +1162,10 @@ typedef struct {
 #define EF_MIPS_ARCH_3	    0x20000000
 #define EF_MIPS_ARCH_4	    0x30000000
 #define EF_MIPS_ARCH_5	    0x40000000
-#define EF_MIPS_ARCH_32	    0x60000000
-#define EF_MIPS_ARCH_64	    0x70000000
-
+#define EF_MIPS_ARCH_32     0x50000000
+#define EF_MIPS_ARCH_64     0x60000000
+#define EF_MIPS_ARCH_32R2   0x70000000
+#define EF_MIPS_ARCH_64R2   0x80000000
 
 
 #define E_MIPS_ARCH_1	  0x00000000
@@ -1149,8 +1173,8 @@ typedef struct {
 #define E_MIPS_ARCH_3	  0x20000000
 #define E_MIPS_ARCH_4	  0x30000000
 #define E_MIPS_ARCH_5	  0x40000000
-#define E_MIPS_ARCH_32	  0x60000000
-#define E_MIPS_ARCH_64	  0x70000000
+#define E_MIPS_ARCH_32	  0x50000000
+#define E_MIPS_ARCH_64	  0x60000000
 
 
 
@@ -2020,7 +2044,8 @@ typedef Elf32_Addr Elf32_Conflict;
 #define EF_ARM_VFP_FLOAT	0x400
 #define EF_ARM_MAVERICK_FLOAT	0x800
 
-
+#define EF_ARM_ABI_FLOAT_SOFT	0x200
+#define EF_ARM_ABI_FLOAT_HARD	0x400
 
 
 #define EF_ARM_SYMSARESORTED	0x04
@@ -2064,6 +2089,17 @@ typedef Elf32_Addr Elf32_Conflict;
 #define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3)
 
 
+#define R_AARCH64_NONE            0
+#define R_AARCH64_ABS64         257
+#define R_AARCH64_ABS32         258
+#define R_AARCH64_COPY         1024
+#define R_AARCH64_GLOB_DAT     1025
+#define R_AARCH64_JUMP_SLOT    1026
+#define R_AARCH64_RELATIVE     1027
+#define R_AARCH64_TLS_DTPMOD64 1028
+#define R_AARCH64_TLS_DTPREL64 1029
+#define R_AARCH64_TLS_TPREL64  1030
+#define R_AARCH64_TLSDESC      1031
 
 
 #define R_ARM_NONE		0
@@ -2079,7 +2115,7 @@ typedef Elf32_Addr Elf32_Conflict;
 #define R_ARM_THM_PC22		10
 #define R_ARM_THM_PC8		11
 #define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13
+#define R_ARM_TLS_DESC		13
 #define R_ARM_THM_SWI8		14
 #define R_ARM_XPC25		15
 #define R_ARM_THM_XPC22		16
@@ -2094,12 +2130,78 @@ typedef Elf32_Addr Elf32_Conflict;
 #define R_ARM_GOTPC		25
 #define R_ARM_GOT32		26
 #define R_ARM_PLT32		27
+#define R_ARM_CALL		28
+#define R_ARM_JUMP24		29
+#define R_ARM_THM_JUMP24	30
+#define R_ARM_BASE_ABS		31
 #define R_ARM_ALU_PCREL_7_0	32
 #define R_ARM_ALU_PCREL_15_8	33
 #define R_ARM_ALU_PCREL_23_15	34
 #define R_ARM_LDR_SBREL_11_0	35
 #define R_ARM_ALU_SBREL_19_12	36
 #define R_ARM_ALU_SBREL_27_20	37
+#define R_ARM_TARGET1		38
+#define R_ARM_SBREL31		39
+#define R_ARM_V4BX		40
+#define R_ARM_TARGET2		41
+#define R_ARM_PREL31		42
+#define R_ARM_MOVW_ABS_NC	43
+#define R_ARM_MOVT_ABS		44
+#define R_ARM_MOVW_PREL_NC	45
+#define R_ARM_MOVT_PREL		46
+#define R_ARM_THM_MOVW_ABS_NC	47
+#define R_ARM_THM_MOVT_ABS	48
+#define R_ARM_THM_MOVW_PREL_NC	49
+#define R_ARM_THM_MOVT_PREL	50
+#define R_ARM_THM_JUMP19	51
+#define R_ARM_THM_JUMP6		52
+#define R_ARM_THM_ALU_PREL_11_0	53
+#define R_ARM_THM_PC12		54
+#define R_ARM_ABS32_NOI		55
+#define R_ARM_REL32_NOI		56
+#define R_ARM_ALU_PC_G0_NC	57
+#define R_ARM_ALU_PC_G0		58
+#define R_ARM_ALU_PC_G1_NC	59
+#define R_ARM_ALU_PC_G1		60
+#define R_ARM_ALU_PC_G2		61
+#define R_ARM_LDR_PC_G1		62
+#define R_ARM_LDR_PC_G2		63
+#define R_ARM_LDRS_PC_G0	64
+#define R_ARM_LDRS_PC_G1	65
+#define R_ARM_LDRS_PC_G2	66
+#define R_ARM_LDC_PC_G0		67
+#define R_ARM_LDC_PC_G1		68
+#define R_ARM_LDC_PC_G2		69
+#define R_ARM_ALU_SB_G0_NC	70
+#define R_ARM_ALU_SB_G0		71
+#define R_ARM_ALU_SB_G1_NC	72
+#define R_ARM_ALU_SB_G1		73
+#define R_ARM_ALU_SB_G2		74
+#define R_ARM_LDR_SB_G0		75
+#define R_ARM_LDR_SB_G1		76
+#define R_ARM_LDR_SB_G2		77
+#define R_ARM_LDRS_SB_G0	78
+#define R_ARM_LDRS_SB_G1	79
+#define R_ARM_LDRS_SB_G2	80
+#define R_ARM_LDC_SB_G0		81
+#define R_ARM_LDC_SB_G1		82
+#define R_ARM_LDC_SB_G2		83
+#define R_ARM_MOVW_BREL_NC	84
+#define R_ARM_MOVT_BREL		85
+#define R_ARM_MOVW_BREL		86
+#define R_ARM_THM_MOVW_BREL_NC	87
+#define R_ARM_THM_MOVT_BREL	88
+#define R_ARM_THM_MOVW_BREL	89
+#define R_ARM_TLS_GOTDESC	90
+#define R_ARM_TLS_CALL		91
+#define R_ARM_TLS_DESCSEQ	92
+#define R_ARM_THM_TLS_CALL	93
+#define R_ARM_PLT32_ABS		94
+#define R_ARM_GOT_ABS		95
+#define R_ARM_GOT_PREL		96
+#define R_ARM_GOT_BREL12	97
+#define R_ARM_GOTOFF12		98
+#define R_ARM_GOTRELAX		99
 #define R_ARM_GNU_VTENTRY	100
 #define R_ARM_GNU_VTINHERIT	101
 #define R_ARM_THM_PC11		102
@@ -2113,7 +2215,15 @@ typedef Elf32_Addr Elf32_Conflict;
 #define R_ARM_TLS_IE32		107
 
 #define R_ARM_TLS_LE32		108
-
+#define R_ARM_TLS_LDO12		109
+#define R_ARM_TLS_LE12		110
+#define R_ARM_TLS_IE12GP	111
+#define R_ARM_ME_TOO		128
+#define R_ARM_THM_TLS_DESCSEQ	129
+#define R_ARM_THM_TLS_DESCSEQ16	129
+#define R_ARM_THM_TLS_DESCSEQ32	130
+#define R_ARM_THM_GOT_BREL12	131
+#define R_ARM_IRELATIVE		160
 #define R_ARM_RXPC25		249
 #define R_ARM_RSBREL32		250
 #define R_ARM_THM_RPC22		251
@@ -2421,15 +2531,21 @@ typedef Elf32_Addr Elf32_Conflict;
 #define R_X86_64_PC64		24
 #define R_X86_64_GOTOFF64	25
 #define R_X86_64_GOTPC32	26
-
+#define R_X86_64_GOT64		27
+#define R_X86_64_GOTPCREL64	28
+#define R_X86_64_GOTPC64	29
+#define R_X86_64_GOTPLT64	30
+#define R_X86_64_PLTOFF64	31
+#define R_X86_64_SIZE32		32
+#define R_X86_64_SIZE64		33
 
 #define R_X86_64_GOTPC32_TLSDESC 34
 #define R_X86_64_TLSDESC_CALL   35
 
 #define R_X86_64_TLSDESC        36
 #define R_X86_64_IRELATIVE	37
-
-#define R_X86_64_NUM		38
+#define R_X86_64_RELATIVE64	38
+#define R_X86_64_NUM		39