begin ElfXX_Hdr declaration
This commit is contained in:
parent
658eed95c4
commit
6ad476284f
1 changed files with 71 additions and 0 deletions
71
lib/elf/eheader.h
Normal file
71
lib/elf/eheader.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/* The ELF header resides at the beginning of an ELF file.
|
||||
* It identifies the file as an ELF file and contains the information
|
||||
* necessary for interpreting the contents of the file and locating
|
||||
* the other components of the file.
|
||||
* REF: https://gabi.xinuos.com/elf/02-eheader.html#elf-header
|
||||
*/
|
||||
#ifndef BFPG_ELF_HEADER_H
|
||||
# define BFPG_ELF_HEADER_H
|
||||
|
||||
# include "eint.h"
|
||||
|
||||
# define EI_NIDENT (16)
|
||||
|
||||
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;
|
||||
|
||||
typedef struct {
|
||||
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;
|
||||
} Elf64_Ehdr;
|
||||
|
||||
/* == ElfXX_Ehdr.e_ident[] ==
|
||||
* EI_* macros define indexes into this this, and are followed
|
||||
* by a series a macros defining legal values for that index.
|
||||
*/
|
||||
# define E_IDENT_DESC ( \
|
||||
"The initial bytes of an ELF file. Marking it as an object file " \
|
||||
"and providing machine-independent data with which to decode " \
|
||||
"and interpret the file’s contents."
|
||||
|
||||
/* == ElfXX_Ehdr.e_type == */
|
||||
enum e_type_t : Elf64_Addr {
|
||||
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_LOOS = 0xfe00, /* OS-specific range start */
|
||||
ET_HIOS = 0xfeff, /* OS-specific range end */
|
||||
ET_LOPROC = 0xff00, /* Processor-specific range start */
|
||||
ET_HIPROC = 0xffff, /* Processor-specific range end */
|
||||
};
|
||||
|
||||
|
||||
#endif /* BFPG_ELF_HEADER_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue