///|
/// Return the symbolic `ELFOSABI_*` name for a known OS ABI byte.
pub fn e_osabi_to_str(e_osabi : Byte) -> String? {
match e_osabi {
ELFOSABI_SYSV => Some("ELFOSABI_SYSV")
ELFOSABI_HPUX => Some("ELFOSABI_HPUX")
ELFOSABI_NETBSD => Some("ELFOSABI_NETBSD")
ELFOSABI_LINUX => Some("ELFOSABI_LINUX")
ELFOSABI_SOLARIS => Some("ELFOSABI_SOLARIS")
ELFOSABI_AIX => Some("ELFOSABI_AIX")
ELFOSABI_IRIX => Some("ELFOSABI_IRIX")
ELFOSABI_FREEBSD => Some("ELFOSABI_FREEBSD")
ELFOSABI_TRU64 => Some("ELFOSABI_TRU64")
ELFOSABI_MODESTO => Some("ELFOSABI_MODESTO")
ELFOSABI_OPENBSD => Some("ELFOSABI_OPENBSD")
ELFOSABI_OPENVMS => Some("ELFOSABI_OPENVMS")
ELFOSABI_NSK => Some("ELFOSABI_NSK")
ELFOSABI_AROS => Some("ELFOSABI_AROS")
ELFOSABI_FENIXOS => Some("ELFOSABI_FENIXOS")
ELFOSABI_CLOUDABI => Some("ELFOSABI_CLOUDABI")
ELFOSABI_OPENVOS => Some("ELFOSABI_OPENVOS")
_ => None
}
}
///|
/// Return a symbolic OS ABI name, or a hexadecimal fallback for unknown values.
pub fn e_osabi_to_string(e_osabi : Byte) -> String {
match e_osabi_to_str(e_osabi) {
Some(s) => s
None => "e_osabi(0x" + e_osabi.to_uint().to_string(radix=16) + ")"
}
}
///|
/// Return a short human-readable description for a known `e_type` value.
pub fn e_type_to_human_str(e_type : UInt16) -> String? {
match e_type {
ET_NONE => Some("No file type")
ET_REL => Some("Relocatable file")
ET_EXEC => Some("Executable file")
ET_DYN => Some("Shared object file")
ET_CORE => Some("Core file")
_ => None
}
}
///|
/// Return the symbolic `ET_*` name for a known ELF file type.
pub fn e_type_to_str(e_type : UInt16) -> String? {
match e_type {
ET_NONE => Some("ET_NONE")
ET_REL => Some("ET_REL")
ET_EXEC => Some("ET_EXEC")
ET_DYN => Some("ET_DYN")
ET_CORE => Some("ET_CORE")
_ => None
}
}
///|
/// Return a symbolic file-type name, or a hexadecimal fallback for unknown values.
pub fn e_type_to_string(e_type : UInt16) -> String {
match e_type_to_str(e_type) {
Some(s) => s
None => "e_type(0x" + e_type.to_string(radix=16) + ")"
}
}
///|
/// Return a short human-readable description for a known `e_machine` value.
pub fn e_machine_to_human_str(e_machine : UInt16) -> String? {
match e_machine {
EM_NONE => Some("No machine")
EM_M32 => Some("AT&T WE 32100")
EM_SPARC => Some("SPARC")
EM_386 => Some("Intel 80386")
EM_68K => Some("Motorola 68000")
EM_88K => Some("Motorola 88000")
EM_IAMCU => Some("Intel MCU")
EM_860 => Some("Intel 80860")
EM_MIPS => Some("MIPS I Architecture")
EM_S370 => Some("IBM System/370 Processor")
EM_MIPS_RS3_LE => Some("MIPS RS3000 Little-endian")
EM_PARISC => Some("Hewlett-Packard PA-RISC")
EM_VPP500 => Some("Fujitsu VPP500")
EM_SPARC32PLUS => Some("Enhanced instruction set SPARC")
EM_960 => Some("Intel 80960")
EM_PPC => Some("PowerPC")
EM_PPC64 => Some("64-bit PowerPC")
EM_S390 => Some("IBM System/390 Processor")
EM_SPU => Some("IBM SPU/SPC")
EM_V800 => Some("NEC V800")
EM_FR20 => Some("Fujitsu FR20")
EM_RH32 => Some("TRW RH-32")
EM_RCE => Some("Motorola RCE")
EM_ARM => Some("ARM 32-bit architecture (AARCH32)")
EM_ALPHA => Some("Digital Alpha")
EM_SH => Some("Hitachi SH")
EM_SPARCV9 => Some("SPARC Version 9")
EM_TRICORE => Some("Siemens TriCore embedded processor")
EM_ARC => Some("Argonaut RISC Core, Argonaut Technologies Inc.")
EM_H8_300 => Some("Hitachi H8/300")
EM_H8_300H => Some("Hitachi H8/300H")
EM_H8S => Some("Hitachi H8S")
EM_H8_500 => Some("Hitachi H8/500")
EM_IA_64 => Some("Intel IA-64 processor architecture")
EM_MIPS_X => Some("Stanford MIPS-X")
EM_COLDFIRE => Some("Motorola ColdFire")
EM_68HC12 => Some("Motorola M68HC12")
EM_MMA => Some("Fujitsu MMA Multimedia Accelerator")
EM_PCP => Some("Siemens PCP")
EM_NCPU => Some("Sony nCPU embedded RISC processor")
EM_NDR1 => Some("Denso NDR1 microprocessor")
EM_STARCORE => Some("Motorola Star*Core processor")
EM_ME16 => Some("Toyota ME16 processor")
EM_ST100 => Some("STMicroelectronics ST100 processor")
EM_TINYJ => Some("Advanced Logic Corp. TinyJ embedded processor family")
EM_X86_64 => Some("AMD x86-64 architecture")
EM_PDSP => Some("Sony DSP Processor")
EM_PDP10 => Some("Digital Equipment Corp. PDP-10")
EM_PDP11 => Some("Digital Equipment Corp. PDP-11")
EM_FX66 => Some("Siemens FX66 microcontroller")
EM_ST9PLUS => Some("STMicroelectronics ST9+ 8/16 bit microcontroller")
EM_ST7 => Some("STMicroelectronics ST7 8-bit microcontroller")
EM_68HC16 => Some("Motorola MC68HC16 Microcontroller")
EM_68HC11 => Some("Motorola MC68HC11 Microcontroller")
EM_68HC08 => Some("Motorola MC68HC08 Microcontroller")
EM_68HC05 => Some("Motorola MC68HC05 Microcontroller")
EM_SVX => Some("Silicon Graphics SVx")
EM_ST19 => Some("STMicroelectronics ST19 8-bit microcontroller")
EM_VAX => Some("Digital VAX")
EM_CRIS => Some("Axis Communications 32-bit embedded processor")
EM_JAVELIN => Some("Infineon Technologies 32-bit embedded processor")
EM_FIREPATH => Some("Element 14 64-bit DSP Processor")
EM_ZSP => Some("LSI Logic 16-bit DSP Processor")
EM_MMIX => Some("Donald Knuth's educational 64-bit processor")
EM_HUANY => Some("Harvard University machine-independent object files")
EM_PRISM => Some("SiTera Prism")
EM_AVR => Some("Atmel AVR 8-bit microcontroller")
EM_FR30 => Some("Fujitsu FR30")
EM_D10V => Some("Mitsubishi D10V")
EM_D30V => Some("Mitsubishi D30V")
EM_V850 => Some("NEC v850")
EM_M32R => Some("Mitsubishi M32R")
EM_MN10300 => Some("Matsushita MN10300")
EM_MN10200 => Some("Matsushita MN10200")
EM_PJ => Some("picoJava")
EM_OPENRISC => Some("OpenRISC 32-bit embedded processor")
EM_ARC_COMPACT => Some("ARC International ARCompact processor")
EM_XTENSA => Some("Tensilica Xtensa Architecture")
EM_VIDEOCORE => Some("Alphamosaic VideoCore processor")
EM_TMM_GPP => Some("Thompson Multimedia General Purpose Processor")
EM_NS32K => Some("National Semiconductor 32000 series")
EM_TPC => Some("Tenor Network TPC processor")
EM_SNP1K => Some("Trebia SNP 1000 processor")
EM_ST200 => Some("STMicroelectronics (www.st.com) ST200 microcontroller")
EM_IP2K => Some("Ubicom IP2xxx microcontroller family")
EM_MAX => Some("MAX Processor")
EM_CR => Some("National Semiconductor CompactRISC microprocessor")
EM_F2MC16 => Some("Fujitsu F2MC16")
EM_MSP430 => Some("Texas Instruments embedded microcontroller msp430")
EM_BLACKFIN => Some("Analog Devices Blackfin (DSP) processor")
EM_SE_C33 => Some("S1C33 Family of Seiko Epson processors")
EM_SEP => Some("Sharp embedded microprocessor")
EM_ARCA => Some("Arca RISC Microprocessor")
EM_UNICORE =>
Some(
"Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University",
)
EM_EXCESS => Some("eXcess: 16/32/64-bit configurable embedded CPU")
EM_DXP => Some("Icera Semiconductor Inc. Deep Execution Processor")
EM_ALTERA_NIOS2 => Some("Altera Nios II soft-core processor")
EM_CRX => Some("National Semiconductor CompactRISC CRX microprocessor")
EM_XGATE => Some("Motorola XGATE embedded processor")
EM_C166 => Some("Infineon C16x/XC16x processor")
EM_M16C => Some("Renesas M16C series microprocessors")
EM_DSPIC30F =>
Some("Microchip Technology dsPIC30F Digital Signal Controller")
EM_CE => Some("Freescale Communication Engine RISC core")
EM_M32C => Some("Renesas M32C series microprocessors")
EM_TSK3000 => Some("Altium TSK3000 core")
EM_RS08 => Some("Freescale RS08 embedded processor")
EM_SHARC => Some("Analog Devices SHARC family of 32-bit DSP processors")
EM_ECOG2 => Some("Cyan Technology eCOG2 microprocessor")
EM_SCORE7 => Some("Sunplus S+core7 RISC processor")
EM_DSP24 => Some("New Japan Radio (NJR) 24-bit DSP Processor")
EM_VIDEOCORE3 => Some("Broadcom VideoCore III processor")
EM_LATTICEMICO32 => Some("RISC processor for Lattice FPGA architecture")
EM_SE_C17 => Some("Seiko Epson C17 family")
EM_TI_C6000 => Some("The Texas Instruments TMS320C6000 DSP family")
EM_TI_C2000 => Some("The Texas Instruments TMS320C2000 DSP family")
EM_TI_C5500 => Some("The Texas Instruments TMS320C55x DSP family")
EM_TI_ARP32 =>
Some("Texas Instruments Application Specific RISC Processor, 32bit fetch")
EM_TI_PRU => Some("Texas Instruments Programmable Realtime Unit")
EM_MMDSP_PLUS => Some("STMicroelectronics 64bit VLIW Data Signal Processor")
EM_CYPRESS_M8C => Some("Cypress M8C microprocessor")
EM_R32C => Some("Renesas R32C series microprocessors")
EM_TRIMEDIA => Some("NXP Semiconductors TriMedia architecture family")
EM_QDSP6 => Some("QUALCOMM DSP6 Processor")
EM_8051 => Some("Intel 8051 and variants")
EM_STXP7X =>
Some(
"STMicroelectronics STxP7x family of configurable and extensible RISC processors",
)
EM_NDS32 =>
Some("Andes Technology compact code size embedded RISC processor family")
EM_ECOG1X => Some("Cyan Technology eCOG1X family")
EM_MAXQ30 => Some("Dallas Semiconductor MAXQ30 Core Micro-controllers")
EM_XIMO16 => Some("New Japan Radio (NJR) 16-bit DSP Processor")
EM_MANIK => Some("M2000 Reconfigurable RISC Microprocessor")
EM_CRAYNV2 => Some("Cray Inc. NV2 vector architecture")
EM_RX => Some("Renesas RX family")
EM_METAG => Some("Imagination Technologies META processor architecture")
EM_MCST_ELBRUS => Some("MCST Elbrus general purpose hardware architecture")
EM_ECOG16 => Some("Cyan Technology eCOG16 family")
EM_CR16 =>
Some("National Semiconductor CompactRISC CR16 16-bit microprocessor")
EM_ETPU => Some("Freescale Extended Time Processing Unit")
EM_SLE9X => Some("Infineon Technologies SLE9X core")
EM_L10M => Some("Intel L10M")
EM_K10M => Some("Intel K10M")
EM_AARCH64 => Some("ARM 64-bit architecture (AARCH64)")
EM_AVR32 => Some("Atmel Corporation 32-bit microprocessor family")
EM_STM8 => Some("STMicroeletronics STM8 8-bit microcontroller")
EM_TILE64 => Some("Tilera TILE64 multicore architecture family")
EM_TILEPRO => Some("Tilera TILEPro multicore architecture family")
EM_MICROBLAZE => Some("Xilinx MicroBlaze 32-bit RISC soft processor core")
EM_CUDA => Some("NVIDIA CUDA architecture")
EM_TILEGX => Some("Tilera TILE-Gx multicore architecture family")
EM_CLOUDSHIELD => Some("CloudShield architecture family")
EM_COREA_1ST => Some("KIPO-KAIST Core-A 1st generation processor family")
EM_COREA_2ND => Some("KIPO-KAIST Core-A 2nd generation processor family")
EM_ARC_COMPACT2 => Some("Synopsys ARCompact V2")
EM_OPEN8 => Some("Open8 8-bit RISC soft processor core")
EM_RL78 => Some("Renesas RL78 family")
EM_VIDEOCORE5 => Some("Broadcom VideoCore V processor")
EM_78KOR => Some("Renesas 78KOR family")
EM_56800EX => Some("Freescale 56800EX Digital Signal Controller (DSC)")
EM_BA1 => Some("Beyond BA1 CPU architecture")
EM_BA2 => Some("Beyond BA2 CPU architecture")
EM_XCORE => Some("XMOS xCORE processor family")
EM_MCHP_PIC => Some("Microchip 8-bit PIC(r) family")
EM_INTEL205 => Some("Reserved by Intel")
EM_INTEL206 => Some("Reserved by Intel")
EM_INTEL207 => Some("Reserved by Intel")
EM_INTEL208 => Some("Reserved by Intel")
EM_INTEL209 => Some("Reserved by Intel")
EM_KM32 => Some("KM211 KM32 32-bit processor")
EM_KMX32 => Some("KM211 KMX32 32-bit processor")
EM_KMX16 => Some("KM211 KMX16 16-bit processor")
EM_KMX8 => Some("KM211 KMX8 8-bit processor")
EM_KVARC => Some("KM211 KVARC processor")
EM_CDP => Some("Paneve CDP architecture family")
EM_COGE => Some("Cognitive Smart Memory Processor")
EM_COOL => Some("Bluechip Systems CoolEngine")
EM_NORC => Some("Nanoradio Optimized RISC")
EM_CSR_KALIMBA => Some("CSR Kalimba architecture family")
EM_Z80 => Some("Zilog Z80")
EM_VISIUM => Some("Controls and Data Services VISIUMcore processor")
EM_FT32 => Some("FTDI Chip FT32 high performance 32-bit RISC architecture")
EM_MOXIE => Some("Moxie processor family")
EM_AMDGPU => Some("AMD GPU architecture")
EM_RISCV => Some("RISC-V")
EM_BPF => Some("Linux BPF")
EM_LOONGARCH => Some("LoongArch")
_ => None
}
}
///|
/// Return the symbolic `EM_*` name for a known machine architecture.
pub fn e_machine_to_str(e_machine : UInt16) -> String? {
match e_machine {
EM_NONE => Some("EM_NONE")
EM_M32 => Some("EM_M32")
EM_SPARC => Some("EM_SPARC")
EM_386 => Some("EM_386")
EM_68K => Some("EM_68K")
EM_88K => Some("EM_88K")
EM_IAMCU => Some("EM_IAMCU")
EM_860 => Some("EM_860")
EM_MIPS => Some("EM_MIPS")
EM_S370 => Some("EM_S370")
EM_MIPS_RS3_LE => Some("EM_MIPS_RS3_LE")
EM_PARISC => Some("EM_PARISC")
EM_VPP500 => Some("EM_VPP500")
EM_SPARC32PLUS => Some("EM_SPARC32PLUS")
EM_960 => Some("EM_960")
EM_PPC => Some("EM_PPC")
EM_PPC64 => Some("EM_PPC64")
EM_S390 => Some("EM_S390")
EM_SPU => Some("EM_SPU")
EM_V800 => Some("EM_V800")
EM_FR20 => Some("EM_FR20")
EM_RH32 => Some("EM_RH32")
EM_RCE => Some("EM_RCE")
EM_ARM => Some("EM_ARM")
EM_ALPHA => Some("EM_ALPHA")
EM_SH => Some("EM_SH")
EM_SPARCV9 => Some("EM_SPARCV9")
EM_TRICORE => Some("EM_TRICORE")
EM_ARC => Some("EM_ARC")
EM_H8_300 => Some("EM_H8_300")
EM_H8_300H => Some("EM_H8_300H")
EM_H8S => Some("EM_H8S")
EM_H8_500 => Some("EM_H8_500")
EM_IA_64 => Some("EM_IA_64")
EM_MIPS_X => Some("EM_MIPS_X")
EM_COLDFIRE => Some("EM_COLDFIRE")
EM_68HC12 => Some("EM_68HC12")
EM_MMA => Some("EM_MMA")
EM_PCP => Some("EM_PCP")
EM_NCPU => Some("EM_NCPU")
EM_NDR1 => Some("EM_NDR1")
EM_STARCORE => Some("EM_STARCORE")
EM_ME16 => Some("EM_ME16")
EM_ST100 => Some("EM_ST100")
EM_TINYJ => Some("EM_TINYJ")
EM_X86_64 => Some("EM_X86_64")
EM_PDSP => Some("EM_PDSP")
EM_PDP10 => Some("EM_PDP10")
EM_PDP11 => Some("EM_PDP11")
EM_FX66 => Some("EM_FX66")
EM_ST9PLUS => Some("EM_ST9PLUS")
EM_ST7 => Some("EM_ST7")
EM_68HC16 => Some("EM_68HC16")
EM_68HC11 => Some("EM_68HC11")
EM_68HC08 => Some("EM_68HC08")
EM_68HC05 => Some("EM_68HC05")
EM_SVX => Some("EM_SVX")
EM_ST19 => Some("EM_ST19")
EM_VAX => Some("EM_VAX")
EM_CRIS => Some("EM_CRIS")
EM_JAVELIN => Some("EM_JAVELIN")
EM_FIREPATH => Some("EM_FIREPATH")
EM_ZSP => Some("EM_ZSP")
EM_MMIX => Some("EM_MMIX")
EM_HUANY => Some("EM_HUANY")
EM_PRISM => Some("EM_PRISM")
EM_AVR => Some("EM_AVR")
EM_FR30 => Some("EM_FR30")
EM_D10V => Some("EM_D10V")
EM_D30V => Some("EM_D30V")
EM_V850 => Some("EM_V850")
EM_M32R => Some("EM_M32R")
EM_MN10300 => Some("EM_MN10300")
EM_MN10200 => Some("EM_MN10200")
EM_PJ => Some("EM_PJ")
EM_OPENRISC => Some("EM_OPENRISC")
EM_ARC_COMPACT => Some("EM_ARC_COMPACT")
EM_XTENSA => Some("EM_XTENSA")
EM_VIDEOCORE => Some("EM_VIDEOCORE")
EM_TMM_GPP => Some("EM_TMM_GPP")
EM_NS32K => Some("EM_NS32K")
EM_TPC => Some("EM_TPC")
EM_SNP1K => Some("EM_SNP1K")
EM_ST200 => Some("EM_ST200")
EM_IP2K => Some("EM_IP2K")
EM_MAX => Some("EM_MAX")
EM_CR => Some("EM_CR")
EM_F2MC16 => Some("EM_F2MC16")
EM_MSP430 => Some("EM_MSP430")
EM_BLACKFIN => Some("EM_BLACKFIN")
EM_SE_C33 => Some("EM_SE_C33")
EM_SEP => Some("EM_SEP")
EM_ARCA => Some("EM_ARCA")
EM_UNICORE => Some("EM_UNICORE")
EM_EXCESS => Some("EM_EXCESS")
EM_DXP => Some("EM_DXP")
EM_ALTERA_NIOS2 => Some("EM_ALTERA_NIOS2")
EM_CRX => Some("EM_CRX")
EM_XGATE => Some("EM_XGATE")
EM_C166 => Some("EM_C166")
EM_M16C => Some("EM_M16C")
EM_DSPIC30F => Some("EM_DSPIC30F")
EM_CE => Some("EM_CE")
EM_M32C => Some("EM_M32C")
EM_TSK3000 => Some("EM_TSK3000")
EM_RS08 => Some("EM_RS08")
EM_SHARC => Some("EM_SHARC")
EM_ECOG2 => Some("EM_ECOG2")
EM_SCORE7 => Some("EM_SCORE7")
EM_DSP24 => Some("EM_DSP24")
EM_VIDEOCORE3 => Some("EM_VIDEOCORE3")
EM_LATTICEMICO32 => Some("EM_LATTICEMICO32")
EM_SE_C17 => Some("EM_SE_C17")
EM_TI_C6000 => Some("EM_TI_C6000")
EM_TI_C2000 => Some("EM_TI_C2000")
EM_TI_C5500 => Some("EM_TI_C5500")
EM_TI_ARP32 => Some("EM_TI_ARP32")
EM_TI_PRU => Some("EM_TI_PRU")
EM_MMDSP_PLUS => Some("EM_MMDSP_PLUS")
EM_CYPRESS_M8C => Some("EM_CYPRESS_M8C")
EM_R32C => Some("EM_R32C")
EM_TRIMEDIA => Some("EM_TRIMEDIA")
EM_QDSP6 => Some("EM_QDSP6")
EM_8051 => Some("EM_8051")
EM_STXP7X => Some("EM_STXP7X")
EM_NDS32 => Some("EM_NDS32")
EM_ECOG1X => Some("EM_ECOG1X")
EM_MAXQ30 => Some("EM_MAXQ30")
EM_XIMO16 => Some("EM_XIMO16")
EM_MANIK => Some("EM_MANIK")
EM_CRAYNV2 => Some("EM_CRAYNV2")
EM_RX => Some("EM_RX")
EM_METAG => Some("EM_METAG")
EM_MCST_ELBRUS => Some("EM_MCST_ELBRUS")
EM_ECOG16 => Some("EM_ECOG16")
EM_CR16 => Some("EM_CR16")
EM_ETPU => Some("EM_ETPU")
EM_SLE9X => Some("EM_SLE9X")
EM_L10M => Some("EM_L10M")
EM_K10M => Some("EM_K10M")
EM_AARCH64 => Some("EM_AARCH64")
EM_AVR32 => Some("EM_AVR32")
EM_STM8 => Some("EM_STM8")
EM_TILE64 => Some("EM_TILE64")
EM_TILEPRO => Some("EM_TILEPRO")
EM_MICROBLAZE => Some("EM_MICROBLAZE")
EM_CUDA => Some("EM_CUDA")
EM_TILEGX => Some("EM_TILEGX")
EM_CLOUDSHIELD => Some("EM_CLOUDSHIELD")
EM_COREA_1ST => Some("EM_COREA_1ST")
EM_COREA_2ND => Some("EM_COREA_2ND")
EM_ARC_COMPACT2 => Some("EM_ARC_COMPACT2")
EM_OPEN8 => Some("EM_OPEN8")
EM_RL78 => Some("EM_RL78")
EM_VIDEOCORE5 => Some("EM_VIDEOCORE5")
EM_78KOR => Some("EM_78KOR")
EM_56800EX => Some("EM_56800EX")
EM_BA1 => Some("EM_BA1")
EM_BA2 => Some("EM_BA2")
EM_XCORE => Some("EM_XCORE")
EM_MCHP_PIC => Some("EM_MCHP_PIC")
EM_INTEL205 => Some("EM_INTEL205")
EM_INTEL206 => Some("EM_INTEL206")
EM_INTEL207 => Some("EM_INTEL207")
EM_INTEL208 => Some("EM_INTEL208")
EM_INTEL209 => Some("EM_INTEL209")
EM_KM32 => Some("EM_KM32")
EM_KMX32 => Some("EM_KMX32")
EM_KMX16 => Some("EM_KMX16")
EM_KMX8 => Some("EM_KMX8")
EM_KVARC => Some("EM_KVARC")
EM_CDP => Some("EM_CDP")
EM_COGE => Some("EM_COGE")
EM_COOL => Some("EM_COOL")
EM_NORC => Some("EM_NORC")
EM_CSR_KALIMBA => Some("EM_CSR_KALIMBA")
EM_Z80 => Some("EM_Z80")
EM_VISIUM => Some("EM_VISIUM")
EM_FT32 => Some("EM_FT32")
EM_MOXIE => Some("EM_MOXIE")
EM_AMDGPU => Some("EM_AMDGPU")
EM_RISCV => Some("EM_RISCV")
EM_BPF => Some("EM_BPF")
EM_LOONGARCH => Some("EM_LOONGARCH")
_ => None
}
}
///|
/// Return a symbolic machine name, or a hexadecimal fallback for unknown values.
pub fn e_machine_to_string(e_machine : UInt16) -> String {
match e_machine_to_str(e_machine) {
Some(s) => s
None => "e_machine(0x" + e_machine.to_string(radix=16) + ")"
}
}
///|
/// Return the symbolic `SHT_*` name for a known section-header type.
pub fn sh_type_to_str(sh_type : UInt) -> String? {
match sh_type {
SHT_NULL => Some("SHT_NULL")
SHT_PROGBITS => Some("SHT_PROGBITS")
SHT_SYMTAB => Some("SHT_SYMTAB")
SHT_STRTAB => Some("SHT_STRTAB")
SHT_RELA => Some("SHT_RELA")
SHT_HASH => Some("SHT_HASH")
SHT_DYNAMIC => Some("SHT_DYNAMIC")
SHT_NOTE => Some("SHT_NOTE")
SHT_NOBITS => Some("SHT_NOBITS")
SHT_REL => Some("SHT_REL")
SHT_SHLIB => Some("SHT_SHLIB")
SHT_DYNSYM => Some("SHT_DYNSYM")
SHT_INIT_ARRAY => Some("SHT_INIT_ARRAY")
SHT_FINI_ARRAY => Some("SHT_FINI_ARRAY")
SHT_PREINIT_ARRAY => Some("SHT_PREINIT_ARRAY")
SHT_GROUP => Some("SHT_GROUP")
SHT_SYMTAB_SHNDX => Some("SHT_SYMTAB_SHNDX")
SHT_GNU_ATTRIBUTES => Some("SHT_GNU_ATTRIBUTES")
SHT_GNU_HASH => Some("SHT_GNU_HASH")
SHT_GNU_LIBLIST => Some("SHT_GNU_LIBLIST")
SHT_GNU_VERDEF => Some("SHT_GNU_VERDEF")
SHT_GNU_VERNEED => Some("SHT_GNU_VERNEED")
SHT_GNU_VERSYM => Some("SHT_GNU_VERSYM")
_ => None
}
}
///|
/// Return a symbolic section type name, or a hexadecimal fallback for unknown values.
pub fn sh_type_to_string(sh_type : UInt) -> String {
match sh_type_to_str(sh_type) {
Some(s) => s
None => "sh_type(0x" + sh_type.to_string(radix=16) + ")"
}
}
///|
/// Return a compact `RWE` permission string for simple `p_flags` values.
pub fn p_flags_to_string(p_flags : UInt) -> String {
if p_flags < 8U {
let r = if (p_flags & PF_R) != 0U { "R" } else { " " }
let w = if (p_flags & PF_W) != 0U { "W" } else { " " }
let x = if (p_flags & PF_X) != 0U { "E" } else { " " }
r + w + x
} else {
"p_flags(0x" + p_flags.to_string(radix=16) + ")"
}
}
///|
/// Return the symbolic `PT_*` name for a known program-header type.
pub fn p_type_to_str(p_type : UInt) -> String? {
match p_type {
PT_NULL => Some("PT_NULL")
PT_LOAD => Some("PT_LOAD")
PT_DYNAMIC => Some("PT_DYNAMIC")
PT_INTERP => Some("PT_INTERP")
PT_NOTE => Some("PT_NOTE")
PT_SHLIB => Some("PT_SHLIB")
PT_PHDR => Some("PT_PHDR")
PT_TLS => Some("PT_TLS")
PT_GNU_EH_FRAME => Some("PT_GNU_EH_FRAME")
PT_GNU_STACK => Some("PT_GNU_STACK")
PT_GNU_RELRO => Some("PT_GNU_RELRO")
PT_GNU_PROPERTY => Some("PT_GNU_PROPERTY")
_ => None
}
}
///|
/// Return a symbolic program-header type name, or a hexadecimal fallback for unknown values.
pub fn p_type_to_string(p_type : UInt) -> String {
match p_type_to_str(p_type) {
Some(s) => s
None => "p_type(0x" + p_type.to_string(radix=16) + ")"
}
}
///|
/// Return the symbolic `STT_*` name for a known symbol type.
pub fn st_symtype_to_str(st_symtype : Byte) -> String? {
match st_symtype {
STT_NOTYPE => Some("STT_NOTYPE")
STT_OBJECT => Some("STT_OBJECT")
STT_FUNC => Some("STT_FUNC")
STT_SECTION => Some("STT_SECTION")
STT_FILE => Some("STT_FILE")
STT_COMMON => Some("STT_COMMON")
STT_TLS => Some("STT_TLS")
STT_GNU_IFUNC => Some("STT_GNU_IFUNC")
_ => None
}
}
///|
/// Return a symbolic symbol type name, or a hexadecimal fallback for unknown values.
pub fn st_symtype_to_string(st_symtype : Byte) -> String {
match st_symtype_to_str(st_symtype) {
Some(s) => s
None => "st_symtype(0x" + st_symtype.to_uint().to_string(radix=16) + ")"
}
}
///|
/// Return the symbolic `STB_*` name for a known symbol binding.
pub fn st_bind_to_str(st_bind : Byte) -> String? {
match st_bind {
STB_LOCAL => Some("STB_LOCAL")
STB_GLOBAL => Some("STB_GLOBAL")
STB_WEAK => Some("STB_WEAK")
STB_GNU_UNIQUE => Some("STB_GNU_UNIQUE")
_ => None
}
}
///|
/// Return a symbolic symbol binding name, or a hexadecimal fallback for unknown values.
pub fn st_bind_to_string(st_bind : Byte) -> String {
match st_bind_to_str(st_bind) {
Some(s) => s
None => "st_bind(0x\{st_bind.to_uint().to_string(radix=16)})"
}
}
///|
/// Return the symbolic `STV_*` name for a known symbol visibility.
pub fn st_vis_to_str(st_vis : Byte) -> String? {
match st_vis {
STV_DEFAULT => Some("STV_DEFAULT")
STV_INTERNAL => Some("STV_INTERNAL")
STV_HIDDEN => Some("STV_HIDDEN")
STV_PROTECTED => Some("STV_PROTECTED")
_ => None
}
}
///|
/// Return a symbolic symbol visibility name, or a hexadecimal fallback for unknown values.
pub fn st_vis_to_string(st_vis : Byte) -> String {
match st_vis_to_str(st_vis) {
Some(s) => s
None => "st_vis(0x" + st_vis.to_uint().to_string(radix=16) + ")"
}
}
///|
/// Return the symbolic `ELFCOMPRESS_*` name for a known compression type.
pub fn ch_type_to_str(ch_type : UInt) -> String? {
match ch_type {
ELFCOMPRESS_ZLIB => Some("ELFCOMPRESS_ZLIB")
ELFCOMPRESS_ZSTD => Some("ELFCOMPRESS_ZSTD ")
_ => None
}
}
///|
/// Return the GNU ABI-tag OS name for a known ABI-tag descriptor value.
pub fn note_abi_tag_os_to_str(os : UInt) -> String? {
match os {
ELF_NOTE_GNU_ABI_TAG_OS_LINUX => Some("Linux")
ELF_NOTE_GNU_ABI_TAG_OS_GNU => Some("GNU")
ELF_NOTE_GNU_ABI_TAG_OS_SOLARIS2 => Some("Solaris")
ELF_NOTE_GNU_ABI_TAG_OS_FREEBSD => Some("FreeBSD")
_ => None
}
}
///|
/// Return the symbolic `DT_*` name for a known dynamic tag.
pub fn d_tag_to_str(d_tag : Int64) -> String? {
match d_tag {
DT_NULL => Some("DT_NULL")
DT_NEEDED => Some("DT_NEEDED")
DT_PLTRELSZ => Some("DT_PLTRELSZ")
DT_PLTGOT => Some("DT_PLTGOT")
DT_HASH => Some("DT_HASH")
DT_STRTAB => Some("DT_STRTAB")
DT_SYMTAB => Some("DT_SYMTAB")
DT_RELA => Some("DT_RELA")
DT_RELASZ => Some("DT_RELASZ")
DT_RELAENT => Some("DT_RELAENT")
DT_STRSZ => Some("DT_STRSZ")
DT_SYMENT => Some("DT_SYMENT")
DT_INIT => Some("DT_INIT")
DT_FINI => Some("DT_FINI")
DT_SONAME => Some("DT_SONAME")
DT_RPATH => Some("DT_RPATH")
DT_SYMBOLIC => Some("DT_SYMBOLIC")
DT_REL => Some("DT_REL")
DT_RELSZ => Some("DT_RELSZ")
DT_RELENT => Some("DT_RELENT")
DT_PLTREL => Some("DT_PLTREL")
DT_DEBUG => Some("DT_DEBUG")
DT_TEXTREL => Some("DT_TEXTREL")
DT_JMPREL => Some("DT_JMPREL")
DT_BIND_NOW => Some("DT_BIND_NOW")
DT_INIT_ARRAY => Some("DT_INIT_ARRAY")
DT_FINI_ARRAY => Some("DT_FINI_ARRAY")
DT_INIT_ARRAYSZ => Some("DT_INIT_ARRAYSZ")
DT_FINI_ARRAYSZ => Some("DT_FINI_ARRAYSZ")
DT_RUNPATH => Some("DT_RUNPATH")
DT_FLAGS => Some("DT_FLAGS")
DT_PREINIT_ARRAY => Some("DT_PREINIT_ARRAY")
DT_PREINIT_ARRAYSZ => Some("DT_PREINIT_ARRAYSZ")
DT_SYMTAB_SHNDX => Some("DT_SYMTAB_SHNDX")
DT_GUILE_GC_ROOT => Some("DT_GUILE_GC_ROOT")
DT_GUILE_GC_ROOT_SZ => Some("DT_GUILE_GC_ROOT_SZ")
DT_GUILE_ENTRY => Some("DT_GUILE_ENTRY")
DT_GUILE_VM_VERSION => Some("DT_GUILE_VM_VERSION")
DT_GUILE_FRAME_MAPS => Some("DT_GUILE_FRAME_MAPS")
DT_LOOS => Some("DT_LOOS")
DT_GNU_PRELINKED => Some("DT_GNU_PRELINKED")
DT_GNU_CONFLICTSZ => Some("DT_GNU_CONFLICTSZ")
DT_GNU_LIBLISTSZ => Some("DT_GNU_LIBLISTSZ")
DT_CHECKSUM => Some("DT_CHECKSUM")
DT_PLTPADSZ => Some("DT_PLTPADSZ")
DT_MOVEENT => Some("DT_MOVEENT")
DT_MOVESZ => Some("DT_MOVESZ")
DT_FEATURE_1 => Some("DT_FEATURE_1")
DT_POSFLAG_1 => Some("DT_POSFLAG_1")
DT_SYMINSZ => Some("DT_SYMINSZ")
DT_SYMINENT => Some("DT_SYMINENT")
DT_GNU_HASH => Some("DT_GNU_HASH")
DT_TLSDESC_PLT => Some("DT_TLSDESC_PLT")
DT_TLSDESC_GOT => Some("DT_TLSDESC_GOT")
DT_GNU_CONFLICT => Some("DT_GNU_CONFLICT")
DT_GNU_LIBLIST => Some("DT_GNU_LIBLIST")
DT_CONFIG => Some("DT_CONFIG")
DT_DEPAUDIT => Some("DT_DEPAUDIT")
DT_AUDIT => Some("DT_AUDIT")
DT_PLTPAD => Some("DT_PLTPAD")
DT_MOVETAB => Some("DT_MOVETAB")
DT_SYMINFO => Some("DT_SYMINFO")
DT_VERSYM => Some("DT_VERSYM")
DT_RELACOUNT => Some("DT_RELACOUNT")
DT_RELCOUNT => Some("DT_RELCOUNT")
DT_FLAGS_1 => Some("DT_FLAGS_1")
DT_VERDEF => Some("DT_VERDEF")
DT_VERDEFNUM => Some("DT_VERDEFNUM")
DT_VERNEED => Some("DT_VERNEED")
DT_VERNEEDNUM => Some("DT_VERNEEDNUM")
DT_HIOS => Some("DT_HIOS")
DT_LOPROC => Some("DT_LOPROC")
DT_HIPROC => Some("DT_HIPROC")
_ => None
}
}