#ifndef _QEMU_ELF_H
#define _QEMU_ELF_H
#include <inttypes.h>
/* 32-bit ELF base types. */
/* 64-bit ELF base types. */
/* These constants are for the segment types stored in the image headers */
#define PT_NULL 0
/* Flags in the e_flags field of the header */
/* MIPS architecture level. */
/* The ABI of a file. */
/* These constants define the different elf file types */
#define ET_NONE 0
/* These constants define the various ELF target machines */
#define EM_NONE 0
/*
* This is an interim value that we will use until the committee comes
* up with a final number.
*/
/* Bogus old v850 magic number, used by old tools. */
/*
* This is the old interim value for S/390 architecture
*/
/* This is the info that is needed to parse the dynamic section of the file */
#define DT_NULL 0
#define RHF_NONE 0
/* This info is needed when parsing the symbol table */
#define STB_LOCAL 0
#define STT_NOTYPE 0
/* Symbolic values for the entries in the auxiliary table
put on the initial stack */
typedef struct dynamic{
union{
} d_un;
} Elf32_Dyn;
typedef struct {
union {
} d_un;
} Elf64_Dyn;
/* The following are used with relocations */
#define R_386_NONE 0
/* Not a dynamic reloc, so not included in R_386_NUM. Used in TCG. */
#define R_MIPS_NONE 0
/* The remaining relocs are defined on Irix, although they are not
in the MIPS ELF ABI. */
/*
* The following two relocation types are specified in the MIPS ABI
* conformance guide version 1.2 but not yet in the psABI.
*/
/*
* The following two relocation types are specified in the MIPS ABI
* conformance guide version 1.2 but not yet in the psABI.
*/
/*
* This range is reserved for vendor specific relocations.
*/
/*
* Sparc ELF relocation types
*/
#define R_SPARC_NONE 0
/* Bits present in AT_HWCAP, primarily for Sparc32. */
/*
* 68k ELF relocation types
*/
#define R_68K_NONE 0
/*
* Alpha ELF relocation types
*/
/* PowerPC relocations defined by the ABIs */
#define R_PPC_NONE 0
/* Keep this the last entry. */
#ifndef R_PPC_NUM
#endif
/* ARM specific declarations */
/* Processor specific flags for the ELF header e_flags field. */
/* Additional symbol types for Thumb */
/* ARM-specific values for sh_flags */
in the input to a link step */
/* ARM-specific program header flags */
addressed by the static base */
/* ARM relocs. */
/* Keep this the last entry. */
/* s390 relocations defined by the ABIs */
dynamic TLS code. */
dynamic TLS code. */
thread local data. */
thread local data. */
block offset. */
block offset. */
block offset. */
thread local data in LD code. */
thread local data in LD code. */
negated static TLS block offset. */
negated static TLS block offset. */
negated static TLS block offset. */
static TLS block. */
static TLS block. */
block. */
block. */
block. */
/* Keep this the last entry. */
/* x86-64 relocation types */
offset to GOT */
/* Legal values for e_flags field of Elf64_Ehdr. */
/* HPPA specific definitions. */
/* Legal values for e_flags field of Elf32_Ehdr. */
prediction. */
/* Defined values for `e_flags & EF_PARISC_ARCH' are: */
/* Additional section indeces. */
symbols in ANSI C. */
/* Legal values for sh_type field of Elf32_Shdr. */
/* Legal values for sh_flags field of Elf32_Shdr. */
/* Legal values for ST_TYPE subfield of st_info (symbol type). */
/* HPPA relocs. */
/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */
/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */
/* IA-64 specific declarations. */
/* Processor specific flags for the Ehdr e_flags field. */
/* Processor specific values for the Phdr p_type field. */
/* Processor specific flags for the Phdr p_flags field. */
/* Processor specific values for the Shdr sh_type field. */
/* Processor specific flags for the Shdr sh_flags field. */
/* Processor specific values for the Dyn d_tag field. */
/* IA-64 relocations. */
typedef struct elf32_rel {
} Elf32_Rel;
typedef struct elf64_rel {
} Elf64_Rel;
typedef struct elf32_rela{
} Elf32_Rela;
typedef struct elf64_rela {
} Elf64_Rela;
typedef struct elf32_sym{
unsigned char st_info;
unsigned char st_other;
} Elf32_Sym;
typedef struct elf64_sym {
} Elf64_Sym;
typedef struct elf32_hdr{
} Elf32_Ehdr;
typedef struct elf64_hdr {
} Elf64_Ehdr;
/* These constants define the permissions on sections in the program
header, p_flags. */
typedef struct elf32_phdr{
} Elf32_Phdr;
typedef struct elf64_phdr {
} Elf64_Phdr;
/* sh_type */
#define SHT_NULL 0
/* sh_flags */
/* special section indexes */
#define SHN_UNDEF 0
typedef struct elf32_shdr {
} Elf32_Shdr;
typedef struct elf64_shdr {
} Elf64_Shdr;
/* Notes used in ET_CORE */
/* Note header in a PT_NOTE section */
typedef struct elf32_note {
} Elf32_Nhdr;
/* Note header in a PT_NOTE section */
typedef struct elf64_note {
} Elf64_Nhdr;
#ifdef ELF_CLASS
#if ELF_CLASS == ELFCLASS32
#ifdef ELF_USES_RELOCA
#else
#endif
#else
#ifdef ELF_USES_RELOCA
#else
#endif
#endif /* ELF_CLASS */
#ifndef ElfW
# if ELF_CLASS == ELFCLASS32
# else
# endif
#endif
#endif /* ELF_CLASS */
#endif /* _QEMU_ELF_H */