c39ad13
commit 6d2e7e7100429df3d548251e9685a1eb7bb434cb
c39ad13
Author: Mark Wielaard <mark@klomp.org>
c39ad13
Date:   Tue Aug 15 22:43:01 2017 +0200
c39ad13
c39ad13
    libelf: Sync elf.h from glibc.
c39ad13
    
c39ad13
    Add new powerpc note descriptors.
c39ad13
    
c39ad13
    Signed-off-by: Mark Wielaard <mark@klomp.org>
c39ad13
c39ad13
diff --git a/libelf/elf.h b/libelf/elf.h
c39ad13
index fa35203..84a7126 100644
c39ad13
--- a/libelf/elf.h
c39ad13
+++ b/libelf/elf.h
c39ad13
@@ -1,5 +1,5 @@
c39ad13
 /* This file defines standard ELF types, structures, and macros.
c39ad13
-   Copyright (C) 1995-2016 Free Software Foundation, Inc.
c39ad13
+   Copyright (C) 1995-2017 Free Software Foundation, Inc.
c39ad13
    This file is part of the GNU C Library.
c39ad13
 
c39ad13
    The GNU C Library is free software; you can redistribute it and/or
c39ad13
@@ -762,8 +762,23 @@ typedef struct
c39ad13
 #define NT_PPC_VMX	0x100		/* PowerPC Altivec/VMX registers */
c39ad13
 #define NT_PPC_SPE	0x101		/* PowerPC SPE/EVR registers */
c39ad13
 #define NT_PPC_VSX	0x102		/* PowerPC VSX registers */
c39ad13
+#define NT_PPC_TAR	0x103		/* Target Address Register */
c39ad13
+#define NT_PPC_PPR	0x104		/* Program Priority Register */
c39ad13
+#define NT_PPC_DSCR	0x105		/* Data Stream Control Register */
c39ad13
+#define NT_PPC_EBB	0x106		/* Event Based Branch Registers */
c39ad13
+#define NT_PPC_PMU	0x107		/* Performance Monitor Registers */
c39ad13
+#define NT_PPC_TM_CGPR	0x108		/* TM checkpointed GPR Registers */
c39ad13
+#define NT_PPC_TM_CFPR	0x109		/* TM checkpointed FPR Registers */
c39ad13
+#define NT_PPC_TM_CVMX	0x10a		/* TM checkpointed VMX Registers */
c39ad13
+#define NT_PPC_TM_CVSX	0x10b		/* TM checkpointed VSX Registers */
c39ad13
+#define NT_PPC_TM_SPR	0x10c		/* TM Special Purpose Registers */
c39ad13
+#define NT_PPC_TM_CTAR	0x10d		/* TM checkpointed Target Address
c39ad13
+					   Register */
c39ad13
+#define NT_PPC_TM_CPPR	0x10e		/* TM checkpointed Program Priority
c39ad13
+					   Register */
c39ad13
+#define NT_PPC_TM_CDSCR	0x10f		/* TM checkpointed Data Stream Control
c39ad13
+					   Register */
c39ad13
 #define NT_386_TLS	0x200		/* i386 TLS slots (struct user_desc) */
c39ad13
-#define NT_PPC_TM_SPR	0x10c		/* PowerPC HW Transactional Memory SPRs */
c39ad13
 #define NT_386_IOPERM	0x201		/* x86 io permission bitmap (1=deny) */
c39ad13
 #define NT_X86_XSTATE	0x202		/* x86 extended state using xsave */
c39ad13
 #define NT_S390_HIGH_GPRS	0x300	/* s390 upper register halves */
c39ad13
@@ -1171,6 +1186,18 @@ typedef struct
c39ad13
 #define AT_L2_CACHESHAPE	36
c39ad13
 #define AT_L3_CACHESHAPE	37
c39ad13
 
c39ad13
+/* Shapes of the caches, with more room to describe them.
c39ad13
+   *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
c39ad13
+   and the cache associativity in the next 16 bits.  */
c39ad13
+#define AT_L1I_CACHESIZE	40
c39ad13
+#define AT_L1I_CACHEGEOMETRY	41
c39ad13
+#define AT_L1D_CACHESIZE	42
c39ad13
+#define AT_L1D_CACHEGEOMETRY	43
c39ad13
+#define AT_L2_CACHESIZE		44
c39ad13
+#define AT_L2_CACHEGEOMETRY	45
c39ad13
+#define AT_L3_CACHESIZE		46
c39ad13
+#define AT_L3_CACHEGEOMETRY	47
c39ad13
+
c39ad13
 /* Note section contents.  Each entry in the note section begins with
c39ad13
    a header of a fixed form.  */
c39ad13
 
c39ad13
@@ -2533,9 +2560,10 @@ enum
c39ad13
 #define DT_PPC64_OPT	(DT_LOPROC + 3)
c39ad13
 #define DT_PPC64_NUM    4
c39ad13
 
c39ad13
-/* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry.  */
c39ad13
+/* PowerPC64 specific bits in the DT_PPC64_OPT Dyn entry.  */
c39ad13
 #define PPC64_OPT_TLS		1
c39ad13
 #define PPC64_OPT_MULTI_TOC	2
c39ad13
+#define PPC64_OPT_LOCALENTRY	4
c39ad13
 
c39ad13
 /* PowerPC64 specific values for the Elf64_Sym st_other field.  */
c39ad13
 #define STO_PPC64_LOCAL_BIT	5
c39ad13
@@ -3683,6 +3711,68 @@ enum
c39ad13
 #define R_BPF_NONE		0	/* No reloc */
c39ad13
 #define R_BPF_MAP_FD		1	/* Map fd to pointer */
c39ad13
 
c39ad13
+/* Imagination Meta specific relocations. */
c39ad13
+
c39ad13
+#define R_METAG_HIADDR16	0
c39ad13
+#define R_METAG_LOADDR16	1
c39ad13
+#define R_METAG_ADDR32		2	/* 32bit absolute address */
c39ad13
+#define R_METAG_NONE		3	/* No reloc */
c39ad13
+#define R_METAG_RELBRANCH	4
c39ad13
+#define R_METAG_GETSETOFF	5
c39ad13
+
c39ad13
+/* Backward compatability */
c39ad13
+#define R_METAG_REG32OP1	6
c39ad13
+#define R_METAG_REG32OP2	7
c39ad13
+#define R_METAG_REG32OP3	8
c39ad13
+#define R_METAG_REG16OP1	9
c39ad13
+#define R_METAG_REG16OP2	10
c39ad13
+#define R_METAG_REG16OP3	11
c39ad13
+#define R_METAG_REG32OP4	12
c39ad13
+
c39ad13
+#define R_METAG_HIOG		13
c39ad13
+#define R_METAG_LOOG		14
c39ad13
+
c39ad13
+#define R_METAG_REL8		15
c39ad13
+#define R_METAG_REL16		16
c39ad13
+
c39ad13
+/* GNU */
c39ad13
+#define R_METAG_GNU_VTINHERIT	30
c39ad13
+#define R_METAG_GNU_VTENTRY	31
c39ad13
+
c39ad13
+/* PIC relocations */
c39ad13
+#define R_METAG_HI16_GOTOFF	32
c39ad13
+#define R_METAG_LO16_GOTOFF	33
c39ad13
+#define R_METAG_GETSET_GOTOFF	34
c39ad13
+#define R_METAG_GETSET_GOT	35
c39ad13
+#define R_METAG_HI16_GOTPC	36
c39ad13
+#define R_METAG_LO16_GOTPC	37
c39ad13
+#define R_METAG_HI16_PLT	38
c39ad13
+#define R_METAG_LO16_PLT	39
c39ad13
+#define R_METAG_RELBRANCH_PLT	40
c39ad13
+#define R_METAG_GOTOFF		41
c39ad13
+#define R_METAG_PLT		42
c39ad13
+#define R_METAG_COPY		43
c39ad13
+#define R_METAG_JMP_SLOT	44
c39ad13
+#define R_METAG_RELATIVE	45
c39ad13
+#define R_METAG_GLOB_DAT	46
c39ad13
+
c39ad13
+/* TLS relocations */
c39ad13
+#define R_METAG_TLS_GD		47
c39ad13
+#define R_METAG_TLS_LDM		48
c39ad13
+#define R_METAG_TLS_LDO_HI16	49
c39ad13
+#define R_METAG_TLS_LDO_LO16	50
c39ad13
+#define R_METAG_TLS_LDO		51
c39ad13
+#define R_METAG_TLS_IE		52
c39ad13
+#define R_METAG_TLS_IENONPIC	53
c39ad13
+#define R_METAG_TLS_IENONPIC_HI16 54
c39ad13
+#define R_METAG_TLS_IENONPIC_LO16 55
c39ad13
+#define R_METAG_TLS_TPOFF	56
c39ad13
+#define R_METAG_TLS_DTPMOD	57
c39ad13
+#define R_METAG_TLS_DTPOFF	58
c39ad13
+#define R_METAG_TLS_LE		59
c39ad13
+#define R_METAG_TLS_LE_HI16	60
c39ad13
+#define R_METAG_TLS_LE_LO16	61
c39ad13
+
c39ad13
 __END_DECLS
c39ad13
 
c39ad13
 #endif	/* elf.h */
c39ad13
commit 88f3d2daa107b09fdba376a82bce7ed534c93645
c39ad13
Author: Mark Wielaard <mark@klomp.org>
c39ad13
Date:   Sat Feb 17 00:23:19 2018 +0100
c39ad13
c39ad13
    libelf: Sync elf.h from glibc.
c39ad13
    
c39ad13
    Signed-off-by: Mark Wielaard <mark@klomp.org>
c39ad13
c39ad13
diff --git a/libelf/elf.h b/libelf/elf.h
c39ad13
index 84a7126..4f43577 100644
c39ad13
--- a/libelf/elf.h
c39ad13
+++ b/libelf/elf.h
c39ad13
@@ -1,5 +1,5 @@
c39ad13
 /* This file defines standard ELF types, structures, and macros.
c39ad13
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
c39ad13
+   Copyright (C) 1995-2018 Free Software Foundation, Inc.
c39ad13
    This file is part of the GNU C Library.
c39ad13
 
c39ad13
    The GNU C Library is free software; you can redistribute it and/or
c39ad13
@@ -739,6 +739,8 @@ typedef struct
c39ad13
 /* Legal values for note segment descriptor types for core files. */
c39ad13
 
c39ad13
 #define NT_PRSTATUS	1		/* Contains copy of prstatus struct */
c39ad13
+#define NT_PRFPREG	2		/* Contains copy of fpregset
c39ad13
+					   struct.  */
c39ad13
 #define NT_FPREGSET	2		/* Contains copy of fpregset struct */
c39ad13
 #define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */
c39ad13
 #define NT_PRXREG	4		/* Contains copy of prxregset struct */
c39ad13
@@ -790,11 +792,20 @@ typedef struct
c39ad13
 #define NT_S390_LAST_BREAK	0x306	/* s390 breaking event address */
c39ad13
 #define NT_S390_SYSTEM_CALL	0x307	/* s390 system call restart data */
c39ad13
 #define NT_S390_TDB	0x308		/* s390 transaction diagnostic block */
c39ad13
+#define NT_S390_VXRS_LOW	0x309	/* s390 vector registers 0-15
c39ad13
+					   upper half.  */
c39ad13
+#define NT_S390_VXRS_HIGH	0x30a	/* s390 vector registers 16-31.  */
c39ad13
+#define NT_S390_GS_CB	0x30b		/* s390 guarded storage registers.  */
c39ad13
+#define NT_S390_GS_BC	0x30c		/* s390 guarded storage
c39ad13
+					   broadcast control block.  */
c39ad13
+#define NT_S390_RI_CB	0x30d		/* s390 runtime instrumentation.  */
c39ad13
 #define NT_ARM_VFP	0x400		/* ARM VFP/NEON registers */
c39ad13
 #define NT_ARM_TLS	0x401		/* ARM TLS register */
c39ad13
 #define NT_ARM_HW_BREAK	0x402		/* ARM hardware breakpoint registers */
c39ad13
 #define NT_ARM_HW_WATCH	0x403		/* ARM hardware watchpoint registers */
c39ad13
 #define NT_ARM_SYSTEM_CALL	0x404	/* ARM system call number */
c39ad13
+#define NT_ARM_SVE	0x405		/* ARM Scalable Vector Extension
c39ad13
+					   registers */
c39ad13
 
c39ad13
 /* Legal values for the note segment descriptor types for object files.  */
c39ad13
 
c39ad13
@@ -859,7 +870,8 @@ typedef struct
c39ad13
 #define DT_ENCODING	32		/* Start of encoded range */
c39ad13
 #define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/
c39ad13
 #define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */
c39ad13
-#define	DT_NUM		34		/* Number used */
c39ad13
+#define DT_SYMTAB_SHNDX	34		/* Address of SYMTAB_SHNDX section */
c39ad13
+#define	DT_NUM		35		/* Number used */
c39ad13
 #define DT_LOOS		0x6000000d	/* Start of OS-specific */
c39ad13
 #define DT_HIOS		0x6ffff000	/* End of OS-specific */
c39ad13
 #define DT_LOPROC	0x70000000	/* Start of processor-specific */
c39ad13
@@ -967,6 +979,8 @@ typedef struct
c39ad13
 #define	DF_1_SYMINTPOSE	0x00800000	/* Object has individual interposers.  */
c39ad13
 #define	DF_1_GLOBAUDIT	0x01000000	/* Global auditing required.  */
c39ad13
 #define	DF_1_SINGLETON	0x02000000	/* Singleton symbols are used.  */
c39ad13
+#define	DF_1_STUB	0x04000000
c39ad13
+#define	DF_1_PIE	0x08000000
c39ad13
 
c39ad13
 /* Flags for the feature selection in DT_FEATURE_1.  */
c39ad13
 #define DTF_1_PARINIT	0x00000001
c39ad13
@@ -1263,6 +1277,62 @@ typedef struct
c39ad13
 /* Version note generated by GNU gold containing a version string.  */
c39ad13
 #define NT_GNU_GOLD_VERSION	4
c39ad13
 
c39ad13
+/* Program property.  */
c39ad13
+#define NT_GNU_PROPERTY_TYPE_0 5
c39ad13
+
c39ad13
+/* Note section name of program property.   */
c39ad13
+#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
c39ad13
+
c39ad13
+/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0).  */
c39ad13
+
c39ad13
+/* Stack size.  */
c39ad13
+#define GNU_PROPERTY_STACK_SIZE			1
c39ad13
+/* No copy relocation on protected data symbol.  */
c39ad13
+#define GNU_PROPERTY_NO_COPY_ON_PROTECTED	2
c39ad13
+
c39ad13
+/* Processor-specific semantics, lo */
c39ad13
+#define GNU_PROPERTY_LOPROC			0xc0000000
c39ad13
+/* Processor-specific semantics, hi */
c39ad13
+#define GNU_PROPERTY_HIPROC			0xdfffffff
c39ad13
+/* Application-specific semantics, lo */
c39ad13
+#define GNU_PROPERTY_LOUSER			0xe0000000
c39ad13
+/* Application-specific semantics, hi */
c39ad13
+#define GNU_PROPERTY_HIUSER			0xffffffff
c39ad13
+
c39ad13
+/* The x86 instruction sets indicated by the corresponding bits are
c39ad13
+   used in program.  Their support in the hardware is optional.  */
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_USED		0xc0000000
c39ad13
+/* The x86 instruction sets indicated by the corresponding bits are
c39ad13
+   used in program and they must be supported by the hardware.   */
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_NEEDED		0xc0000001
c39ad13
+/* X86 processor-specific features used in program.  */
c39ad13
+#define GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
c39ad13
+
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_486		(1U << 0)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_586		(1U << 1)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_686		(1U << 2)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSE		(1U << 3)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSE2		(1U << 4)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSE3		(1U << 5)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSSE3		(1U << 6)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSE4_1		(1U << 7)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_SSE4_2		(1U << 8)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX		(1U << 9)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX2		(1U << 10)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512F		(1U << 11)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512CD		(1U << 12)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512ER		(1U << 13)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512PF		(1U << 14)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512VL		(1U << 15)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512DQ		(1U << 16)
c39ad13
+#define GNU_PROPERTY_X86_ISA_1_AVX512BW		(1U << 17)
c39ad13
+
c39ad13
+/* This indicates that all executable sections are compatible with
c39ad13
+   IBT.  */
c39ad13
+#define GNU_PROPERTY_X86_FEATURE_1_IBT		(1U << 0)
c39ad13
+/* This indicates that all executable sections are compatible with
c39ad13
+   SHSTK.  */
c39ad13
+#define GNU_PROPERTY_X86_FEATURE_1_SHSTK	(1U << 1)
c39ad13
 
c39ad13
 /* Move records.  */
c39ad13
 typedef struct
c39ad13
@@ -3706,6 +3776,28 @@ enum
c39ad13
 
c39ad13
 #define R_TILEGX_NUM		130
c39ad13
 
c39ad13
+/* RISC-V ELF Flags */
c39ad13
+#define EF_RISCV_RVC 			0x0001
c39ad13
+#define EF_RISCV_FLOAT_ABI 		0x0006
c39ad13
+#define EF_RISCV_FLOAT_ABI_SOFT 	0x0000
c39ad13
+#define EF_RISCV_FLOAT_ABI_SINGLE 	0x0002
c39ad13
+#define EF_RISCV_FLOAT_ABI_DOUBLE 	0x0004
c39ad13
+#define EF_RISCV_FLOAT_ABI_QUAD 	0x0006
c39ad13
+
c39ad13
+/* RISC-V relocations.  */
c39ad13
+#define R_RISCV_NONE          0
c39ad13
+#define R_RISCV_32            1
c39ad13
+#define R_RISCV_64            2
c39ad13
+#define R_RISCV_RELATIVE      3
c39ad13
+#define R_RISCV_COPY          4
c39ad13
+#define R_RISCV_JUMP_SLOT     5
c39ad13
+#define R_RISCV_TLS_DTPMOD32  6
c39ad13
+#define R_RISCV_TLS_DTPMOD64  7
c39ad13
+#define R_RISCV_TLS_DTPREL32  8
c39ad13
+#define R_RISCV_TLS_DTPREL64  9
c39ad13
+#define R_RISCV_TLS_TPREL32  10
c39ad13
+#define R_RISCV_TLS_TPREL64  11
c39ad13
+
c39ad13
 /* BPF specific declarations.  */
c39ad13
 
c39ad13
 #define R_BPF_NONE		0	/* No reloc */