📄 elf_file.h
字号:
#define SHF_MIPS_NAMES 0x02000000#define SHF_MIPS_NODUPE 0x01000000/* Symbol tables. *//* MIPS specific values for `st_other'. */#define STO_MIPS_DEFAULT 0x0#define STO_MIPS_INTERNAL 0x1#define STO_MIPS_HIDDEN 0x2#define STO_MIPS_PROTECTED 0x3#define STO_MIPS_SC_ALIGN_UNUSED 0xff/* MIPS specific values for `st_info'. */#define STB_MIPS_SPLIT_COMMON 13/* Entries found in sections of type SHT_MIPS_GPTAB. */typedef union{ struct { Elf32_Word gt_current_g_value; /* -G value used for compilation */ Elf32_Word gt_unused; /* Not used */ } gt_header; /* First entry in section */ struct { Elf32_Word gt_g_value; /* If this value were used for -G */ Elf32_Word gt_bytes; /* This many bytes would be used */ } gt_entry; /* Subsequent entries in section */} Elf32_gptab;/* Entry found in sections of type SHT_MIPS_REGINFO. */typedef struct{ Elf32_Word ri_gprmask; /* General registers used */ Elf32_Word ri_cprmask[4]; /* Coprocessor registers used */ Elf32_Sword ri_gp_value; /* $gp register value */} Elf32_RegInfo;/* Entries found in sections of type SHT_MIPS_OPTIONS. */typedef struct{ unsigned char kind; /* Determines interpretation of the variable part of descriptor. */ unsigned char size; /* Size of descriptor, including header. */ Elf32_Section section; /* Section header index of section affected, 0 for global options. */ Elf32_Word info; /* Kind-specific information. */} Elf_Options;/* Values for `kind' field in Elf_Options. */#define ODK_NULL 0 /* Undefined. */#define ODK_REGINFO 1 /* Register usage information. */#define ODK_EXCEPTIONS 2 /* Exception processing options. */#define ODK_PAD 3 /* Section padding options. */#define ODK_HWPATCH 4 /* Hardware workarounds performed */#define ODK_FILL 5 /* record the fill value used by the linker. */#define ODK_TAGS 6 /* reserve space for desktop tools to write. */#define ODK_HWAND 7 /* HW workarounds. 'AND' bits when merging. */#define ODK_HWOR 8 /* HW workarounds. 'OR' bits when merging. *//* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */#define OEX_FPU_MIN 0x1f /* FPE's which MUST be enabled. */#define OEX_FPU_MAX 0x1f00 /* FPE's which MAY be enabled. */#define OEX_PAGE0 0x10000 /* page zero must be mapped. */#define OEX_SMM 0x20000 /* Force sequential memory mode? */#define OEX_FPDBUG 0x40000 /* Force floating point debug mode? */#define OEX_PRECISEFP OEX_FPDBUG#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults? */#define OEX_FPU_INVAL 0x10#define OEX_FPU_DIV0 0x08#define OEX_FPU_OFLO 0x04#define OEX_FPU_UFLO 0x02#define OEX_FPU_INEX 0x01/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */#define OHW_R4KEOP 0x1 /* R4000 end-of-page patch. */#define OHW_R8KPFETCH 0x2 /* may need R8000 prefetch patch. */#define OHW_R5KEOP 0x4 /* R5000 end-of-page patch. */#define OHW_R5KCVTL 0x8 /* R5000 cvt.[ds].l bug. clean=1. */#define OPAD_PREFIX 0x1#define OPAD_POSTFIX 0x2#define OPAD_SYMBOL 0x4/* Entry found in `.options' section. */typedef struct{ Elf32_Word hwp_flags1; /* Extra flags. */ Elf32_Word hwp_flags2; /* Extra flags. */} Elf_Options_Hw;/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */#define OHWA0_R4KEOP_CHECKED 0x00000001#define OHWA1_R4KEOP_CLEAN 0x00000002/* MIPS relocs. */#define R_MIPS_NONE 0 /* No reloc */#define R_MIPS_16 1 /* Direct 16 bit */#define R_MIPS_32 2 /* Direct 32 bit */#define R_MIPS_REL32 3 /* PC relative 32 bit */#define R_MIPS_26 4 /* Direct 26 bit shifted */#define R_MIPS_HI16 5 /* High 16 bit */#define R_MIPS_LO16 6 /* Low 16 bit */#define R_MIPS_GPREL16 7 /* GP relative 16 bit */#define R_MIPS_LITERAL 8 /* 16 bit literal entry */#define R_MIPS_GOT16 9 /* 16 bit GOT entry */#define R_MIPS_PC16 10 /* PC relative 16 bit */#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */#define R_MIPS_GPREL32 12 /* GP relative 32 bit */#define R_MIPS_SHIFT5 16#define R_MIPS_SHIFT6 17#define R_MIPS_64 18#define R_MIPS_GOT_DISP 19#define R_MIPS_GOT_PAGE 20#define R_MIPS_GOT_OFST 21#define R_MIPS_GOT_HI16 22#define R_MIPS_GOT_LO16 23#define R_MIPS_SUB 24#define R_MIPS_INSERT_A 25#define R_MIPS_INSERT_B 26#define R_MIPS_DELETE 27#define R_MIPS_HIGHER 28#define R_MIPS_HIGHEST 29#define R_MIPS_CALL_HI16 30#define R_MIPS_CALL_LO16 31#define R_MIPS_SCN_DISP 32#define R_MIPS_REL16 33#define R_MIPS_ADD_IMMEDIATE 34#define R_MIPS_PJUMP 35#define R_MIPS_RELGOT 36#define R_MIPS_JALR 37/* Keep this the last entry. */#define R_MIPS_NUM 38/* Legal values for p_type field of Elf32_Phdr. */#define PT_MIPS_REGINFO 0x70000000 /* Register usage information */#define PT_MIPS_RTPROC 0x70000001 /* Runtime procedure table. */#define PT_MIPS_OPTIONS 0x70000002/* Special program header types. */#define PF_MIPS_LOCAL 0x10000000/* Legal values for d_tag field of Elf32_Dyn. */#define DT_MIPS_RLD_VERSION 0x70000001 /* Runtime linker interface version */#define DT_MIPS_TIME_STAMP 0x70000002 /* Timestamp */#define DT_MIPS_ICHECKSUM 0x70000003 /* Checksum */#define DT_MIPS_IVERSION 0x70000004 /* Version string (string tbl index) */#define DT_MIPS_FLAGS 0x70000005 /* Flags */#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Base address */#define DT_MIPS_MSYM 0x70000007#define DT_MIPS_CONFLICT 0x70000008 /* Address of CONFLICT section */#define DT_MIPS_LIBLIST 0x70000009 /* Address of LIBLIST section */#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* Number of local GOT entries */#define DT_MIPS_CONFLICTNO 0x7000000b /* Number of CONFLICT entries */#define DT_MIPS_LIBLISTNO 0x70000010 /* Number of LIBLIST entries */#define DT_MIPS_SYMTABNO 0x70000011 /* Number of DYNSYM entries */#define DT_MIPS_UNREFEXTNO 0x70000012 /* First external DYNSYM */#define DT_MIPS_GOTSYM 0x70000013 /* First GOT entry in DYNSYM */#define DT_MIPS_HIPAGENO 0x70000014 /* Number of GOT page table entries */#define DT_MIPS_RLD_MAP 0x70000016 /* Address of run time loader map. */#define DT_MIPS_DELTA_CLASS 0x70000017 /* Delta C++ class definition. */#define DT_MIPS_DELTA_CLASS_NO 0x70000018 /* Number of entries in DT_MIPS_DELTA_CLASS. */#define DT_MIPS_DELTA_INSTANCE 0x70000019 /* Delta C++ class instances. */#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in DT_MIPS_DELTA_INSTANCE. */#define DT_MIPS_DELTA_RELOC 0x7000001b /* Delta relocations. */#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in DT_MIPS_DELTA_RELOC. */#define DT_MIPS_DELTA_SYM 0x7000001d /* Delta symbols that Delta relocations refer to. */#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in DT_MIPS_DELTA_SYM. */#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the class declaration. */#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in DT_MIPS_DELTA_CLASSSYM. */#define DT_MIPS_CXX_FLAGS 0x70000022 /* Flags indicating for C++ flavor. */#define DT_MIPS_PIXIE_INIT 0x70000023#define DT_MIPS_SYMBOL_LIB 0x70000024#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025#define DT_MIPS_LOCAL_GOTIDX 0x70000026#define DT_MIPS_HIDDEN_GOTIDX 0x70000027#define DT_MIPS_PROTECTED_GOTIDX 0x70000028#define DT_MIPS_OPTIONS 0x70000029 /* Address of .options. */#define DT_MIPS_INTERFACE 0x7000002a /* Address of .interface. */#define DT_MIPS_DYNSTR_ALIGN 0x7000002b#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve function stored in GOT. */#define DT_MIPS_PERF_SUFFIX 0x7000002e /* Default suffix of dso to be added by rld on dlopen() calls. */#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */#define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */#define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */#define DT_MIPS_NUM 0x32/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */#define RHF_NONE 0 /* No flags */#define RHF_QUICKSTART (1 << 0) /* Use quickstart */#define RHF_NOTPOT (1 << 1) /* Hash size not power of 2 */#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) /* Ignore LD_LIBRARY_PATH */#define RHF_NO_MOVE (1 << 3)#define RHF_SGI_ONLY (1 << 4)#define RHF_GUARANTEE_INIT (1 << 5)#define RHF_DELTA_C_PLUS_PLUS (1 << 6)#define RHF_GUARANTEE_START_INIT (1 << 7)#define RHF_PIXIE (1 << 8)#define RHF_DEFAULT_DELAY_LOAD (1 << 9)#define RHF_REQUICKSTART (1 << 10)#define RHF_REQUICKSTARTED (1 << 11)#define RHF_CORD (1 << 12)#define RHF_NO_UNRES_UNDEF (1 << 13)#define RHF_RLD_ORDER_SAFE (1 << 14)/* Entries found in sections of type SHT_MIPS_LIBLIST. */typedef struct{ Elf32_Word l_name; /* Name (string table index) */ Elf32_Word l_time_stamp; /* Timestamp */ Elf32_Word l_checksum; /* Checksum */ Elf32_Word l_version; /* Interface version */ Elf32_Word l_flags; /* Flags */} Elf32_Lib;typedef struct{ Elf64_Word l_name; /* Name (string table index) */ Elf64_Word l_time_stamp; /* Timestamp */ Elf64_Word l_checksum; /* Checksum */ Elf64_Word l_version; /* Interface version */ Elf64_Word l_flags; /* Flags */} Elf64_Lib;/* Legal values for l_flags. */#define LL_NONE 0#define LL_EXACT_MATCH (1 << 0) /* Require exact match */#define LL_IGNORE_INT_VER (1 << 1) /* Ignore interface version */#define LL_REQUIRE_MINOR (1 << 2)#define LL_EXPORTS (1 << 3)#define LL_DELAY_LOAD (1 << 4)#define LL_DELTA (1 << 5)/* Entries found in sections of type SHT_MIPS_CONFLICT. */typedef Elf32_Addr Elf32_Conflict;/* HPPA specific definitions. *//* Legal values for e_flags field of Elf32_Ehdr. */#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch prediction. */#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. *//* Defined values for `e_flags & EF_PARISC_ARCH' are: */#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. *//* Additional section indeces. */#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared symbols in ANSI C. */#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. *//* Legal values for sh_type field of Elf32_Shdr. */#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. *//* Legal values for sh_flags field of Elf32_Shdr. */#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. *//* Legal values for ST_TYPE subfield of st_info (symbol type). */#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */#define STT_HP_OPAQUE (STT_LOOS + 0x1)#define STT_HP_STUB (STT_LOOS + 0x2)/* HPPA relocs. */#define R_PARISC_NONE 0 /* No reloc. */#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */#define R_PARISC_LTOFF21L 34 /* LT-relative,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -