123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #ifndef ELF_H
- #define ELF_H
-
- /**
- * @file
- *
- * ELF headers
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
-
- typedef uint32_t Elf32_Addr;
- typedef uint16_t Elf32_Half;
- typedef uint32_t Elf32_Off;
- typedef int32_t Elf32_Sword;
- typedef uint32_t Elf32_Word;
-
- /** Length of ELF identifier */
- #define EI_NIDENT 16
-
- /** ELF header */
- typedef struct {
- unsigned char e_ident[EI_NIDENT];
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
- } Elf32_Ehdr;
-
- /* ELF identifier indexes */
- #define EI_MAG0 0
- #define EI_MAG1 1
- #define EI_MAG2 2
- #define EI_MAG3 3
- #define EI_CLASS 4
- #define EI_DATA 5
- #define EI_VERSION 6
-
- /* ELF magic signature bytes */
- #define ELFMAG0 0x7f
- #define ELFMAG1 'E'
- #define ELFMAG2 'L'
- #define ELFMAG3 'F'
-
- /* ELF classes */
- #define ELFCLASS32 1
-
- /* ELF data encodings */
- #define ELFDATA2LSB 1
-
- /* ELF versions */
- #define EV_CURRENT 1
-
- /** ELF program header */
- typedef struct {
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
- } Elf32_Phdr;
-
- /* ELF segment types */
- #define PT_LOAD 1
-
- #endif /* ELF_H */
|