📄 common.h
字号:
#define NT_FPREGS 12 /* Has a struct fpregset */#define NT_PSINFO 13 /* Has a struct psinfo */#define NT_LWPSTATUS 16 /* Has a struct lwpstatus_t */#define NT_LWPSINFO 17 /* Has a struct lwpsinfo_t */#define NT_WIN32PSTATUS 18 /* Has a struct win32_pstatus *//* Note segments for core files on NetBSD systems. Note name must start with "NetBSD-CORE". */#define NT_NETBSDCORE_PROCINFO 1 /* Has a struct procinfo */#define NT_NETBSDCORE_FIRSTMACH 32 /* start of machdep note types *//* Values of note segment descriptor types for object files. */#define NT_VERSION 1 /* Contains a version string. */#define NT_ARCH 2 /* Contains an architecture string. *//* Values for GNU .note.ABI-tag notes. Note name is "GNU". */#define NT_GNU_ABI_TAG 1#define GNU_ABI_TAG_LINUX 0#define GNU_ABI_TAG_HURD 1#define GNU_ABI_TAG_SOLARIS 2#define GNU_ABI_TAG_FREEBSD 3#define GNU_ABI_TAG_NETBSD 4/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */#define NT_NETBSD_IDENT 1/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */#define NT_OPENBSD_IDENT 1/* Values for FreeBSD .note.ABI-tag notes. Note name is "FreeBSD". */#define NT_FREEBSD_ABI_TAG 1/* These three macros disassemble and assemble a symbol table st_info field, which contains the symbol binding and symbol type. The STB_ and STT_ defines identify the binding and type. */#define ELF_ST_BIND(val) (((unsigned int)(val)) >> 4)#define ELF_ST_TYPE(val) ((val) & 0xF)#define ELF_ST_INFO(bind,type) (((bind) << 4) + ((type) & 0xF))/* The 64bit and 32bit versions of these macros are identical, but the ELF spec defines them, so here they are. */#define ELF32_ST_BIND ELF_ST_BIND#define ELF32_ST_TYPE ELF_ST_TYPE#define ELF32_ST_INFO ELF_ST_INFO#define ELF64_ST_BIND ELF_ST_BIND#define ELF64_ST_TYPE ELF_ST_TYPE#define ELF64_ST_INFO ELF_ST_INFO/* This macro disassembles and assembles a symbol's visibility into the st_other field. The STV_ defines specificy the actual visibility. */#define ELF_ST_VISIBILITY(v) ((v) & 0x3)/* The remaining bits in the st_other field are not currently used. They should be set to zero. */#define ELF32_ST_VISIBILITY ELF_ST_VISIBILITY#define ELF64_ST_VISIBILITY ELF_ST_VISIBILITY#define STN_UNDEF 0 /* Undefined symbol index */#define STB_LOCAL 0 /* Symbol not visible outside obj */#define STB_GLOBAL 1 /* Symbol visible outside obj */#define STB_WEAK 2 /* Like globals, lower precedence */#define STB_LOOS 10 /* OS-specific semantics */#define STB_HIOS 12 /* OS-specific semantics */#define STB_LOPROC 13 /* Application-specific semantics */#define STB_HIPROC 15 /* Application-specific semantics */#define STT_NOTYPE 0 /* Symbol type is unspecified */#define STT_OBJECT 1 /* Symbol is a data object */#define STT_FUNC 2 /* Symbol is a code object */#define STT_SECTION 3 /* Symbol associated with a section */#define STT_FILE 4 /* Symbol gives a file name */#define STT_COMMON 5 /* An uninitialised common block */#define STT_TLS 6 /* Thread local data object */#define STT_LOOS 10 /* OS-specific semantics */#define STT_HIOS 12 /* OS-specific semantics */#define STT_LOPROC 13 /* Application-specific semantics */#define STT_HIPROC 15 /* Application-specific semantics *//* Special section indices, which may show up in st_shndx fields, among other places. */#define SHN_UNDEF 0 /* Undefined section reference */#define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */#define SHN_LOPROC 0xFF00 /* Begin range of appl-specific */#define SHN_HIPROC 0xFF1F /* End range of appl-specific */#define SHN_LOOS 0xFF20 /* OS specific semantics, lo */#define SHN_HIOS 0xFF3F /* OS specific semantics, hi */#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */#define SHN_XINDEX 0xFFFF /* Section index is held elsewhere */#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */#define SHN_BAD ((unsigned) -1) /* Used internally by bfd *//* The following constants control how a symbol may be accessed once it has become part of an executable or shared library. */#define STV_DEFAULT 0 /* Visibility is specified by binding type */#define STV_INTERNAL 1 /* OS specific version of STV_HIDDEN */#define STV_HIDDEN 2 /* Can only be seen inside currect component */#define STV_PROTECTED 3 /* Treat as STB_LOCAL inside current component *//* Relocation info handling macros. */#define ELF32_R_SYM(i) ((i) >> 8)#define ELF32_R_TYPE(i) ((i) & 0xff)#define ELF32_R_INFO(s,t) (((s) << 8) + ((t) & 0xff))#define ELF64_R_SYM(i) ((i) >> 32)#define ELF64_R_TYPE(i) ((i) & 0xffffffff)#define ELF64_R_INFO(s,t) (((bfd_vma) (s) << 31 << 1) + (bfd_vma) (t))/* Dynamic section tags. */#define DT_NULL 0#define DT_NEEDED 1#define DT_PLTRELSZ 2#define DT_PLTGOT 3#define DT_HASH 4#define DT_STRTAB 5#define DT_SYMTAB 6#define DT_RELA 7#define DT_RELASZ 8#define DT_RELAENT 9#define DT_STRSZ 10#define DT_SYMENT 11#define DT_INIT 12#define DT_FINI 13#define DT_SONAME 14#define DT_RPATH 15#define DT_SYMBOLIC 16#define DT_REL 17#define DT_RELSZ 18#define DT_RELENT 19#define DT_PLTREL 20#define DT_DEBUG 21#define DT_TEXTREL 22#define DT_JMPREL 23#define DT_BIND_NOW 24#define DT_INIT_ARRAY 25#define DT_FINI_ARRAY 26#define DT_INIT_ARRAYSZ 27#define DT_FINI_ARRAYSZ 28#define DT_RUNPATH 29#define DT_FLAGS 30#define DT_ENCODING 31#define DT_PREINIT_ARRAY 32#define DT_PREINIT_ARRAYSZ 33/* Note, the Oct 4, 1999 draft of the ELF ABI changed the values for DT_LOOS and DT_HIOS. Some implementations however, use values outside of the new range (see below). */#define OLD_DT_LOOS 0x60000000#define DT_LOOS 0x6000000d#define DT_HIOS 0x6ffff000#define OLD_DT_HIOS 0x6fffffff#define DT_LOPROC 0x70000000#define DT_HIPROC 0x7fffffff/* The next four dynamic tags are used on Solaris. We support them everywhere. Note these values lie outside of the (new) range for OS specific values. This is a deliberate special case and we maintain it for backwards compatability. */#define DT_VALRNGLO 0x6ffffd00#define DT_GNU_PRELINKED 0x6ffffdf5#define DT_GNU_CONFLICTSZ 0x6ffffdf6#define DT_GNU_LIBLISTSZ 0x6ffffdf7#define DT_CHECKSUM 0x6ffffdf8#define DT_PLTPADSZ 0x6ffffdf9#define DT_MOVEENT 0x6ffffdfa#define DT_MOVESZ 0x6ffffdfb#define DT_FEATURE 0x6ffffdfc#define DT_POSFLAG_1 0x6ffffdfd#define DT_SYMINSZ 0x6ffffdfe#define DT_SYMINENT 0x6ffffdff#define DT_VALRNGHI 0x6ffffdff#define DT_ADDRRNGLO 0x6ffffe00#define DT_GNU_CONFLICT 0x6ffffef8#define DT_GNU_LIBLIST 0x6ffffef9#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/* This tag is a GNU extension to the Solaris version scheme. */#define DT_VERSYM 0x6ffffff0#define DT_LOPROC 0x70000000#define DT_HIPROC 0x7fffffff/* These section tags are used on Solaris. We support them everywhere, and hope they do not conflict. */#define DT_AUXILIARY 0x7ffffffd#define DT_USED 0x7ffffffe#define DT_FILTER 0x7fffffff/* Values used in DT_FEATURE .dynamic entry. */#define DTF_1_PARINIT 0x00000001/* From http://docs.sun.com:80/ab2/coll.45.13/LLM/@Ab2PageView/21165?Ab2Lang=C&Ab2Enc=iso-8859-1 DTF_1_CONFEXP is the same as DTF_1_PARINIT. It is a typo. The value defined here is the same as the one in <sys/link.h> on Solaris 8. */#define DTF_1_CONFEXP 0x00000002/* Flag values used in the DT_POSFLAG_1 .dynamic entry. */#define DF_P1_LAZYLOAD 0x00000001#define DF_P1_GROUPPERM 0x00000002/* Flag value in in the DT_FLAGS_1 .dynamic entry. */#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_CONLFAT 0x00002000/* Flag values for the DT_FLAGS entry. */#define DF_ORIGIN (1 << 0)#define DF_SYMBOLIC (1 << 1)#define DF_TEXTREL (1 << 2)#define DF_BIND_NOW (1 << 3)#define DF_STATIC_TLS (1 << 4)/* These constants are used for the version number of a Elf32_Verdef structure. */#define VER_DEF_NONE 0#define VER_DEF_CURRENT 1/* These constants appear in the vd_flags field of a Elf32_Verdef structure. */#define VER_FLG_BASE 0x1#define VER_FLG_WEAK 0x2/* These special constants can be found in an Elf32_Versym field. */#define VER_NDX_LOCAL 0#define VER_NDX_GLOBAL 1/* These constants are used for the version number of a Elf32_Verneed structure. */#define VER_NEED_NONE 0#define VER_NEED_CURRENT 1/* This flag appears in a Versym structure. It means that the symbol is hidden, and is only visible with an explicit version number. This is a GNU extension. */#define VERSYM_HIDDEN 0x8000/* This is the mask for the rest of the Versym information. */#define VERSYM_VERSION 0x7fff/* This is a special token which appears as part of a symbol name. It indictes that the rest of the name is actually the name of a version node, and is not part of the actual name. This is a GNU extension. For example, the symbol name `stat@ver2' is taken to mean the symbol `stat' in version `ver2'. */#define ELF_VER_CHR '@'/* Possible values for si_boundto. */#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries *//* Possible bitmasks for si_flags. */#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy loaded *//* Syminfo version values. */#define SYMINFO_NONE 0#define SYMINFO_CURRENT 1#define SYMINFO_NUM 2/* Section Group Flags. */#define GRP_COMDAT 0x1 /* A COMDAT group *//* Auxv a_type values. */#define AT_NULL 0 /* End of vector */#define AT_IGNORE 1 /* Entry should be ignored */#define AT_EXECFD 2 /* File descriptor of program */#define AT_PHDR 3 /* Program headers for program */#define AT_PHENT 4 /* Size of program header entry */#define AT_PHNUM 5 /* Number of program headers */#define AT_PAGESZ 6 /* System page size */#define AT_BASE 7 /* Base address of interpreter */#define AT_FLAGS 8 /* Flags */#define AT_ENTRY 9 /* Entry point of program */#define AT_NOTELF 10 /* Program is not ELF */#define AT_UID 11 /* Real uid */#define AT_EUID 12 /* Effective uid */#define AT_GID 13 /* Real gid */#define AT_EGID 14 /* Effective gid */#define AT_CLKTCK 17 /* Frequency of times() */#define AT_PLATFORM 15 /* String identifying platform. */#define AT_HWCAP 16 /* Machine dependent hints about processor capabilities. */#define AT_FPUCW 18 /* Used FPU control word. */#define AT_DCACHEBSIZE 19 /* Data cache block size. */#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */#define AT_UCACHEBSIZE 21 /* Unified cache block size. */#define AT_IGNOREPPC 22 /* Entry should be ignored */#define AT_SECURE 23 /* Boolean, was exec setuid-like? *//* Pointer to the global system page used for system calls and other nice things. */#define AT_SYSINFO 32#define AT_SYSINFO_EHDR 33 /* Pointer to ELF header of system-supplied DSO. */#define AT_SUN_UID 2000 /* Effective user ID. */#define AT_SUN_RUID 2001 /* Real user ID. */#define AT_SUN_GID 2002 /* Effective group ID. */#define AT_SUN_RGID 2003 /* Real group ID. */#define AT_SUN_LDELF 2004 /* Dynamic linker's ELF header. */#define AT_SUN_LDSHDR 2005 /* Dynamic linker's section headers. */#define AT_SUN_LDNAME 2006 /* String giving name of dynamic linker. */#define AT_SUN_LPAGESZ 2007 /* Large pagesize. */#define AT_SUN_PLATFORM 2008 /* Platform name string. */#define AT_SUN_HWCAP 2009 /* Machine dependent hints about processor capabilities. */#define AT_SUN_IFLUSH 2010 /* Should flush icache? */#define AT_SUN_CPU 2011 /* CPU name string. */#define AT_SUN_EMUL_ENTRY 2012 /* COFF entry point address. */#define AT_SUN_EMUL_EXECFD 2013 /* COFF executable file descriptor. */#define AT_SUN_EXECNAME 2014 /* Canonicalized file name given to execve. */#define AT_SUN_MMU 2015 /* String for name of MMU module. */#define AT_SUN_LDDATA 2016 /* Dynamic linker's data segment address. */#endif /* _ELF_COMMON_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -