📄 elf_repl.h
字号:
#define STT_HIOS 12#define STT_LOPROC 13#define STT_HIPROC 15/* * Macros for manipulating st_other */#define ELF32_ST_VISIBILITY(o) ((o)&0x3)#if __LIBELF64#define ELF64_ST_VISIBILITY(o) ((o)&0x3)#endif /* __LIBELF64 *//* * Symbol visibility */#define STV_DEFAULT 0#define STV_INTERNAL 1#define STV_HIDDEN 2#define STV_PROTECTED 3/* * Relocation */typedef struct { Elf32_Addr r_offset; Elf32_Word r_info;} Elf32_Rel;typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend;} Elf32_Rela;#if __LIBELF64typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info;} Elf64_Rel;typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend;} Elf64_Rela;#endif /* __LIBELF64 *//* * Macros for manipulating r_info */#define ELF32_R_SYM(i) ((i)>>8)#define ELF32_R_TYPE(i) ((unsigned char)(i))#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))#if __LIBELF64#define ELF64_R_SYM(i) ((Elf64_Xword)(i)>>32)#define ELF64_R_TYPE(i) ((i)&0xffffffffL)#define ELF64_R_INFO(s,t) (((Elf64_Xword)(s)<<32)+((t)&0xffffffffL))#endif /* __LIBELF64 *//* * Note entry header */typedef struct { Elf32_Word n_namesz; /* name size */ Elf32_Word n_descsz; /* descriptor size */ Elf32_Word n_type; /* descriptor type */} Elf32_Nhdr;#if __LIBELF64/* Solaris and GNU use this layout. Be compatible. *//* XXX: Latest ELF specs say it's 64-bit?! */typedef struct { Elf64_Word n_namesz; /* name size */ Elf64_Word n_descsz; /* descriptor size */ Elf64_Word n_type; /* descriptor type */} Elf64_Nhdr;#endif /* __LIBELF64 *//* * Well-known descriptor types for ET_CORE files */#define NT_PRSTATUS 1#define NT_PRFPREG 2#define NT_PRPSINFO 3/* * 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;#if __LIBELF64typedef struct { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align;} Elf64_Phdr;#endif /* __LIBELF64 *//* * p_type */#define PT_NULL 0#define PT_LOAD 1#define PT_DYNAMIC 2#define PT_INTERP 3#define PT_NOTE 4#define PT_SHLIB 5#define PT_PHDR 6#define PT_TLS 7#define PT_NUM 8#define PT_LOOS 0x60000000#define PT_HIOS 0x6fffffff#define PT_LOPROC 0x70000000#define PT_HIPROC 0x7fffffff/* * p_flags */#define PF_X 0x1#define PF_W 0x2#define PF_R 0x4#define PF_MASKOS 0x0ff00000#define PF_MASKPROC 0xf0000000/* * Dynamic structure */typedef struct { Elf32_Sword d_tag; union { Elf32_Word d_val; Elf32_Addr d_ptr; } d_un;} Elf32_Dyn;#if __LIBELF64typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un;} Elf64_Dyn;#endif /* __LIBELF64 *//* * Dynamic array tags */ /* d_un exec shared */#define DT_NULL 0 /* ign. mand. mand. */#define DT_NEEDED 1 /* d_val opt. opt. */#define DT_PLTRELSZ 2 /* d_val opt. opt. */#define DT_PLTGOT 3 /* d_ptr opt. opt. */#define DT_HASH 4 /* d_ptr mand. mand. */#define DT_STRTAB 5 /* d_ptr mand. mand. */#define DT_SYMTAB 6 /* d_ptr mand. mand. */#define DT_RELA 7 /* d_ptr mand. opt. */#define DT_RELASZ 8 /* d_val mand. opt. */#define DT_RELAENT 9 /* d_val mand. opt. */#define DT_STRSZ 10 /* d_val mand. mand. */#define DT_SYMENT 11 /* d_val mand. mand. */#define DT_INIT 12 /* d_ptr opt. opt. */#define DT_FINI 13 /* d_ptr opt. opt. */#define DT_SONAME 14 /* d_val ign. opt. */#define DT_RPATH 15 /* d_val opt. ign. */#define DT_SYMBOLIC 16 /* ign. ign. opt. */#define DT_REL 17 /* d_ptr mand. opt. */#define DT_RELSZ 18 /* d_val mand. opt. */#define DT_RELENT 19 /* d_val mand. opt. */#define DT_PLTREL 20 /* d_val opt. opt. */#define DT_DEBUG 21 /* d_ptr opt. ign. */#define DT_TEXTREL 22 /* ign. opt. opt. */#define DT_JMPREL 23 /* d_ptr opt. opt. */#define DT_BIND_NOW 24 /* ign. opt. opt. */#define DT_INIT_ARRAY 25 /* d_ptr opt. opt. */#define DT_FINI_ARRAY 26 /* d_ptr opt. opt. */#define DT_INIT_ARRAYSZ 27 /* d_val opt. opt. */#define DT_FINI_ARRAYSZ 28 /* d_val opt. opt. */#define DT_RUNPATH 29 /* d_val opt. opt. */#define DT_FLAGS 30 /* d_val opt. opt. */#define DT_ENCODING 32 /* odd/even encoding rule starts here */#define DT_PREINIT_ARRAY 32 /* d_ptr opt. ign. */#define DT_PREINIT_ARRAYSZ 33 /* d_val opt. ign. */#define DT_NUM 34#define DT_LOOS 0x6000000D#define DT_HIOS 0x6ffff000#define DT_LOPROC 0x70000000#define DT_HIPROC 0x7fffffff/* * DT_FLAGS values */#define DF_ORIGIN 0x1#define DF_SYMBOLIC 0x2#define DF_TEXTREL 0x4#define DF_BIND_NOW 0x8#define DF_STATIC_TLS 0x10/* * Solaris extensions */#define DT_VALRNGLO 0x6ffffd00#define DT_CHECKSUM 0x6ffffdf8#define DT_PLTPADSZ 0x6ffffdf9#define DT_MOVEENT 0x6ffffdfa#define DT_MOVESZ 0x6ffffdfb#define DT_FEATURE_1 0x6ffffdfc#define DT_POSFLAG_1 0x6ffffdfd#define DT_SYMINSZ 0x6ffffdfe#define DT_SYMINENT 0x6ffffdff#define DT_VALRNGHI 0x6ffffdff#define DT_ADDRRNGLO 0x6ffffe00#define DT_CONFIG 0x6ffffefa#define DT_DEPAUDIT 0x6ffffefb#define DT_AUDIT 0x6ffffefc#define DT_PLTPAD 0x6ffffefd#define DT_MOVETAB 0x6ffffefe#define DT_SYMINFO 0x6ffffeff#define DT_ADDRRNGHI 0x6ffffeff#define DT_RELACOUNT 0x6ffffff9#define DT_RELCOUNT 0x6ffffffa#define DT_FLAGS_1 0x6ffffffb#define DT_VERDEF 0x6ffffffc#define DT_VERDEFNUM 0x6ffffffd#define DT_VERNEED 0x6ffffffe#define DT_VERNEEDNUM 0x6fffffff#define DT_AUXILIARY 0x7ffffffd#define DT_USED 0x7ffffffe#define DT_FILTER 0x7fffffff/* * GNU extensions */#define DT_VERSYM 0x6ffffff0/* * DT_FEATURE_1 values */#define DTF_1_PARINIT 0x1#define DTF_1_CONFEXP 0x2/* * DT_POSFLAG_1 values */#define DF_P1_LAZYLOAD 0x1#define DF_P1_GROUPPERM 0x2/* * DT_FLAGS_1 values */#define DF_1_NOW 0x00000001#define DF_1_GLOBAL 0x00000002#define DF_1_GROUP 0x00000004#define DF_1_NODELETE 0x00000008#define DF_1_LOADFLTR 0x00000010#define DF_1_INITFIRST 0x00000020#define DF_1_NOOPEN 0x00000040#define DF_1_ORIGIN 0x00000080#define DF_1_DIRECT 0x00000100#define DF_1_TRANS 0x00000200#define DF_1_INTERPOSE 0x00000400#define DF_1_NODEFLIB 0x00000800#define DF_1_NODUMP 0x00001000#define DF_1_CONFALT 0x00002000#define DF_1_ENDFILTEE 0x00004000#define DF_1_DISPRELDNE 0x00008000#define DF_1_DISPRELPND 0x00010000/* * Syminfo structure */typedef struct { Elf32_Half si_boundto; Elf32_Half si_flags;} Elf32_Syminfo;#if __LIBELF64typedef struct { Elf64_Half si_boundto; Elf64_Half si_flags;} Elf64_Syminfo;#endif /* __LIBELF64 *//* * Syminfo version (stored in unused first entry) */#define SYMINFO_NONE 0#define SYMINFO_CURRENT 1#define SYMINFO_NUM 2/* * si_boundto special values */#define SYMINFO_BT_LOWRESERVE 0xff00#define SYMINFO_BT_PARENT 0xfffe /* bound to parent */#define SYMINFO_BT_SELF 0xffff /* bound to self *//* * si_flags */#define SYMINFO_FLG_DIRECT 0x01 /* bound to an object */#define SYMINFO_FLG_PASSTHRU 0x02 /* pass-thru symbol */#define SYMINFO_FLG_COPY 0x04 /* result of a copy relocation */#define SYMINFO_FLG_LAZYLOAD 0x08 /* bound to lazy-loaded object *//* * Version definitions */typedef struct { Elf32_Half vd_version; Elf32_Half vd_flags; Elf32_Half vd_ndx; Elf32_Half vd_cnt; Elf32_Word vd_hash; Elf32_Word vd_aux; Elf32_Word vd_next;} Elf32_Verdef;typedef struct { Elf32_Word vda_name; Elf32_Word vda_next;} Elf32_Verdaux;typedef struct { Elf32_Half vn_version; Elf32_Half vn_cnt; Elf32_Word vn_file; Elf32_Word vn_aux; Elf32_Word vn_next;} Elf32_Verneed;typedef struct { Elf32_Word vna_hash; Elf32_Half vna_flags; Elf32_Half vna_other; Elf32_Word vna_name; Elf32_Word vna_next;} Elf32_Vernaux;typedef Elf32_Half Elf32_Versym;#if __LIBELF64typedef struct { Elf64_Half vd_version; Elf64_Half vd_flags; Elf64_Half vd_ndx; Elf64_Half vd_cnt; Elf64_Word vd_hash; Elf64_Word vd_aux; Elf64_Word vd_next;} Elf64_Verdef;typedef struct { Elf64_Word vda_name; Elf64_Word vda_next;} Elf64_Verdaux;typedef struct { Elf64_Half vn_version; Elf64_Half vn_cnt; Elf64_Word vn_file; Elf64_Word vn_aux; Elf64_Word vn_next;} Elf64_Verneed;typedef struct { Elf64_Word vna_hash; Elf64_Half vna_flags; Elf64_Half vna_other; Elf64_Word vna_name; Elf64_Word vna_next;} Elf64_Vernaux;typedef Elf64_Half Elf64_Versym;#endif /* __LIBELF64 *//* * vd_version */#define VER_DEF_NONE 0#define VER_DEF_CURRENT 1#define VER_DEF_NUM 2/* * vn_version */#define VER_NEED_NONE 0#define VER_NEED_CURRENT 1#define VER_NEED_NUM 2/* * vd_flags / vna_flags */#define VER_FLG_BASE 0x1 /* vd_flags only */#define VER_FLG_WEAK 0x2/* * Elf*_Versym special values */#define VER_NDX_LOCAL 0#define VER_NDX_GLOBAL 1/* * Move section */#if __LIBELF64typedef struct { Elf32_Lword m_value; Elf32_Word m_info; Elf32_Word m_poffset; Elf32_Half m_repeat; Elf32_Half m_stride;} Elf32_Move;typedef struct { Elf64_Lword m_value; Elf64_Xword m_info; Elf64_Xword m_poffset; Elf64_Half m_repeat; Elf64_Half m_stride;} Elf64_Move;#define ELF32_M_SYM(info) ((info)>>8)#define ELF32_M_SIZE(info) ((unsigned char)(info))#define ELF32_M_INFO(sym, sz) (((sym)<<8)+(unsigned char)(sz))#define ELF64_M_SYM(info) ((Elf64_Xword)(info)>>8)#define ELF64_M_SIZE(info) ((unsigned char)(info))#define ELF64_M_INFO(sym, sz) (((Elf64_Xword)(sym)<<8)+(unsigned char)(sz))#endif /* __LIBELF64 */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* _ELF_REPL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -