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     */
10717410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner#define EM_LATTICEMICO32 138    /* LatticeMico32 */
10817410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner
1090dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EM_OPENRISC     92        /* OpenCores OpenRISC */
1100dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
11117410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner#define EM_UNICORE32    110     /* UniCore32 */
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This is an interim value that we will use until the committee comes
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * up with a final number.
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_ALPHA	0x9026
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Bogus old v850 magic number, used by old tools.  */
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_CYGNUS_V850	0x9080
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This is the old interim value for S/390 architecture
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EM_S390_OLD     0xA390
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
127e81106dda32dcf982eff8d080cc194faf9851172David Turner#define EM_MICROBLAZE      189
128e81106dda32dcf982eff8d080cc194faf9851172David Turner#define EM_MICROBLAZE_OLD  0xBAAB
1295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1300dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EM_XTENSA   94      /* Tensilica Xtensa */
1310dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
1320dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EM_AARCH64  183
1330dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is the info that is needed to parse the dynamic section of the file */
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_NULL		0
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_NEEDED	1
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTRELSZ	2
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTGOT	3
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_HASH		4
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_STRTAB	5
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMTAB	6
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELA		7
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELASZ	8
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELAENT	9
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_STRSZ	10
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMENT	11
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_INIT		12
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_FINI		13
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SONAME	14
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RPATH 	15
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_SYMBOLIC	16
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_REL	        17
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELSZ	18
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_RELENT	19
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PLTREL	20
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_DEBUG	21
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_TEXTREL	22
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_JMPREL	23
159e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_BINDNOW	24
160e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_INIT_ARRAY	25
161e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_FINI_ARRAY	26
162e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_INIT_ARRAYSZ	27
163e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_FINI_ARRAYSZ	28
164e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_RUNPATH	29
165e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_FLAGS	30
166e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_LOOS		0x6000000d
167e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_HIOS		0x6ffff000
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_LOPROC	0x70000000
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_HIPROC	0x7fffffff
170e81106dda32dcf982eff8d080cc194faf9851172David Turner
171e81106dda32dcf982eff8d080cc194faf9851172David Turner/* DT_ entries which fall between DT_VALRNGLO and DT_VALRNDHI use
172e81106dda32dcf982eff8d080cc194faf9851172David Turner   the d_val field of the Elf*_Dyn structure.  I.e. they contain scalars.  */
173e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VALRNGLO	0x6ffffd00
174e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VALRNGHI	0x6ffffdff
175e81106dda32dcf982eff8d080cc194faf9851172David Turner
176e81106dda32dcf982eff8d080cc194faf9851172David Turner/* DT_ entries which fall between DT_ADDRRNGLO and DT_ADDRRNGHI use
177e81106dda32dcf982eff8d080cc194faf9851172David Turner   the d_ptr field of the Elf*_Dyn structure.  I.e. they contain pointers.  */
178e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_ADDRRNGLO	0x6ffffe00
179e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_ADDRRNGHI	0x6ffffeff
180e81106dda32dcf982eff8d080cc194faf9851172David Turner
181e81106dda32dcf982eff8d080cc194faf9851172David Turner#define	DT_VERSYM	0x6ffffff0
182e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_RELACOUNT	0x6ffffff9
183e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_RELCOUNT	0x6ffffffa
184e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_FLAGS_1	0x6ffffffb
185e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VERDEF	0x6ffffffc
186e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VERDEFNUM	0x6ffffffd
187e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VERNEED	0x6ffffffe
188e81106dda32dcf982eff8d080cc194faf9851172David Turner#define DT_VERNEEDNUM	0x6fffffff
189e81106dda32dcf982eff8d080cc194faf9851172David Turner
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_RLD_VERSION	0x70000001
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_TIME_STAMP	0x70000002
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_ICHECKSUM	0x70000003
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_IVERSION	0x70000004
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_FLAGS		0x70000005
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_NONE		  0
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_HARDWAY		  1
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  #define RHF_NOTPOT		  2
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_BASE_ADDRESS	0x70000006
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_CONFLICT	0x70000008
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LIBLIST		0x70000009
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LOCAL_GOTNO	0x7000000a
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_CONFLICTNO	0x7000000b
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_LIBLISTNO	0x70000010
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_SYMTABNO	0x70000011
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_UNREFEXTNO	0x70000012
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_GOTSYM		0x70000013
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_HIPAGENO	0x70000014
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_MIPS_RLD_MAP		0x70000016
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This info is needed when parsing the symbol table */
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_LOCAL  0
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_GLOBAL 1
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STB_WEAK   2
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_NOTYPE  0
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_OBJECT  1
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_FUNC    2
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_SECTION 3
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_FILE    4
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF_ST_BIND(x)		((x) >> 4)
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF_ST_TYPE(x)		(((unsigned int) x) & 0xf)
2230dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define ELF_ST_INFO(bind, type) (((bind) << 4) | ((type) & 0xf))
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_ST_BIND(x)	ELF_ST_BIND(x)
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_ST_TYPE(x)	ELF_ST_TYPE(x)
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_ST_BIND(x)	ELF_ST_BIND(x)
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_ST_TYPE(x)	ELF_ST_TYPE(x)
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Symbolic values for the entries in the auxiliary table
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   put on the initial stack */
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_NULL   0	/* end of vector */
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_IGNORE 1	/* entry should be ignored */
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EXECFD 2	/* file descriptor of program */
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHDR   3	/* program headers for program */
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHENT  4	/* size of program header entry */
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PHNUM  5	/* number of program headers */
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PAGESZ 6	/* system page size */
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_BASE   7	/* base address of interpreter */
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_FLAGS  8	/* flags */
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_ENTRY  9	/* entry point of program */
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_NOTELF 10	/* program is not ELF */
2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_UID    11	/* real uid */
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EUID   12	/* effective uid */
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_GID    13	/* real gid */
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_EGID   14	/* effective gid */
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_PLATFORM 15  /* string identifying CPU for optimizations */
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_HWCAP  16    /* arch dependent hints at CPU capabilities */
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AT_CLKTCK 17	/* frequency at which times() increments */
249e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_FPUCW  18	/* info about fpu initialization by kernel */
250e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_DCACHEBSIZE	19	/* data cache block size */
251e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_ICACHEBSIZE	20	/* instruction cache block size */
252e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_UCACHEBSIZE	21	/* unified cache block size */
253e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_IGNOREPPC	22	/* ppc only; entry should be ignored */
254e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_SECURE	23	/* boolean, was exec suid-like? */
255e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_BASE_PLATFORM 24	/* string identifying real platforms */
256e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_RANDOM	25	/* address of 16 random bytes */
257e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_EXECFN	31	/* filename of the executable */
258e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_SYSINFO	32	/* address of kernel entry point */
259e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_SYSINFO_EHDR	33	/* address of kernel vdso */
260e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_L1I_CACHESHAPE 34	/* shapes of the caches: */
261e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_L1D_CACHESHAPE 35	/*   bits 0-3: cache associativity.  */
262e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_L2_CACHESHAPE  36	/*   bits 4-7: log2 of line size.  */
263e81106dda32dcf982eff8d080cc194faf9851172David Turner#define AT_L3_CACHESHAPE  37	/*   val&~255: cache size.  */
2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct dynamic{
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Sword d_tag;
2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union{
2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf32_Sword	d_val;
2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf32_Addr	d_ptr;
2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } d_un;
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Dyn;
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Sxword d_tag;		/* entry tag value */
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union {
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf64_Xword d_val;
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    Elf64_Addr d_ptr;
2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } d_un;
2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Dyn;
2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The following are used with relocations */
2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_R_SYM(x) ((x) >> 8)
2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF32_R_TYPE(x) ((x) & 0xff)
2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_SYM(i)			((i) >> 32)
2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_TYPE(i)			((i) & 0xffffffff)
2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELF64_R_TYPE_DATA(i)            (((ELF64_R_TYPE(i) >> 8) ^ 0x00800000) - 0x00800000)
2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_NONE	0
2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_32	1
2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_PC32	2
2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOT32	3
2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_PLT32	4
2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_COPY	5
2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GLOB_DAT	6
2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_JMP_SLOT	7
2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_RELATIVE	8
2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOTOFF	9
2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_GOTPC	10
3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_386_NUM	11
3019251866320b5f8329a043bb56b3a794f78d12849David 'Digit' Turner/* Not a dynamic reloc, so not included in R_386_NUM.  Used in TCG.  */
3029251866320b5f8329a043bb56b3a794f78d12849David 'Digit' Turner#define R_386_PC8	23
3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_NONE		0
3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_16		1
3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_32		2
3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_REL32		3
3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_26		4
3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HI16		5
3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LO16		6
3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GPREL16		7
3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LITERAL		8
3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT16		9
3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_PC16		10
3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALL16		11
3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GPREL32		12
3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The remaining relocs are defined on Irix, although they are not
3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   in the MIPS ELF ABI.  */
3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED1		13
3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED2		14
3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_UNUSED3		15
3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SHIFT5		16
3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SHIFT6		17
3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_64		18
3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_DISP		19
3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_PAGE		20
3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOT_OFST		21
3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following two relocation types are specified in the MIPS ABI
3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * conformance guide version 1.2 but not yet in the psABI.
3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOTHI16		22
3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_GOTLO16		23
3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_SUB		24
3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_INSERT_A		25
3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_INSERT_B		26
3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_DELETE		27
3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIGHER		28
3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIGHEST		29
3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following two relocation types are specified in the MIPS ABI
3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * conformance guide version 1.2 but not yet in the psABI.
3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALLHI16		30
3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_CALLLO16		31
3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This range is reserved for vendor specific relocations.
3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_LOVENDOR		100
3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_MIPS_HIVENDOR		127
3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3530dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* SUN SPARC specific definitions.  */
3540dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
3550dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Values for Elf64_Ehdr.e_flags.  */
3560dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
3570dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARCV9_MM           3
3580dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARCV9_TSO          0
3590dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARCV9_PSO          1
3600dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARCV9_RMO          2
3610dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_LEDATA         0x800000 /* little endian data */
3620dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_EXT_MASK       0xFFFF00
3630dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_32PLUS         0x000100 /* generic V8+ features */
3640dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_SUN_US1        0x000200 /* Sun UltraSPARC1 extensions */
3650dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_HAL_R1         0x000400 /* HAL R1 extensions */
3660dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_SPARC_SUN_US3        0x000800 /* Sun UltraSPARCIII extensions */
3670dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Sparc ELF relocation types
3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_NONE		0
3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_8		1
3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_16		2
3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_32		3
3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP8		4
3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP16		5
3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_DISP32		6
3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WDISP30		7
3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WDISP22		8
3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_HI22		9
3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_22		10
3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_13		11
3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_LO10		12
3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT10		13
3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT13		14
3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GOT22		15
3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_PC10		16
3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_PC22		17
3898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_WPLT30		18
3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_COPY		19
3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_GLOB_DAT	20
3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_JMP_SLOT	21
3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_RELATIVE	22
3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	R_SPARC_UA32		23
3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PLT32		24
3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HIPLT22		25
3978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_LOPLT10		26
3988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT32		27
3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT22		28
4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_PCPLT10		29
4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_10		30
4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_11		31
4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_64		32
4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_OLO10           33
4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HH22            34
4068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_HM10            35
4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_LM22            36
4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_WDISP16		40
4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_WDISP19		41
4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_7		43
4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_5		44
4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_SPARC_6		45
4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4140dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Bits present in AT_HWCAP for ARM.  */
4150dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4160dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_SWP           (1 << 0)
4170dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_HALF          (1 << 1)
4180dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_THUMB         (1 << 2)
4190dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_26BIT         (1 << 3)
4200dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_FAST_MULT     (1 << 4)
4210dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_FPA           (1 << 5)
4220dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_VFP           (1 << 6)
4230dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_EDSP          (1 << 7)
4240dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_JAVA          (1 << 8)
4250dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_IWMMXT        (1 << 9)
4260dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_CRUNCH        (1 << 10)
4270dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_THUMBEE       (1 << 11)
4280dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_NEON          (1 << 12)
4290dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_VFPv3         (1 << 13)
4300dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_VFPv3D16      (1 << 14)       /* also set for VFPv4-D16 */
4310dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_TLS           (1 << 15)
4320dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_VFPv4         (1 << 16)
4330dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_IDIVA         (1 << 17)
4340dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_ARM_IDIVT         (1 << 18)
4350dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_IDIV              (HWCAP_IDIVA | HWCAP_IDIVT)
4360dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_VFPD32            (1 << 19)       /* set if VFP has 32 regs */
4370dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_LPAE              (1 << 20)
4380dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4390dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Bits present in AT_HWCAP for PowerPC.  */
4400dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4410dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_32                  0x80000000
4420dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_64                  0x40000000
4430dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_601_INSTR           0x20000000
4440dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_ALTIVEC         0x10000000
4450dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_FPU             0x08000000
4460dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_MMU             0x04000000
4470dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_4xxMAC          0x02000000
4480dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_UNIFIED_CACHE       0x01000000
4490dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_SPE             0x00800000
4500dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_EFP_SINGLE      0x00400000
4510dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_EFP_DOUBLE      0x00200000
4520dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_NO_TB               0x00100000
4530dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_POWER4              0x00080000
4540dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_POWER5              0x00040000
4550dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_POWER5_PLUS         0x00020000
4560dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_CELL                0x00010000
4570dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_BOOKE               0x00008000
4580dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_SMT                 0x00004000
4590dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_ICACHE_SNOOP        0x00002000
4600dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_ARCH_2_05           0x00001000
4610dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_PA6T                0x00000800
4620dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_DFP             0x00000400
4630dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_POWER6_EXT          0x00000200
4640dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_ARCH_2_06           0x00000100
4650dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_HAS_VSX             0x00000080
4660dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4670dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_PSERIES_PERFMON_COMPAT \
4680dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner                                        0x00000040
4690dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4700dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_TRUE_LE             0x00000002
4710dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PPC_FEATURE_PPC_LE              0x00000001
4720dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Bits present in AT_HWCAP, primarily for Sparc32.  */
4748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_FLUSH       1    /* CPU supports flush instruction. */
4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_STBAR       2
4778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_SWAP        4
4788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_MULDIV      8
4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_V9		16
4808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HWCAP_SPARC_ULTRA3	32
4818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4820dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Bits present in AT_HWCAP for s390.  */
4830dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4840dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_ESAN3        1
4850dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_ZARCH        2
4860dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_STFLE        4
4870dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_MSA          8
4880dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_LDISP        16
4890dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_EIMM         32
4900dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_DFP          64
4910dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_HPAGE        128
4920dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_ETF3EH       256
4930dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_HIGH_GPRS    512
4940dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define HWCAP_S390_TE           1024
4950dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
4968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
4978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68k ELF relocation types
4988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_NONE	0
5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_32	1
5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_16	2
5028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_8		3
5038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC32	4
5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC16	5
5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PC8	6
5068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT32	7
5078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT16	8
5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT8	9
5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT32O	10
5108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT16O	11
5118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GOT8O	12
5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT32	13
5138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT16	14
5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT8	15
5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT32O	16
5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT16O	17
5178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_PLT8O	18
5188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_COPY	19
5198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_GLOB_DAT	20
5208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_JMP_SLOT	21
5218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_68K_RELATIVE	22
5228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
5248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Alpha ELF relocation types
5258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_NONE            0       /* No reloc */
5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_REFLONG         1       /* Direct 32 bit */
5288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_REFQUAD         2       /* Direct 64 bit */
5298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPREL32         3       /* GP relative 32 bit */
5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_LITERAL         4       /* GP relative 16 bit w/optimization */
5318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_LITUSE          5       /* Optimization hint for LITERAL */
5328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPDISP          6       /* Add displacement to GP */
5338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_BRADDR          7       /* PC+4 relative 23 bit shifted */
5348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_HINT            8       /* PC+4 relative 16 bit shifted */
5358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL16          9       /* PC relative 16 bit */
5368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL32          10      /* PC relative 32 bit */
5378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_SREL64          11      /* PC relative 64 bit */
5388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPRELHIGH       17      /* GP relative 32 bit, high 16 bits */
5398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPRELLOW        18      /* GP relative 32 bit, low 16 bits */
5408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GPREL16         19      /* GP relative 16 bit */
5418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_COPY            24      /* Copy symbol at runtime */
5428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GLOB_DAT        25      /* Create GOT entry */
5438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_JMP_SLOT        26      /* Create PLT entry */
5448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_RELATIVE        27      /* Adjust by program base */
5458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_BRSGP		28
5468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TLSGD           29
5478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TLS_LDM         30
5488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPMOD64        31
5498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GOTDTPREL       32
5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPREL64        33
5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPRELHI        34
5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPRELLO        35
5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_DTPREL16        36
5548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_GOTTPREL        37
5558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPREL64         38
5568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPRELHI         39
5578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPRELLO         40
5588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ALPHA_TPREL16         41
5598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ALPHA_GPREL		0x10000000
5618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PowerPC relocations defined by the ABIs */
5648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_NONE		0
5658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR32		1	/* 32bit absolute address */
5668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */
5678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16		3	/* 16bit absolute address */
5688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */
5698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */
5708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */
5718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */
5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14_BRTAKEN	8
5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_ADDR14_BRNTAKEN	9
5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL24		10	/* PC relative 26 bit */
5758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14		11	/* PC relative 16 bit */
5768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14_BRTAKEN	12
5778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL14_BRNTAKEN	13
5788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16		14
5798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_LO		15
5808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_HI		16
5818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GOT16_HA		17
5828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLTREL24		18
5838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_COPY		19
5848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_GLOB_DAT		20
5858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_JMP_SLOT		21
5868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_RELATIVE		22
5878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_LOCAL24PC		23
5888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_UADDR32		24
5898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_UADDR16		25
5908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_REL32		26
5918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT32		27
5928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLTREL32		28
5938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_LO		29
5948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_HI		30
5958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_PLT16_HA		31
5968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SDAREL16		32
5978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF		33
5988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_LO	34
5998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_HI	35
6008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_SECTOFF_HA	36
6018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
6022910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#ifndef R_PPC_NUM
6038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PPC_NUM		37
6042910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#endif
6058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM specific declarations */
6078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the ELF header e_flags field.  */
6098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_RELEXEC     0x01
6108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_HASENTRY    0x02
6118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_INTERWORK   0x04
6128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_APCS_26     0x08
6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_APCS_FLOAT  0x10
6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ARM_PIC         0x20
6158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ALIGN8          0x40		/* 8-bit structure alignment is in use */
6168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_NEW_ABI         0x80
6178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_OLD_ABI         0x100
6180dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_SOFT_FLOAT  0x200
6190dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_VFP_FLOAT   0x400
6200dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_MAVERICK_FLOAT 0x800
6210dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
6220dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Other constants defined in the ARM ELF spec. version B-01.  */
6230dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_SYMSARESORTED 0x04       /* NB conflicts with EF_INTERWORK */
6240dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_DYNSYMSUSESEGIDX 0x08    /* NB conflicts with EF_APCS26 */
6250dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_MAPSYMSFIRST 0x10        /* NB conflicts with EF_APCS_FLOAT */
6260dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABIMASK      0xFF000000
6270dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
6280dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Constants defined in AAELF.  */
6290dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_BE8          0x00800000
6300dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_LE8          0x00400000
6310dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
6320dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
6330dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_UNKNOWN  0x00000000
6340dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VER1     0x01000000
6350dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VER2     0x02000000
6360dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VER3     0x03000000
6370dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VER4     0x04000000
6380dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define EF_ARM_EABI_VER5     0x05000000
6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Additional symbol types for Thumb */
6418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_ARM_TFUNC      0xd
6428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM-specific values for sh_flags */
6448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */
6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined
6468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   in the input to a link step */
6478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM-specific program header flags */
6498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_ARM_SB          0x10000000   /* Segment contains the location
6508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   addressed by the static base */
6518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ARM relocs.  */
6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_NONE		0	/* No reloc */
6548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PC24		1	/* PC relative 26 bit branch */
6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS32		2	/* Direct 32 bit  */
6568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_REL32		3	/* PC relative 32 bit */
6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PC13		4
6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS16		5	/* Direct 16 bit */
6598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS12		6	/* Direct 12 bit */
6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_ABS5		7
6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_ABS8		8	/* Direct 8 bit */
6628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_SBREL32		9
6638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC22		10
6648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC8		11
6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_AMP_VCALL9	12
6668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_SWI24		13
6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_SWI8		14
6688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_XPC25		15
6698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_XPC22		16
6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_COPY		20	/* Copy symbol at runtime */
6718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GLOB_DAT		21	/* Create GOT entry */
6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */
6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RELATIVE		23	/* Adjust by program base */
6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */
6758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */
6768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GOT32		26	/* 32 bit GOT entry */
6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_PLT32		27	/* 32 bit PLT address */
6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_CALL              28
6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_JUMP24            29
6808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GNU_VTENTRY	100
6818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_GNU_VTINHERIT	101
6828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC11		102	/* thumb unconditional branch */
6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_PC9		103	/* thumb conditional branch */
6848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RXPC25		249
6858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RSBREL32		250
6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_THM_RPC22		251
6878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RREL32		252
6888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RABS22		253
6898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RPC24		254
6908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_RBASE		255
6918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
6928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_ARM_NUM		256
6938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6940dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* ARM Aarch64 relocation types */
6950dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_NONE                256 /* also accepts R_ARM_NONE (0) */
6960dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* static data relocations */
6970dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ABS64               257
6980dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ABS32               258
6990dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ABS16               259
7000dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_PREL64              260
7010dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_PREL32              261
7020dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_PREL16              262
7030dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* static aarch64 group relocations */
7040dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* group relocs to create unsigned data value or address inline */
7050dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G0        263
7060dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G0_NC     264
7070dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G1        265
7080dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G1_NC     266
7090dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G2        267
7100dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G2_NC     268
7110dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_UABS_G3        269
7120dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* group relocs to create signed data or offset value inline */
7130dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_SABS_G0        270
7140dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_SABS_G1        271
7150dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_SABS_G2        272
7160dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* relocs to generate 19, 21, and 33 bit PC-relative addresses */
7170dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LD_PREL_LO19        273
7180dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ADR_PREL_LO21       274
7190dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ADR_PREL_PG_HI21    275
7200dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
7210dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ADD_ABS_LO12_NC     277
7220dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LDST8_ABS_LO12_NC   278
7230dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LDST16_ABS_LO12_NC  284
7240dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LDST32_ABS_LO12_NC  285
7250dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LDST64_ABS_LO12_NC  286
7260dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LDST128_ABS_LO12_NC 299
7270dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* relocs for control-flow - all offsets as multiple of 4 */
7280dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TSTBR14             279
7290dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_CONDBR19            280
7300dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_JUMP26              282
7310dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_CALL26              283
7320dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* group relocs to create pc-relative offset inline */
7330dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G0        287
7340dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G0_NC     288
7350dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G1        289
7360dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G1_NC     290
7370dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G2        291
7380dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G2_NC     292
7390dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_PREL_G3        293
7400dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* group relocs to create a GOT-relative offset inline */
7410dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G0      300
7420dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G0_NC   301
7430dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G1      302
7440dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G1_NC   303
7450dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G2      304
7460dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G2_NC   305
7470dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_MOVW_GOTOFF_G3      306
7480dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* GOT-relative data relocs */
7490dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_GOTREL64            307
7500dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_GOTREL32            308
7510dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* GOT-relative instr relocs */
7520dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_GOT_LD_PREL19       309
7530dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LD64_GOTOFF_LO15    310
7540dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_ADR_GOT_PAGE        311
7550dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LD64_GOT_LO12_NC    312
7560dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_LD64_GOTPAGE_LO15   313
7570dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* General Dynamic TLS relocations */
7580dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSGD_ADR_PREL21            512
7590dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSGD_ADR_PAGE21            513
7600dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSGD_ADD_LO12_NC           514
7610dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSGD_MOVW_G1               515
7620dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSGD_MOVW_G0_NC            516
7630dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Local Dynamic TLS relocations */
7640dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADR_PREL21            517
7650dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADR_PAGE21            518
7660dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADD_LO12_NC           519
7670dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_G1               520
7680dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_G0_NC            521
7690dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LD_PREL19             522
7700dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_DTPREL_G2        523
7710dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_DTPREL_G1        524
7720dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC     525
7730dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_DTPREL_G0        526
7740dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC     527
7750dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADD_DTPREL_HI12       528
7760dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADD_DTPREL_LO12       529
7770dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC    530
7780dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12     531
7790dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC  532
7800dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12    533
7810dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534
7820dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12    535
7830dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536
7840dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12    537
7850dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538
7860dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* initial exec TLS relocations */
7870dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1      539
7880dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC   540
7890dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21   541
7900dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542
7910dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19    543
7920dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* local exec TLS relocations */
7930dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_MOVW_TPREL_G2         544
7940dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_MOVW_TPREL_G1         545
7950dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC      546
7960dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_MOVW_TPREL_G0         547
7970dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC      548
7980dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_ADD_TPREL_HI12        549
7990dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_ADD_TPREL_LO12        550
8000dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC     551
8010dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST8_TPREL_LO12      552
8020dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC   553
8030dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST16_TPREL_LO12     554
8040dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC  555
8050dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST32_TPREL_LO12     556
8060dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC  557
8070dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST64_TPREL_LO12     558
8080dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC  559
8090dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Dynamic Relocations */
8100dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_COPY         1024
8110dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_GLOB_DAT     1025
8120dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_JUMP_SLOT    1026
8130dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_RELATIVE     1027
8140dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_DTPREL64 1028
8150dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_DTPMOD64 1029
8160dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_TPREL64  1030
8170dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_DTPREL32 1031
8180dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_DTPMOD32 1032
8190dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define R_AARCH64_TLS_TPREL32  1033
8200dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
8218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* s390 relocations defined by the ABIs */
8228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_NONE		0	/* No reloc.  */
8238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_8			1	/* Direct 8 bit.  */
8248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_12		2	/* Direct 12 bit.  */
8258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_16		3	/* Direct 16 bit.  */
8268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_32		4	/* Direct 32 bit.  */
8278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC32		5	/* PC relative 32 bit.	*/
8288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT12		6	/* 12 bit GOT offset.  */
8298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT32		7	/* 32 bit GOT offset.  */
8308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */
8318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_COPY		9	/* Copy symbol at runtime.  */
8328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GLOB_DAT		10	/* Create GOT entry.  */
8338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_JMP_SLOT		11	/* Create PLT entry.  */
8348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_RELATIVE		12	/* Adjust by program base.  */
8358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */
8368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPC		14	/* 32 bit PC rel. offset to GOT.  */
8378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT16		15	/* 16 bit GOT offset.  */
8388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC16		16	/* PC relative 16 bit.	*/
8398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */
8408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */
8418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */
8428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */
8438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */
8448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_64		22	/* Direct 64 bit.  */
8458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PC64		23	/* PC relative 64 bit.	*/
8468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOT64		24	/* 64 bit GOT offset.  */
8478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */
8488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */
8498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */
8508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */
8518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/
8528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/
8538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/
8548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/
8558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */
8568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */
8578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */
8588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */
8598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code. */
8608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GDCALL	38	/* Tag for function call in general
8618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           dynamic TLS code.  */
8628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDCALL	39	/* Tag for function call in local
8638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           dynamic TLS code.  */
8648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic
8658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data.  */
8668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic
8678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data.  */
8688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS
8698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
8708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS
8718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
8728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS
8738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block offset.  */
8748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic
8758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data in LD code.  */
8768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic
8778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           thread local data in LD code.  */
8788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for
8798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
8808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for
8818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
8828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for
8838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           negated static TLS block offset.  */
8848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to
8858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           static TLS block.  */
8868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to
8878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           static TLS block.  */
8888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS
8898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
8908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS
8918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
8928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */
8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.  */
8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_TLS_TPOFF		56	/* Negate offset in static TLS
8958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                           block.  */
8968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Keep this the last entry.  */
8978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_390_NUM	57
8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* x86-64 relocation types */
9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_NONE		0	/* No reloc */
9018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_64		1	/* Direct 64 bit  */
9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC32		2	/* PC relative 32 bit signed */
9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GOT32		3	/* 32 bit GOT entry */
9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PLT32		4	/* 32 bit PLT address */
9058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_COPY		5	/* Copy symbol at runtime */
9068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */
9078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */
9088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_RELATIVE	8	/* Adjust by program base */
9098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_GOTPCREL	9	/* 32 bit signed pc relative
9108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					   offset to GOT */
9118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_32		10	/* Direct 32 bit zero extended */
9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_32S		11	/* Direct 32 bit sign extended */
9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_16		12	/* Direct 16 bit zero extended */
9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */
9158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_8		14	/* Direct 8 bit sign extended  */
9168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */
9178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_X86_64_NUM		16
9198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for e_flags field of Elf64_Ehdr.  */
9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_ALPHA_32BIT		1	/* All addresses are below 2GB */
9238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* HPPA specific definitions.  */
9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for e_flags field of Elf32_Ehdr.  */
9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */
9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */
9308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */
9318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */
9328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch
9338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					      prediction.  */
9348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */
9358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */
9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */
9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */
9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */
9418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */
9428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Additional section indeces.  */
9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared
9468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project					      symbols in ANSI C.  */
9478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */
9488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for sh_type field of Elf32_Shdr.  */
9508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */
9528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */
9538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */
9548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for sh_flags field of Elf32_Shdr.  */
9568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */
9588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */
9598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */
9608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for ST_TYPE subfield of st_info (symbol type).  */
9628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */
9648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
9668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STT_HP_STUB		(STT_LOOS + 0x2)
9678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* HPPA relocs.  */
9698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_NONE		0	/* No reloc.  */
9718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */
9728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */
9738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */
9748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */
9758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */
9768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */
9778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */
9788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */
9798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */
9808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */
9818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */
9828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */
9838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */
9848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */
9858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */
9868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */
9878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */
9888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */
9898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */
9908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */
9918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */
9928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */
9938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */
9948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */
9958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_FPTR64		64	/* 64 bits function address.  */
9968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */
9978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */
9988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */
9998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */
10008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */
10018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */
10028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */
10038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */
10048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */
10058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */
10068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */
10078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */
10088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */
10098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */
10108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */
10118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */
10128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */
10138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */
10148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */
10158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */
10168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */
10178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */
10188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */
10198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */
10208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */
10218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */
10228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */
10238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */
10248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */
10258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */
10268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */
10278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */
10288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */
10298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */
10308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */
10318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */
10328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */
10338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */
10348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */
10358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LORESERVE	128
10368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_COPY		128	/* Copy relocation.  */
10378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */
10388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */
10398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */
10408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */
10418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */
10428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */
10438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/
10448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */
10458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */
10468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */
10478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */
10488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */
10498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */
10508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */
10518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */
10528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/
10538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/
10548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */
10558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */
10568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */
10578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_PARISC_HIRESERVE	255
10588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */
10608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_TLS		(PT_LOOS + 0x0)
10628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
10638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
10648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
10658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
10668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
10678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
10688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
10698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
10708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
10718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
10728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
10738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
10748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
10758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_HP_STACK		(PT_LOOS + 0x14)
10768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_PARISC_ARCHEXT	0x70000000
10788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_PARISC_UNWIND	0x70000001
10798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */
10818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_PARISC_SBP		0x08000000
10838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_PAGE_SIZE		0x00100000
10858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_FAR_SHARED	0x00200000
10868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_NEAR_SHARED	0x00400000
10878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_CODE		0x01000000
10888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_MODIFY		0x02000000
10898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_LAZYSWAP		0x04000000
10908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_HP_SBP		0x08000000
10918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* IA-64 specific declarations.  */
10938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Ehdr e_flags field.  */
10958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */
10968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */
10978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */
10988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Phdr p_type field.  */
11008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */
11018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */
11028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Phdr p_flags field.  */
11048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */
11058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Shdr sh_type field.  */
11078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */
11088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */
11098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific flags for the Shdr sh_flags field.  */
11118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_IA_64_SHORT		0x10000000	/* section near gp */
11128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */
11138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Processor specific values for the Dyn d_tag field.  */
11158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0)
11168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_IA_64_NUM		1
11178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* IA-64 relocations.  */
11198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_NONE		0x00	/* none */
11208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */
11218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */
11228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */
11238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */
11248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */
11258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */
11268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */
11278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */
11288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */
11298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */
11308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */
11318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */
11328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */
11338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */
11348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */
11358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */
11368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */
11378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */
11388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */
11398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */
11408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */
11418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */
11428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */
11438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */
11448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */
11458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */
11468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */
11478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */
11488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */
11498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */
11508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */
11518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */
11528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */
11538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */
11548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */
11558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */
11568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */
11578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */
11588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */
11598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */
11608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */
11618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */
11628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */
11638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */
11648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */
11658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */
11668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */
11678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */
11688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */
11698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */
11708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */
11718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */
11728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */
11738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */
11748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */
11758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */
11768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */
11778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */
11788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */
11798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_COPY		0x84	/* copy relocation */
11808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_SUB		0x85	/* Addend and symbol difference */
11818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */
11828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */
11838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */
11848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */
11858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */
11868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */
11878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */
11888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */
11898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */
11908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */
11918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */
11928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */
11938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */
11948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */
11958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */
11968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */
11978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */
11988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */
11998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */
12008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_rel {
12028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	r_offset;
12038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	r_info;
12048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Rel;
12058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_rel {
12078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr r_offset;	/* Location at which to apply the action */
12088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword r_info;	/* index and type of relocation */
12098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Rel;
12108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_rela{
12128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	r_offset;
12138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	r_info;
12148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Sword	r_addend;
12158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Rela;
12168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_rela {
12188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr r_offset;	/* Location at which to apply the action */
12198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword r_info;	/* index and type of relocation */
12208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Sxword r_addend;	/* Constant addend used to compute value */
12218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Rela;
12228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_sym{
12248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	st_name;
12258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	st_value;
12268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	st_size;
12278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_info;
12288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_other;
12298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	st_shndx;
12308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Sym;
12318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_sym {
12338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word st_name;		/* Symbol name, index in string tbl */
12348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_info;	/* Type and binding attributes */
12358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	st_other;	/* No defined meaning, 0 */
12368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half st_shndx;		/* Associated section index */
12378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr st_value;		/* Value of the symbol */
12388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword st_size;		/* Associated symbol size */
12398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Sym;
12408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EI_NIDENT	16
12438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12440dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner/* Special value for e_phnum.  This indicates that the real number of
12450dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner   program headers is too large to fit into e_phnum.  Instead the real
12460dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner   value is in the field sh_info of section 0.  */
12470dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define PN_XNUM         0xffff
12480dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner
12498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_hdr{
12508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	e_ident[EI_NIDENT];
12518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_type;
12528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_machine;
12538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	e_version;
12548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	e_entry;  /* Entry point */
12558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	e_phoff;
12568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	e_shoff;
12578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	e_flags;
12588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_ehsize;
12598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_phentsize;
12608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_phnum;
12618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shentsize;
12628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shnum;
12638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Half	e_shstrndx;
12648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Ehdr;
12658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_hdr {
12678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char	e_ident[16];		/* ELF "magic number" */
12688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_type;
12698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_machine;
12708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word e_version;
12718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr e_entry;		/* Entry point virtual address */
12728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off e_phoff;		/* Program header table file offset */
12738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off e_shoff;		/* Section header table file offset */
12748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word e_flags;
12758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_ehsize;
12768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_phentsize;
12778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_phnum;
12788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shentsize;
12798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shnum;
12808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Half e_shstrndx;
12818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Ehdr;
12828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These constants define the permissions on sections in the program
12848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   header, p_flags. */
12858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_R		0x4
12868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_W		0x2
12878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PF_X		0x1
12888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_phdr{
12908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_type;
12918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	p_offset;
12928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	p_vaddr;
12938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	p_paddr;
12948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_filesz;
12958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_memsz;
12968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_flags;
12978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	p_align;
12988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Phdr;
12998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_phdr {
13018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word p_type;
13028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word p_flags;
13038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off p_offset;		/* Segment file offset */
13048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr p_vaddr;		/* Segment virtual address */
13058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr p_paddr;		/* Segment physical address */
13068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_filesz;		/* Segment size in file */
13078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_memsz;		/* Segment size in memory */
13088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword p_align;		/* Segment alignment, file & memory */
13098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Phdr;
13108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* sh_type */
13128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NULL	0
13138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_PROGBITS	1
13148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_SYMTAB	2
13158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_STRTAB	3
13168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_RELA	4
13178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HASH	5
13188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_DYNAMIC	6
13198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NOTE	7
13208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NOBITS	8
13218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_REL		9
13228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_SHLIB	10
13238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_DYNSYM	11
13248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_NUM		12
13258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_LOPROC	0x70000000
13268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HIPROC	0x7fffffff
13278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_LOUSER	0x80000000
13288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_HIUSER	0xffffffff
13298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_LIST		0x70000000
13308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_CONFLICT	0x70000002
13318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_GPTAB		0x70000003
13328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHT_MIPS_UCODE		0x70000004
13338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* sh_flags */
13358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_WRITE	0x1
13368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_ALLOC	0x2
13378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_EXECINSTR	0x4
13388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_MASKPROC	0xf0000000
13398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHF_MIPS_GPREL	0x10000000
13408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* special section indexes */
13428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_UNDEF	0
13438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_LORESERVE	0xff00
13448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_LOPROC	0xff00
13458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_HIPROC	0xff1f
13468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_ABS		0xfff1
13478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_COMMON	0xfff2
13488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_HIRESERVE	0xffff
13498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHN_MIPS_ACCOMON	0xff00
13508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_shdr {
13528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_name;
13538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_type;
13548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_flags;
13558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Addr	sh_addr;
13568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Off	sh_offset;
13578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_size;
13588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_link;
13598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_info;
13608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_addralign;
13618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	sh_entsize;
13628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Shdr;
13638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_shdr {
13658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_name;		/* Section name, index in string tbl */
13668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_type;		/* Type of section */
13678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_flags;		/* Miscellaneous section attributes */
13688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Addr sh_addr;		/* Section virtual addr at execution */
13698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Off sh_offset;		/* Section file offset */
13708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_size;		/* Size of section in bytes */
13718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_link;		/* Index of another section */
13728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word sh_info;		/* Additional section information */
13738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_addralign;	/* Section alignment */
13748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Xword sh_entsize;	/* Entry size if section holds table */
13758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Shdr;
13768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG0		0		/* e_ident[] indexes */
13788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG1		1
13798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG2		2
13808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_MAG3		3
13818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_CLASS	4
13828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_DATA		5
13838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	EI_VERSION	6
13845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	EI_OSABI	7
13855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	EI_PAD		8
13865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
13875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_NONE           0       /* UNIX System V ABI */
13885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_SYSV           0       /* Alias.  */
13895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_HPUX           1       /* HP-UX */
13905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_NETBSD         2       /* NetBSD.  */
13915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_LINUX          3       /* Linux.  */
13925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_SOLARIS        6       /* Sun Solaris.  */
13935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_AIX            7       /* IBM AIX.  */
13945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_IRIX           8       /* SGI Irix.  */
13955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_FREEBSD        9       /* FreeBSD.  */
13965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_TRU64          10      /* Compaq TRU64 UNIX.  */
13975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_MODESTO        11      /* Novell Modesto.  */
13985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_OPENBSD        12      /* OpenBSD.  */
13995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_ARM            97      /* ARM */
14005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ELFOSABI_STANDALONE     255     /* Standalone (embedded) application */
14018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG0		0x7f		/* EI_MAG */
14038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG1		'E'
14048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG2		'L'
14058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG3		'F'
14068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFMAG		"\177ELF"
14078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SELFMAG		4
14088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASSNONE	0		/* EI_CLASS */
14108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASS32	1
14118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASS64	2
14128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	ELFCLASSNUM	3
14138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATANONE	0		/* e_ident[EI_DATA] */
14158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATA2LSB	1
14168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ELFDATA2MSB	2
14178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_NONE		0		/* e_version, EI_VERSION */
14198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_CURRENT	1
14208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EV_NUM		2
14218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Notes used in ET_CORE */
14238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRSTATUS	1
14240dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_FPREGSET     2
14258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRFPREG	2
14268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRPSINFO	3
14278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_TASKSTRUCT	4
14285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define NT_AUXV		6
14298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_PRXFPREG     0x46e62b7f      /* copied from gdb5.1/include/elf/common.h */
14300dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_S390_PREFIX  0x305           /* s390 prefix register */
14310dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_S390_CTRS    0x304           /* s390 control registers */
14320dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_S390_TODPREG 0x303           /* s390 TOD programmable register */
14330dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_S390_TODCMP  0x302           /* s390 TOD clock comparator register */
14340dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_S390_TIMER   0x301           /* s390 timer register */
14350dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_PPC_VMX       0x100          /* PowerPC Altivec/VMX registers */
14360dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_PPC_SPE       0x101          /* PowerPC SPE/EVR registers */
14370dc43a9a7d4ed798d2c53792fe30a907f81d7615David 'Digit' Turner#define NT_PPC_VSX       0x102          /* PowerPC VSX registers */
14388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note header in a PT_NOTE section */
14418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf32_note {
14428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_namesz;	/* Name size */
14438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_descsz;	/* Content size */
14448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf32_Word	n_type;		/* Content type */
14458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf32_Nhdr;
14468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Note header in a PT_NOTE section */
14488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct elf64_note {
14498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_namesz;	/* Name size */
14508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_descsz;	/* Content size */
14518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  Elf64_Word n_type;	/* Content type */
14528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} Elf64_Nhdr;
14538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
145417410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner
145517410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner/* This data structure represents a PT_LOAD segment.  */
145617410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turnerstruct elf32_fdpic_loadseg {
145717410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* Core address to which the segment is mapped.  */
145817410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  Elf32_Addr addr;
145917410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* VMA recorded in the program header.  */
146017410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  Elf32_Addr p_vaddr;
146117410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* Size of this segment in memory.  */
146217410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  Elf32_Word p_memsz;
146317410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner};
146417410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turnerstruct elf32_fdpic_loadmap {
146517410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* Protocol version number, must be zero.  */
146617410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  Elf32_Half version;
146717410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* Number of segments in this map.  */
146817410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  Elf32_Half nsegs;
146917410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  /* The actual memory map.  */
147017410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner  struct elf32_fdpic_loadseg segs[/*nsegs*/];
147117410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner};
147217410ee4539bb5216421bb9f9dc287b1f678b6cdDavid 'Digit' Turner
14738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_CLASS
14748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if ELF_CLASS == ELFCLASS32
14758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elfhdr		elf32_hdr
14778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_phdr	elf32_phdr
14788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_note	elf32_note
14798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_shdr	elf32_shdr
14808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_sym		elf32_sym
14818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_addr_t	Elf32_Off
14828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_USES_RELOCA
14848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf32_Rela
14858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
14868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf32_Rel
14878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
14888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
14908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elfhdr		elf64_hdr
14928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_phdr	elf64_phdr
14938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_note	elf64_note
14948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_shdr	elf64_shdr
14958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_sym		elf64_sym
14968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define elf_addr_t	Elf64_Off
14978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef ELF_USES_RELOCA
14998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf64_Rela
15008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
15018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define ELF_RELOC      Elf64_Rel
15028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
15038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ELF_CLASS */
15058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef ElfW
15078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if ELF_CLASS == ELFCLASS32
15088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ElfW(x)  Elf32_ ## x
15098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ELFW(x)  ELF32_ ## x
15108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else
15118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ElfW(x)  Elf64_ ## x
15128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define ELFW(x)  ELF64_ ## x
15138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
15148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
15158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ELF_CLASS */
15178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _QEMU_ELF_H */
1520