Auto merge of #2897 - paandahl:add-elf-constants, r=JohnTitor

Added missing constants from elf.h

I have added a bunch of constants from elf.h, useful for parsing ELF files.

Closes #1876
This commit is contained in:
bors
2022-09-06 13:02:50 +00:00
4 changed files with 317 additions and 20 deletions
+1
View File
@@ -55,6 +55,7 @@ DEBUGFS_MAGIC
DEVPTS_SUPER_MAGIC
ECRYPTFS_SUPER_MAGIC
EFS_SUPER_MAGIC
ELFOSABI_ARM_AEABI
EMPTY
EXT2_SUPER_MAGIC
EXT3_SUPER_MAGIC
+139
View File
@@ -364,6 +364,17 @@ EFD_NONBLOCK
EFD_SEMAPHORE
EHWPOISON
EISNAM
EI_ABIVERSION
EI_CLASS
EI_DATA
EI_MAG0
EI_MAG1
EI_MAG2
EI_MAG3
EI_NIDENT
EI_OSABI
EI_PAD
EI_VERSION
EKEYEXPIRED
EKEYREJECTED
EKEYREVOKED
@@ -371,6 +382,33 @@ EL2HLT
EL2NSYNC
EL3HLT
EL3RST
ELFCLASS32
ELFCLASS64
ELFCLASSNONE
ELFCLASSNUM
ELFDATA2LSB
ELFDATA2MSB
ELFDATANONE
ELFDATANUM
ELFMAG0
ELFMAG1
ELFMAG2
ELFMAG3
ELFOSABI_AIX
ELFOSABI_ARM
ELFOSABI_FREEBSD
ELFOSABI_GNU
ELFOSABI_HPUX
ELFOSABI_IRIX
ELFOSABI_LINUX
ELFOSABI_MODESTO
ELFOSABI_NETBSD
ELFOSABI_NONE
ELFOSABI_OPENBSD
ELFOSABI_SOLARIS
ELFOSABI_STANDALONE
ELFOSABI_SYSV
ELFOSABI_TRU64
ELIBACC
ELIBBAD
ELIBEXEC
@@ -379,6 +417,84 @@ ELIBSCN
ELNRNG
EMEDIUMTYPE
EMULTIHOP
EM_386
EM_68HC05
EM_68HC08
EM_68HC11
EM_68HC12
EM_68HC16
EM_68K
EM_860
EM_88K
EM_960
EM_AARCH64
EM_ALPHA
EM_ARC
EM_ARC_A5
EM_ARM
EM_AVR
EM_COLDFIRE
EM_CRIS
EM_D10V
EM_D30V
EM_FAKE_ALPHA
EM_FIREPATH
EM_FR20
EM_FR30
EM_FX66
EM_H8_300
EM_H8_300H
EM_H8_500
EM_H8S
EM_HUANY
EM_IA_64
EM_JAVELIN
EM_M32
EM_M32R
EM_ME16
EM_MIPS
EM_MIPS_RS3_LE
EM_MIPS_X
EM_MMA
EM_MMIX
EM_MN10200
EM_MN10300
EM_NCPU
EM_NDR1
EM_NONE
EM_OPENRISC
EM_PARISC
EM_PCP
EM_PDSP
EM_PJ
EM_PPC
EM_PPC64
EM_PRISM
EM_RCE
EM_RH32
EM_S370
EM_S390
EM_SH
EM_SPARC
EM_SPARC32PLUS
EM_SPARCV9
EM_ST100
EM_ST19
EM_ST7
EM_ST9PLUS
EM_STARCORE
EM_SVX
EM_TILEGX
EM_TILEPRO
EM_TINYJ
EM_TRICORE
EM_V800
EM_V850
EM_VAX
EM_VPP500
EM_X86_64
EM_XTENSA
EM_ZSP
ENAVAIL
ENOANO
ENOATTR
@@ -516,11 +632,24 @@ ETH_P_X25
ETH_ZLEN
ETOOMANYREFS
ETIME
ET_CORE
ET_DYN
ET_EXEC
ET_HIOS
ET_HIPROC
ET_LOOS
ET_LOPROC
ET_NONE
ET_NUM
ET_REL
EUCLEAN
EUNATCH
EUSERS
EV_CNT
EV_CURRENT
EV_MAX
EV_NONE
EV_NUM
EXFULL
EXTA
EXTB
@@ -1521,6 +1650,8 @@ PF_IUCV
PF_KEY
PF_LLC
PF_LOCAL
PF_MASKOS
PF_MASKPROC
PF_NETBEUI
PF_NETLINK
PF_NETROM
@@ -1528,6 +1659,7 @@ PF_NFC
PF_PACKET
PF_PHONET
PF_PPPOX
PF_R
PF_RDS
PF_ROSE
PF_ROUTE
@@ -1536,7 +1668,9 @@ PF_SECURITY
PF_SNA
PF_TIPC
PF_VSOCK
PF_W
PF_WANPIPE
PF_X
PF_X25
PIPE_BUF
PM_STR
@@ -1710,6 +1844,7 @@ PTRACE_SINGLESTEP
PTRACE_SYSCALL
PTRACE_TRACEME
PT_HIOS
PT_HISUNW
PT_LOPROC
PT_HIPROC
PT_DYNAMIC
@@ -1719,11 +1854,14 @@ PT_GNU_STACK
PT_INTERP
PT_LOAD
PT_LOOS
PT_LOSUNW
PT_NOTE
PT_NULL
PT_NUM
PT_PHDR
PT_SHLIB
PT_SUNWBSS
PT_SUNWSTACK
PT_TLS
P_ALL
P_PGID
@@ -2001,6 +2139,7 @@ SECCOMP_RET_TRACE
SECCOMP_RET_TRAP
SEEK_DATA
SEEK_HOLE
SELFMAG
SEM_FAILED
SFD_CLOEXEC
SFD_NONBLOCK
+2
View File
@@ -954,6 +954,8 @@ pub const NT_LWPSTATUS: ::c_int = 16;
pub const NT_LWPSINFO: ::c_int = 17;
pub const NT_PRFPXREG: ::c_int = 20;
pub const ELFOSABI_ARM_AEABI: u8 = 64;
// linux/keyctl.h
pub const KEYCTL_DH_COMPUTE: u32 = 23;
pub const KEYCTL_PKEY_QUERY: u32 = 24;
+175 -20
View File
@@ -1299,6 +1299,181 @@ pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 248;
pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
// elf.h - Fields in the e_ident array.
pub const EI_NIDENT: usize = 16;
pub const EI_MAG0: usize = 0;
pub const ELFMAG0: u8 = 0x7f;
pub const EI_MAG1: usize = 1;
pub const ELFMAG1: u8 = b'E';
pub const EI_MAG2: usize = 2;
pub const ELFMAG2: u8 = b'L';
pub const EI_MAG3: usize = 3;
pub const ELFMAG3: u8 = b'F';
pub const SELFMAG: usize = 4;
pub const EI_CLASS: usize = 4;
pub const ELFCLASSNONE: u8 = 0;
pub const ELFCLASS32: u8 = 1;
pub const ELFCLASS64: u8 = 2;
pub const ELFCLASSNUM: usize = 3;
pub const EI_DATA: usize = 5;
pub const ELFDATANONE: u8 = 0;
pub const ELFDATA2LSB: u8 = 1;
pub const ELFDATA2MSB: u8 = 2;
pub const ELFDATANUM: usize = 3;
pub const EI_VERSION: usize = 6;
pub const EI_OSABI: usize = 7;
pub const ELFOSABI_NONE: u8 = 0;
pub const ELFOSABI_SYSV: u8 = 0;
pub const ELFOSABI_HPUX: u8 = 1;
pub const ELFOSABI_NETBSD: u8 = 2;
pub const ELFOSABI_GNU: u8 = 3;
pub const ELFOSABI_LINUX: u8 = ELFOSABI_GNU;
pub const ELFOSABI_SOLARIS: u8 = 6;
pub const ELFOSABI_AIX: u8 = 7;
pub const ELFOSABI_IRIX: u8 = 8;
pub const ELFOSABI_FREEBSD: u8 = 9;
pub const ELFOSABI_TRU64: u8 = 10;
pub const ELFOSABI_MODESTO: u8 = 11;
pub const ELFOSABI_OPENBSD: u8 = 12;
pub const ELFOSABI_ARM: u8 = 97;
pub const ELFOSABI_STANDALONE: u8 = 255;
pub const EI_ABIVERSION: usize = 8;
pub const EI_PAD: usize = 9;
// elf.h - Legal values for e_type (object file type).
pub const ET_NONE: u16 = 0;
pub const ET_REL: u16 = 1;
pub const ET_EXEC: u16 = 2;
pub const ET_DYN: u16 = 3;
pub const ET_CORE: u16 = 4;
pub const ET_NUM: u16 = 5;
pub const ET_LOOS: u16 = 0xfe00;
pub const ET_HIOS: u16 = 0xfeff;
pub const ET_LOPROC: u16 = 0xff00;
pub const ET_HIPROC: u16 = 0xffff;
// elf.h - Legal values for e_machine (architecture).
pub const EM_NONE: u16 = 0;
pub const EM_M32: u16 = 1;
pub const EM_SPARC: u16 = 2;
pub const EM_386: u16 = 3;
pub const EM_68K: u16 = 4;
pub const EM_88K: u16 = 5;
pub const EM_860: u16 = 7;
pub const EM_MIPS: u16 = 8;
pub const EM_S370: u16 = 9;
pub const EM_MIPS_RS3_LE: u16 = 10;
pub const EM_PARISC: u16 = 15;
pub const EM_VPP500: u16 = 17;
pub const EM_SPARC32PLUS: u16 = 18;
pub const EM_960: u16 = 19;
pub const EM_PPC: u16 = 20;
pub const EM_PPC64: u16 = 21;
pub const EM_S390: u16 = 22;
pub const EM_V800: u16 = 36;
pub const EM_FR20: u16 = 37;
pub const EM_RH32: u16 = 38;
pub const EM_RCE: u16 = 39;
pub const EM_ARM: u16 = 40;
pub const EM_FAKE_ALPHA: u16 = 41;
pub const EM_SH: u16 = 42;
pub const EM_SPARCV9: u16 = 43;
pub const EM_TRICORE: u16 = 44;
pub const EM_ARC: u16 = 45;
pub const EM_H8_300: u16 = 46;
pub const EM_H8_300H: u16 = 47;
pub const EM_H8S: u16 = 48;
pub const EM_H8_500: u16 = 49;
pub const EM_IA_64: u16 = 50;
pub const EM_MIPS_X: u16 = 51;
pub const EM_COLDFIRE: u16 = 52;
pub const EM_68HC12: u16 = 53;
pub const EM_MMA: u16 = 54;
pub const EM_PCP: u16 = 55;
pub const EM_NCPU: u16 = 56;
pub const EM_NDR1: u16 = 57;
pub const EM_STARCORE: u16 = 58;
pub const EM_ME16: u16 = 59;
pub const EM_ST100: u16 = 60;
pub const EM_TINYJ: u16 = 61;
pub const EM_X86_64: u16 = 62;
pub const EM_PDSP: u16 = 63;
pub const EM_FX66: u16 = 66;
pub const EM_ST9PLUS: u16 = 67;
pub const EM_ST7: u16 = 68;
pub const EM_68HC16: u16 = 69;
pub const EM_68HC11: u16 = 70;
pub const EM_68HC08: u16 = 71;
pub const EM_68HC05: u16 = 72;
pub const EM_SVX: u16 = 73;
pub const EM_ST19: u16 = 74;
pub const EM_VAX: u16 = 75;
pub const EM_CRIS: u16 = 76;
pub const EM_JAVELIN: u16 = 77;
pub const EM_FIREPATH: u16 = 78;
pub const EM_ZSP: u16 = 79;
pub const EM_MMIX: u16 = 80;
pub const EM_HUANY: u16 = 81;
pub const EM_PRISM: u16 = 82;
pub const EM_AVR: u16 = 83;
pub const EM_FR30: u16 = 84;
pub const EM_D10V: u16 = 85;
pub const EM_D30V: u16 = 86;
pub const EM_V850: u16 = 87;
pub const EM_M32R: u16 = 88;
pub const EM_MN10300: u16 = 89;
pub const EM_MN10200: u16 = 90;
pub const EM_PJ: u16 = 91;
pub const EM_OPENRISC: u16 = 92;
pub const EM_ARC_A5: u16 = 93;
pub const EM_XTENSA: u16 = 94;
pub const EM_AARCH64: u16 = 183;
pub const EM_TILEPRO: u16 = 188;
pub const EM_TILEGX: u16 = 191;
pub const EM_ALPHA: u16 = 0x9026;
// elf.h - Legal values for e_version (version).
pub const EV_NONE: u32 = 0;
pub const EV_CURRENT: u32 = 1;
pub const EV_NUM: u32 = 2;
// elf.h - Legal values for p_type (segment type).
pub const PT_NULL: u32 = 0;
pub const PT_LOAD: u32 = 1;
pub const PT_DYNAMIC: u32 = 2;
pub const PT_INTERP: u32 = 3;
pub const PT_NOTE: u32 = 4;
pub const PT_SHLIB: u32 = 5;
pub const PT_PHDR: u32 = 6;
pub const PT_TLS: u32 = 7;
pub const PT_NUM: u32 = 8;
pub const PT_LOOS: u32 = 0x60000000;
pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
pub const PT_GNU_STACK: u32 = 0x6474e551;
pub const PT_GNU_RELRO: u32 = 0x6474e552;
pub const PT_LOSUNW: u32 = 0x6ffffffa;
pub const PT_SUNWBSS: u32 = 0x6ffffffa;
pub const PT_SUNWSTACK: u32 = 0x6ffffffb;
pub const PT_HISUNW: u32 = 0x6fffffff;
pub const PT_HIOS: u32 = 0x6fffffff;
pub const PT_LOPROC: u32 = 0x70000000;
pub const PT_HIPROC: u32 = 0x7fffffff;
// Legal values for p_flags (segment flags).
pub const PF_X: u32 = 1 << 0;
pub const PF_W: u32 = 1 << 1;
pub const PF_R: u32 = 1 << 2;
pub const PF_MASKOS: u32 = 0x0ff00000;
pub const PF_MASKPROC: u32 = 0xf0000000;
// elf.h - Legal values for a_type (entry type).
pub const AT_NULL: ::c_ulong = 0;
pub const AT_IGNORE: ::c_ulong = 1;
pub const AT_EXECFD: ::c_ulong = 2;
@@ -1951,26 +2126,6 @@ pub const RESOLVE_BENEATH: ::__u64 = 0x08;
pub const RESOLVE_IN_ROOT: ::__u64 = 0x10;
pub const RESOLVE_CACHED: ::__u64 = 0x20;
// these are used in the p_type field of Elf32_Phdr and Elf64_Phdr, which has
// the type Elf32Word and Elf64Word respectively. Luckily, both of those are u32
// so we can use that type here to avoid having to cast.
pub const PT_NULL: u32 = 0;
pub const PT_LOAD: u32 = 1;
pub const PT_DYNAMIC: u32 = 2;
pub const PT_INTERP: u32 = 3;
pub const PT_NOTE: u32 = 4;
pub const PT_SHLIB: u32 = 5;
pub const PT_PHDR: u32 = 6;
pub const PT_TLS: u32 = 7;
pub const PT_NUM: u32 = 8;
pub const PT_LOOS: u32 = 0x60000000;
pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
pub const PT_GNU_STACK: u32 = 0x6474e551;
pub const PT_GNU_RELRO: u32 = 0x6474e552;
pub const PT_HIOS: u32 = 0x6fffffff;
pub const PT_LOPROC: u32 = 0x70000000;
pub const PT_HIPROC: u32 = 0x7fffffff;
// linux/if_ether.h
pub const ETH_ALEN: ::c_int = 6;
pub const ETH_HLEN: ::c_int = 14;