CLRX  1
An unofficial OpenCL extensions designed for Radeon GPUs
Classes | Macros | Typedefs
Elf.h File Reference

Elf.h definitions. More...

#include <stdint.h>

Go to the source code of this file.

Classes

struct  Elf32_Ehdr
 
struct  Elf64_Ehdr
 
struct  Elf32_Shdr
 
struct  Elf64_Shdr
 
struct  Elf32_Sym
 
struct  Elf64_Sym
 
struct  Elf32_Rel
 
struct  Elf64_Rel
 
struct  Elf32_Rela
 
struct  Elf64_Rela
 
struct  Elf32_Phdr
 
struct  Elf64_Phdr
 
struct  Elf32_Nhdr
 
struct  Elf64_Nhdr
 
struct  Elf32_Dyn
 
struct  Elf64_Dyn
 

Macros

#define EI_NIDENT   (16)
 
#define EI_MAG0   0 /* File identification byte 0 index */
 
#define ELFMAG0   0x7f /* Magic number byte 0 */
 
#define EI_MAG1   1 /* File identification byte 1 index */
 
#define ELFMAG1   'E' /* Magic number byte 1 */
 
#define EI_MAG2   2 /* File identification byte 2 index */
 
#define ELFMAG2   'L' /* Magic number byte 2 */
 
#define EI_MAG3   3 /* File identification byte 3 index */
 
#define ELFMAG3   'F' /* Magic number byte 3 */
 
#define ELFMAG   "\177ELF"
 
#define SELFMAG   4
 
#define EI_CLASS   4 /* File class byte index */
 
#define ELFCLASSNONE   0 /* Invalid class */
 
#define ELFCLASS32   1 /* 32-bit objects */
 
#define ELFCLASS64   2 /* 64-bit objects */
 
#define ELFCLASSNUM   3
 
#define EI_DATA   5 /* Data encoding byte index */
 
#define ELFDATANONE   0 /* Invalid data encoding */
 
#define ELFDATA2LSB   1 /* 2's complement, little endian */
 
#define ELFDATA2MSB   2 /* 2's complement, big endian */
 
#define ELFDATANUM   3
 
#define EI_VERSION   6 /* File version byte index */
 
#define EI_OSABI   7 /* OS ABI identification */
 
#define ELFOSABI_NONE   0 /* UNIX System V ABI */
 
#define ELFOSABI_SYSV   0 /* Alias. */
 
#define ELFOSABI_HPUX   1 /* HP-UX */
 
#define ELFOSABI_NETBSD   2 /* NetBSD. */
 
#define ELFOSABI_GNU   3 /* Object uses GNU ELF extensions. */
 
#define ELFOSABI_LINUX   ELFOSABI_GNU /* Compatibility alias. */
 
#define ELFOSABI_SOLARIS   6 /* Sun Solaris. */
 
#define ELFOSABI_AIX   7 /* IBM AIX. */
 
#define ELFOSABI_IRIX   8 /* SGI Irix. */
 
#define ELFOSABI_FREEBSD   9 /* FreeBSD. */
 
#define ELFOSABI_TRU64   10 /* Compaq TRU64 UNIX. */
 
#define ELFOSABI_MODESTO   11 /* Novell Modesto. */
 
#define ELFOSABI_OPENBSD   12 /* OpenBSD. */
 
#define ELFOSABI_ARM_AEABI   64 /* ARM EABI */
 
#define ELFOSABI_ARM   97 /* ARM */
 
#define ELFOSABI_STANDALONE   255 /* Standalone (embedded) application */
 
#define EI_ABIVERSION   8 /* ABI version */
 
#define EI_PAD   9 /* Byte index of padding bytes */
 
#define ET_NONE   0 /* No file type */
 
#define ET_REL   1 /* Relocatable file */
 
#define ET_EXEC   2 /* Executable file */
 
#define ET_DYN   3 /* Shared object file */
 
#define ET_CORE   4 /* Core file */
 
#define ET_NUM   5 /* Number of defined types */
 
#define ET_LOOS   0xfe00 /* OS-specific range start */
 
#define ET_HIOS   0xfeff /* OS-specific range end */
 
#define ET_LOPROC   0xff00 /* Processor-specific range start */
 
#define ET_HIPROC   0xffff /* Processor-specific range end */
 
#define EM_NONE   0 /* No machine */
 
#define EM_M32   1 /* AT&T WE 32100 */
 
#define EM_SPARC   2 /* SUN SPARC */
 
#define EM_386   3 /* Intel 80386 */
 
#define EM_68K   4 /* Motorola m68k family */
 
#define EM_88K   5 /* Motorola m88k family */
 
#define EM_860   7 /* Intel 80860 */
 
#define EM_MIPS   8 /* MIPS R3000 big-endian */
 
#define EM_S370   9 /* IBM System/370 */
 
#define EM_MIPS_RS3_LE   10 /* MIPS R3000 little-endian */
 
#define EM_PARISC   15 /* HPPA */
 
#define EM_VPP500   17 /* Fujitsu VPP500 */
 
#define EM_SPARC32PLUS   18 /* Sun's "v8plus" */
 
#define EM_960   19 /* Intel 80960 */
 
#define EM_PPC   20 /* PowerPC */
 
#define EM_PPC64   21 /* PowerPC 64-bit */
 
#define EM_S390   22 /* IBM S390 */
 
#define EM_V800   36 /* NEC V800 series */
 
#define EM_FR20   37 /* Fujitsu FR20 */
 
#define EM_RH32   38 /* TRW RH-32 */
 
#define EM_RCE   39 /* Motorola RCE */
 
#define EM_ARM   40 /* ARM */
 
#define EM_FAKE_ALPHA   41 /* Digital Alpha */
 
#define EM_SH   42 /* Hitachi SH */
 
#define EM_SPARCV9   43 /* SPARC v9 64-bit */
 
#define EM_TRICORE   44 /* Siemens Tricore */
 
#define EM_ARC   45 /* Argonaut RISC Core */
 
#define EM_H8_300   46 /* Hitachi H8/300 */
 
#define EM_H8_300H   47 /* Hitachi H8/300H */
 
#define EM_H8S   48 /* Hitachi H8S */
 
#define EM_H8_500   49 /* Hitachi H8/500 */
 
#define EM_IA_64   50 /* Intel Merced */
 
#define EM_MIPS_X   51 /* Stanford MIPS-X */
 
#define EM_COLDFIRE   52 /* Motorola Coldfire */
 
#define EM_68HC12   53 /* Motorola M68HC12 */
 
#define EM_MMA   54 /* Fujitsu MMA Multimedia Accelerator*/
 
#define EM_PCP   55 /* Siemens PCP */
 
#define EM_NCPU   56 /* Sony nCPU embeeded RISC */
 
#define EM_NDR1   57 /* Denso NDR1 microprocessor */
 
#define EM_STARCORE   58 /* Motorola Start*Core processor */
 
#define EM_ME16   59 /* Toyota ME16 processor */
 
#define EM_ST100   60 /* STMicroelectronic ST100 processor */
 
#define EM_TINYJ   61 /* Advanced Logic Corp. Tinyj emb.fam*/
 
#define EM_X86_64   62 /* AMD x86-64 architecture */
 
#define EM_PDSP   63 /* Sony DSP Processor */
 
#define EM_NUM   192
 
#define EM_ALPHA   0x9026
 
#define EV_NONE   0 /* Invalid ELF version */
 
#define EV_CURRENT   1 /* Current version */
 
#define EV_NUM   2
 
#define SHN_UNDEF   0 /* Undefined section */
 
#define SHN_LORESERVE   0xff00 /* Start of reserved indices */
 
#define SHN_LOPROC   0xff00 /* Start of processor-specific */
 
#define SHN_BEFORE
 
#define SHN_AFTER
 
#define SHN_HIPROC   0xff1f /* End of processor-specific */
 
#define SHN_LOOS   0xff20 /* Start of OS-specific */
 
#define SHN_HIOS   0xff3f /* End of OS-specific */
 
#define SHN_ABS   0xfff1 /* Associated symbol is absolute */
 
#define SHN_COMMON   0xfff2 /* Associated symbol is common */
 
#define SHN_XINDEX   0xffff /* Index is in extra table. */
 
#define SHN_HIRESERVE   0xffff /* End of reserved indices */
 
#define SHT_NULL   0 /* Section header table entry unused */
 
#define SHT_PROGBITS   1 /* Program data */
 
#define SHT_SYMTAB   2 /* Symbol table */
 
#define SHT_STRTAB   3 /* String table */
 
#define SHT_RELA   4 /* Relocation entries with addends */
 
#define SHT_HASH   5 /* Symbol hash table */
 
#define SHT_DYNAMIC   6 /* Dynamic linking information */
 
#define SHT_NOTE   7 /* Notes */
 
#define SHT_NOBITS   8 /* Program space with no data (bss) */
 
#define SHT_REL   9 /* Relocation entries, no addends */
 
#define SHT_SHLIB   10 /* Reserved */
 
#define SHT_DYNSYM   11 /* Dynamic linker symbol table */
 
#define SHT_INIT_ARRAY   14 /* Array of constructors */
 
#define SHT_FINI_ARRAY   15 /* Array of destructors */
 
#define SHT_PREINIT_ARRAY   16 /* Array of pre-constructors */
 
#define SHT_GROUP   17 /* Section group */
 
#define SHT_SYMTAB_SHNDX   18 /* Extended section indeces */
 
#define SHT_NUM   19 /* Number of defined types. */
 
#define SHT_LOOS   0x60000000 /* Start OS-specific. */
 
#define SHT_GNU_ATTRIBUTES   0x6ffffff5 /* Object attributes. */
 
#define SHT_GNU_HASH   0x6ffffff6 /* GNU-style hash table. */
 
#define SHT_GNU_LIBLIST   0x6ffffff7 /* Prelink library list */
 
#define SHT_CHECKSUM   0x6ffffff8 /* Checksum for DSO content. */
 
#define SHT_LOSUNW   0x6ffffffa /* Sun-specific low bound. */
 
#define SHT_SUNW_move   0x6ffffffa
 
#define SHT_SUNW_COMDAT   0x6ffffffb
 
#define SHT_SUNW_syminfo   0x6ffffffc
 
#define SHT_GNU_verdef   0x6ffffffd /* Version definition section. */
 
#define SHT_GNU_verneed   0x6ffffffe /* Version needs section. */
 
#define SHT_GNU_versym   0x6fffffff /* Version symbol table. */
 
#define SHT_HISUNW   0x6fffffff /* Sun-specific high bound. */
 
#define SHT_HIOS   0x6fffffff /* End OS-specific type */
 
#define SHT_LOPROC   0x70000000 /* Start of processor-specific */
 
#define SHT_HIPROC   0x7fffffff /* End of processor-specific */
 
#define SHT_LOUSER   0x80000000 /* Start of application-specific */
 
#define SHT_HIUSER   0x8fffffff /* End of application-specific */
 
#define SHF_WRITE   (1 << 0) /* Writable */
 
#define SHF_ALLOC   (1 << 1) /* Occupies memory during execution */
 
#define SHF_EXECINSTR   (1 << 2) /* Executable */
 
#define SHF_MERGE   (1 << 4) /* Might be merged */
 
#define SHF_STRINGS   (1 << 5) /* Contains nul-terminated strings */
 
#define SHF_INFO_LINK   (1 << 6) /* `sh_info' contains SHT index */
 
#define SHF_LINK_ORDER   (1 << 7) /* Preserve order after combining */
 
#define SHF_OS_NONCONFORMING
 
#define SHF_GROUP   (1 << 9) /* Section is member of a group. */
 
#define SHF_TLS   (1 << 10) /* Section hold thread-local data. */
 
#define SHF_MASKOS   0x0ff00000 /* OS-specific. */
 
#define SHF_MASKPROC   0xf0000000 /* Processor-specific */
 
#define SHF_ORDERED
 
#define SHF_EXCLUDE
 
#define GRP_COMDAT   0x1 /* Mark group as COMDAT. */
 
#define ELF32_ST_BIND(val)   (((unsigned char) (val)) >> 4)
 
#define ELF32_ST_TYPE(val)   ((val) & 0xf)
 
#define ELF32_ST_INFO(bind, type)   (((bind) << 4) + ((type) & 0xf))
 
#define ELF64_ST_BIND(val)   ELF32_ST_BIND (val)
 
#define ELF64_ST_TYPE(val)   ELF32_ST_TYPE (val)
 
#define ELF64_ST_INFO(bind, type)   ELF32_ST_INFO ((bind), (type))
 
#define STB_LOCAL   0 /* Local symbol */
 
#define STB_GLOBAL   1 /* Global symbol */
 
#define STB_WEAK   2 /* Weak symbol */
 
#define STB_NUM   3 /* Number of defined types. */
 
#define STB_LOOS   10 /* Start of OS-specific */
 
#define STB_GNU_UNIQUE   10 /* Unique symbol. */
 
#define STB_HIOS   12 /* End of OS-specific */
 
#define STB_LOPROC   13 /* Start of processor-specific */
 
#define STB_HIPROC   15 /* End of processor-specific */
 
#define STT_NOTYPE   0 /* Symbol type is unspecified */
 
#define STT_OBJECT   1 /* Symbol is a data object */
 
#define STT_FUNC   2 /* Symbol is a code object */
 
#define STT_SECTION   3 /* Symbol associated with a section */
 
#define STT_FILE   4 /* Symbol's name is file name */
 
#define STT_COMMON   5 /* Symbol is a common data object */
 
#define STT_TLS   6 /* Symbol is thread-local data object*/
 
#define STT_NUM   7 /* Number of defined types. */
 
#define STT_LOOS   10 /* Start of OS-specific */
 
#define STT_GNU_IFUNC   10 /* Symbol is indirect code object */
 
#define STT_HIOS   12 /* End of OS-specific */
 
#define STT_LOPROC   13 /* Start of processor-specific */
 
#define STT_HIPROC   15 /* End of processor-specific */
 
#define STN_UNDEF   0 /* End of a chain. */
 
#define ELF32_ST_VISIBILITY(o)   ((o) & 0x03)
 
#define ELF64_ST_VISIBILITY(o)   ELF32_ST_VISIBILITY (o)
 
#define STV_DEFAULT   0 /* Default symbol visibility rules */
 
#define STV_INTERNAL   1 /* Processor specific hidden class */
 
#define STV_HIDDEN   2 /* Sym unavailable in other modules */
 
#define STV_PROTECTED   3 /* Not preemptible, not exported */
 
#define ELF32_R_SYM(val)   ((val) >> 8)
 
#define ELF32_R_TYPE(val)   ((val) & 0xff)
 
#define ELF32_R_INFO(sym, type)   (((sym) << 8) + ((type) & 0xff))
 
#define ELF64_R_SYM(i)   ((i) >> 32)
 
#define ELF64_R_TYPE(i)   ((i) & 0xffffffff)
 
#define ELF64_R_INFO(sym, type)   ((((Elf64_Xword) (sym)) << 32) + (type))
 
#define PN_XNUM   0xffff
 
#define PT_NULL   0 /* Program header table entry unused */
 
#define PT_LOAD   1 /* Loadable program segment */
 
#define PT_DYNAMIC   2 /* Dynamic linking information */
 
#define PT_INTERP   3 /* Program interpreter */
 
#define PT_NOTE   4 /* Auxiliary information */
 
#define PT_SHLIB   5 /* Reserved */
 
#define PT_PHDR   6 /* Entry for header table itself */
 
#define PT_TLS   7 /* Thread-local storage segment */
 
#define PT_NUM   8 /* Number of defined types */
 
#define PT_LOOS   0x60000000 /* Start of OS-specific */
 
#define PT_GNU_EH_FRAME   0x6474e550 /* GCC .eh_frame_hdr segment */
 
#define PT_GNU_STACK   0x6474e551 /* Indicates stack executability */
 
#define PT_GNU_RELRO   0x6474e552 /* Read-only after relocation */
 
#define PT_LOSUNW   0x6ffffffa
 
#define PT_SUNWBSS   0x6ffffffa /* Sun Specific segment */
 
#define PT_SUNWSTACK   0x6ffffffb /* Stack segment */
 
#define PT_HISUNW   0x6fffffff
 
#define PT_HIOS   0x6fffffff /* End of OS-specific */
 
#define PT_LOPROC   0x70000000 /* Start of processor-specific */
 
#define PT_HIPROC   0x7fffffff /* End of processor-specific */
 
#define PF_X   (1 << 0) /* Segment is executable */
 
#define PF_W   (1 << 1) /* Segment is writable */
 
#define PF_R   (1 << 2) /* Segment is readable */
 
#define PF_MASKOS   0x0ff00000 /* OS-specific */
 
#define PF_MASKPROC   0xf0000000 /* Processor-specific */
 
#define ELF_NOTE_SOLARIS   "SUNW Solaris"
 
#define ELF_NOTE_GNU   "GNU"
 
#define ELF_NOTE_PAGESIZE_HINT   1
 
#define NT_GNU_ABI_TAG   1
 
#define ELF_NOTE_ABI   NT_GNU_ABI_TAG /* Old name. */
 
#define ELF_NOTE_OS_LINUX   0
 
#define ELF_NOTE_OS_GNU   1
 
#define ELF_NOTE_OS_SOLARIS2   2
 
#define ELF_NOTE_OS_FREEBSD   3
 
#define NT_GNU_HWCAP   2
 
#define NT_GNU_BUILD_ID   3
 
#define NT_GNU_GOLD_VERSION   4
 
#define DT_NULL   0 /* Marks end of dynamic section */
 
#define DT_NEEDED   1 /* Name of needed library */
 
#define DT_PLTRELSZ   2 /* Size in bytes of PLT relocs */
 
#define DT_PLTGOT   3 /* Processor defined value */
 
#define DT_HASH   4 /* Address of symbol hash table */
 
#define DT_STRTAB   5 /* Address of string table */
 
#define DT_SYMTAB   6 /* Address of symbol table */
 
#define DT_RELA   7 /* Address of Rela relocs */
 
#define DT_RELASZ   8 /* Total size of Rela relocs */
 
#define DT_RELAENT   9 /* Size of one Rela reloc */
 
#define DT_STRSZ   10 /* Size of string table */
 
#define DT_SYMENT   11 /* Size of one symbol table entry */
 
#define DT_INIT   12 /* Address of init function */
 
#define DT_FINI   13 /* Address of termination function */
 
#define DT_SONAME   14 /* Name of shared object */
 
#define DT_RPATH   15 /* Library search path (deprecated) */
 
#define DT_SYMBOLIC   16 /* Start symbol search here */
 
#define DT_REL   17 /* Address of Rel relocs */
 
#define DT_RELSZ   18 /* Total size of Rel relocs */
 
#define DT_RELENT   19 /* Size of one Rel reloc */
 
#define DT_PLTREL   20 /* Type of reloc in PLT */
 
#define DT_DEBUG   21 /* For debugging; unspecified */
 
#define DT_TEXTREL   22 /* Reloc might modify .text */
 
#define DT_JMPREL   23 /* Address of PLT relocs */
 
#define DT_BIND_NOW   24 /* Process relocations of object */
 
#define DT_INIT_ARRAY   25 /* Array with addresses of init fct */
 
#define DT_FINI_ARRAY   26 /* Array with addresses of fini fct */
 
#define DT_INIT_ARRAYSZ   27 /* Size in bytes of DT_INIT_ARRAY */
 
#define DT_FINI_ARRAYSZ   28 /* Size in bytes of DT_FINI_ARRAY */
 
#define DT_RUNPATH   29 /* Library search path */
 
#define DT_FLAGS   30 /* Flags for the object being loaded */
 
#define DT_ENCODING   32 /* Start of encoded range */
 
#define DT_PREINIT_ARRAY   32 /* Array with addresses of preinit fct*/
 
#define DT_PREINIT_ARRAYSZ   33 /* size in bytes of DT_PREINIT_ARRAY */
 
#define DT_NUM   34 /* Number used */
 
#define DT_LOOS   0x6000000d /* Start of OS-specific */
 
#define DT_HIOS   0x6ffff000 /* End of OS-specific */
 
#define DT_LOPROC   0x70000000 /* Start of processor-specific */
 
#define DT_HIPROC   0x7fffffff /* End of processor-specific */
 
#define DT_PROCNUM   DT_MIPS_NUM /* Most used by any processor */
 

Typedefs

typedef uint16_t Elf32_Half
 
typedef uint16_t Elf64_Half
 
typedef uint32_t Elf32_Word
 
typedef int32_t Elf32_Sword
 
typedef uint32_t Elf64_Word
 
typedef int32_t Elf64_Sword
 
typedef uint64_t Elf32_Xword
 
typedef int64_t Elf32_Sxword
 
typedef uint64_t Elf64_Xword
 
typedef int64_t Elf64_Sxword
 
typedef uint32_t Elf32_Addr
 
typedef uint64_t Elf64_Addr
 
typedef uint32_t Elf32_Off
 
typedef uint64_t Elf64_Off
 
typedef uint16_t Elf32_Section
 
typedef uint16_t Elf64_Section
 
typedef Elf32_Half Elf32_Versym
 
typedef Elf64_Half Elf64_Versym
 

Detailed Description

Elf.h definitions.

Macro Definition Documentation

#define SHN_BEFORE
Value:
0xff00 /* Order section before all others
(Solaris). */
#define SHN_AFTER
Value:
0xff01 /* Order section after all others
(Solaris). */
#define SHF_OS_NONCONFORMING
Value:
(1 << 8) /* Non-standard OS specific handling
required */
#define SHF_ORDERED
Value:
(1 << 30) /* Special ordering requirement
(Solaris). */
#define SHF_EXCLUDE
Value:
(1 << 31) /* Section is excluded unless
referenced or allocated (Solaris).*/