objutils.elf package#
Subpackages#
Submodules#
objutils.elf.attributes module#
objutils.elf.defs module#
- class objutils.elf.defs.AVRMachineType(*values)[source]#
Bases:
IntEnum- E_AVR_MACH_AVR1 = 1#
- E_AVR_MACH_AVR2 = 2#
- E_AVR_MACH_AVR25 = 25#
- E_AVR_MACH_AVR3 = 3#
- E_AVR_MACH_AVR31 = 31#
- E_AVR_MACH_AVR35 = 35#
- E_AVR_MACH_AVR4 = 4#
- E_AVR_MACH_AVR5 = 5#
- E_AVR_MACH_AVR51 = 51#
- E_AVR_MACH_AVR6 = 6#
- E_AVR_MACH_AVRTINY = 100#
- E_AVR_MACH_XMEGA1 = 101#
- E_AVR_MACH_XMEGA2 = 102#
- E_AVR_MACH_XMEGA3 = 103#
- E_AVR_MACH_XMEGA4 = 104#
- E_AVR_MACH_XMEGA5 = 105#
- E_AVR_MACH_XMEGA6 = 106#
- E_AVR_MACH_XMEGA7 = 107#
- class objutils.elf.defs.ArmMachineData(machine_code: int, flags: int)[source]#
Bases:
MachineData
- class objutils.elf.defs.AvrMachineData(machine_code: int, flags: int)[source]#
Bases:
MachineData
- class objutils.elf.defs.ELFAbiType(*values)[source]#
Bases:
IntEnum- ELFOSABI_AIX = 7#
- ELFOSABI_ARM = 97#
- ELFOSABI_AROS = 15#
- ELFOSABI_C6000_ELFABI = 64#
- ELFOSABI_C6000_LINUX = 65#
- ELFOSABI_FENIXOS = 16#
- ELFOSABI_FREEBSD = 9#
- ELFOSABI_GNU = 3#
- ELFOSABI_HPUX = 1#
- ELFOSABI_IRIX = 8#
- ELFOSABI_LINUX = 3#
- ELFOSABI_MODESTO = 11#
- ELFOSABI_NETBSD = 2#
- ELFOSABI_NONE = 0#
- ELFOSABI_NSK = 14#
- ELFOSABI_OPENBSD = 12#
- ELFOSABI_OPENVMS = 13#
- ELFOSABI_SOLARIS = 6#
- ELFOSABI_STANDALONE = 255#
- ELFOSABI_TRU64 = 10#
- class objutils.elf.defs.ELFClass(*values)[source]#
Bases:
IntEnum- ELFCLASS32 = 1#
- ELFCLASS64 = 2#
- ELFCLASSNONE = 0#
- class objutils.elf.defs.ELFDataEncoding(*values)[source]#
Bases:
IntEnum- ELFDATA2LSB = 1#
- ELFDATA2MSB = 2#
- ELFDATANONE = 0#
- class objutils.elf.defs.ELFMachineType(*values)[source]#
Bases:
IntEnum- EM_386 = 3#
- EM_68HC05 = 72#
- EM_68HC08 = 71#
- EM_68HC11 = 70#
- EM_68HC12 = 53#
- EM_68HC16 = 69#
- EM_68K = 4#
- EM_860 = 7#
- EM_88K = 5#
RESERVED 6 Reserved for future use
- EM_960 = 19#
- EM_AARCH64 = 183#
- EM_ADAPTEVA_EPIPHANY = 4643#
- EM_ALPHA = 41#
- EM_ALPHA_NO_ABI = 36902#
- EM_ALTERA_NIOS2 = 113#
- EM_ARC = 45#
- EM_ARCA = 109#
- EM_ARC_A5 = 93#
- EM_ARM = 40#
- EM_AVR = 83#
- EM_AVR32 = 185#
- EM_AVR_OLD = 4183#
- EM_BLACKFIN = 106#
- EM_C166 = 116#
- EM_CE = 119#
- EM_COLDFIRE = 52#
- EM_COOLRISC_C816 = 51222#
- EM_CR = 103#
- EM_CR16 = 177#
- EM_CRAYNV2 = 172#
- EM_CRIS = 76#
- EM_CRX = 114#
- EM_CUDA = 190#
- EM_CYGNUS_D10V = 30288#
- EM_CYGNUS_D30V = 30326#
- EM_CYGNUS_FR30 = 13104#
- EM_CYGNUS_FRV = 21569#
- EM_CYGNUS_M32R = 36929#
- EM_CYGNUS_MEP = 61453#
- EM_CYGNUS_MN10200 = 57005#
- EM_CYGNUS_MN10300 = 48879#
- EM_CYGNUS_POWERPC = 36901#
- EM_CYGNUS_V850 = 36992#
- EM_CYPRESS_M8C = 161#
- EM_D10V = 85#
- EM_D30V = 86#
- EM_DLX = 23205#
- EM_DSP24 = 136#
- EM_DSPIC30F = 118#
- EM_DXP = 112#
- EM_ECOG1 = 168#
- EM_ECOG16 = 176#
- EM_ECOG1X = 168#
- EM_ECOG2 = 134#
- EM_ETPU = 178#
- EM_EXCESS = 111#
- EM_F2MC16 = 104#
- EM_FIREPATH = 78#
- EM_FR20 = 37#
- EM_FR30 = 84#
- EM_FX66 = 66#
- EM_H8S = 48#
- EM_H8_300 = 46#
- EM_H8_300H = 47#
- EM_H8_500 = 49#
- EM_HUANY = 81#
- EM_I8051 = 165#
- EM_IA_64 = 50#
- EM_IP2K = 101#
- EM_IP2K_OLD = 33303#
- EM_IQ2000 = 65210#
- EM_JAVELIN = 77#
- EM_L1OM = 180#
- EM_LATTICEMICO32 = 138#
- EM_M16C = 117#
- EM_M32 = 1#
- EM_M32C = 120#
- EM_M32C_OLD = 65200#
- EM_M32R = 88#
- EM_MANIK = 171#
- EM_MAX = 102#
- EM_MAXQ30 = 169#
- EM_MCST_ELBRUS = 175#
- EM_ME16 = 59#
- EM_METAG = 174#
- EM_MICROBLAZE = 189#
- EM_MICROBLAZE_OLD = 47787#
- EM_MIPS = 8#
- EM_MIPS_RS3_LE = 10#
RESERVED 11-14 Reserved for future use
- EM_MIPS_X = 51#
- EM_MMA = 54#
- EM_MMDSP_PLUS = 160#
- EM_MMIX = 80#
- EM_MN10200 = 90#
- EM_MN10300 = 89#
- EM_MOXIE = 65261#
- EM_MSP430 = 105#
- EM_MSP430_OLD = 4185#
- EM_MT = 9520#
- EM_NCPU = 56#
- EM_NDR1 = 57#
- EM_NDS32 = 167#
- EM_NEC_V850 = 29246#
- EM_NIOS32 = 65211#
- EM_NONE = 0#
- EM_NS32K = 97#
- EM_OPENRISC = 92#
- EM_OPENRISC_OLD = 13350#
- EM_OR32 = 33906#
- EM_PARISC = 15#
- EM_PCP = 55#
- EM_PDP10 = 64#
- EM_PDP11 = 65#
- EM_PDSP = 63#
- EM_PJ = 91#
- EM_PPC = 20#
- EM_PPC64 = 21#
- EM_PRISM = 82#
- EM_QDSP6 = 164#
- EM_R32C = 162#
- EM_RCE = 39#
- EM_RH32 = 38#
- EM_RS08 = 132#
- EM_RX = 173#
- EM_S370 = 9#
- EM_S390 = 22#
- EM_S390_OLD = 41872#
- EM_SCORE = 135#
- EM_SCORE7 = 135#
- EM_SEP = 108#
- EM_SE_C17 = 139#
- EM_SE_C33 = 107#
- EM_SH = 42#
- EM_SLE9X = 179#
- EM_SNP1K = 99#
- EM_SPARC = 2#
- EM_SPARC32PLUS = 18#
- EM_SPARCV9 = 43#
- EM_SPU = 23#
RESERVED 24-35 Reserved for future use
- EM_ST100 = 60#
- EM_ST19 = 74#
- EM_ST200 = 100#
- EM_ST7 = 68#
- EM_ST9PLUS = 67#
- EM_STARCORE = 58#
- EM_STM8 = 186#
- EM_STXP7X = 166#
- EM_SVX = 73#
- EM_TILE64 = 187#
- EM_TILEGX = 191#
- EM_TILEPRO = 188#
- EM_TINYJ = 61#
- EM_TI_ARP32 = 143#
- EM_TI_C2000 = 141#
- EM_TI_C5500 = 142#
- EM_TI_C6000 = 140#
- EM_TI_PRU = 144#
- EM_TMM_GPP = 96#
- EM_TPC = 98#
- EM_TRICORE = 44#
- EM_TRIMEDIA = 163#
- EM_TSK3000 = 131#
- EM_UNICORE = 110#
- EM_V800 = 36#
- EM_V850 = 87#
- EM_VAX = 75#
- EM_VIDEOCORE = 95#
- EM_VIDEOCORE3 = 137#
- EM_VPP500 = 17#
- EM_X86_64 = 62#
- EM_XC16X = 18056#
- EM_XGATE = 115#
- EM_XIMO16 = 170#
- EM_XSTORMY16 = 44357#
- EM_XTENSA = 94#
- EM_XTENSA_OLD = 43975#
- EM_ZSP = 79#
- RESERVED = 16#
- class objutils.elf.defs.ELFType(*values)[source]#
Bases:
IntEnum- ET_CORE = 4#
Core file
- ET_DYN = 3#
Shared object file
- ET_EXEC = 2#
Executable file
- ET_HIOS = 65279#
Operating system-specific
- ET_HIPROC = 65535#
Processor-specific
- ET_LOOS = 65024#
Operating system-specific
- ET_LOPROC = 65280#
Processor-specific
- ET_NONE = 0#
No file type
- ET_NUM = 5#
Number of defined types
- ET_REL = 1#
Relocatable file
- class objutils.elf.defs.Elf32_Ehdr(e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags, e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum, e_shstrndx)#
Bases:
tuple- _asdict()#
Return a new dict which maps field names to their values.
- _field_defaults = {}#
- _fields = ('e_type', 'e_machine', 'e_version', 'e_entry', 'e_phoff', 'e_shoff', 'e_flags', 'e_ehsize', 'e_phentsize', 'e_phnum', 'e_shentsize', 'e_shnum', 'e_shstrndx')#
- classmethod _make(iterable)#
Make a new Elf32_Ehdr object from a sequence or iterable
- _replace(**kwds)#
Return a new Elf32_Ehdr object replacing specified fields with new values
- e_ehsize#
Alias for field number 7
- e_entry#
Alias for field number 3
- e_flags#
Alias for field number 6
- e_machine#
Alias for field number 1
- e_phentsize#
Alias for field number 8
- e_phnum#
Alias for field number 9
- e_phoff#
Alias for field number 4
- e_shentsize#
Alias for field number 10
- e_shnum#
Alias for field number 11
- e_shoff#
Alias for field number 5
- e_shstrndx#
Alias for field number 12
- e_type#
Alias for field number 0
- e_version#
Alias for field number 2
- objutils.elf.defs.Elf32_Sym#
alias of
Elf_Sym
- objutils.elf.defs.Elf64_Sym#
alias of
Elf_Sym
- class objutils.elf.defs.Elf_Shdr(sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link, sh_info, sh_addralign, sh_entsize)#
Bases:
tuple- _asdict()#
Return a new dict which maps field names to their values.
- _field_defaults = {}#
- _fields = ('sh_name', 'sh_type', 'sh_flags', 'sh_addr', 'sh_offset', 'sh_size', 'sh_link', 'sh_info', 'sh_addralign', 'sh_entsize')#
- classmethod _make(iterable)#
Make a new Elf_Shdr object from a sequence or iterable
- _replace(**kwds)#
Return a new Elf_Shdr object replacing specified fields with new values
- sh_addr#
Alias for field number 3
- sh_addralign#
Alias for field number 8
- sh_entsize#
Alias for field number 9
- sh_flags#
Alias for field number 2
- sh_info#
Alias for field number 7
- sh_link#
Alias for field number 6
- sh_name#
Alias for field number 0
- sh_offset#
Alias for field number 4
- sh_size#
Alias for field number 5
- sh_type#
Alias for field number 1
- class objutils.elf.defs.MachineData(machine_code: int, flags: int)[source]#
Bases:
object- machine_name: str = '<unknown>'#
- type_name: str = '???'#
- type_value: int = -1#
- class objutils.elf.defs.NoteSegmentDescriptorCore(*values)[source]#
Bases:
IntEnumLegal values for note segment descriptor types for core files.
- NT_386_IOPERM = 513#
- NT_386_TLS = 512#
- NT_ASRS = 8#
- NT_AUXV = 6#
- NT_FPREGSET = 2#
- NT_GWINDOWS = 7#
- NT_LWPSINFO = 17#
- NT_LWPSTATUS = 16#
- NT_PLATFORM = 5#
- NT_PPC_SPE = 257#
- NT_PPC_VMX = 256#
- NT_PPC_VSX = 258#
- NT_PRCRED = 14#
- NT_PRFPXREG = 20#
- NT_PRPSINFO = 3#
- NT_PRSTATUS = 1#
- NT_PRXFPREG = 1189489535#
- NT_PRXREG = 4#
- NT_PSINFO = 13#
- NT_PSTATUS = 10#
- NT_TASKSTRUCT = 4#
- NT_UTSNAME = 15#
- NT_X86_XSTATE = 514#
- class objutils.elf.defs.NoteSegmentDescriptorObject(*values)[source]#
Bases:
IntEnumLegal values for the note segment descriptor types for object files.
- NT_VERSION = 1#
- class objutils.elf.defs.ProgramHeader(*values)[source]#
Bases:
IntEnum- PT_ARM_EXIDX = 1879048193#
- PT_DYNAMIC = 2#
- PT_GNU_EH_FRAME = 1685382480#
- PT_GNU_PROPERTY = 1685382483#
- PT_GNU_RELRO = 1685382482#
- PT_GNU_STACK = 1685382481#
- PT_HIOS = 1879048191#
- PT_HIPROC = 2147483647#
- PT_HISUNW = 1879048191#
- PT_INTERP = 3#
- PT_LOAD = 1#
- PT_LOOS = 1610612736#
- PT_LOPROC = 1879048192#
- PT_LOSUNW = 1879048186#
- PT_NOTE = 4#
- PT_NULL = 0#
- PT_NUM = 8#
- PT_PHDR = 6#
- PT_SHLIB = 5#
- PT_SUNWBSS = 1879048186#
- PT_SUNWSTACK = 1879048187#
- PT_TLS = 7#
- class objutils.elf.defs.SectionFlags(*values)[source]#
Bases:
IntEnum- SHF_ALLOC = 2#
- SHF_COMPRESSED = 2048#
- SHF_EXCLUDE = 2147483648#
- SHF_EXECINSTR = 4#
- SHF_GROUP = 512#
- SHF_INFO_LINK = 64#
- SHF_LINK_ORDER = 128#
- SHF_MASKOS = 267386880#
- SHF_MASKPROC = 4026531840#
- SHF_MERGE = 16#
- SHF_ORDERED = 1073741824#
- SHF_OS_NONCONFORMING = 256#
- SHF_STRINGS = 32#
- SHF_TLS = 1024#
- SHF_WRITE = 1#
- class objutils.elf.defs.SectionName(*values)[source]#
Bases:
IntEnum- SHN_ABS = 65521#
- SHN_AFTER = 65281#
- SHN_BEFORE = 65280#
- SHN_COMMON = 65522#
- SHN_HIOS = 65343#
- SHN_HIPROC = 65311#
- SHN_HIRESERVE = 65535#
- SHN_IA_64_ANSI_COMMON = 65280#
- SHN_LOOS = 65312#
- SHN_LOPROC = 65280#
- SHN_LORESERVE = 65280#
- SHN_UNDEF = 0#
- SHN_XINDEX = 65535#
- class objutils.elf.defs.SectionType(*values)[source]#
Bases:
IntEnum- SHT_ARM_ATTRIBUTES = 1879048195#
- SHT_ARM_DEBUGOVERLAY = 1879048196#
- SHT_ARM_EXIDX = 1879048193#
- SHT_ARM_OVERLAYSECTION = 1879048197#
- SHT_ARM_PREEMPTMAP = 1879048194#
- SHT_CHECKSUM = 1879048184#
- SHT_DYNAMIC = 6#
- SHT_DYNSYM = 11#
- SHT_FINI_ARRAY = 15#
- SHT_GNU_ATTRIBUTES = 1879048181#
- SHT_GNU_HASH = 1879048182#
- SHT_GNU_INCREMENTAL_INPUTS = 1879000832#
- SHT_GNU_LIBLIST = 1879048183#
- SHT_GNU_verdef = 1879048189#
- SHT_GNU_verneed = 1879048190#
- SHT_GNU_versym = 1879048191#
- SHT_GROUP = 17#
- SHT_HASH = 5#
- SHT_HIOS = 1879048191#
- SHT_HIPROC = 2147483647#
- SHT_HISUNW = 1879048191#
- SHT_HIUSER = 4294967295#
- SHT_INIT_ARRAY = 14#
- SHT_LOOS = 1610612736#
- SHT_LOPROC = 1879048192#
- SHT_LOSUNW = 1879048186#
- SHT_LOUSER = 2147483648#
- SHT_NOBITS = 8#
- SHT_NOTE = 7#
- SHT_NULL = 0#
- SHT_NUM = 19#
- SHT_PREINIT_ARRAY = 16#
- SHT_PROGBITS = 1#
- SHT_REL = 9#
- SHT_RELA = 4#
- SHT_SHLIB = 10#
- SHT_STRTAB = 3#
- SHT_SUNW_COMDAT = 1879048187#
- SHT_SUNW_move = 1879048186#
- SHT_SUNW_syminfo = 1879048188#
- SHT_SYMTAB = 2#
- SHT_SYMTAB_SHNDX = 18#
- class objutils.elf.defs.SymbolBinding(*values)[source]#
Bases:
IntEnum- STB_GLOBAL = 1#
- STB_GNU_UNIQUE = 10#
- STB_HIPROC = 15#
- STB_LOCAL = 0#
- STB_LOPROC = 13#
- STB_WEAK = 2#
- class objutils.elf.defs.SymbolType(*values)[source]#
Bases:
IntEnum- STT_COMMON = 5#
- STT_FILE = 4#
- STT_FUNC = 2#
- STT_GNU_IFUNC = 10#
- STT_HIPROC = 15#
- STT_LOPROC = 13#
- STT_NOTYPE = 0#
- STT_OBJECT = 1#
- STT_RELC = 8#
- STT_SECTION = 3#
- STT_SRELC = 9#
- STT_TLS = 6#
objutils.elf.elfcons module#
objutils.elf.relocs module#
objutils.elf.testblocks module#
Module contents#
Parser for ELF files.
- class objutils.elf.DebugInfo(section, image)#
Bases:
tuple- _asdict()#
Return a new dict which maps field names to their values.
- _field_defaults = {}#
- _fields = ('section', 'image')#
- classmethod _make(iterable)#
Make a new DebugInfo object from a sequence or iterable
- _replace(**kwds)#
Return a new DebugInfo object replacing specified fields with new values
- image#
Alias for field number 1
- section#
Alias for field number 0
- class objutils.elf.ElfParser(filename: str)[source]#
Bases:
object- BasicHeader = <Struct>#
- DATATYPES32 = {'Addr': (<FormatField>, <FormatField>), 'Half': (<FormatField>, <FormatField>), 'Off': (<FormatField>, <FormatField>), 'Sword': (<FormatField>, <FormatField>), 'Sxword': (None, None), 'Word': (<FormatField>, <FormatField>), 'Xword': (<FormatField>, <FormatField>)}#
- DATATYPES64 = {'Addr': (<FormatField>, <FormatField>), 'Half': (<FormatField>, <FormatField>), 'Off': (<FormatField>, <FormatField>), 'Sword': (<FormatField>, <FormatField>), 'Sxword': (<FormatField>, <FormatField>), 'Word': (<FormatField>, <FormatField>), 'Xword': (<FormatField>, <FormatField>)}#
- EI_NIDENT = 16#
- property arm_attributes#
- property comment#
- create_image(join: bool = True, include_pattern: str = '', exclude_pattern: str = '', callback: Callable | None = None)[source]#
- Parameters:
- join: bool
Try to join/merge sections.
- include_pattern: str
Include only sections matching a Python RegEx
- exclude_pattern: str
Exclude sections matching a Python RegEx
- callback: callable
Could be used to generate output for your command-line tools.
- Called with:
state: “start” | “stop” | “section”
section – current section (only applicable to state “section”).
- Returns:
- objutils.Image
- property e_ehsize#
- property e_entry#
- property e_flags#
- property e_machine#
- property e_phentsize#
- property e_phnum#
- property e_phoff#
- property e_shentsize#
- property e_shnum#
- property e_shoff#
- property e_shstrndx#
- property e_type#
- property e_version#
- property ei_abiversion#
- property ei_class#
- property ei_data#
- property ei_osabi#
- property ei_version#
- property endianess#
- property header_bytes#
- property machine_data: str#
- property notes#
- property query#
- property segments#
- class objutils.elf.SectionAPI(parent)[source]#
Bases:
DBAPI
- class objutils.elf.SymbolAPI(parent)[source]#
Bases:
DBAPI