b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/elf.h,v 1.16 2003/06/12 14:12:34 eich Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned int Elf32_Addr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short Elf32_Half;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned int Elf32_Off;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef long Elf32_Sword;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned int Elf32_Word;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned long Elf64_Addr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short Elf64_Half;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned long Elf64_Off;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef int Elf64_Sword;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned int Elf64_Word;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned long Elf64_Xword;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef long Elf64_Sxword;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* These constants are for the segment types stored in the image headers */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_NULL 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_LOAD 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_DYNAMIC 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_INTERP 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_NOTE 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_SHLIB 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_PHDR 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_LOPROC 0x70000000
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PT_HIPROC 0x7fffffff
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* These constants define the different elf file types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_REL 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_EXEC 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_DYN 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_CORE 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_LOPROC 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ET_HIPROC 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* These constants define the various ELF target machines */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_M32 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_SPARC 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_386 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_68K 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_88K 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_486 6 /* Perhaps disused */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_860 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_MIPS 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_MIPS_RS4_BE 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_PARISC 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_SPARC32PLUS 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_PPC 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_SPARCV9 43
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_IA_64 50
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EM_ALPHA 0x9026
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* This is the info that is needed to parse the dynamic section of the file */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_NULL 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_NEEDED 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_PLTRELSZ 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_PLTGOT 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_HASH 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_STRTAB 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_SYMTAB 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RELA 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RELASZ 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RELAENT 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_STRSZ 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_SYMENT 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_INIT 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_FINI 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_SONAME 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RPATH 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_SYMBOLIC 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_REL 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RELSZ 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_RELENT 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_PLTREL 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_DEBUG 21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_TEXTREL 22
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_JMPREL 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_LOPROC 0x70000000
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define DT_HIPROC 0x7fffffff
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* This info is needed when parsing the symbol table */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STB_LOCAL 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STB_GLOBAL 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STB_WEAK 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_NOTYPE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_OBJECT 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_FUNC 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_SECTION 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_FILE 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_LOPROC 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define STT_HIPROC 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF32_ST_BIND(x) ((x) >> 4)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF64_ST_BIND(x) ELF32_ST_BIND (x)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF64_ST_TYPE(x) ELF32_ST_TYPE (x)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct dynamic32 {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Sword d_tag;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync union {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Sword d_val;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr d_ptr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } d_un;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Dyn;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct dynamic64 {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Sxword d_tag;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync union {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword d_val;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr d_ptr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } d_un;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Dyn;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_XORG_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <xorg-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef QNX4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern Elf32_Dyn _DYNAMIC[];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* The following are used with relocations */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF32_R_SYM(x) ((x) >> 8)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF32_R_TYPE(x) ((x) & 0xff)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF64_R_SYM(x) ((x) >> 32)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF64_R_TYPE(x) ((x) & 0xffffffff)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* x86 Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_32 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_PC32 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_GOT32 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_PLT32 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_COPY 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_GLOB_DAT 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_JMP_SLOT 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_RELATIVE 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_GOTOFF 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_GOTPC 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_386_NUM 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* AMD64 Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_64 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_PC32 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_GOT32 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_PLT32 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_COPY 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_GLOB_DAT 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_JUMP_SLOT 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_RELATIVE 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_GOTPCREL 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_32 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_32S 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_16 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_PC16 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_8 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_PC8 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_GNU_VTINHERIT 250
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_X86_64_GNU_VTENTRY 251
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* sparc Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_8 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_16 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_32 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_DISP8 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_DISP16 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_DISP32 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_WDISP30 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_WDISP22 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_HI22 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_22 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_13 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_LO10 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_GOT10 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_GOT13 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_GOT22 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PC10 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PC22 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_WPLT30 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_COPY 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_GLOB_DAT 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_JMP_SLOT 21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_RELATIVE 22
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_UA32 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PLT32 24
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_HIPLT22 25
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_LOPLT10 26
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PCPLT32 27
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PCPLT22 28
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PCPLT10 29
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_10 30
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_11 31
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_64 32
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_OLO10 33
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_HH22 34
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_HM10 35
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_LM22 36
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PC_HH22 37
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PC_HM10 38
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PC_LM22 39
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_WDISP16 40
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_WDISP19 41
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_GLOB_JMP 42
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_7 43
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_5 44
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_6 45
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_DISP64 46
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_PLT64 47
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_HIX22 48
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_LOX10 49
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_H44 50
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_M44 51
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_L44 52
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_REGISTER 53
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_UA64 54
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_UA16 55
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_SPARC_NUM 56
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* m68k Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_NONE 0 /* No reloc */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_32 1 /* Direct 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_16 2 /* Direct 16 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_8 3 /* Direct 8 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PC32 4 /* PC relative 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PC16 5 /* PC relative 16 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PC8 6 /* PC relative 8 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT32 7 /* 32 bit PC relative GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT16 8 /* 16 bit PC relative GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT8 9 /* 8 bit PC relative GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT32O 10 /* 32 bit GOT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT16O 11 /* 16 bit GOT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GOT8O 12 /* 8 bit GOT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT32 13 /* 32 bit PC relative PLT address */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT16 14 /* 16 bit PC relative PLT address */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT8 15 /* 8 bit PC relative PLT address */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT32O 16 /* 32 bit PLT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT16O 17 /* 16 bit PLT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_PLT8O 18 /* 8 bit PLT offset */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_COPY 19 /* Copy symbol at runtime */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_GLOB_DAT 20 /* Create GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_JMP_SLOT 21 /* Create PLT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_68K_RELATIVE 22 /* Adjust by program base */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Alpha Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_NONE 0 /* No reloc */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_REFLONG 1 /* Direct 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPDISP 6 /* Add displacement to GP */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_SREL16 9 /* PC relative 16 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_SREL32 10 /* PC relative 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_SREL64 11 /* PC relative 64 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_OP_PUSH 12 /* OP stack push */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_OP_STORE 13 /* OP stack pop and store */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_OP_PSUB 14 /* OP stack subtract */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_OP_PRSHIFT 15 /* OP stack right shift */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPVALUE 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPRELHIGH 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPRELLOW 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GPREL16 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_IMMED_GP_HI32 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_IMMED_SCN_HI32 21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_IMMED_BR_HI32 22
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_IMMED_LO32 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_COPY 24 /* Copy symbol at runtime */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_RELATIVE 27 /* Adjust by program base */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ALPHA_BRSGP 28 /* Calc displacement for BRS */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* IA-64 relocations. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_NONE 0x00 /* none */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_IMM14 0x21 /* symbol + addend, add imm14 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_IMM22 0x22 /* symbol + addend, add imm22 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_DIR32MSB 0x24 /* symbol + addend, data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_DIR32LSB 0x25 /* symbol + addend, data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_DIR64MSB 0x26 /* symbol + addend, data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_DIR64LSB 0x27 /* symbol + addend, data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_GPREL22 0x2a /* @gprel(sym + add), add imm22 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_GPREL64I 0x2b /* @gprel(sym + add), mov imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_GPREL64MSB 0x2e /* @gprel(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_GPREL64LSB 0x2f /* @gprel(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTOFF22 0x32 /* @ltoff(sym + add), add imm22 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTOFF64I 0x33 /* @ltoff(sym + add), mov imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PLTOFF22 0x3a /* @pltoff(sym + add), add imm22 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PLTOFF64I 0x3b /* @pltoff(sym + add), mov imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PLTOFF64MSB 0x3e /* @pltoff(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PLTOFF64LSB 0x3f /* @pltoff(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FPTR64I 0x43 /* @fptr(sym + add), mov imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FPTR32MSB 0x44 /* @fptr(sym + add), data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FPTR32LSB 0x45 /* @fptr(sym + add), data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FPTR64MSB 0x46 /* @fptr(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FPTR64LSB 0x47 /* @fptr(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL21B 0x49 /* @pcrel(sym + add), ptb, call */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL21M 0x4a /* @pcrel(sym + add), chk.s */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL21F 0x4b /* @pcrel(sym + add), fchkf */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL32MSB 0x4c /* @pcrel(sym + add), data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL32LSB 0x4d /* @pcrel(sym + add), data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL64MSB 0x4e /* @pcrel(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_PCREL64LSB 0x4f /* @pcrel(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTOFF_FPTR22 0x52 /* @ltoff(@fptr(s+a)), imm22 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTOFF_FPTR64I 0x53 /* @ltoff(@fptr(s+a)), imm64 */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SEGREL32MSB 0x5c /* @segrel(sym + add), data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SEGREL32LSB 0x5d /* @segrel(sym + add), data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SEGREL64MSB 0x5e /* @segrel(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SEGREL64LSB 0x5f /* @segrel(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SECREL32MSB 0x64 /* @secrel(sym + add), data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SECREL32LSB 0x65 /* @secrel(sym + add), data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SECREL64MSB 0x66 /* @secrel(sym + add), data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_SECREL64LSB 0x67 /* @secrel(sym + add), data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_REL32MSB 0x6c /* data 4 + REL */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_REL32LSB 0x6d /* data 4 + REL */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_REL64MSB 0x6e /* data 8 + REL */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_REL64LSB 0x6f /* data 8 + REL */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTV32MSB 0x70 /* symbol + addend, data4 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTV32LSB 0x71 /* symbol + addend, data4 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTV64MSB 0x72 /* symbol + addend, data8 MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTV64LSB 0x73 /* symbol + addend, data8 LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_IPLTMSB 0x80 /* dynamic reloc, imported PLT, MSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_IPLTLSB 0x81 /* dynamic reloc, imported PLT, LSB */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LTOFF22X 0x86 /* LTOFF22, relaxable. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_LDXMOV 0x87 /* Use of LTOFF22X. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_TYPE(R) ((R) & -8)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_IA64_FORMAT(R) ((R) & 7)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Apparantly, Linux and PowerMAXOS use different version of ELF as the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Relocation types are very different.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if defined(PowerMAX_OS)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* PPC Relocation Types */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_COPY 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ENT 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_8 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_8S 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_16S 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_14 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_DISP14 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_24 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_DISP24 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_DISP24 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_BBASED_16HU 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_BBASED_32 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_BBASED_32UA 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_BBASED_16H 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_BBASED_16L 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_16HU 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_32 24
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_32UA 25
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_16H 26
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_16L 27
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABDIFF_16 28
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_16HU 31
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_32 32
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_32UA 33
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_16H 34
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_16L 35
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_16 36
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_16HU 39
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_32 40
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_32UA 41
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_16H 42
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_16L 43
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_16 44
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_16HU 47
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_32 48
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_32UA 49
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_16H 50
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_16L 51
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_16 52
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_16HU 55
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_32 56
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_32UA 57
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_16H 58
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_16L 59
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_16 60
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_16HU 63
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_32 64
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_32UA 65
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_16H 66
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_16L 67
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ABREL_16 68
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_16HU 71
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_32 72
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_32UA 73
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_16H 74
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_16L 75
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT_ABREL_16 76
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_16HU 79
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_32 80
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_32UA 81
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_16H 82
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_16L 83
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOTP_ABREL_16 84
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_16HU 87
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_32 88
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_32UA 89
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_16H 90
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_16L 91
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT_ABREL_16 92
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SREL_16HU 95
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SREL_32 96
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SREL_32UA 97
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SREL_16H 98
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SREL_16L 99
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#else
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * The Linux version
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_NONE 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR32 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR24 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR16 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR16_LO 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR16_HI 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR16_HA 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR14 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR14_BRTAKEN 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_ADDR14_BRNTAKEN 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_REL24 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_REL14 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_REL14_BRTAKEN 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_REL14_BRNTAKEN 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT16 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT16_LO 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT16_HI 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GOT16_HA 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLTREL24 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_COPY 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_GLOB_DAT 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_JMP_SLOT 21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_RELATIVE 22
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_LOCAL24PC 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_UADDR32 24
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_UADDR16 25
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_REL32 26
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT32 27
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLTREL32 28
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT16_LO 29
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT16_HI 30
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_PLT16_HA 31
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SDAREL16 32
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SECTOFF 33
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SECTOFF_LO 34
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SECTOFF_HI 35
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_PPC_SECTOFF_HA 36
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* ARM relocs. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_NONE 0 /* No reloc */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_PC24 1 /* PC relative 26 bit branch */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_ABS32 2 /* Direct 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_REL32 3 /* PC relative 32 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_PC13 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_ABS16 5 /* Direct 16 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_ABS12 6 /* Direct 12 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_ABS5 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_ABS8 8 /* Direct 8 bit */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_SBREL32 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_PC22 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_PC8 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_AMP_VCALL9 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_SWI24 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_SWI8 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_XPC25 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_XPC22 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_COPY 20 /* Copy symbol at runtime */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GLOB_DAT 21 /* Create GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RELATIVE 23 /* Adjust by program base */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GOT32 26 /* 32 bit GOT entry */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_PLT32 27 /* 32 bit PLT address */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GNU_VTENTRY 100
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_GNU_VTINHERIT 101
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_PC11 102 /* thumb unconditional branch */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_PC9 103 /* thumb conditional branch */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RXPC25 249
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RSBREL32 250
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_THM_RPC22 251
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RREL32 252
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RABS22 253
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RPC24 254
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define R_ARM_RBASE 255
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf32_rel {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr r_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word r_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Rel;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf64_rel {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr r_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword r_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Rel;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf32_rela {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr r_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word r_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Sword r_addend;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Rela;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf64_rela {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr r_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword r_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Sxword r_addend;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Rela;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf32_sym {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word st_name;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr st_value;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word st_size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char st_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char st_other;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half st_shndx;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Sym;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf64_sym {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word st_name;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char st_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char st_other;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half st_shndx;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr st_value;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword st_size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Sym;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_NIDENT 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf32hdr {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char e_ident[EI_NIDENT];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_machine;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word e_version;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr e_entry; /* Entry point */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Off e_phoff;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Off e_shoff;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word e_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_ehsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_phentsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_phnum;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_shentsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_shnum;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Half e_shstrndx;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Ehdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf64hdr {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync unsigned char e_ident[EI_NIDENT];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_machine;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word e_version;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr e_entry;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Off e_phoff;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Off e_shoff;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word e_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_ehsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_phentsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_phnum;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_shentsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_shnum;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Half e_shstrndx;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Ehdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* These constants define the permissions on sections in the program
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync header, p_flags. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PF_R 0x4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PF_W 0x2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define PF_X 0x1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf_phdr {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word p_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Off p_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr p_vaddr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr p_paddr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word p_filesz;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word p_memsz;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word p_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word p_align;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Phdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word p_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word p_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Off p_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr p_vaddr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr p_paddr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword p_filesz;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword p_memsz;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword p_align;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Phdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* sh_type */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_NULL 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_PROGBITS 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_SYMTAB 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_STRTAB 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_RELA 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_HASH 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_DYNAMIC 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_NOTE 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_NOBITS 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_REL 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_SHLIB 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_DYNSYM 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_NUM 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_LOPROC 0x70000000
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_HIPROC 0x7fffffff
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_LOUSER 0x80000000
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_HIUSER 0xffffffff
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* sh_flags */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHF_WRITE 0x1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHF_ALLOC 0x2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHF_EXECINSTR 0x4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHF_MASKPROC 0xf0000000
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* special section indexes */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_UNDEF 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_LORESERVE 0xff00
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_LOPROC 0xff00
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_HIPROC 0xff1f
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_ABS 0xfff1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_COMMON 0xfff2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SHN_HIRESERVE 0xffff
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_name;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Addr sh_addr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Off sh_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_link;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_addralign;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word sh_entsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Shdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word sh_name;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word sh_type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword sh_flags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Addr sh_addr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Off sh_offset;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword sh_size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word sh_link;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Word sh_info;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword sh_addralign;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf64_Xword sh_entsize;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf64_Shdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_MAG0 0 /* e_ident[] indexes */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_MAG1 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_MAG2 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_MAG3 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_CLASS 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_DATA 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_VERSION 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EI_PAD 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFMAG0 0x7f /* EI_MAG */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFMAG1 'E'
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFMAG2 'L'
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFMAG3 'F'
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFMAG "\177ELF"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SELFMAG 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFDLMAG 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFDLOFF 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFCLASSNONE 0 /* EI_CLASS */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFCLASS32 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFCLASS64 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFCLASSNUM 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFDATANONE 0 /* e_ident[EI_DATA] */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFDATA2LSB 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELFDATA2MSB 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EV_NONE 0 /* e_version, EI_VERSION */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EV_CURRENT 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define EV_NUM 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Notes used in ET_CORE */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NT_PRSTATUS 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NT_PRFPREG 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NT_PRPSINFO 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define NT_TASKSTRUCT 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Note header in a PT_NOTE section */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct elf_note {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word n_namesz; /* Name size */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word n_descsz; /* Content size */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Elf32_Word n_type; /* Content type */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} Elf32_Nhdr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ELF_START_MMAP 0x80000000