elf.h revision 2910f183ddd5286911bc1e3499ea93cb57de8b75
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _QEMU_ELF_H
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _QEMU_ELF_H
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <inttypes.h>
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 32-bit ELF base types. */
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t Elf32_Addr;
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint16_t Elf32_Half;
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t Elf32_Off;
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int32_t  Elf32_Sword;
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t Elf32_Word;
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 64-bit ELF base types. */
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t Elf64_Addr;
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint16_t Elf64_Half;
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int16_t	 Elf64_SHalf;
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t Elf64_Off;
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int32_t	 Elf64_Sword;
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t Elf64_Word;
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t Elf64_Xword;
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int64_t  Elf64_Sxword;
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These constants are for the segment types stored in the image headers */
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_NULL    0
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_LOAD    1
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_DYNAMIC 2
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_INTERP  3
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_NOTE    4
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_SHLIB   5
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_PHDR    6
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_LOPROC  0x70000000
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HIPROC  0x7fffffff
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_MIPS_REGINFO		0x70000000
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_MIPS_OPTIONS		0x70000001
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Flags in the e_flags field of the header */
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* MIPS architecture level. */
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_1		0x00000000	/* -mips1 code.  */
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_2		0x10000000	/* -mips2 code.  */
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_3		0x20000000	/* -mips3 code.  */
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_4		0x30000000	/* -mips4 code.  */
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_5		0x40000000	/* -mips5 code.  */
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_32		0x50000000	/* MIPS32 code.  */
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH_64		0x60000000	/* MIPS64 code.  */
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The ABI of a file. */
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ABI_O32		0x00001000	/* O32 ABI.  */
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ABI_O64		0x00002000	/* O32 extended for 64 bit.  */
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_NOREORDER 0x00000001
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_PIC       0x00000002
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_CPIC      0x00000004
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ABI2		0x00000020
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_OPTIONS_FIRST	0x00000080
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_32BITMODE	0x00000100
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ABI		0x0000f000
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_MIPS_ARCH      0xf0000000
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These constants define the different elf file types */
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_NONE   0
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_REL    1
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_EXEC   2
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_DYN    3
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_CORE   4
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_LOPROC 0xff00
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ET_HIPROC 0xffff
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These constants define the various ELF target machines */
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_NONE  0
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_M32   1
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_SPARC 2
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_386   3
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_68K   4
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_88K   5
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_486   6   /* Perhaps disused */
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_860   7
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_MIPS		8	/* MIPS R3000 (officially, big-endian only) */
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_MIPS_RS4_BE 10	/* MIPS R4000 big-endian */
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_PARISC      15	/* HPPA */
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_SPARC32PLUS 18	/* Sun's "v8plus" */
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_PPC	       20	/* PowerPC */
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_PPC64       21       /* PowerPC64 */
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_ARM		40		/* ARM */
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_SH	       42	/* SuperH */
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_SPARCV9     43	/* SPARC v9 64-bit */
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_IA_64	50	/* HP/Intel IA-64 */
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_X86_64	62	/* AMD x86-64 */
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_S390		22	/* IBM S/390 */
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_CRIS         76      /* Axis Communications 32-bit embedded processor */
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_V850		87	/* NEC v850 */
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_H8_300H      47      /* Hitachi H8/300H */
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_H8S          48      /* Hitachi H8S     */
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This is an interim value that we will use until the committee comes
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * up with a final number.
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_ALPHA	0x9026
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Bogus old v850 magic number, used by old tools.  */
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_CYGNUS_V850	0x9080
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This is the old interim value for S/390 architecture
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_S390_OLD     0xA390
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EM_XILINX_MICROBLAZE    0xBAAB
1235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is the info that is needed to parse the dynamic section of the file */
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_NULL		0
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_NEEDED	1
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTRELSZ	2
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTGOT	3
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_HASH		4
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_STRTAB	5
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMTAB	6
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELA		7
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELASZ	8
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELAENT	9
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_STRSZ	10
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMENT	11
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_INIT		12
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_FINI		13
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SONAME	14
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RPATH 	15
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMBOLIC	16
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_REL	        17
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELSZ	18
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELENT	19
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTREL	20
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_DEBUG	21
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_TEXTREL	22
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_JMPREL	23
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_LOPROC	0x70000000
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_HIPROC	0x7fffffff
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_RLD_VERSION	0x70000001
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_TIME_STAMP	0x70000002
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_ICHECKSUM	0x70000003
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_IVERSION	0x70000004
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_FLAGS		0x70000005
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_NONE		  0
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_HARDWAY		  1
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_NOTPOT		  2
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_BASE_ADDRESS	0x70000006
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_CONFLICT	0x70000008
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LIBLIST		0x70000009
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LOCAL_GOTNO	0x7000000a
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_CONFLICTNO	0x7000000b
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LIBLISTNO	0x70000010
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_SYMTABNO	0x70000011
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_UNREFEXTNO	0x70000012
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_GOTSYM		0x70000013
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_HIPAGENO	0x70000014
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_RLD_MAP		0x70000016
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This info is needed when parsing the symbol table */
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_LOCAL  0
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_GLOBAL 1
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_WEAK   2
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_NOTYPE  0
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_OBJECT  1
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_FUNC    2
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_SECTION 3
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_FILE    4
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF_ST_BIND(x)		((x) >> 4)
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF_ST_TYPE(x)		(((unsigned int) x) & 0xf)
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_ST_BIND(x)	ELF_ST_BIND(x)
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_ST_TYPE(x)	ELF_ST_TYPE(x)
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_ST_BIND(x)	ELF_ST_BIND(x)
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_ST_TYPE(x)	ELF_ST_TYPE(x)
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Symbolic values for the entries in the auxiliary table
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   put on the initial stack */
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_NULL   0	/* end of vector */
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_IGNORE 1	/* entry should be ignored */
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EXECFD 2	/* file descriptor of program */
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHDR   3	/* program headers for program */
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHENT  4	/* size of program header entry */
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHNUM  5	/* number of program headers */
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PAGESZ 6	/* system page size */
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_BASE   7	/* base address of interpreter */
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_FLAGS  8	/* flags */
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_ENTRY  9	/* entry point of program */
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_NOTELF 10	/* program is not ELF */
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_UID    11	/* real uid */
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EUID   12	/* effective uid */
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_GID    13	/* real gid */
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EGID   14	/* effective gid */
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PLATFORM 15  /* string identifying CPU for optimizations */
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_HWCAP  16    /* arch dependent hints at CPU capabilities */
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_CLKTCK 17	/* frequency at which times() increments */
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct dynamic{
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Sword d_tag;
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union{
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf32_Sword	d_val;
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf32_Addr	d_ptr;
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } d_un;
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Dyn;
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Sxword d_tag;		/* entry tag value */
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union {
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf64_Xword d_val;
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf64_Addr d_ptr;
2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } d_un;
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Dyn;
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The following are used with relocations */
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_R_SYM(x) ((x) >> 8)
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_R_TYPE(x) ((x) & 0xff)
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_SYM(i)			((i) >> 32)
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_TYPE(i)			((i) & 0xffffffff)
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_TYPE_DATA(i)            (((ELF64_R_TYPE(i) >> 8) ^ 0x00800000) - 0x00800000)
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_NONE	0
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_32	1
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_PC32	2
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOT32	3
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_PLT32	4
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_COPY	5
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GLOB_DAT	6
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_JMP_SLOT	7
2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_RELATIVE	8
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOTOFF	9
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOTPC	10
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_NUM	11
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_NONE		0
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_16		1
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_32		2
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_REL32		3
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_26		4
2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HI16		5
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LO16		6
2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GPREL16		7
2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LITERAL		8
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT16		9
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_PC16		10
2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALL16		11
2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GPREL32		12
2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The remaining relocs are defined on Irix, although they are not
2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   in the MIPS ELF ABI.  */
2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED1		13
2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED2		14
2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED3		15
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SHIFT5		16
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SHIFT6		17
2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_64		18
2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_DISP		19
2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_PAGE		20
2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_OFST		21
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following two relocation types are specified in the MIPS ABI
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * conformance guide version 1.2 but not yet in the psABI.
2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOTHI16		22
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOTLO16		23
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SUB		24
2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_INSERT_A		25
2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_INSERT_B		26
2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_DELETE		27
2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIGHER		28
2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIGHEST		29
2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following two relocation types are specified in the MIPS ABI
2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * conformance guide version 1.2 but not yet in the psABI.
2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALLHI16		30
2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALLLO16		31
2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This range is reserved for vendor specific relocations.
2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LOVENDOR		100
2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIVENDOR		127
2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Sparc ELF relocation types
2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_NONE		0
3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_8		1
3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_16		2
3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_32		3
3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP8		4
3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP16		5
3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP32		6
3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WDISP30		7
3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WDISP22		8
3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_HI22		9
3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_22		10
3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_13		11
3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_LO10		12
3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT10		13
3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT13		14
3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT22		15
3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_PC10		16
3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_PC22		17
3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WPLT30		18
3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_COPY		19
3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GLOB_DAT	20
3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_JMP_SLOT	21
3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_RELATIVE	22
3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_UA32		23
3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PLT32		24
3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HIPLT22		25
3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_LOPLT10		26
3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT32		27
3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT22		28
3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT10		29
3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_10		30
3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_11		31
3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_64		32
3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_OLO10           33
3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HH22            34
3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HM10            35
3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_LM22            36
3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_WDISP16		40
3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_WDISP19		41
3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_7		43
3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_5		44
3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_6		45
3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Bits present in AT_HWCAP, primarily for Sparc32.  */
3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_FLUSH       1    /* CPU supports flush instruction. */
3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_STBAR       2
3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_SWAP        4
3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_MULDIV      8
3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_V9		16
3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_ULTRA3	32
3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68k ELF relocation types
3538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_NONE	0
3558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_32	1
3568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_16	2
3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_8		3
3588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC32	4
3598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC16	5
3608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC8	6
3618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT32	7
3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT16	8
3638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT8	9
3648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT32O	10
3658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT16O	11
3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT8O	12
3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT32	13
3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT16	14
3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT8	15
3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT32O	16
3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT16O	17
3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT8O	18
3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_COPY	19
3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GLOB_DAT	20
3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_JMP_SLOT	21
3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_RELATIVE	22
3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Alpha ELF relocation types
3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_NONE            0       /* No reloc */
3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_REFLONG         1       /* Direct 32 bit */
3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_REFQUAD         2       /* Direct 64 bit */
3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPREL32         3       /* GP relative 32 bit */
3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_LITERAL         4       /* GP relative 16 bit w/optimization */
3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_LITUSE          5       /* Optimization hint for LITERAL */
3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPDISP          6       /* Add displacement to GP */
3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_BRADDR          7       /* PC+4 relative 23 bit shifted */
3898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_HINT            8       /* PC+4 relative 16 bit shifted */
3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL16          9       /* PC relative 16 bit */
3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL32          10      /* PC relative 32 bit */
3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL64          11      /* PC relative 64 bit */
3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPRELHIGH       17      /* GP relative 32 bit, high 16 bits */
3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPRELLOW        18      /* GP relative 32 bit, low 16 bits */
3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPREL16         19      /* GP relative 16 bit */
3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_COPY            24      /* Copy symbol at runtime */
3978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GLOB_DAT        25      /* Create GOT entry */
3988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_JMP_SLOT        26      /* Create PLT entry */
3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_RELATIVE        27      /* Adjust by program base */
4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_BRSGP		28
4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TLSGD           29
4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TLS_LDM         30
4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPMOD64        31
4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GOTDTPREL       32
4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPREL64        33
4068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPRELHI        34
4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPRELLO        35
4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPREL16        36
4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GOTTPREL        37
4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPREL64         38
4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPRELHI         39
4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPRELLO         40
4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPREL16         41
4148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ALPHA_GPREL		0x10000000
4168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PowerPC relocations defined by the ABIs */
4198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_NONE		0
4208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR32		1	/* 32bit absolute address */
4218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */
4228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16		3	/* 16bit absolute address */
4238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */
4248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */
4258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */
4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */
4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14_BRTAKEN	8
4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14_BRNTAKEN	9
4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL24		10	/* PC relative 26 bit */
4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14		11	/* PC relative 16 bit */
4318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14_BRTAKEN	12
4328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14_BRNTAKEN	13
4338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16		14
4348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_LO		15
4358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_HI		16
4368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_HA		17
4378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLTREL24		18
4388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_COPY		19
4398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GLOB_DAT		20
4408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_JMP_SLOT		21
4418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_RELATIVE		22
4428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_LOCAL24PC		23
4438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_UADDR32		24
4448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_UADDR16		25
4458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL32		26
4468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT32		27
4478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLTREL32		28
4488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_LO		29
4498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_HI		30
4508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_HA		31
4518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SDAREL16		32
4528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF		33
4538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_LO	34
4548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_HI	35
4558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_HA	36
4568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
4572910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#ifndef R_PPC_NUM
4588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_NUM		37
4592910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#endif
4608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM specific declarations */
4628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the ELF header e_flags field.  */
4648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_RELEXEC     0x01
4658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_HASENTRY    0x02
4668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_INTERWORK   0x04
4678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_APCS_26     0x08
4688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_APCS_FLOAT  0x10
4698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_PIC         0x20
4708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ALIGN8          0x40		/* 8-bit structure alignment is in use */
4718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_NEW_ABI         0x80
4728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_OLD_ABI         0x100
4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Additional symbol types for Thumb */
4758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_ARM_TFUNC      0xd
4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM-specific values for sh_flags */
4788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */
4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined
4808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   in the input to a link step */
4818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM-specific program header flags */
4838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_ARM_SB          0x10000000   /* Segment contains the location
4848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   addressed by the static base */
4858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM relocs.  */
4878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_NONE		0	/* No reloc */
4888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PC24		1	/* PC relative 26 bit branch */
4898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS32		2	/* Direct 32 bit  */
4908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_REL32		3	/* PC relative 32 bit */
4918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PC13		4
4928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS16		5	/* Direct 16 bit */
4938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS12		6	/* Direct 12 bit */
4948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_ABS5		7
4958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS8		8	/* Direct 8 bit */
4968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_SBREL32		9
4978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC22		10
4988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC8		11
4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_AMP_VCALL9	12
5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_SWI24		13
5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_SWI8		14
5028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_XPC25		15
5038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_XPC22		16
5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_COPY		20	/* Copy symbol at runtime */
5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GLOB_DAT		21	/* Create GOT entry */
5068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */
5078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RELATIVE		23	/* Adjust by program base */
5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */
5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */
5108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOT32		26	/* 32 bit GOT entry */
5118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PLT32		27	/* 32 bit PLT address */
5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_CALL              28
5138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_JUMP24            29
5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GNU_VTENTRY	100
5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GNU_VTINHERIT	101
5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC11		102	/* thumb unconditional branch */
5178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC9		103	/* thumb conditional branch */
5188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RXPC25		249
5198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RSBREL32		250
5208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_RPC22		251
5218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RREL32		252
5228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RABS22		253
5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RPC24		254
5248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RBASE		255
5258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_NUM		256
5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* s390 relocations defined by the ABIs */
5298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_NONE		0	/* No reloc.  */
5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_8			1	/* Direct 8 bit.  */
5318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_12		2	/* Direct 12 bit.  */
5328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_16		3	/* Direct 16 bit.  */
5338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_32		4	/* Direct 32 bit.  */
5348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC32		5	/* PC relative 32 bit.	*/
5358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT12		6	/* 12 bit GOT offset.  */
5368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT32		7	/* 32 bit GOT offset.  */
5378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */
5388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_COPY		9	/* Copy symbol at runtime.  */
5398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GLOB_DAT		10	/* Create GOT entry.  */
5408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_JMP_SLOT		11	/* Create PLT entry.  */
5418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_RELATIVE		12	/* Adjust by program base.  */
5428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */
5438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPC		14	/* 32 bit PC rel. offset to GOT.  */
5448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT16		15	/* 16 bit GOT offset.  */
5458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC16		16	/* PC relative 16 bit.	*/
5468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */
5478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */
5488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */
5498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */
5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */
5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_64		22	/* Direct 64 bit.  */
5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC64		23	/* PC relative 64 bit.	*/
5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT64		24	/* 64 bit GOT offset.  */
5548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */
5558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */
5568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */
5578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */
5588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/
5598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/
5608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/
5618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/
5628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */
5638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */
5648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */
5658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */
5668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code. */
5678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GDCALL	38	/* Tag for function call in general
5688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           dynamic TLS code.  */
5698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDCALL	39	/* Tag for function call in local
5708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           dynamic TLS code.  */
5718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic
5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data.  */
5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic
5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data.  */
5758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS
5768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
5778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS
5788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
5798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS
5808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
5818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic
5828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data in LD code.  */
5838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic
5848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data in LD code.  */
5858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for
5868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
5878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for
5888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
5898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for
5908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
5918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to
5928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           static TLS block.  */
5938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to
5948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           static TLS block.  */
5958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS
5968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
5978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS
5988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
5998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */
6008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.  */
6018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_TPOFF		56	/* Negate offset in static TLS
6028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
6038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
6048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_NUM	57
6058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* x86-64 relocation types */
6078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_NONE		0	/* No reloc */
6088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_64		1	/* Direct 64 bit  */
6098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC32		2	/* PC relative 32 bit signed */
6108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GOT32		3	/* 32 bit GOT entry */
6118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PLT32		4	/* 32 bit PLT address */
6128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_COPY		5	/* Copy symbol at runtime */
6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */
6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */
6158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_RELATIVE	8	/* Adjust by program base */
6168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GOTPCREL	9	/* 32 bit signed pc relative
6178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   offset to GOT */
6188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_32		10	/* Direct 32 bit zero extended */
6198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_32S		11	/* Direct 32 bit sign extended */
6208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_16		12	/* Direct 16 bit zero extended */
6218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */
6228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_8		14	/* Direct 8 bit sign extended  */
6238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */
6248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_NUM		16
6268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for e_flags field of Elf64_Ehdr.  */
6288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ALPHA_32BIT		1	/* All addresses are below 2GB */
6308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* HPPA specific definitions.  */
6328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for e_flags field of Elf32_Ehdr.  */
6348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */
6368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */
6378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */
6388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */
6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch
6408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					      prediction.  */
6418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */
6428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */
6438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */
6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */
6478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */
6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */
6498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Additional section indeces.  */
6518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared
6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					      symbols in ANSI C.  */
6548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */
6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for sh_type field of Elf32_Shdr.  */
6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */
6598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */
6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */
6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for sh_flags field of Elf32_Shdr.  */
6638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */
6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */
6668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */
6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for ST_TYPE subfield of st_info (symbol type).  */
6698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */
6718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_HP_STUB		(STT_LOOS + 0x2)
6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* HPPA relocs.  */
6768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_NONE		0	/* No reloc.  */
6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */
6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */
6808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */
6818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */
6828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */
6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */
6848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */
6858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */
6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */
6878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */
6888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */
6898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */
6908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */
6918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */
6928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */
6938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */
6948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */
6958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */
6968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */
6978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */
6988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */
6998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */
7008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */
7018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */
7028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_FPTR64		64	/* 64 bits function address.  */
7038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */
7048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */
7058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */
7068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */
7078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */
7088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */
7098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */
7108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */
7118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */
7128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */
7138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */
7148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */
7158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */
7168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */
7178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */
7188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */
7198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */
7208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */
7218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */
7228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */
7238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */
7248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */
7258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */
7268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */
7278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */
7288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */
7298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */
7308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */
7318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */
7328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */
7338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */
7348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */
7358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */
7368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */
7378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */
7388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */
7398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */
7408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */
7418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */
7428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LORESERVE	128
7438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_COPY		128	/* Copy relocation.  */
7448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */
7458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */
7468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */
7478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */
7488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */
7498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */
7508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/
7518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */
7528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */
7538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */
7548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */
7558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */
7568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */
7578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */
7588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */
7598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/
7608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/
7618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */
7628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */
7638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */
7648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_HIRESERVE	255
7658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */
7678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_TLS		(PT_LOOS + 0x0)
7698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
7708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
7718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
7728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
7738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
7748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
7758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
7768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
7778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
7788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
7798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
7808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
7818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
7828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_STACK		(PT_LOOS + 0x14)
7838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_PARISC_ARCHEXT	0x70000000
7858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_PARISC_UNWIND	0x70000001
7868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */
7888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_PARISC_SBP		0x08000000
7908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_PAGE_SIZE		0x00100000
7928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_FAR_SHARED	0x00200000
7938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_NEAR_SHARED	0x00400000
7948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_CODE		0x01000000
7958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_MODIFY		0x02000000
7968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_LAZYSWAP		0x04000000
7978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_SBP		0x08000000
7988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* IA-64 specific declarations.  */
8008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Ehdr e_flags field.  */
8028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */
8038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */
8048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */
8058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Phdr p_type field.  */
8078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */
8088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */
8098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Phdr p_flags field.  */
8118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */
8128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Shdr sh_type field.  */
8148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */
8158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */
8168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Shdr sh_flags field.  */
8188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_IA_64_SHORT		0x10000000	/* section near gp */
8198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */
8208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Dyn d_tag field.  */
8228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0)
8238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_IA_64_NUM		1
8248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* IA-64 relocations.  */
8268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_NONE		0x00	/* none */
8278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */
8288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */
8298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */
8308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */
8318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */
8328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */
8338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */
8348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */
8358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */
8368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */
8378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */
8388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */
8398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */
8408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */
8418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */
8428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */
8438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */
8448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */
8458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */
8468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */
8478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */
8488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */
8498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */
8508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */
8518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */
8528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */
8538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */
8548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */
8558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */
8568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */
8578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */
8588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */
8598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */
8608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */
8618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */
8628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */
8638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */
8648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */
8658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */
8668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */
8678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */
8688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */
8698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */
8708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */
8718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */
8728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */
8738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */
8748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */
8758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */
8768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */
8778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */
8788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */
8798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */
8808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */
8818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */
8828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */
8838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */
8848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */
8858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */
8868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_COPY		0x84	/* copy relocation */
8878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SUB		0x85	/* Addend and symbol difference */
8888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */
8898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */
8908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */
8918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */
8928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */
8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */
8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */
8958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */
8968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */
8978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */
8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */
8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */
9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */
9018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */
9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */
9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */
9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */
9058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */
9068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */
9078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_rel {
9098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	r_offset;
9108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	r_info;
9118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Rel;
9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_rel {
9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr r_offset;	/* Location at which to apply the action */
9158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword r_info;	/* index and type of relocation */
9168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Rel;
9178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_rela{
9198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	r_offset;
9208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	r_info;
9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Sword	r_addend;
9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Rela;
9238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_rela {
9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr r_offset;	/* Location at which to apply the action */
9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword r_info;	/* index and type of relocation */
9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Sxword r_addend;	/* Constant addend used to compute value */
9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Rela;
9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_sym{
9318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	st_name;
9328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	st_value;
9338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	st_size;
9348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_info;
9358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_other;
9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	st_shndx;
9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Sym;
9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_sym {
9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word st_name;		/* Symbol name, index in string tbl */
9418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_info;	/* Type and binding attributes */
9428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_other;	/* No defined meaning, 0 */
9438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half st_shndx;		/* Associated section index */
9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr st_value;		/* Value of the symbol */
9458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword st_size;		/* Associated symbol size */
9468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Sym;
9478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EI_NIDENT	16
9508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_hdr{
9528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	e_ident[EI_NIDENT];
9538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_type;
9548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_machine;
9558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	e_version;
9568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	e_entry;  /* Entry point */
9578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	e_phoff;
9588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	e_shoff;
9598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	e_flags;
9608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_ehsize;
9618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_phentsize;
9628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_phnum;
9638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shentsize;
9648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shnum;
9658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shstrndx;
9668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Ehdr;
9678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_hdr {
9698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	e_ident[16];		/* ELF "magic number" */
9708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_type;
9718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_machine;
9728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word e_version;
9738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr e_entry;		/* Entry point virtual address */
9748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off e_phoff;		/* Program header table file offset */
9758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off e_shoff;		/* Section header table file offset */
9768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word e_flags;
9778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_ehsize;
9788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_phentsize;
9798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_phnum;
9808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shentsize;
9818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shnum;
9828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shstrndx;
9838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Ehdr;
9848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These constants define the permissions on sections in the program
9868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   header, p_flags. */
9878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_R		0x4
9888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_W		0x2
9898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_X		0x1
9908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_phdr{
9928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_type;
9938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	p_offset;
9948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	p_vaddr;
9958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	p_paddr;
9968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_filesz;
9978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_memsz;
9988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_flags;
9998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_align;
10008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Phdr;
10018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_phdr {
10038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word p_type;
10048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word p_flags;
10058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off p_offset;		/* Segment file offset */
10068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr p_vaddr;		/* Segment virtual address */
10078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr p_paddr;		/* Segment physical address */
10088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_filesz;		/* Segment size in file */
10098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_memsz;		/* Segment size in memory */
10108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_align;		/* Segment alignment, file & memory */
10118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Phdr;
10128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* sh_type */
10148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NULL	0
10158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PROGBITS	1
10168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_SYMTAB	2
10178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_STRTAB	3
10188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_RELA	4
10198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HASH	5
10208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_DYNAMIC	6
10218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NOTE	7
10228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NOBITS	8
10238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_REL		9
10248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_SHLIB	10
10258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_DYNSYM	11
10268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NUM		12
10278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_LOPROC	0x70000000
10288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HIPROC	0x7fffffff
10298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_LOUSER	0x80000000
10308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HIUSER	0xffffffff
10318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_LIST		0x70000000
10328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_CONFLICT	0x70000002
10338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_GPTAB		0x70000003
10348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_UCODE		0x70000004
10358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* sh_flags */
10378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_WRITE	0x1
10388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ALLOC	0x2
10398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_EXECINSTR	0x4
10408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_MASKPROC	0xf0000000
10418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_MIPS_GPREL	0x10000000
10428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* special section indexes */
10448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_UNDEF	0
10458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_LORESERVE	0xff00
10468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_LOPROC	0xff00
10478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_HIPROC	0xff1f
10488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_ABS		0xfff1
10498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_COMMON	0xfff2
10508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_HIRESERVE	0xffff
10518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_MIPS_ACCOMON	0xff00
10528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_shdr {
10548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_name;
10558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_type;
10568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_flags;
10578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	sh_addr;
10588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	sh_offset;
10598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_size;
10608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_link;
10618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_info;
10628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_addralign;
10638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_entsize;
10648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Shdr;
10658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_shdr {
10678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_name;		/* Section name, index in string tbl */
10688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_type;		/* Type of section */
10698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_flags;		/* Miscellaneous section attributes */
10708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr sh_addr;		/* Section virtual addr at execution */
10718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off sh_offset;		/* Section file offset */
10728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_size;		/* Size of section in bytes */
10738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_link;		/* Index of another section */
10748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_info;		/* Additional section information */
10758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_addralign;	/* Section alignment */
10768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_entsize;	/* Entry size if section holds table */
10778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Shdr;
10788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG0		0		/* e_ident[] indexes */
10808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG1		1
10818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG2		2
10828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG3		3
10838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_CLASS	4
10848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_DATA		5
10858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_VERSION	6
10865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	EI_OSABI	7
10875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	EI_PAD		8
10885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
10895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_NONE           0       /* UNIX System V ABI */
10905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_SYSV           0       /* Alias.  */
10915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_HPUX           1       /* HP-UX */
10925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_NETBSD         2       /* NetBSD.  */
10935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_LINUX          3       /* Linux.  */
10945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_SOLARIS        6       /* Sun Solaris.  */
10955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_AIX            7       /* IBM AIX.  */
10965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_IRIX           8       /* SGI Irix.  */
10975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_FREEBSD        9       /* FreeBSD.  */
10985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_TRU64          10      /* Compaq TRU64 UNIX.  */
10995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_MODESTO        11      /* Novell Modesto.  */
11005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_OPENBSD        12      /* OpenBSD.  */
11015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_ARM            97      /* ARM */
11025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_STANDALONE     255     /* Standalone (embedded) application */
11038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG0		0x7f		/* EI_MAG */
11058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG1		'E'
11068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG2		'L'
11078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG3		'F'
11088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG		"\177ELF"
11098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SELFMAG		4
11108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASSNONE	0		/* EI_CLASS */
11128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASS32	1
11138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASS64	2
11148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASSNUM	3
11158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATANONE	0		/* e_ident[EI_DATA] */
11178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATA2LSB	1
11188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATA2MSB	2
11198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_NONE		0		/* e_version, EI_VERSION */
11218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_CURRENT	1
11228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_NUM		2
11238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Notes used in ET_CORE */
11258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRSTATUS	1
11268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRFPREG	2
11278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRPSINFO	3
11288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_TASKSTRUCT	4
11295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define NT_AUXV		6
11308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRXFPREG     0x46e62b7f      /* copied from gdb5.1/include/elf/common.h */
11318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note header in a PT_NOTE section */
11348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_note {
11358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_namesz;	/* Name size */
11368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_descsz;	/* Content size */
11378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_type;		/* Content type */
11388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Nhdr;
11398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note header in a PT_NOTE section */
11418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_note {
11428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_namesz;	/* Name size */
11438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_descsz;	/* Content size */
11448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_type;	/* Content type */
11458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Nhdr;
11468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_CLASS
11488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if ELF_CLASS == ELFCLASS32
11498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elfhdr		elf32_hdr
11518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_phdr	elf32_phdr
11528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_note	elf32_note
11538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_shdr	elf32_shdr
11548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_sym		elf32_sym
11558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_addr_t	Elf32_Off
11568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_USES_RELOCA
11588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf32_Rela
11598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
11608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf32_Rel
11618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
11628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
11648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elfhdr		elf64_hdr
11668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_phdr	elf64_phdr
11678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_note	elf64_note
11688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_shdr	elf64_shdr
11698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_sym		elf64_sym
11708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_addr_t	Elf64_Off
11718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_USES_RELOCA
11738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf64_Rela
11748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
11758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf64_Rel
11768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
11778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ELF_CLASS */
11798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef ElfW
11818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if ELF_CLASS == ELFCLASS32
11828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ElfW(x)  Elf32_ ## x
11838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ELFW(x)  ELF32_ ## x
11848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else
11858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ElfW(x)  Elf64_ ## x
11868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ELFW(x)  ELF64_ ## x
11878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
11888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
11898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ELF_CLASS */
11918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _QEMU_ELF_H */
1194