📄 elf.h
字号:
/* * ApOS (Another Project software for s3c2410) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Copyright caiyuqing * */#include "typedef.h"#define EI_MAG0 0 //File identification#define EI_MAG1 1 //File identification#define EI_MAG2 2 //File identification#define EI_MAG3 3 //File identification#define EI_CLASS 4 //File class#define EI_DATA 5 //Data encoding#define EI_VERSION 6 //File version#define EI_OSABI 7 //Operating system/ABI identification#define EI_ABIVERSION 8 //ABI version#define EI_PAD 9 //Start of padding bytes#define EI_NIDENT 16 //Size of e_ident[]//e_ident[EI_CLASS]#define ELFCLASSNONE 0 //Invalid class#define ELFCLASS32 1 //32-bit objects#define ELFCLASS64 2 //64-bit objects//e_ident[EI_DATA]#define ELFDATANONE 0 //Invalid data encoding#define ELFDATA2LSB 1 //little endian#define ELFDATA2MSB 2 //big endian//e_type#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_LOOS 0xfe00 //Operating system-specific#define ET_HIOS 0xfeff //Operating system-specific#define ET_LOPROC 0xff00 //Processor-specific#define ET_HIPROC 0xffff //Processor-specific//e_machine#define EM_NONE 0 //No machine#define EM_M32 1 //AT&T WE 32100#define EM_SPARC 2 //SPARC#define EM_386 3 //Intel 80386#define EM_68K 4 //Motorola 68000#define EM_88K 5 //Motorola 88000#define RESERVED1 6 //Reserved for future use#define EM_860 7 //Intel 80860#define EM_MIPS 8 //MIPS I Architecture#define EM_S370 9 //IBM System/370 Processor#define EM_MIPS_RS3_LE 10 //MIPS RS3000 Little-endian//11-14 Reserved for future use#define EM_PARISC 15 //Hewlett-Packard PA-RISC#define RESERVED2 16 //Reserved for future use#define EM_VPP500 17 //Fujitsu VPP500#define EM_SPARC32PLUS 18 //Enhanced instruction set SPARC#define EM_960 19 //Intel 80960#define EM_PPC 20 //PowerPC#define EM_PPC64 21 //64-bit PowerPC//22-35 Reserved for future use#define EM_V800 36 //NEC V800#define EM_FR20 37 //Fujitsu FR20#define EM_RH32 38 //TRW RH-32#define EM_RCE 39 //Motorola RCE#define EM_ARM 40 //Advanced RISC Machines ARM#define EM_ALPHA 41 //Digital Alpha#define EM_SH 42 //Hitachi SH#define EM_SPARCV9 43 //SPARC Version 9#define EM_TRICORE 44 //Siemens Tricore embedded processor#define EM_ARC 45 //Argonaut RISC Core, Argonaut Technologies Inc.#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 IA-64 processor architecture#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 embedded RISC processor#define EM_NDR1 57 //Denso NDR1 microprocessor#define EM_STARCORE 58 //Motorola Star*Core processor#define EM_ME16 59 //Toyota ME16 processor#define EM_ST100 60 //STMicroelectronics ST100 processor#define EM_TINYJ 61 // Advanced Logic Corp. TinyJ embedded processor family//62-65 Reserved for future use#define EM_FX66 66 //Siemens FX66 microcontroller#define EM_ST9PLUS 67 //STMicroelectronics ST9+ 8/16 bit microcontroller#define EM_ST7 68 //STMicroelectronics ST7 8-bit microcontroller#define EM_68HC16 69 //Motorola MC68HC16 Microcontroller#define EM_68HC11 70 //Motorola MC68HC11 Microcontroller#define EM_68HC08 71 //Motorola MC68HC08 Microcontroller#define EM_68HC05 72 //Motorola MC68HC05 Microcontroller#define EM_SVX 73 //Silicon Graphics SVx#define EM_ST19 74 //STMicroelectronics ST19 8-bit microcontroller#define EM_VAX 75 //Digital VAX#define EM_CRIS 76 //Axis Communications 32-bit embedded processor#define EM_JAVELIN 77 //Infineon Technologies 32-bit embedded processor#define EM_FIREPATH 78 //Element 14 64-bit DSP Processor#define EM_ZSP 79 //LSI Logic 16-bit DSP Processor#define EM_MMIX 80 //Donald Knuth's educational 64-bit processor#define EM_HUANY 81 //Harvard University machine-independent object files#define EM_PRISM 82 //SiTera Prism//e_version #define EV_NONE 0 //Invalid version #define EV_CURRENT 1 //Current version 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;//Special Section Indexes #define SHN_UNDEF 0#define SHN_LORESERVE 0xff00#define SHN_LOPROC 0xff00#define SHN_HIPROC 0xff1f#define SHN_LOOS 0xff20#define SHN_HIOS 0xff3f#define SHN_ABS 0xfff1#define SHN_COMMON 0xfff2#define SHN_XINDEX 0xffff#define SHN_HIRESERVE 0xffff//sh_type#define SHT_NULL 0#define SHT_PROGBITS 1#define SHT_SYMTAB 2#define SHT_STRTAB 3#define SHT_RELA 4#define SHT_HASH 5#define SHT_DYNAMIC 6#define SHT_NOTE 7#define SHT_NOBITS 8#define SHT_REL 9#define SHT_SHLIB 10#define SHT_DYNSYM 11#define SHT_INIT_ARRAY 14#define SHT_FINI_ARRAY 15#define SHT_PREINIT_ARRAY 16#define SHT_GROUP 17#define SHT_SYMTAB_SHNDX 18#define SHT_LOOS 0x60000000#define SHT_HIOS 0x6fffffff#define SHT_LOPROC 0x70000000#define SHT_HIPROC 0x7fffffff#define SHT_LOUSER 0x80000000#define SHT_HIUSER 0xffffffff//sh_flags#define SHF_WRITE 0x1 #define SHF_ALLOC 0x2 #define SHF_EXECINSTR 0x4 #define SHF_MERGE 0x10 #define SHF_STRINGS 0x20 #define SHF_INFO_LINK 0x40 #define SHF_LINK_ORDER 0x80 #define SHF_OS_NONCONFORMING 0x100 #define SHF_GROUP 0x200 #define SHF_MASKOS 0x0ff00000 #define SHF_MASKPROC 0xf0000000 typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize;}Elf32_Shdr;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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -