//===-- llvm/Support/ELF.h - ELF constants and data structures --*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This header contains common, non-processor-specific data structures and
// constants for the ELF file format.
//
// The details of the ELF32 bits in this file are largely based on the Tool
// Interface Standard (TIS) Executable and Linking Format (ELF) Specification
// Version 1.2, May 1995. The ELF64 stuff is based on ELF-64 Object File Format
// Version 1.5, Draft 2, May 1998 as well as OpenBSD header files.
//
//===----------------------------------------------------------------------===//

// BEGIN android-changed
#ifndef ART_RUNTIME_ELF_H_
#define ART_RUNTIME_ELF_H_
// END android-changed

// BEGIN android-changed
#include <stdint.h>
#include <string.h>
// END android-changed

typedef uint32_t Elf32_Addr; // Program address
typedef uint32_t Elf32_Off;  // File offset
typedef uint16_t Elf32_Half;
typedef uint32_t Elf32_Word;
typedef int32_t  Elf32_Sword;

typedef uint64_t Elf64_Addr;
typedef uint64_t Elf64_Off;
typedef uint16_t Elf64_Half;
typedef uint32_t Elf64_Word;
typedef int32_t  Elf64_Sword;
typedef uint64_t Elf64_Xword;
typedef int64_t  Elf64_Sxword;

// Object file magic string.
static constexpr char ElfMagic[] = { 0x7f, 'E', 'L', 'F', '\0' };

// e_ident size and indices.
enum {
  EI_MAG0       = 0,          // File identification index.
  EI_MAG1       = 1,          // File identification index.
  EI_MAG2       = 2,          // File identification index.
  EI_MAG3       = 3,          // File identification index.
  EI_CLASS      = 4,          // File class.
  EI_DATA       = 5,          // Data encoding.
  EI_VERSION    = 6,          // File version.
  EI_OSABI      = 7,          // OS/ABI identification.
  EI_ABIVERSION = 8,          // ABI version.
  EI_PAD        = 9,          // Start of padding bytes.
  EI_NIDENT     = 16          // Number of bytes in e_ident.
};

// BEGIN android-added for <elf.h> compat
constexpr char ELFMAG0 = ElfMagic[EI_MAG0];
constexpr char ELFMAG1 = ElfMagic[EI_MAG1];
constexpr char ELFMAG2 = ElfMagic[EI_MAG2];
constexpr char ELFMAG3 = ElfMagic[EI_MAG3];
constexpr char ELFMAG[] = "\177ELF";
constexpr int SELFMAG = 4;
constexpr int NT_PRSTATUS = 1;
// END android-added for <elf.h> compat

struct Elf32_Ehdr {
  unsigned char e_ident[EI_NIDENT]; // ELF Identification bytes
  Elf32_Half    e_type;      // Type of file (see ET_* below)
  Elf32_Half    e_machine;   // Required architecture for this file (see EM_*)
  Elf32_Word    e_version;   // Must be equal to 1
  Elf32_Addr    e_entry;     // Address to jump to in order to start program
  Elf32_Off     e_phoff;     // Program header table's file offset, in bytes
  Elf32_Off     e_shoff;     // Section header table's file offset, in bytes
  Elf32_Word    e_flags;     // Processor-specific flags
  Elf32_Half    e_ehsize;    // Size of ELF header, in bytes
  Elf32_Half    e_phentsize; // Size of an entry in the program header table
  Elf32_Half    e_phnum;     // Number of entries in the program header table
  Elf32_Half    e_shentsize; // Size of an entry in the section header table
  Elf32_Half    e_shnum;     // Number of entries in the section header table
  Elf32_Half    e_shstrndx;  // Sect hdr table index of sect name string table
  bool checkMagic() const {
    return (memcmp(e_ident, ElfMagic, strlen(ElfMagic))) == 0;
  }
  unsigned char getFileClass() const { return e_ident[EI_CLASS]; }
  unsigned char getDataEncoding() const { return e_ident[EI_DATA]; }
};

// 64-bit ELF header. Fields are the same as for ELF32, but with different
// types (see above).
struct Elf64_Ehdr {
  unsigned char e_ident[EI_NIDENT];
  Elf64_Half    e_type;
  Elf64_Half    e_machine;
  Elf64_Word    e_version;
  Elf64_Addr    e_entry;
  Elf64_Off     e_phoff;
  Elf64_Off     e_shoff;
  Elf64_Word    e_flags;
  Elf64_Half    e_ehsize;
  Elf64_Half    e_phentsize;
  Elf64_Half    e_phnum;
  Elf64_Half    e_shentsize;
  Elf64_Half    e_shnum;
  Elf64_Half    e_shstrndx;
  bool checkMagic() const {
    return (memcmp(e_ident, ElfMagic, strlen(ElfMagic))) == 0;
  }
  unsigned char getFileClass() const { return e_ident[EI_CLASS]; }
  unsigned char getDataEncoding() const { return e_ident[EI_DATA]; }
};

// File types
enum {
  ET_NONE   = 0,      // No file type
  ET_REL    = 1,      // Relocatable file
  ET_EXEC   = 2,      // Executable file
  ET_DYN    = 3,      // Shared object file
  ET_CORE   = 4,      // Core file
  ET_LOPROC = 0xff00, // Beginning of processor-specific codes
  ET_HIPROC = 0xffff  // Processor-specific
};

// Versioning
enum {
  EV_NONE = 0,
  EV_CURRENT = 1
};

// Machine architectures
enum {
  EM_NONE          = 0, // No machine
  EM_M32           = 1, // AT&T WE 32100
  EM_SPARC         = 2, // SPARC
  EM_386           = 3, // Intel 386
  EM_68K           = 4, // Motorola 68000
  EM_88K           = 5, // Motorola 88000
  EM_486           = 6, // Intel 486 (deprecated)
  EM_860           = 7, // Intel 80860
  EM_MIPS          = 8, // MIPS R3000
  EM_S370          = 9, // IBM System/370
  EM_MIPS_RS3_LE   = 10, // MIPS RS3000 Little-endian
  EM_PARISC        = 15, // Hewlett-Packard PA-RISC
  EM_VPP500        = 17, // Fujitsu VPP500
  EM_SPARC32PLUS   = 18, // Enhanced instruction set SPARC
  EM_960           = 19, // Intel 80960
  EM_PPC           = 20, // PowerPC
  EM_PPC64         = 21, // PowerPC64
  EM_S390          = 22, // IBM System/390
  EM_SPU           = 23, // IBM SPU/SPC
  EM_V800          = 36, // NEC V800
  EM_FR20          = 37, // Fujitsu FR20
  EM_RH32          = 38, // TRW RH-32
  EM_RCE           = 39, // Motorola RCE
  EM_ARM           = 40, // ARM
  EM_ALPHA         = 41, // DEC Alpha
  EM_SH            = 42, // Hitachi SH
  EM_SPARCV9       = 43, // SPARC V9
  EM_TRICORE       = 44, // Siemens TriCore
  EM_ARC           = 45, // Argonaut RISC Core
  EM_H8_300        = 46, // Hitachi H8/300
  EM_H8_300H       = 47, // Hitachi H8/300H
  EM_H8S           = 48, // Hitachi H8S
  EM_H8_500        = 49, // Hitachi H8/500
  EM_IA_64         = 50, // Intel IA-64 processor architecture
  EM_MIPS_X        = 51, // Stanford MIPS-X
  EM_COLDFIRE      = 52, // Motorola ColdFire
  EM_68HC12        = 53, // Motorola M68HC12
  EM_MMA           = 54, // Fujitsu MMA Multimedia Accelerator
  EM_PCP           = 55, // Siemens PCP
  EM_NCPU          = 56, // Sony nCPU embedded RISC processor
  EM_NDR1          = 57, // Denso NDR1 microprocessor
  EM_STARCORE      = 58, // Motorola Star*Core processor
  EM_ME16          = 59, // Toyota ME16 processor
  EM_ST100         = 60, // STMicroelectronics ST100 processor
  EM_TINYJ         = 61, // Advanced Logic Corp. TinyJ embedded processor family
  EM_X86_64        = 62, // AMD x86-64 architecture
  EM_PDSP          = 63, // Sony DSP Processor
  EM_PDP10         = 64, // Digital Equipment Corp. PDP-10
  EM_PDP11         = 65, // Digital Equipment Corp. PDP-11
  EM_FX66          = 66, // Siemens FX66 microcontroller
  EM_ST9PLUS       = 67, // STMicroelectronics ST9+ 8/16 bit microcontroller
  EM_ST7           = 68, // STMicroelectronics ST7 8-bit microcontroller
  EM_68HC16        = 69, // Motorola MC68HC16 Microcontroller
  EM_68HC11        = 70, // Motorola MC68HC11 Microcontroller
  EM_68HC08        = 71, // Motorola MC68HC08 Microcontroller
  EM_68HC05        = 72, // Motorola MC68HC05 Microcontroller
  EM_SVX           = 73, // Silicon Graphics SVx
  EM_ST19          = 74, // STMicroelectronics ST19 8-bit microcontroller
  EM_VAX           = 75, // Digital VAX
  EM_CRIS          = 76, // Axis Communications 32-bit embedded processor
  EM_JAVELIN       = 77, // Infineon Technologies 32-bit embedded processor
  EM_FIREPATH      = 78, // Element 14 64-bit DSP Processor
  EM_ZSP           = 79, // LSI Logic 16-bit DSP Processor
  EM_MMIX          = 80, // Donald Knuth's educational 64-bit processor
  EM_HUANY         = 81, // Harvard University machine-independent object files
  EM_PRISM         = 82, // SiTera Prism
  EM_AVR           = 83, // Atmel AVR 8-bit microcontroller
  EM_FR30          = 84, // Fujitsu FR30
  EM_D10V          = 85, // Mitsubishi D10V
  EM_D30V          = 86, // Mitsubishi D30V
  EM_V850          = 87, // NEC v850
  EM_M32R          = 88, // Mitsubishi M32R
  EM_MN10300       = 89, // Matsushita MN10300
  EM_MN10200       = 90, // Matsushita MN10200
  EM_PJ            = 91, // picoJava
  EM_OPENRISC      = 92, // OpenRISC 32-bit embedded processor
  EM_ARC_COMPACT   = 93, // ARC International ARCompact processor (old
                         // spelling/synonym: EM_ARC_A5)
  EM_XTENSA        = 94, // Tensilica Xtensa Architecture
  EM_VIDEOCORE     = 95, // Alphamosaic VideoCore processor
  EM_TMM_GPP       = 96, // Thompson Multimedia General Purpose Processor
  EM_NS32K         = 97, // National Semiconductor 32000 series
  EM_TPC           = 98, // Tenor Network TPC processor
  EM_SNP1K         = 99, // Trebia SNP 1000 processor
  EM_ST200         = 100, // STMicroelectronics (www.st.com) ST200
  EM_IP2K          = 101, // Ubicom IP2xxx microcontroller family
  EM_MAX           = 102, // MAX Processor
  EM_CR            = 103, // National Semiconductor CompactRISC microprocessor
  EM_F2MC16        = 104, // Fujitsu F2MC16
  EM_MSP430        = 105, // Texas Instruments embedded microcontroller msp430
  EM_BLACKFIN      = 106, // Analog Devices Blackfin (DSP) processor
  EM_SE_C33        = 107, // S1C33 Family of Seiko Epson processors
  EM_SEP           = 108, // Sharp embedded microprocessor
  EM_ARCA          = 109, // Arca RISC Microprocessor
  EM_UNICORE       = 110, // Microprocessor series from PKU-Unity Ltd. and MPRC
                          // of Peking University
  EM_EXCESS        = 111, // eXcess: 16/32/64-bit configurable embedded CPU
  EM_DXP           = 112, // Icera Semiconductor Inc. Deep Execution Processor
  EM_ALTERA_NIOS2  = 113, // Altera Nios II soft-core processor
  EM_CRX           = 114, // National Semiconductor CompactRISC CRX
  EM_XGATE         = 115, // Motorola XGATE embedded processor
  EM_C166          = 116, // Infineon C16x/XC16x processor
  EM_M16C          = 117, // Renesas M16C series microprocessors
  EM_DSPIC30F      = 118, // Microchip Technology dsPIC30F Digital Signal
                          // Controller
  EM_CE            = 119, // Freescale Communication Engine RISC core
  EM_M32C          = 120, // Renesas M32C series microprocessors
  EM_TSK3000       = 131, // Altium TSK3000 core
  EM_RS08          = 132, // Freescale RS08 embedded processor
  EM_SHARC         = 133, // Analog Devices SHARC family of 32-bit DSP
                          // processors
  EM_ECOG2         = 134, // Cyan Technology eCOG2 microprocessor
  EM_SCORE7        = 135, // Sunplus S+core7 RISC processor
  EM_DSP24         = 136, // New Japan Radio (NJR) 24-bit DSP Processor
  EM_VIDEOCORE3    = 137, // Broadcom VideoCore III processor
  EM_LATTICEMICO32 = 138, // RISC processor for Lattice FPGA architecture
  EM_SE_C17        = 139, // Seiko Epson C17 family
  EM_TI_C6000      = 140, // The Texas Instruments TMS320C6000 DSP family
  EM_TI_C2000      = 141, // The Texas Instruments TMS320C2000 DSP family
  EM_TI_C5500      = 142, // The Texas Instruments TMS320C55x DSP family
  EM_MMDSP_PLUS    = 160, // STMicroelectronics 64bit VLIW Data Signal Processor
  EM_CYPRESS_M8C   = 161, // Cypress M8C microprocessor
  EM_R32C          = 162, // Renesas R32C series microprocessors
  EM_TRIMEDIA      = 163, // NXP Semiconductors TriMedia architecture family
  EM_HEXAGON       = 164, // Qualcomm Hexagon processor
  EM_8051          = 165, // Intel 8051 and variants
  EM_STXP7X        = 166, // STMicroelectronics STxP7x family of configurable
                          // and extensible RISC processors
  EM_NDS32         = 167, // Andes Technology compact code size embedded RISC
                          // processor family
  EM_ECOG1         = 168, // Cyan Technology eCOG1X family
  EM_ECOG1X        = 168, // Cyan Technology eCOG1X family
  EM_MAXQ30        = 169, // Dallas Semiconductor MAXQ30 Core Micro-controllers
  EM_XIMO16        = 170, // New Japan Radio (NJR) 16-bit DSP Processor
  EM_MANIK         = 171, // M2000 Reconfigurable RISC Microprocessor
  EM_CRAYNV2       = 172, // Cray Inc. NV2 vector architecture
  EM_RX            = 173, // Renesas RX family
  EM_METAG         = 174, // Imagination Technologies META processor
                          // architecture
  EM_MCST_ELBRUS   = 175, // MCST Elbrus general purpose hardware architecture
  EM_ECOG16        = 176, // Cyan Technology eCOG16 family
  EM_CR16          = 177, // National Semiconductor CompactRISC CR16 16-bit
                          // microprocessor
  EM_ETPU          = 178, // Freescale Extended Time Processing Unit
  EM_SLE9X         = 179, // Infineon Technologies SLE9X core
  EM_L10M          = 180, // Intel L10M
  EM_K10M          = 181, // Intel K10M
  EM_AARCH64       = 183, // ARM AArch64
  EM_AVR32         = 185, // Atmel Corporation 32-bit microprocessor family
  EM_STM8          = 186, // STMicroeletronics STM8 8-bit microcontroller
  EM_TILE64        = 187, // Tilera TILE64 multicore architecture family
  EM_TILEPRO       = 188, // Tilera TILEPro multicore architecture family
  EM_CUDA          = 190, // NVIDIA CUDA architecture
  EM_TILEGX        = 191, // Tilera TILE-Gx multicore architecture family
  EM_CLOUDSHIELD   = 192, // CloudShield architecture family
  EM_COREA_1ST     = 193, // KIPO-KAIST Core-A 1st generation processor family
  EM_COREA_2ND     = 194, // KIPO-KAIST Core-A 2nd generation processor family
  EM_ARC_COMPACT2  = 195, // Synopsys ARCompact V2
  EM_OPEN8         = 196, // Open8 8-bit RISC soft processor core
  EM_RL78          = 197, // Renesas RL78 family
  EM_VIDEOCORE5    = 198, // Broadcom VideoCore V processor
  EM_78KOR         = 199, // Renesas 78KOR family
  EM_56800EX       = 200  // Freescale 56800EX Digital Signal Controller (DSC)
};

// Object file classes.
enum {
  ELFCLASSNONE = 0,
  ELFCLASS32 = 1, // 32-bit object file
  ELFCLASS64 = 2  // 64-bit object file
};

// Object file byte orderings.
enum {
  ELFDATANONE = 0, // Invalid data encoding.
  ELFDATA2LSB = 1, // Little-endian object file
  ELFDATA2MSB = 2  // Big-endian object file
};

// OS ABI identification.
enum {
  ELFOSABI_NONE = 0,          // UNIX System V ABI
  ELFOSABI_HPUX = 1,          // HP-UX operating system
  ELFOSABI_NETBSD = 2,        // NetBSD
  ELFOSABI_GNU = 3,           // GNU/Linux
  ELFOSABI_LINUX = 3,         // Historical alias for ELFOSABI_GNU.
  ELFOSABI_HURD = 4,          // GNU/Hurd
  ELFOSABI_SOLARIS = 6,       // Solaris
  ELFOSABI_AIX = 7,           // AIX
  ELFOSABI_IRIX = 8,          // IRIX
  ELFOSABI_FREEBSD = 9,       // FreeBSD
  ELFOSABI_TRU64 = 10,        // TRU64 UNIX
  ELFOSABI_MODESTO = 11,      // Novell Modesto
  ELFOSABI_OPENBSD = 12,      // OpenBSD
  ELFOSABI_OPENVMS = 13,      // OpenVMS
  ELFOSABI_NSK = 14,          // Hewlett-Packard Non-Stop Kernel
  ELFOSABI_AROS = 15,         // AROS
  ELFOSABI_FENIXOS = 16,      // FenixOS
  ELFOSABI_C6000_ELFABI = 64, // Bare-metal TMS320C6000
  ELFOSABI_C6000_LINUX = 65,  // Linux TMS320C6000
  ELFOSABI_ARM = 97,          // ARM
  ELFOSABI_STANDALONE = 255   // Standalone (embedded) application
};

// X86_64 relocations.
enum {
  R_X86_64_NONE       = 0,
  R_X86_64_64         = 1,
  R_X86_64_PC32       = 2,
  R_X86_64_GOT32      = 3,
  R_X86_64_PLT32      = 4,
  R_X86_64_COPY       = 5,
  R_X86_64_GLOB_DAT   = 6,
  R_X86_64_JUMP_SLOT  = 7,
  R_X86_64_RELATIVE   = 8,
  R_X86_64_GOTPCREL   = 9,
  R_X86_64_32         = 10,
  R_X86_64_32S        = 11,
  R_X86_64_16         = 12,
  R_X86_64_PC16       = 13,
  R_X86_64_8          = 14,
  R_X86_64_PC8        = 15,
  R_X86_64_DTPMOD64   = 16,
  R_X86_64_DTPOFF64   = 17,
  R_X86_64_TPOFF64    = 18,
  R_X86_64_TLSGD      = 19,
  R_X86_64_TLSLD      = 20,
  R_X86_64_DTPOFF32   = 21,
  R_X86_64_GOTTPOFF   = 22,
  R_X86_64_TPOFF32    = 23,
  R_X86_64_PC64       = 24,
  R_X86_64_GOTOFF64   = 25,
  R_X86_64_GOTPC32    = 26,
  R_X86_64_GOT64      = 27,
  R_X86_64_GOTPCREL64 = 28,
  R_X86_64_GOTPC64    = 29,
  R_X86_64_GOTPLT64   = 30,
  R_X86_64_PLTOFF64   = 31,
  R_X86_64_SIZE32     = 32,
  R_X86_64_SIZE64     = 33,
  R_X86_64_GOTPC32_TLSDESC = 34,
  R_X86_64_TLSDESC_CALL    = 35,
  R_X86_64_TLSDESC    = 36,
  R_X86_64_IRELATIVE  = 37
};

// i386 relocations.
// TODO: this is just a subset
enum {
  R_386_NONE          = 0,
  R_386_32            = 1,
  R_386_PC32          = 2,
  R_386_GOT32         = 3,
  R_386_PLT32         = 4,
  R_386_COPY          = 5,
  R_386_GLOB_DAT      = 6,
  R_386_JUMP_SLOT     = 7,
  R_386_RELATIVE      = 8,
  R_386_GOTOFF        = 9,
  R_386_GOTPC         = 10,
  R_386_32PLT         = 11,
  R_386_TLS_TPOFF     = 14,
  R_386_TLS_IE        = 15,
  R_386_TLS_GOTIE     = 16,
  R_386_TLS_LE        = 17,
  R_386_TLS_GD        = 18,
  R_386_TLS_LDM       = 19,
  R_386_16            = 20,
  R_386_PC16          = 21,
  R_386_8             = 22,
  R_386_PC8           = 23,
  R_386_TLS_GD_32     = 24,
  R_386_TLS_GD_PUSH   = 25,
  R_386_TLS_GD_CALL   = 26,
  R_386_TLS_GD_POP    = 27,
  R_386_TLS_LDM_32    = 28,
  R_386_TLS_LDM_PUSH  = 29,
  R_386_TLS_LDM_CALL  = 30,
  R_386_TLS_LDM_POP   = 31,
  R_386_TLS_LDO_32    = 32,
  R_386_TLS_IE_32     = 33,
  R_386_TLS_LE_32     = 34,
  R_386_TLS_DTPMOD32  = 35,
  R_386_TLS_DTPOFF32  = 36,
  R_386_TLS_TPOFF32   = 37,
  R_386_TLS_GOTDESC   = 39,
  R_386_TLS_DESC_CALL = 40,
  R_386_TLS_DESC      = 41,
  R_386_IRELATIVE     = 42,
  R_386_NUM           = 43
};

// ELF Relocation types for PPC32
enum {
  R_PPC_NONE                  = 0,      /* No relocation. */
  R_PPC_ADDR32                = 1,
  R_PPC_ADDR24                = 2,
  R_PPC_ADDR16                = 3,
  R_PPC_ADDR16_LO             = 4,
  R_PPC_ADDR16_HI             = 5,
  R_PPC_ADDR16_HA             = 6,
  R_PPC_ADDR14                = 7,
  R_PPC_ADDR14_BRTAKEN        = 8,
  R_PPC_ADDR14_BRNTAKEN       = 9,
  R_PPC_REL24                 = 10,
  R_PPC_REL14                 = 11,
  R_PPC_REL14_BRTAKEN         = 12,
  R_PPC_REL14_BRNTAKEN        = 13,
  R_PPC_GOT16                 = 14,
  R_PPC_GOT16_LO              = 15,
  R_PPC_GOT16_HI              = 16,
  R_PPC_GOT16_HA              = 17,
  R_PPC_REL32                 = 26,
  R_PPC_TLS                   = 67,
  R_PPC_DTPMOD32              = 68,
  R_PPC_TPREL16               = 69,
  R_PPC_TPREL16_LO            = 70,
  R_PPC_TPREL16_HI            = 71,
  R_PPC_TPREL16_HA            = 72,
  R_PPC_TPREL32               = 73,
  R_PPC_DTPREL16              = 74,
  R_PPC_DTPREL16_LO           = 75,
  R_PPC_DTPREL16_HI           = 76,
  R_PPC_DTPREL16_HA           = 77,
  R_PPC_DTPREL32              = 78,
  R_PPC_GOT_TLSGD16           = 79,
  R_PPC_GOT_TLSGD16_LO        = 80,
  R_PPC_GOT_TLSGD16_HI        = 81,
  R_PPC_GOT_TLSGD16_HA        = 82,
  R_PPC_GOT_TLSLD16           = 83,
  R_PPC_GOT_TLSLD16_LO        = 84,
  R_PPC_GOT_TLSLD16_HI        = 85,
  R_PPC_GOT_TLSLD16_HA        = 86,
  R_PPC_GOT_TPREL16           = 87,
  R_PPC_GOT_TPREL16_LO        = 88,
  R_PPC_GOT_TPREL16_HI        = 89,
  R_PPC_GOT_TPREL16_HA        = 90,
  R_PPC_GOT_DTPREL16          = 91,
  R_PPC_GOT_DTPREL16_LO       = 92,
  R_PPC_GOT_DTPREL16_HI       = 93,
  R_PPC_GOT_DTPREL16_HA       = 94,
  R_PPC_TLSGD                 = 95,
  R_PPC_TLSLD                 = 96,
  R_PPC_REL16                 = 249,
  R_PPC_REL16_LO              = 250,
  R_PPC_REL16_HI              = 251,
  R_PPC_REL16_HA              = 252
};

// ELF Relocation types for PPC64
enum {
  R_PPC64_NONE                = 0,
  R_PPC64_ADDR32              = 1,
  R_PPC64_ADDR24              = 2,
  R_PPC64_ADDR16              = 3,
  R_PPC64_ADDR16_LO           = 4,
  R_PPC64_ADDR16_HI           = 5,
  R_PPC64_ADDR16_HA           = 6,
  R_PPC64_ADDR14              = 7,
  R_PPC64_ADDR14_BRTAKEN      = 8,
  R_PPC64_ADDR14_BRNTAKEN     = 9,
  R_PPC64_REL24               = 10,
  R_PPC64_REL14               = 11,
  R_PPC64_REL14_BRTAKEN       = 12,
  R_PPC64_REL14_BRNTAKEN      = 13,
  R_PPC64_GOT16               = 14,
  R_PPC64_GOT16_LO            = 15,
  R_PPC64_GOT16_HI            = 16,
  R_PPC64_GOT16_HA            = 17,
  R_PPC64_REL32               = 26,
  R_PPC64_ADDR64              = 38,
  R_PPC64_ADDR16_HIGHER       = 39,
  R_PPC64_ADDR16_HIGHERA      = 40,
  R_PPC64_ADDR16_HIGHEST      = 41,
  R_PPC64_ADDR16_HIGHESTA     = 42,
  R_PPC64_REL64               = 44,
  R_PPC64_TOC16               = 47,
  R_PPC64_TOC16_LO            = 48,
  R_PPC64_TOC16_HI            = 49,
  R_PPC64_TOC16_HA            = 50,
  R_PPC64_TOC                 = 51,
  R_PPC64_ADDR16_DS           = 56,
  R_PPC64_ADDR16_LO_DS        = 57,
  R_PPC64_GOT16_DS            = 58,
  R_PPC64_GOT16_LO_DS         = 59,
  R_PPC64_TOC16_DS            = 63,
  R_PPC64_TOC16_LO_DS         = 64,
  R_PPC64_TLS                 = 67,
  R_PPC64_DTPMOD64            = 68,
  R_PPC64_TPREL16             = 69,
  R_PPC64_TPREL16_LO          = 70,
  R_PPC64_TPREL16_HI          = 71,
  R_PPC64_TPREL16_HA          = 72,
  R_PPC64_TPREL64             = 73,
  R_PPC64_DTPREL16            = 74,
  R_PPC64_DTPREL16_LO         = 75,
  R_PPC64_DTPREL16_HI         = 76,
  R_PPC64_DTPREL16_HA         = 77,
  R_PPC64_DTPREL64            = 78,
  R_PPC64_GOT_TLSGD16         = 79,
  R_PPC64_GOT_TLSGD16_LO      = 80,
  R_PPC64_GOT_TLSGD16_HI      = 81,
  R_PPC64_GOT_TLSGD16_HA      = 82,
  R_PPC64_GOT_TLSLD16         = 83,
  R_PPC64_GOT_TLSLD16_LO      = 84,
  R_PPC64_GOT_TLSLD16_HI      = 85,
  R_PPC64_GOT_TLSLD16_HA      = 86,
  R_PPC64_GOT_TPREL16_DS      = 87,
  R_PPC64_GOT_TPREL16_LO_DS   = 88,
  R_PPC64_GOT_TPREL16_HI      = 89,
  R_PPC64_GOT_TPREL16_HA      = 90,
  R_PPC64_GOT_DTPREL16_DS     = 91,
  R_PPC64_GOT_DTPREL16_LO_DS  = 92,
  R_PPC64_GOT_DTPREL16_HI     = 93,
  R_PPC64_GOT_DTPREL16_HA     = 94,
  R_PPC64_TPREL16_DS          = 95,
  R_PPC64_TPREL16_LO_DS       = 96,
  R_PPC64_TPREL16_HIGHER      = 97,
  R_PPC64_TPREL16_HIGHERA     = 98,
  R_PPC64_TPREL16_HIGHEST     = 99,
  R_PPC64_TPREL16_HIGHESTA    = 100,
  R_PPC64_DTPREL16_DS         = 101,
  R_PPC64_DTPREL16_LO_DS      = 102,
  R_PPC64_DTPREL16_HIGHER     = 103,
  R_PPC64_DTPREL16_HIGHERA    = 104,
  R_PPC64_DTPREL16_HIGHEST    = 105,
  R_PPC64_DTPREL16_HIGHESTA   = 106,
  R_PPC64_TLSGD               = 107,
  R_PPC64_TLSLD               = 108,
  R_PPC64_REL16               = 249,
  R_PPC64_REL16_LO            = 250,
  R_PPC64_REL16_HI            = 251,
  R_PPC64_REL16_HA            = 252
};

// ELF Relocation types for AArch64

enum {
  R_AARCH64_NONE                        = 0x100,

  R_AARCH64_ABS64                       = 0x101,
  R_AARCH64_ABS32                       = 0x102,
  R_AARCH64_ABS16                       = 0x103,
  R_AARCH64_PREL64                      = 0x104,
  R_AARCH64_PREL32                      = 0x105,
  R_AARCH64_PREL16                      = 0x106,

  R_AARCH64_MOVW_UABS_G0                = 0x107,
  R_AARCH64_MOVW_UABS_G0_NC             = 0x108,
  R_AARCH64_MOVW_UABS_G1                = 0x109,
  R_AARCH64_MOVW_UABS_G1_NC             = 0x10a,
  R_AARCH64_MOVW_UABS_G2                = 0x10b,
  R_AARCH64_MOVW_UABS_G2_NC             = 0x10c,
  R_AARCH64_MOVW_UABS_G3                = 0x10d,
  R_AARCH64_MOVW_SABS_G0                = 0x10e,
  R_AARCH64_MOVW_SABS_G1                = 0x10f,
  R_AARCH64_MOVW_SABS_G2                = 0x110,

  R_AARCH64_LD_PREL_LO19                = 0x111,
  R_AARCH64_ADR_PREL_LO21               = 0x112,
  R_AARCH64_ADR_PREL_PG_HI21            = 0x113,
  R_AARCH64_ADD_ABS_LO12_NC             = 0x115,
  R_AARCH64_LDST8_ABS_LO12_NC           = 0x116,

  R_AARCH64_TSTBR14                     = 0x117,
  R_AARCH64_CONDBR19                    = 0x118,
  R_AARCH64_JUMP26                      = 0x11a,
  R_AARCH64_CALL26                      = 0x11b,

  R_AARCH64_LDST16_ABS_LO12_NC          = 0x11c,
  R_AARCH64_LDST32_ABS_LO12_NC          = 0x11d,
  R_AARCH64_LDST64_ABS_LO12_NC          = 0x11e,

  R_AARCH64_LDST128_ABS_LO12_NC         = 0x12b,

  R_AARCH64_ADR_GOT_PAGE                = 0x137,
  R_AARCH64_LD64_GOT_LO12_NC            = 0x138,

  R_AARCH64_TLSLD_MOVW_DTPREL_G2        = 0x20b,
  R_AARCH64_TLSLD_MOVW_DTPREL_G1        = 0x20c,
  R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC     = 0x20d,
  R_AARCH64_TLSLD_MOVW_DTPREL_G0        = 0x20e,
  R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC     = 0x20f,
  R_AARCH64_TLSLD_ADD_DTPREL_HI12       = 0x210,
  R_AARCH64_TLSLD_ADD_DTPREL_LO12       = 0x211,
  R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC    = 0x212,
  R_AARCH64_TLSLD_LDST8_DTPREL_LO12     = 0x213,
  R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC  = 0x214,
  R_AARCH64_TLSLD_LDST16_DTPREL_LO12    = 0x215,
  R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC = 0x216,
  R_AARCH64_TLSLD_LDST32_DTPREL_LO12    = 0x217,
  R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC = 0x218,
  R_AARCH64_TLSLD_LDST64_DTPREL_LO12    = 0x219,
  R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC = 0x21a,

  R_AARCH64_TLSIE_MOVW_GOTTPREL_G1      = 0x21b,
  R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC   = 0x21c,
  R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21   = 0x21d,
  R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC = 0x21e,
  R_AARCH64_TLSIE_LD_GOTTPREL_PREL19    = 0x21f,

  R_AARCH64_TLSLE_MOVW_TPREL_G2         = 0x220,
  R_AARCH64_TLSLE_MOVW_TPREL_G1         = 0x221,
  R_AARCH64_TLSLE_MOVW_TPREL_G1_NC      = 0x222,
  R_AARCH64_TLSLE_MOVW_TPREL_G0         = 0x223,
  R_AARCH64_TLSLE_MOVW_TPREL_G0_NC      = 0x224,
  R_AARCH64_TLSLE_ADD_TPREL_HI12        = 0x225,
  R_AARCH64_TLSLE_ADD_TPREL_LO12        = 0x226,
  R_AARCH64_TLSLE_ADD_TPREL_LO12_NC     = 0x227,
  R_AARCH64_TLSLE_LDST8_TPREL_LO12      = 0x228,
  R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC   = 0x229,
  R_AARCH64_TLSLE_LDST16_TPREL_LO12     = 0x22a,
  R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC  = 0x22b,
  R_AARCH64_TLSLE_LDST32_TPREL_LO12     = 0x22c,
  R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC  = 0x22d,
  R_AARCH64_TLSLE_LDST64_TPREL_LO12     = 0x22e,
  R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC  = 0x22f,

  R_AARCH64_TLSDESC_ADR_PAGE            = 0x232,
  R_AARCH64_TLSDESC_LD64_LO12_NC        = 0x233,
  R_AARCH64_TLSDESC_ADD_LO12_NC         = 0x234,

  R_AARCH64_TLSDESC_CALL                = 0x239
};

// ARM Specific e_flags
enum : unsigned {
  EF_ARM_SOFT_FLOAT =     0x00000200U,
  EF_ARM_VFP_FLOAT =      0x00000400U,
  EF_ARM_EABI_UNKNOWN =   0x00000000U,
  EF_ARM_EABI_VER1 =      0x01000000U,
  EF_ARM_EABI_VER2 =      0x02000000U,
  EF_ARM_EABI_VER3 =      0x03000000U,
  EF_ARM_EABI_VER4 =      0x04000000U,
  EF_ARM_EABI_VER5 =      0x05000000U,
  EF_ARM_EABIMASK =       0xFF000000U
};

// ELF Relocation types for ARM
// Meets 2.08 ABI Specs.

enum {
  R_ARM_NONE                  = 0x00,
  R_ARM_PC24                  = 0x01,
  R_ARM_ABS32                 = 0x02,
  R_ARM_REL32                 = 0x03,
  R_ARM_LDR_PC_G0             = 0x04,
  R_ARM_ABS16                 = 0x05,
  R_ARM_ABS12                 = 0x06,
  R_ARM_THM_ABS5              = 0x07,
  R_ARM_ABS8                  = 0x08,
  R_ARM_SBREL32               = 0x09,
  R_ARM_THM_CALL              = 0x0a,
  R_ARM_THM_PC8               = 0x0b,
  R_ARM_BREL_ADJ              = 0x0c,
  R_ARM_TLS_DESC              = 0x0d,
  R_ARM_THM_SWI8              = 0x0e,
  R_ARM_XPC25                 = 0x0f,
  R_ARM_THM_XPC22             = 0x10,
  R_ARM_TLS_DTPMOD32          = 0x11,
  R_ARM_TLS_DTPOFF32          = 0x12,
  R_ARM_TLS_TPOFF32           = 0x13,
  R_ARM_COPY                  = 0x14,
  R_ARM_GLOB_DAT              = 0x15,
  R_ARM_JUMP_SLOT             = 0x16,
  R_ARM_RELATIVE              = 0x17,
  R_ARM_GOTOFF32              = 0x18,
  R_ARM_BASE_PREL             = 0x19,
  R_ARM_GOT_BREL              = 0x1a,
  R_ARM_PLT32                 = 0x1b,
  R_ARM_CALL                  = 0x1c,
  R_ARM_JUMP24                = 0x1d,
  R_ARM_THM_JUMP24            = 0x1e,
  R_ARM_BASE_ABS              = 0x1f,
  R_ARM_ALU_PCREL_7_0         = 0x20,
  R_ARM_ALU_PCREL_15_8        = 0x21,
  R_ARM_ALU_PCREL_23_15       = 0x22,
  R_ARM_LDR_SBREL_11_0_NC     = 0x23,
  R_ARM_ALU_SBREL_19_12_NC    = 0x24,
  R_ARM_ALU_SBREL_27_20_CK    = 0x25,
  R_ARM_TARGET1               = 0x26,
  R_ARM_SBREL31               = 0x27,
  R_ARM_V4BX                  = 0x28,
  R_ARM_TARGET2               = 0x29,
  R_ARM_PREL31                = 0x2a,
  R_ARM_MOVW_ABS_NC           = 0x2b,
  R_ARM_MOVT_ABS              = 0x2c,
  R_ARM_MOVW_PREL_NC          = 0x2d,
  R_ARM_MOVT_PREL             = 0x2e,
  R_ARM_THM_MOVW_ABS_NC       = 0x2f,
  R_ARM_THM_MOVT_ABS          = 0x30,
  R_ARM_THM_MOVW_PREL_NC      = 0x31,
  R_ARM_THM_MOVT_PREL         = 0x32,
  R_ARM_THM_JUMP19            = 0x33,
  R_ARM_THM_JUMP6             = 0x34,
  R_ARM_THM_ALU_PREL_11_0     = 0x35,
  R_ARM_THM_PC12              = 0x36,
  R_ARM_ABS32_NOI             = 0x37,
  R_ARM_REL32_NOI             = 0x38,
  R_ARM_ALU_PC_G0_NC          = 0x39,
  R_ARM_ALU_PC_G0             = 0x3a,
  R_ARM_ALU_PC_G1_NC          = 0x3b,
  R_ARM_ALU_PC_G1             = 0x3c,
  R_ARM_ALU_PC_G2             = 0x3d,
  R_ARM_LDR_PC_G1             = 0x3e,
  R_ARM_LDR_PC_G2             = 0x3f,
  R_ARM_LDRS_PC_G0            = 0x40,
  R_ARM_LDRS_PC_G1            = 0x41,
  R_ARM_LDRS_PC_G2            = 0x42,
  R_ARM_LDC_PC_G0             = 0x43,
  R_ARM_LDC_PC_G1             = 0x44,
  R_ARM_LDC_PC_G2             = 0x45,
  R_ARM_ALU_SB_G0_NC          = 0x46,
  R_ARM_ALU_SB_G0             = 0x47,
  R_ARM_ALU_SB_G1_NC          = 0x48,
  R_ARM_ALU_SB_G1             = 0x49,
  R_ARM_ALU_SB_G2             = 0x4a,
  R_ARM_LDR_SB_G0             = 0x4b,
  R_ARM_LDR_SB_G1             = 0x4c,
  R_ARM_LDR_SB_G2             = 0x4d,
  R_ARM_LDRS_SB_G0            = 0x4e,
  R_ARM_LDRS_SB_G1            = 0x4f,
  R_ARM_LDRS_SB_G2            = 0x50,
  R_ARM_LDC_SB_G0             = 0x51,
  R_ARM_LDC_SB_G1             = 0x52,
  R_ARM_LDC_SB_G2             = 0x53,
  R_ARM_MOVW_BREL_NC          = 0x54,
  R_ARM_MOVT_BREL             = 0x55,
  R_ARM_MOVW_BREL             = 0x56,
  R_ARM_THM_MOVW_BREL_NC      = 0x57,
  R_ARM_THM_MOVT_BREL         = 0x58,
  R_ARM_THM_MOVW_BREL         = 0x59,
  R_ARM_TLS_GOTDESC           = 0x5a,
  R_ARM_TLS_CALL              = 0x5b,
  R_ARM_TLS_DESCSEQ           = 0x5c,
  R_ARM_THM_TLS_CALL          = 0x5d,
  R_ARM_PLT32_ABS             = 0x5e,
  R_ARM_GOT_ABS               = 0x5f,
  R_ARM_GOT_PREL              = 0x60,
  R_ARM_GOT_BREL12            = 0x61,
  R_ARM_GOTOFF12              = 0x62,
  R_ARM_GOTRELAX              = 0x63,
  R_ARM_GNU_VTENTRY           = 0x64,
  R_ARM_GNU_VTINHERIT         = 0x65,
  R_ARM_THM_JUMP11            = 0x66,
  R_ARM_THM_JUMP8             = 0x67,
  R_ARM_TLS_GD32              = 0x68,
  R_ARM_TLS_LDM32             = 0x69,
  R_ARM_TLS_LDO32             = 0x6a,
  R_ARM_TLS_IE32              = 0x6b,
  R_ARM_TLS_LE32              = 0x6c,
  R_ARM_TLS_LDO12             = 0x6d,
  R_ARM_TLS_LE12              = 0x6e,
  R_ARM_TLS_IE12GP            = 0x6f,
  R_ARM_PRIVATE_0             = 0x70,
  R_ARM_PRIVATE_1             = 0x71,
  R_ARM_PRIVATE_2             = 0x72,
  R_ARM_PRIVATE_3             = 0x73,
  R_ARM_PRIVATE_4             = 0x74,
  R_ARM_PRIVATE_5             = 0x75,
  R_ARM_PRIVATE_6             = 0x76,
  R_ARM_PRIVATE_7             = 0x77,
  R_ARM_PRIVATE_8             = 0x78,
  R_ARM_PRIVATE_9             = 0x79,
  R_ARM_PRIVATE_10            = 0x7a,
  R_ARM_PRIVATE_11            = 0x7b,
  R_ARM_PRIVATE_12            = 0x7c,
  R_ARM_PRIVATE_13            = 0x7d,
  R_ARM_PRIVATE_14            = 0x7e,
  R_ARM_PRIVATE_15            = 0x7f,
  R_ARM_ME_TOO                = 0x80,
  R_ARM_THM_TLS_DESCSEQ16     = 0x81,
  R_ARM_THM_TLS_DESCSEQ32     = 0x82
};

// Mips Specific e_flags
enum : unsigned {
  EF_MIPS_NOREORDER = 0x00000001, // Don't reorder instructions
  EF_MIPS_PIC       = 0x00000002, // Position independent code
  EF_MIPS_CPIC      = 0x00000004, // Call object with Position independent code
  EF_MIPS_ABI2      = 0x00000020,
  EF_MIPS_32BITMODE = 0x00000100,
  EF_MIPS_NAN2008   = 0x00000400, // Uses IEE 754-2008 NaN encoding
  EF_MIPS_ABI_O32   = 0x00001000, // This file follows the first MIPS 32 bit ABI

  //ARCH_ASE
  EF_MIPS_MICROMIPS = 0x02000000, // microMIPS
  EF_MIPS_ARCH_ASE_M16 =
                      0x04000000, // Has Mips-16 ISA extensions
  //ARCH
  EF_MIPS_ARCH_1    = 0x00000000, // MIPS1 instruction set
  EF_MIPS_ARCH_2    = 0x10000000, // MIPS2 instruction set
  EF_MIPS_ARCH_3    = 0x20000000, // MIPS3 instruction set
  EF_MIPS_ARCH_4    = 0x30000000, // MIPS4 instruction set
  EF_MIPS_ARCH_5    = 0x40000000, // MIPS5 instruction set
  EF_MIPS_ARCH_32   = 0x50000000, // MIPS32 instruction set per linux not elf.h
  EF_MIPS_ARCH_64   = 0x60000000, // MIPS64 instruction set per linux not elf.h
  EF_MIPS_ARCH_32R2 = 0x70000000, // mips32r2
  EF_MIPS_ARCH_64R2 = 0x80000000, // mips64r2
  EF_MIPS_ARCH_32R6 = 0x90000000, // mips32r6
  EF_MIPS_ARCH_64R6 = 0xa0000000, // mips64r6
  EF_MIPS_ARCH      = 0xf0000000  // Mask for applying EF_MIPS_ARCH_ variant
};

// ELF Relocation types for Mips
enum {
  R_MIPS_NONE              =  0,
  R_MIPS_16                =  1,
  R_MIPS_32                =  2,
  R_MIPS_REL32             =  3,
  R_MIPS_26                =  4,
  R_MIPS_HI16              =  5,
  R_MIPS_LO16              =  6,
  R_MIPS_GPREL16           =  7,
  R_MIPS_LITERAL           =  8,
  R_MIPS_GOT16             =  9,
  R_MIPS_PC16              = 10,
  R_MIPS_CALL16            = 11,
  R_MIPS_GPREL32           = 12,
  R_MIPS_UNUSED1           = 13,
  R_MIPS_UNUSED2           = 14,
  R_MIPS_SHIFT5            = 16,
  R_MIPS_SHIFT6            = 17,
  R_MIPS_64                = 18,
  R_MIPS_GOT_DISP          = 19,
  R_MIPS_GOT_PAGE          = 20,
  R_MIPS_GOT_OFST          = 21,
  R_MIPS_GOT_HI16          = 22,
  R_MIPS_GOT_LO16          = 23,
  R_MIPS_SUB               = 24,
  R_MIPS_INSERT_A          = 25,
  R_MIPS_INSERT_B          = 26,
  R_MIPS_DELETE            = 27,
  R_MIPS_HIGHER            = 28,
  R_MIPS_HIGHEST           = 29,
  R_MIPS_CALL_HI16         = 30,
  R_MIPS_CALL_LO16         = 31,
  R_MIPS_SCN_DISP          = 32,
  R_MIPS_REL16             = 33,
  R_MIPS_ADD_IMMEDIATE     = 34,
  R_MIPS_PJUMP             = 35,
  R_MIPS_RELGOT            = 36,
  R_MIPS_JALR              = 37,
  R_MIPS_TLS_DTPMOD32      = 38,
  R_MIPS_TLS_DTPREL32      = 39,
  R_MIPS_TLS_DTPMOD64      = 40,
  R_MIPS_TLS_DTPREL64      = 41,
  R_MIPS_TLS_GD            = 42,
  R_MIPS_TLS_LDM           = 43,
  R_MIPS_TLS_DTPREL_HI16   = 44,
  R_MIPS_TLS_DTPREL_LO16   = 45,
  R_MIPS_TLS_GOTTPREL      = 46,
  R_MIPS_TLS_TPREL32       = 47,
  R_MIPS_TLS_TPREL64       = 48,
  R_MIPS_TLS_TPREL_HI16    = 49,
  R_MIPS_TLS_TPREL_LO16    = 50,
  R_MIPS_GLOB_DAT          = 51,
  R_MIPS_PC21_S2           = 60,
  R_MIPS_PC26_S2           = 61,
  R_MIPS_PC18_S3           = 62,
  R_MIPS_PC19_S2           = 63,
  R_MIPS_PCHI16            = 64,
  R_MIPS_PCLO16            = 65,
  R_MIPS16_GOT16           = 102,
  R_MIPS16_HI16            = 104,
  R_MIPS16_LO16            = 105,
  R_MIPS_COPY              = 126,
  R_MIPS_JUMP_SLOT         = 127,
  R_MICROMIPS_26_S1        = 133,
  R_MICROMIPS_HI16         = 134,
  R_MICROMIPS_LO16         = 135,
  R_MICROMIPS_GOT16        = 138,
  R_MICROMIPS_PC16_S1      = 141,
  R_MICROMIPS_CALL16       = 142,
  R_MICROMIPS_GOT_DISP     = 145,
  R_MICROMIPS_GOT_PAGE     = 146,
  R_MICROMIPS_GOT_OFST     = 147,
  R_MICROMIPS_TLS_GD          = 162,
  R_MICROMIPS_TLS_LDM         = 163,
  R_MICROMIPS_TLS_DTPREL_HI16 = 164,
  R_MICROMIPS_TLS_DTPREL_LO16 = 165,
  R_MICROMIPS_TLS_TPREL_HI16  = 169,
  R_MICROMIPS_TLS_TPREL_LO16  = 170,
  R_MIPS_NUM               = 218,
  R_MIPS_PC32              = 248
};

// Special values for the st_other field in the symbol table entry for MIPS.
enum {
  STO_MIPS_OPTIONAL        = 0x04,  // Symbol whose definition is optional
  STO_MIPS_PLT             = 0x08,  // PLT entry related dynamic table record
  STO_MIPS_PIC             = 0x20,  // PIC func in an object mixes PIC/non-PIC
  STO_MIPS_MICROMIPS       = 0x80,  // MIPS Specific ISA for MicroMips
  STO_MIPS_MIPS16          = 0xf0   // MIPS Specific ISA for Mips16
};

// Hexagon Specific e_flags
// Release 5 ABI
enum {
  // Object processor version flags, bits[3:0]
  EF_HEXAGON_MACH_V2      = 0x00000001,   // Hexagon V2
  EF_HEXAGON_MACH_V3      = 0x00000002,   // Hexagon V3
  EF_HEXAGON_MACH_V4      = 0x00000003,   // Hexagon V4
  EF_HEXAGON_MACH_V5      = 0x00000004,   // Hexagon V5

  // Highest ISA version flags
  EF_HEXAGON_ISA_MACH     = 0x00000000,   // Same as specified in bits[3:0]
                                          // of e_flags
  EF_HEXAGON_ISA_V2       = 0x00000010,   // Hexagon V2 ISA
  EF_HEXAGON_ISA_V3       = 0x00000020,   // Hexagon V3 ISA
  EF_HEXAGON_ISA_V4       = 0x00000030,   // Hexagon V4 ISA
  EF_HEXAGON_ISA_V5       = 0x00000040    // Hexagon V5 ISA
};

// Hexagon specific Section indexes for common small data
// Release 5 ABI
enum {
  SHN_HEXAGON_SCOMMON     = 0xff00,       // Other access sizes
  SHN_HEXAGON_SCOMMON_1   = 0xff01,       // Byte-sized access
  SHN_HEXAGON_SCOMMON_2   = 0xff02,       // Half-word-sized access
  SHN_HEXAGON_SCOMMON_4   = 0xff03,       // Word-sized access
  SHN_HEXAGON_SCOMMON_8   = 0xff04        // Double-word-size access
};

// ELF Relocation types for Hexagon
// Release 5 ABI
enum {
  R_HEX_NONE              =  0,
  R_HEX_B22_PCREL         =  1,
  R_HEX_B15_PCREL         =  2,
  R_HEX_B7_PCREL          =  3,
  R_HEX_LO16              =  4,
  R_HEX_HI16              =  5,
  R_HEX_32                =  6,
  R_HEX_16                =  7,
  R_HEX_8                 =  8,
  R_HEX_GPREL16_0         =  9,
  R_HEX_GPREL16_1         =  10,
  R_HEX_GPREL16_2         =  11,
  R_HEX_GPREL16_3         =  12,
  R_HEX_HL16              =  13,
  R_HEX_B13_PCREL         =  14,
  R_HEX_B9_PCREL          =  15,
  R_HEX_B32_PCREL_X       =  16,
  R_HEX_32_6_X            =  17,
  R_HEX_B22_PCREL_X       =  18,
  R_HEX_B15_PCREL_X       =  19,
  R_HEX_B13_PCREL_X       =  20,
  R_HEX_B9_PCREL_X        =  21,
  R_HEX_B7_PCREL_X        =  22,
  R_HEX_16_X              =  23,
  R_HEX_12_X              =  24,
  R_HEX_11_X              =  25,
  R_HEX_10_X              =  26,
  R_HEX_9_X               =  27,
  R_HEX_8_X               =  28,
  R_HEX_7_X               =  29,
  R_HEX_6_X               =  30,
  R_HEX_32_PCREL          =  31,
  R_HEX_COPY              =  32,
  R_HEX_GLOB_DAT          =  33,
  R_HEX_JMP_SLOT          =  34,
  R_HEX_RELATIVE          =  35,
  R_HEX_PLT_B22_PCREL     =  36,
  R_HEX_GOTREL_LO16       =  37,
  R_HEX_GOTREL_HI16       =  38,
  R_HEX_GOTREL_32         =  39,
  R_HEX_GOT_LO16          =  40,
  R_HEX_GOT_HI16          =  41,
  R_HEX_GOT_32            =  42,
  R_HEX_GOT_16            =  43,
  R_HEX_DTPMOD_32         =  44,
  R_HEX_DTPREL_LO16       =  45,
  R_HEX_DTPREL_HI16       =  46,
  R_HEX_DTPREL_32         =  47,
  R_HEX_DTPREL_16         =  48,
  R_HEX_GD_PLT_B22_PCREL  =  49,
  R_HEX_GD_GOT_LO16       =  50,
  R_HEX_GD_GOT_HI16       =  51,
  R_HEX_GD_GOT_32         =  52,
  R_HEX_GD_GOT_16         =  53,
  R_HEX_IE_LO16           =  54,
  R_HEX_IE_HI16           =  55,
  R_HEX_IE_32             =  56,
  R_HEX_IE_GOT_LO16       =  57,
  R_HEX_IE_GOT_HI16       =  58,
  R_HEX_IE_GOT_32         =  59,
  R_HEX_IE_GOT_16         =  60,
  R_HEX_TPREL_LO16        =  61,
  R_HEX_TPREL_HI16        =  62,
  R_HEX_TPREL_32          =  63,
  R_HEX_TPREL_16          =  64,
  R_HEX_6_PCREL_X         =  65,
  R_HEX_GOTREL_32_6_X     =  66,
  R_HEX_GOTREL_16_X       =  67,
  R_HEX_GOTREL_11_X       =  68,
  R_HEX_GOT_32_6_X        =  69,
  R_HEX_GOT_16_X          =  70,
  R_HEX_GOT_11_X          =  71,
  R_HEX_DTPREL_32_6_X     =  72,
  R_HEX_DTPREL_16_X       =  73,
  R_HEX_DTPREL_11_X       =  74,
  R_HEX_GD_GOT_32_6_X     =  75,
  R_HEX_GD_GOT_16_X       =  76,
  R_HEX_GD_GOT_11_X       =  77,
  R_HEX_IE_32_6_X         =  78,
  R_HEX_IE_16_X           =  79,
  R_HEX_IE_GOT_32_6_X     =  80,
  R_HEX_IE_GOT_16_X       =  81,
  R_HEX_IE_GOT_11_X       =  82,
  R_HEX_TPREL_32_6_X      =  83,
  R_HEX_TPREL_16_X        =  84,
  R_HEX_TPREL_11_X        =  85
};

// ELF Relocation types for S390/zSeries
enum {
  R_390_NONE        =  0,
  R_390_8           =  1,
  R_390_12          =  2,
  R_390_16          =  3,
  R_390_32          =  4,
  R_390_PC32        =  5,
  R_390_GOT12       =  6,
  R_390_GOT32       =  7,
  R_390_PLT32       =  8,
  R_390_COPY        =  9,
  R_390_GLOB_DAT    = 10,
  R_390_JMP_SLOT    = 11,
  R_390_RELATIVE    = 12,
  R_390_GOTOFF      = 13,
  R_390_GOTPC       = 14,
  R_390_GOT16       = 15,
  R_390_PC16        = 16,
  R_390_PC16DBL     = 17,
  R_390_PLT16DBL    = 18,
  R_390_PC32DBL     = 19,
  R_390_PLT32DBL    = 20,
  R_390_GOTPCDBL    = 21,
  R_390_64          = 22,
  R_390_PC64        = 23,
  R_390_GOT64       = 24,
  R_390_PLT64       = 25,
  R_390_GOTENT      = 26,
  R_390_GOTOFF16    = 27,
  R_390_GOTOFF64    = 28,
  R_390_GOTPLT12    = 29,
  R_390_GOTPLT16    = 30,
  R_390_GOTPLT32    = 31,
  R_390_GOTPLT64    = 32,
  R_390_GOTPLTENT   = 33,
  R_390_PLTOFF16    = 34,
  R_390_PLTOFF32    = 35,
  R_390_PLTOFF64    = 36,
  R_390_TLS_LOAD    = 37,
  R_390_TLS_GDCALL  = 38,
  R_390_TLS_LDCALL  = 39,
  R_390_TLS_GD32    = 40,
  R_390_TLS_GD64    = 41,
  R_390_TLS_GOTIE12 = 42,
  R_390_TLS_GOTIE32 = 43,
  R_390_TLS_GOTIE64 = 44,
  R_390_TLS_LDM32   = 45,
  R_390_TLS_LDM64   = 46,
  R_390_TLS_IE32    = 47,
  R_390_TLS_IE64    = 48,
  R_390_TLS_IEENT   = 49,
  R_390_TLS_LE32    = 50,
  R_390_TLS_LE64    = 51,
  R_390_TLS_LDO32   = 52,
  R_390_TLS_LDO64   = 53,
  R_390_TLS_DTPMOD  = 54,
  R_390_TLS_DTPOFF  = 55,
  R_390_TLS_TPOFF   = 56,
  R_390_20          = 57,
  R_390_GOT20       = 58,
  R_390_GOTPLT20    = 59,
  R_390_TLS_GOTIE20 = 60,
  R_390_IRELATIVE   = 61
};

// ELF Relocation type for Sparc.
enum {
  R_SPARC_NONE        = 0,
  R_SPARC_8           = 1,
  R_SPARC_16          = 2,
  R_SPARC_32          = 3,
  R_SPARC_DISP8       = 4,
  R_SPARC_DISP16      = 5,
  R_SPARC_DISP32      = 6,
  R_SPARC_WDISP30     = 7,
  R_SPARC_WDISP22     = 8,
  R_SPARC_HI22        = 9,
  R_SPARC_22          = 10,
  R_SPARC_13          = 11,
  R_SPARC_LO10        = 12,
  R_SPARC_GOT10       = 13,
  R_SPARC_GOT13       = 14,
  R_SPARC_GOT22       = 15,
  R_SPARC_PC10        = 16,
  R_SPARC_PC22        = 17,
  R_SPARC_WPLT30      = 18,
  R_SPARC_COPY        = 19,
  R_SPARC_GLOB_DAT    = 20,
  R_SPARC_JMP_SLOT    = 21,
  R_SPARC_RELATIVE    = 22,
  R_SPARC_UA32        = 23,
  R_SPARC_PLT32       = 24,
  R_SPARC_HIPLT22     = 25,
  R_SPARC_LOPLT10     = 26,
  R_SPARC_PCPLT32     = 27,
  R_SPARC_PCPLT22     = 28,
  R_SPARC_PCPLT10     = 29,
  R_SPARC_10          = 30,
  R_SPARC_11          = 31,
  R_SPARC_64          = 32,
  R_SPARC_OLO10       = 33,
  R_SPARC_HH22        = 34,
  R_SPARC_HM10        = 35,
  R_SPARC_LM22        = 36,
  R_SPARC_PC_HH22     = 37,
  R_SPARC_PC_HM10     = 38,
  R_SPARC_PC_LM22     = 39,
  R_SPARC_WDISP16     = 40,
  R_SPARC_WDISP19     = 41,
  R_SPARC_7           = 43,
  R_SPARC_5           = 44,
  R_SPARC_6           = 45,
  R_SPARC_DISP64      = 46,
  R_SPARC_PLT64       = 47,
  R_SPARC_HIX22       = 48,
  R_SPARC_LOX10       = 49,
  R_SPARC_H44         = 50,
  R_SPARC_M44         = 51,
  R_SPARC_L44         = 52,
  R_SPARC_REGISTER    = 53,
  R_SPARC_UA64        = 54,
  R_SPARC_UA16        = 55,
  R_SPARC_TLS_GD_HI22   = 56,
  R_SPARC_TLS_GD_LO10   = 57,
  R_SPARC_TLS_GD_ADD    = 58,
  R_SPARC_TLS_GD_CALL   = 59,
  R_SPARC_TLS_LDM_HI22  = 60,
  R_SPARC_TLS_LDM_LO10  = 61,
  R_SPARC_TLS_LDM_ADD   = 62,
  R_SPARC_TLS_LDM_CALL  = 63,
  R_SPARC_TLS_LDO_HIX22 = 64,
  R_SPARC_TLS_LDO_LOX10 = 65,
  R_SPARC_TLS_LDO_ADD   = 66,
  R_SPARC_TLS_IE_HI22   = 67,
  R_SPARC_TLS_IE_LO10   = 68,
  R_SPARC_TLS_IE_LD     = 69,
  R_SPARC_TLS_IE_LDX    = 70,
  R_SPARC_TLS_IE_ADD    = 71,
  R_SPARC_TLS_LE_HIX22  = 72,
  R_SPARC_TLS_LE_LOX10  = 73,
  R_SPARC_TLS_DTPMOD32  = 74,
  R_SPARC_TLS_DTPMOD64  = 75,
  R_SPARC_TLS_DTPOFF32  = 76,
  R_SPARC_TLS_DTPOFF64  = 77,
  R_SPARC_TLS_TPOFF32   = 78,
  R_SPARC_TLS_TPOFF64   = 79,
  R_SPARC_GOTDATA_HIX22 = 80,
  R_SPARC_GOTDATA_LOX22 = 81,
  R_SPARC_GOTDATA_OP_HIX22 = 82,
  R_SPARC_GOTDATA_OP_LOX22 = 83,
  R_SPARC_GOTDATA_OP    = 84
};

// Section header.
struct Elf32_Shdr {
  Elf32_Word sh_name;      // Section name (index into string table)
  Elf32_Word sh_type;      // Section type (SHT_*)
  Elf32_Word sh_flags;     // Section flags (SHF_*)
  Elf32_Addr sh_addr;      // Address where section is to be loaded
  Elf32_Off  sh_offset;    // File offset of section data, in bytes
  Elf32_Word sh_size;      // Size of section, in bytes
  Elf32_Word sh_link;      // Section type-specific header table index link
  Elf32_Word sh_info;      // Section type-specific extra information
  Elf32_Word sh_addralign; // Section address alignment
  Elf32_Word sh_entsize;   // Size of records contained within the section
};

// Section header for ELF64 - same fields as ELF32, different types.
struct Elf64_Shdr {
  Elf64_Word  sh_name;
  Elf64_Word  sh_type;
  Elf64_Xword sh_flags;
  Elf64_Addr  sh_addr;
  Elf64_Off   sh_offset;
  Elf64_Xword sh_size;
  Elf64_Word  sh_link;
  Elf64_Word  sh_info;
  Elf64_Xword sh_addralign;
  Elf64_Xword sh_entsize;
};

// Special section indices.
enum {
  SHN_UNDEF     = 0,      // Undefined, missing, irrelevant, or meaningless
  SHN_LORESERVE = 0xff00, // Lowest reserved index
  SHN_LOPROC    = 0xff00, // Lowest processor-specific index
  SHN_HIPROC    = 0xff1f, // Highest processor-specific index
  SHN_LOOS      = 0xff20, // Lowest operating system-specific index
  SHN_HIOS      = 0xff3f, // Highest operating system-specific index
  SHN_ABS       = 0xfff1, // Symbol has absolute value; does not need relocation
  SHN_COMMON    = 0xfff2, // FORTRAN COMMON or C external global variables
  SHN_XINDEX    = 0xffff, // Mark that the index is >= SHN_LORESERVE
  SHN_HIRESERVE = 0xffff  // Highest reserved index
};

// Section types.
enum : unsigned {
  SHT_NULL          = 0,  // No associated section (inactive entry).
  SHT_PROGBITS      = 1,  // Program-defined contents.
  SHT_SYMTAB        = 2,  // Symbol table.
  SHT_STRTAB        = 3,  // String table.
  SHT_RELA          = 4,  // Relocation entries; explicit addends.
  SHT_HASH          = 5,  // Symbol hash table.
  SHT_DYNAMIC       = 6,  // Information for dynamic linking.
  SHT_NOTE          = 7,  // Information about the file.
  SHT_NOBITS        = 8,  // Data occupies no space in the file.
  SHT_REL           = 9,  // Relocation entries; no explicit addends.
  SHT_SHLIB         = 10, // Reserved.
  SHT_DYNSYM        = 11, // Symbol table.
  SHT_INIT_ARRAY    = 14, // Pointers to initialization functions.
  SHT_FINI_ARRAY    = 15, // Pointers to termination functions.
  SHT_PREINIT_ARRAY = 16, // Pointers to pre-init functions.
  SHT_GROUP         = 17, // Section group.
  SHT_SYMTAB_SHNDX  = 18, // Indices for SHN_XINDEX entries.
  SHT_LOOS          = 0x60000000, // Lowest operating system-specific type.
  SHT_GNU_ATTRIBUTES= 0x6ffffff5, // Object attributes.
  SHT_GNU_HASH      = 0x6ffffff6, // GNU-style hash table.
  SHT_GNU_verdef    = 0x6ffffffd, // GNU version definitions.
  SHT_GNU_verneed   = 0x6ffffffe, // GNU version references.
  SHT_GNU_versym    = 0x6fffffff, // GNU symbol versions table.
  SHT_HIOS          = 0x6fffffff, // Highest operating system-specific type.
  SHT_LOPROC        = 0x70000000, // Lowest processor arch-specific type.
  // Fixme: All this is duplicated in MCSectionELF. Why??
  // Exception Index table
  SHT_ARM_EXIDX           = 0x70000001U,
  // BPABI DLL dynamic linking pre-emption map
  SHT_ARM_PREEMPTMAP      = 0x70000002U,
  //  Object file compatibility attributes
  SHT_ARM_ATTRIBUTES      = 0x70000003U,
  SHT_ARM_DEBUGOVERLAY    = 0x70000004U,
  SHT_ARM_OVERLAYSECTION  = 0x70000005U,
  SHT_HEX_ORDERED         = 0x70000000, // Link editor is to sort the entries in
                                        // this section based on their sizes
  SHT_X86_64_UNWIND       = 0x70000001, // Unwind information

  SHT_MIPS_REGINFO        = 0x70000006, // Register usage information
  SHT_MIPS_OPTIONS        = 0x7000000d, // General options
  SHT_MIPS_ABIFLAGS       = 0x7000002a, // Abiflags options

  SHT_HIPROC        = 0x7fffffff, // Highest processor arch-specific type.
  SHT_LOUSER        = 0x80000000, // Lowest type reserved for applications.
  SHT_HIUSER        = 0xffffffff  // Highest type reserved for applications.
};

// Section flags.
enum : unsigned {
  // Section data should be writable during execution.
  SHF_WRITE = 0x1,

  // Section occupies memory during program execution.
  SHF_ALLOC = 0x2,

  // Section contains executable machine instructions.
  SHF_EXECINSTR = 0x4,

  // The data in this section may be merged.
  SHF_MERGE = 0x10,

  // The data in this section is null-terminated strings.
  SHF_STRINGS = 0x20,

  // A field in this section holds a section header table index.
  SHF_INFO_LINK = 0x40U,

  // Adds special ordering requirements for link editors.
  SHF_LINK_ORDER = 0x80U,

  // This section requires special OS-specific processing to avoid incorrect
  // behavior.
  SHF_OS_NONCONFORMING = 0x100U,

  // This section is a member of a section group.
  SHF_GROUP = 0x200U,

  // This section holds Thread-Local Storage.
  SHF_TLS = 0x400U,

  // This section is excluded from the final executable or shared library.
  SHF_EXCLUDE = 0x80000000U,

  // Start of target-specific flags.

  /// XCORE_SHF_CP_SECTION - All sections with the "c" flag are grouped
  /// together by the linker to form the constant pool and the cp register is
  /// set to the start of the constant pool by the boot code.
  XCORE_SHF_CP_SECTION = 0x800U,

  /// XCORE_SHF_DP_SECTION - All sections with the "d" flag are grouped
  /// together by the linker to form the data section and the dp register is
  /// set to the start of the section by the boot code.
  XCORE_SHF_DP_SECTION = 0x1000U,

  SHF_MASKOS   = 0x0ff00000,

  // Bits indicating processor-specific flags.
  SHF_MASKPROC = 0xf0000000,

  // If an object file section does not have this flag set, then it may not hold
  // more than 2GB and can be freely referred to in objects using smaller code
  // models. Otherwise, only objects using larger code models can refer to them.
  // For example, a medium code model object can refer to data in a section that
  // sets this flag besides being able to refer to data in a section that does
  // not set it; likewise, a small code model object can refer only to code in a
  // section that does not set this flag.
  SHF_X86_64_LARGE = 0x10000000,

  // All sections with the GPREL flag are grouped into a global data area
  // for faster accesses
  SHF_HEX_GPREL = 0x10000000,

  // Section contains text/data which may be replicated in other sections.
  // Linker must retain only one copy.
  SHF_MIPS_NODUPES = 0x01000000,

  // Linker must generate implicit hidden weak names.
  SHF_MIPS_NAMES   = 0x02000000,

  // Section data local to process.
  SHF_MIPS_LOCAL   = 0x04000000,

  // Do not strip this section.
  SHF_MIPS_NOSTRIP = 0x08000000,

  // Section must be part of global data area.
  SHF_MIPS_GPREL   = 0x10000000,

  // This section should be merged.
  SHF_MIPS_MERGE   = 0x20000000,

  // Address size to be inferred from section entry size.
  SHF_MIPS_ADDR    = 0x40000000,

  // Section data is string data by default.
  SHF_MIPS_STRING  = 0x80000000
};

// Section Group Flags
enum : unsigned {
  GRP_COMDAT = 0x1,
  GRP_MASKOS = 0x0ff00000,
  GRP_MASKPROC = 0xf0000000
};

// Symbol table entries for ELF32.
struct Elf32_Sym {
  Elf32_Word    st_name;  // Symbol name (index into string table)
  Elf32_Addr    st_value; // Value or address associated with the symbol
  Elf32_Word    st_size;  // Size of the symbol
  unsigned char st_info;  // Symbol's type and binding attributes
  unsigned char st_other; // Must be zero; reserved
  Elf32_Half    st_shndx; // Which section (header table index) it's defined in

  // These accessors and mutators correspond to the ELF32_ST_BIND,
  // ELF32_ST_TYPE, and ELF32_ST_INFO macros defined in the ELF specification:
  unsigned char getBinding() const { return st_info >> 4; }
  unsigned char getType() const { return st_info & 0x0f; }
  void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
  void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
  void setBindingAndType(unsigned char b, unsigned char t) {
    st_info = (b << 4) + (t & 0x0f);
  }
};

// BEGIN android-added for <elf.h> compat
static inline unsigned char ELF32_ST_BIND(unsigned char st_info) { return st_info >> 4; }
static inline unsigned char ELF32_ST_TYPE(unsigned char st_info) { return st_info & 0x0f; }
static inline unsigned char ELF64_ST_BIND(unsigned char st_info) { return st_info >> 4; }
static inline unsigned char ELF64_ST_TYPE(unsigned char st_info) { return st_info & 0x0f; }
// END android-added for <elf.h> compat

// Symbol table entries for ELF64.
struct Elf64_Sym {
  Elf64_Word      st_name;  // Symbol name (index into string table)
  unsigned char   st_info;  // Symbol's type and binding attributes
  unsigned char   st_other; // Must be zero; reserved
  Elf64_Half      st_shndx; // Which section (header tbl index) it's defined in
  Elf64_Addr      st_value; // Value or address associated with the symbol
  Elf64_Xword     st_size;  // Size of the symbol

  // These accessors and mutators are identical to those defined for ELF32
  // symbol table entries.
  unsigned char getBinding() const { return st_info >> 4; }
  unsigned char getType() const { return st_info & 0x0f; }
  void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
  void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
  void setBindingAndType(unsigned char b, unsigned char t) {
    st_info = (b << 4) + (t & 0x0f);
  }
};

// The size (in bytes) of symbol table entries.
enum {
  SYMENTRY_SIZE32 = 16, // 32-bit symbol entry size
  SYMENTRY_SIZE64 = 24  // 64-bit symbol entry size.
};

// Symbol bindings.
enum {
  STB_LOCAL = 0,   // Local symbol, not visible outside obj file containing def
  STB_GLOBAL = 1,  // Global symbol, visible to all object files being combined
  STB_WEAK = 2,    // Weak symbol, like global but lower-precedence
  STB_LOOS   = 10, // Lowest operating system-specific binding type
  STB_HIOS   = 12, // Highest operating system-specific binding type
  STB_LOPROC = 13, // Lowest processor-specific binding type
  STB_HIPROC = 15  // Highest processor-specific binding type
};

// Symbol types.
enum {
  STT_NOTYPE  = 0,   // Symbol's type is not specified
  STT_OBJECT  = 1,   // Symbol is a data object (variable, array, etc.)
  STT_FUNC    = 2,   // Symbol is executable code (function, etc.)
  STT_SECTION = 3,   // Symbol refers to a section
  STT_FILE    = 4,   // Local, absolute symbol that refers to a file
  STT_COMMON  = 5,   // An uninitialized common block
  STT_TLS     = 6,   // Thread local data object
  STT_LOOS    = 7,   // Lowest operating system-specific symbol type
  STT_HIOS    = 8,   // Highest operating system-specific symbol type
  STT_GNU_IFUNC = 10, // GNU indirect function
  STT_LOPROC  = 13,  // Lowest processor-specific symbol type
  STT_HIPROC  = 15   // Highest processor-specific symbol type
};

enum {
  STV_DEFAULT   = 0,  // Visibility is specified by binding type
  STV_INTERNAL  = 1,  // Defined by processor supplements
  STV_HIDDEN    = 2,  // Not visible to other components
  STV_PROTECTED = 3   // Visible in other components but not preemptable
};

// Symbol number.
enum {
  STN_UNDEF = 0
};

// Relocation entry, without explicit addend.
struct Elf32_Rel {
  Elf32_Addr r_offset; // Location (file byte offset, or program virtual addr)
  Elf32_Word r_info;   // Symbol table index and type of relocation to apply

  // These accessors and mutators correspond to the ELF32_R_SYM, ELF32_R_TYPE,
  // and ELF32_R_INFO macros defined in the ELF specification:
  Elf32_Word getSymbol() const { return (r_info >> 8); }
  unsigned char getType() const { return (unsigned char) (r_info & 0x0ff); }
  void setSymbol(Elf32_Word s) { setSymbolAndType(s, getType()); }
  void setType(unsigned char t) { setSymbolAndType(getSymbol(), t); }
  void setSymbolAndType(Elf32_Word s, unsigned char t) {
    r_info = (s << 8) + t;
  }
};

// Relocation entry with explicit addend.
struct Elf32_Rela {
  Elf32_Addr  r_offset; // Location (file byte offset, or program virtual addr)
  Elf32_Word  r_info;   // Symbol table index and type of relocation to apply
  Elf32_Sword r_addend; // Compute value for relocatable field by adding this

  // These accessors and mutators correspond to the ELF32_R_SYM, ELF32_R_TYPE,
  // and ELF32_R_INFO macros defined in the ELF specification:
  Elf32_Word getSymbol() const { return (r_info >> 8); }
  unsigned char getType() const { return (unsigned char) (r_info & 0x0ff); }
  void setSymbol(Elf32_Word s) { setSymbolAndType(s, getType()); }
  void setType(unsigned char t) { setSymbolAndType(getSymbol(), t); }
  void setSymbolAndType(Elf32_Word s, unsigned char t) {
    r_info = (s << 8) + t;
  }
};

// Relocation entry, without explicit addend.
struct Elf64_Rel {
  Elf64_Addr r_offset; // Location (file byte offset, or program virtual addr).
  Elf64_Xword r_info;   // Symbol table index and type of relocation to apply.

  // These accessors and mutators correspond to the ELF64_R_SYM, ELF64_R_TYPE,
  // and ELF64_R_INFO macros defined in the ELF specification:
  Elf64_Word getSymbol() const { return (r_info >> 32); }
  Elf64_Word getType() const {
    return (Elf64_Word) (r_info & 0xffffffffL);
  }
  void setSymbol(Elf64_Word s) { setSymbolAndType(s, getType()); }
  void setType(Elf64_Word t) { setSymbolAndType(getSymbol(), t); }
  void setSymbolAndType(Elf64_Word s, Elf64_Word t) {
    r_info = ((Elf64_Xword)s << 32) + (t&0xffffffffL);
  }
};

// Relocation entry with explicit addend.
struct Elf64_Rela {
  Elf64_Addr  r_offset; // Location (file byte offset, or program virtual addr).
  Elf64_Xword  r_info;   // Symbol table index and type of relocation to apply.
  Elf64_Sxword r_addend; // Compute value for relocatable field by adding this.

  // These accessors and mutators correspond to the ELF64_R_SYM, ELF64_R_TYPE,
  // and ELF64_R_INFO macros defined in the ELF specification:
  Elf64_Word getSymbol() const { return (r_info >> 32); }
  Elf64_Word getType() const {
    return (Elf64_Word) (r_info & 0xffffffffL);
  }
  void setSymbol(Elf64_Word s) { setSymbolAndType(s, getType()); }
  void setType(Elf64_Word t) { setSymbolAndType(getSymbol(), t); }
  void setSymbolAndType(Elf64_Word s, Elf64_Word t) {
    r_info = ((Elf64_Xword)s << 32) + (t&0xffffffffL);
  }
};

// Program header for ELF32.
struct Elf32_Phdr {
  Elf32_Word p_type;   // Type of segment
  Elf32_Off  p_offset; // File offset where segment is located, in bytes
  Elf32_Addr p_vaddr;  // Virtual address of beginning of segment
  Elf32_Addr p_paddr;  // Physical address of beginning of segment (OS-specific)
  Elf32_Word p_filesz; // Num. of bytes in file image of segment (may be zero)
  Elf32_Word p_memsz;  // Num. of bytes in mem image of segment (may be zero)
  Elf32_Word p_flags;  // Segment flags
  Elf32_Word p_align;  // Segment alignment constraint
};

// Program header for ELF64.
struct Elf64_Phdr {
  Elf64_Word   p_type;   // Type of segment
  Elf64_Word   p_flags;  // Segment flags
  Elf64_Off    p_offset; // File offset where segment is located, in bytes
  Elf64_Addr   p_vaddr;  // Virtual address of beginning of segment
  Elf64_Addr   p_paddr;  // Physical addr of beginning of segment (OS-specific)
  Elf64_Xword  p_filesz; // Num. of bytes in file image of segment (may be zero)
  Elf64_Xword  p_memsz;  // Num. of bytes in mem image of segment (may be zero)
  Elf64_Xword  p_align;  // Segment alignment constraint
};

// Segment types.
enum {
  PT_NULL    = 0, // Unused segment.
  PT_LOAD    = 1, // Loadable segment.
  PT_DYNAMIC = 2, // Dynamic linking information.
  PT_INTERP  = 3, // Interpreter pathname.
  PT_NOTE    = 4, // Auxiliary information.
  PT_SHLIB   = 5, // Reserved.
  PT_PHDR    = 6, // The program header table itself.
  PT_TLS     = 7, // The thread-local storage template.
  PT_LOOS    = 0x60000000, // Lowest operating system-specific pt entry type.
  PT_HIOS    = 0x6fffffff, // Highest operating system-specific pt entry type.
  PT_LOPROC  = 0x70000000, // Lowest processor-specific program hdr entry type.
  PT_HIPROC  = 0x7fffffff, // Highest processor-specific program hdr entry type.

  // x86-64 program header types.
  // These all contain stack unwind tables.
  PT_GNU_EH_FRAME  = 0x6474e550,
  PT_SUNW_EH_FRAME = 0x6474e550,
  PT_SUNW_UNWIND   = 0x6464e550,

  PT_GNU_STACK  = 0x6474e551, // Indicates stack executability.
  PT_GNU_RELRO  = 0x6474e552, // Read-only after relocation.

  // ARM program header types.
  PT_ARM_ARCHEXT = 0x70000000, // Platform architecture compatibility info
  // These all contain stack unwind tables.
  PT_ARM_EXIDX   = 0x70000001,
  PT_ARM_UNWIND  = 0x70000001,

  // MIPS program header types.
  PT_MIPS_REGINFO  = 0x70000000,  // Register usage information.
  PT_MIPS_RTPROC   = 0x70000001,  // Runtime procedure table.
  PT_MIPS_OPTIONS  = 0x70000002,  // Options segment.
  PT_MIPS_ABIFLAGS = 0x70000003   // Abiflags segment.
};

// Segment flag bits.
enum : unsigned {
  PF_X        = 1,         // Execute
  PF_W        = 2,         // Write
  PF_R        = 4,         // Read
  PF_MASKOS   = 0x0ff00000,// Bits for operating system-specific semantics.
  PF_MASKPROC = 0xf0000000 // Bits for processor-specific semantics.
};

// Dynamic table entry for ELF32.
struct Elf32_Dyn
{
  Elf32_Sword d_tag;            // Type of dynamic table entry.
  union
  {
      Elf32_Word d_val;         // Integer value of entry.
      Elf32_Addr d_ptr;         // Pointer value of entry.
  } d_un;
};

// Dynamic table entry for ELF64.
struct Elf64_Dyn
{
  Elf64_Sxword d_tag;           // Type of dynamic table entry.
  union
  {
      Elf64_Xword d_val;        // Integer value of entry.
      Elf64_Addr  d_ptr;        // Pointer value of entry.
  } d_un;
};

// Dynamic table entry tags.
enum {
  DT_NULL         = 0,        // Marks end of dynamic array.
  DT_NEEDED       = 1,        // String table offset of needed library.
  DT_PLTRELSZ     = 2,        // Size of relocation entries in PLT.
  DT_PLTGOT       = 3,        // Address associated with linkage table.
  DT_HASH         = 4,        // Address of symbolic hash table.
  DT_STRTAB       = 5,        // Address of dynamic string table.
  DT_SYMTAB       = 6,        // Address of dynamic symbol table.
  DT_RELA         = 7,        // Address of relocation table (Rela entries).
  DT_RELASZ       = 8,        // Size of Rela relocation table.
  DT_RELAENT      = 9,        // Size of a Rela relocation entry.
  DT_STRSZ        = 10,       // Total size of the string table.
  DT_SYMENT       = 11,       // Size of a symbol table entry.
  DT_INIT         = 12,       // Address of initialization function.
  DT_FINI         = 13,       // Address of termination function.
  DT_SONAME       = 14,       // String table offset of a shared objects name.
  DT_RPATH        = 15,       // String table offset of library search path.
  DT_SYMBOLIC     = 16,       // Changes symbol resolution algorithm.
  DT_REL          = 17,       // Address of relocation table (Rel entries).
  DT_RELSZ        = 18,       // Size of Rel relocation table.
  DT_RELENT       = 19,       // Size of a Rel relocation entry.
  DT_PLTREL       = 20,       // Type of relocation entry used for linking.
  DT_DEBUG        = 21,       // Reserved for debugger.
  DT_TEXTREL      = 22,       // Relocations exist for non-writable segments.
  DT_JMPREL       = 23,       // Address of relocations associated with PLT.
  DT_BIND_NOW     = 24,       // Process all relocations before execution.
  DT_INIT_ARRAY   = 25,       // Pointer to array of initialization functions.
  DT_FINI_ARRAY   = 26,       // Pointer to array of termination functions.
  DT_INIT_ARRAYSZ = 27,       // Size of DT_INIT_ARRAY.
  DT_FINI_ARRAYSZ = 28,       // Size of DT_FINI_ARRAY.
  DT_RUNPATH      = 29,       // String table offset of lib search path.
  DT_FLAGS        = 30,       // Flags.
  DT_ENCODING     = 32,       // Values from here to DT_LOOS follow the rules
                              // for the interpretation of the d_un union.

  DT_PREINIT_ARRAY = 32,      // Pointer to array of preinit functions.
  DT_PREINIT_ARRAYSZ = 33,    // Size of the DT_PREINIT_ARRAY array.

  DT_LOOS         = 0x60000000, // Start of environment specific tags.
  DT_HIOS         = 0x6FFFFFFF, // End of environment specific tags.
  DT_LOPROC       = 0x70000000, // Start of processor specific tags.
  DT_HIPROC       = 0x7FFFFFFF, // End of processor specific tags.

  DT_GNU_HASH     = 0x6FFFFEF5, // Reference to the GNU hash table.
  DT_RELACOUNT    = 0x6FFFFFF9, // ELF32_Rela count.
  DT_RELCOUNT     = 0x6FFFFFFA, // ELF32_Rel count.

  DT_FLAGS_1      = 0X6FFFFFFB, // Flags_1.
  DT_VERSYM       = 0x6FFFFFF0, // The address of .gnu.version section.
  DT_VERDEF       = 0X6FFFFFFC, // The address of the version definition table.
  DT_VERDEFNUM    = 0X6FFFFFFD, // The number of entries in DT_VERDEF.
  DT_VERNEED      = 0X6FFFFFFE, // The address of the version Dependency table.
  DT_VERNEEDNUM   = 0X6FFFFFFF, // The number of entries in DT_VERNEED.

  // Mips specific dynamic table entry tags.
  DT_MIPS_RLD_VERSION   = 0x70000001, // 32 bit version number for runtime
                                      // linker interface.
  DT_MIPS_TIME_STAMP    = 0x70000002, // Time stamp.
  DT_MIPS_ICHECKSUM     = 0x70000003, // Checksum of external strings
                                      // and common sizes.
  DT_MIPS_IVERSION      = 0x70000004, // Index of version string
                                      // in string table.
  DT_MIPS_FLAGS         = 0x70000005, // 32 bits of flags.
  DT_MIPS_BASE_ADDRESS  = 0x70000006, // Base address of the segment.
  DT_MIPS_MSYM          = 0x70000007, // Address of .msym section.
  DT_MIPS_CONFLICT      = 0x70000008, // Address of .conflict section.
  DT_MIPS_LIBLIST       = 0x70000009, // Address of .liblist section.
  DT_MIPS_LOCAL_GOTNO   = 0x7000000a, // Number of local global offset
                                      // table entries.
  DT_MIPS_CONFLICTNO    = 0x7000000b, // Number of entries
                                      // in the .conflict section.
  DT_MIPS_LIBLISTNO     = 0x70000010, // Number of entries
                                      // in the .liblist section.
  DT_MIPS_SYMTABNO      = 0x70000011, // Number of entries
                                      // in the .dynsym section.
  DT_MIPS_UNREFEXTNO    = 0x70000012, // Index of first external dynamic symbol
                                      // not referenced locally.
  DT_MIPS_GOTSYM        = 0x70000013, // Index of first dynamic symbol
                                      // in global offset table.
  DT_MIPS_HIPAGENO      = 0x70000014, // Number of page table entries
                                      // in global offset table.
  DT_MIPS_RLD_MAP       = 0x70000016, // Address of run time loader map,
                                      // used for debugging.
  DT_MIPS_DELTA_CLASS       = 0x70000017, // Delta C++ class definition.
  DT_MIPS_DELTA_CLASS_NO    = 0x70000018, // Number of entries
                                          // in DT_MIPS_DELTA_CLASS.
  DT_MIPS_DELTA_INSTANCE    = 0x70000019, // Delta C++ class instances.
  DT_MIPS_DELTA_INSTANCE_NO = 0x7000001A, // Number of entries
                                          // in DT_MIPS_DELTA_INSTANCE.
  DT_MIPS_DELTA_RELOC       = 0x7000001B, // Delta relocations.
  DT_MIPS_DELTA_RELOC_NO    = 0x7000001C, // Number of entries
                                          // in DT_MIPS_DELTA_RELOC.
  DT_MIPS_DELTA_SYM         = 0x7000001D, // Delta symbols that Delta
                                          // relocations refer to.
  DT_MIPS_DELTA_SYM_NO      = 0x7000001E, // Number of entries
                                          // in DT_MIPS_DELTA_SYM.
  DT_MIPS_DELTA_CLASSSYM    = 0x70000020, // Delta symbols that hold
                                          // class declarations.
  DT_MIPS_DELTA_CLASSSYM_NO = 0x70000021, // Number of entries
                                          // in DT_MIPS_DELTA_CLASSSYM.
  DT_MIPS_CXX_FLAGS         = 0x70000022, // Flags indicating information
                                          // about C++ flavor.
  DT_MIPS_PIXIE_INIT        = 0x70000023, // Pixie information.
  DT_MIPS_SYMBOL_LIB        = 0x70000024, // Address of .MIPS.symlib
  DT_MIPS_LOCALPAGE_GOTIDX  = 0x70000025, // The GOT index of the first PTE
                                          // for a segment
  DT_MIPS_LOCAL_GOTIDX      = 0x70000026, // The GOT index of the first PTE
                                          // for a local symbol
  DT_MIPS_HIDDEN_GOTIDX     = 0x70000027, // The GOT index of the first PTE
                                          // for a hidden symbol
  DT_MIPS_PROTECTED_GOTIDX  = 0x70000028, // The GOT index of the first PTE
                                          // for a protected symbol
  DT_MIPS_OPTIONS           = 0x70000029, // Address of `.MIPS.options'.
  DT_MIPS_INTERFACE         = 0x7000002A, // Address of `.interface'.
  DT_MIPS_DYNSTR_ALIGN      = 0x7000002B, // Unknown.
  DT_MIPS_INTERFACE_SIZE    = 0x7000002C, // Size of the .interface section.
  DT_MIPS_RLD_TEXT_RESOLVE_ADDR = 0x7000002D, // Size of rld_text_resolve
                                              // function stored in the GOT.
  DT_MIPS_PERF_SUFFIX       = 0x7000002E, // Default suffix of DSO to be added
                                          // by rld on dlopen() calls.
  DT_MIPS_COMPACT_SIZE      = 0x7000002F, // Size of compact relocation
                                          // section (O32).
  DT_MIPS_GP_VALUE          = 0x70000030, // GP value for auxiliary GOTs.
  DT_MIPS_AUX_DYNAMIC       = 0x70000031, // Address of auxiliary .dynamic.
  DT_MIPS_PLTGOT            = 0x70000032, // Address of the base of the PLTGOT.
  DT_MIPS_RWPLT             = 0x70000034  // Points to the base
                                          // of a writable PLT.
};

// DT_FLAGS values.
enum {
  DF_ORIGIN     = 0x01, // The object may reference $ORIGIN.
  DF_SYMBOLIC   = 0x02, // Search the shared lib before searching the exe.
  DF_TEXTREL    = 0x04, // Relocations may modify a non-writable segment.
  DF_BIND_NOW   = 0x08, // Process all relocations on load.
  DF_STATIC_TLS = 0x10  // Reject attempts to load dynamically.
};

// State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 entry.
enum {
  DF_1_NOW        = 0x00000001, // Set RTLD_NOW for this object.
  DF_1_GLOBAL     = 0x00000002, // Set RTLD_GLOBAL for this object.
  DF_1_GROUP      = 0x00000004, // Set RTLD_GROUP for this object.
  DF_1_NODELETE   = 0x00000008, // Set RTLD_NODELETE for this object.
  DF_1_LOADFLTR   = 0x00000010, // Trigger filtee loading at runtime.
  DF_1_INITFIRST  = 0x00000020, // Set RTLD_INITFIRST for this object.
  DF_1_NOOPEN     = 0x00000040, // Set RTLD_NOOPEN for this object.
  DF_1_ORIGIN     = 0x00000080, // $ORIGIN must be handled.
  DF_1_DIRECT     = 0x00000100, // Direct binding enabled.
  DF_1_TRANS      = 0x00000200,
  DF_1_INTERPOSE  = 0x00000400, // Object is used to interpose.
  DF_1_NODEFLIB   = 0x00000800, // Ignore default lib search path.
  DF_1_NODUMP     = 0x00001000, // Object can't be dldump'ed.
  DF_1_CONFALT    = 0x00002000, // Configuration alternative created.
  DF_1_ENDFILTEE  = 0x00004000, // Filtee terminates filters search.
  DF_1_DISPRELDNE = 0x00008000, // Disp reloc applied at build time.
  DF_1_DISPRELPND = 0x00010000  // Disp reloc applied at run-time.
};

// DT_MIPS_FLAGS values.
enum {
  RHF_NONE                    = 0x00000000, // No flags.
  RHF_QUICKSTART              = 0x00000001, // Uses shortcut pointers.
  RHF_NOTPOT                  = 0x00000002, // Hash size is not a power of two.
  RHS_NO_LIBRARY_REPLACEMENT  = 0x00000004, // Ignore LD_LIBRARY_PATH.
  RHF_NO_MOVE                 = 0x00000008, // DSO address may not be relocated.
  RHF_SGI_ONLY                = 0x00000010, // SGI specific features.
  RHF_GUARANTEE_INIT          = 0x00000020, // Guarantee that .init will finish
                                            // executing before any non-init
                                            // code in DSO is called.
  RHF_DELTA_C_PLUS_PLUS       = 0x00000040, // Contains Delta C++ code.
  RHF_GUARANTEE_START_INIT    = 0x00000080, // Guarantee that .init will start
                                            // executing before any non-init
                                            // code in DSO is called.
  RHF_PIXIE                   = 0x00000100, // Generated by pixie.
  RHF_DEFAULT_DELAY_LOAD      = 0x00000200, // Delay-load DSO by default.
  RHF_REQUICKSTART            = 0x00000400, // Object may be requickstarted
  RHF_REQUICKSTARTED          = 0x00000800, // Object has been requickstarted
  RHF_CORD                    = 0x00001000, // Generated by cord.
  RHF_NO_UNRES_UNDEF          = 0x00002000, // Object contains no unresolved
                                            // undef symbols.
  RHF_RLD_ORDER_SAFE          = 0x00004000  // Symbol table is in a safe order.
};

// ElfXX_VerDef structure version (GNU versioning)
enum {
  VER_DEF_NONE    = 0,
  VER_DEF_CURRENT = 1
};

// VerDef Flags (ElfXX_VerDef::vd_flags)
enum {
  VER_FLG_BASE = 0x1,
  VER_FLG_WEAK = 0x2,
  VER_FLG_INFO = 0x4
};

// Special constants for the version table. (SHT_GNU_versym/.gnu.version)
enum {
  VER_NDX_LOCAL  = 0,      // Unversioned local symbol
  VER_NDX_GLOBAL = 1,      // Unversioned global symbol
  VERSYM_VERSION = 0x7fff, // Version Index mask
  VERSYM_HIDDEN  = 0x8000  // Hidden bit (non-default version)
};

// ElfXX_VerNeed structure version (GNU versioning)
enum {
  VER_NEED_NONE = 0,
  VER_NEED_CURRENT = 1
};

struct ElfTypes32 {
  typedef Elf32_Addr Addr;
  typedef Elf32_Off Off;
  typedef Elf32_Half Half;
  typedef Elf32_Word Word;
  typedef Elf32_Sword Sword;
  typedef Elf32_Ehdr Ehdr;
  typedef Elf32_Shdr Shdr;
  typedef Elf32_Sym Sym;
  typedef Elf32_Rel Rel;
  typedef Elf32_Rela Rela;
  typedef Elf32_Phdr Phdr;
  typedef Elf32_Dyn Dyn;
};

struct ElfTypes64 {
  typedef Elf64_Addr Addr;
  typedef Elf64_Off Off;
  typedef Elf64_Half Half;
  typedef Elf64_Word Word;
  typedef Elf64_Sword Sword;
  typedef Elf64_Xword Xword;
  typedef Elf64_Sxword Sxword;
  typedef Elf64_Ehdr Ehdr;
  typedef Elf64_Shdr Shdr;
  typedef Elf64_Sym Sym;
  typedef Elf64_Rel Rel;
  typedef Elf64_Rela Rela;
  typedef Elf64_Phdr Phdr;
  typedef Elf64_Dyn Dyn;
};

// BEGIN android-changed
#endif  // ART_RUNTIME_ELF_H_
// END android-changed
