pyelftools
Library for analyzing ELF files and DWARF debugging information
0.33
16M downloads/mo
#1165 most downloaded on PyPI
eliben/pyelftools
What this package is like to depend on
Last release 2 months ago
29 May 2026
Ships fairly regularly
a new release about every 13 months
This project publishes no release notes
the list below is its commits, not an announcement
Nothing withdrawn
no release was ever pulled
15 years old
14 releases · first in 2012
1 release in the last 12 months
see the full history below
Release timeline
14 releases · Jan 2012 to May 2026Releases
latest 14-
0.3329 May 2026Commits, not release notes
This project publishes no release notes. Between
v0.32andv0.33there were 71 commits, 70 of them substantive:- Update TODO distribution notes
- Fix running tests (#598)
- Remove remaining legacy Python 2 code (#599)
- Minor fixes while adding type annotaions (#600)
- Fixed found while adding type hints (#602)
- _make_gnu_versym_section: {str -> sym}tab (#603)
- NameLUT: Raise IndexError instead of returning None (#604)
- CI: Enable Python 3.13 testing (#608)
- Convert to pyproject.toml (#606)
- Upgrade code to modern Python 3.9+ (#605)
- Modernize python code (#607)
- Last typing issues (#610)
- Modernize python code for
constructand add types (#609) - Moving documentation from Wiki to doc/
- Fix doc link
- Update README.rst with doc links
- Update hacking-guide.rst
- Document running type checkers (#614)
- pyproject: Fix py.typed marker (#616)
- Allowing dynamic section to link to null strtab (#618)
…and 50 more.
-
0.3219 Feb 2025Commits, not release notes
This project publishes no release notes. Between
v0.31andv0.32there were 29 commits, 29 of them substantive:- Fix minor typos in README.rst (#546)
- DW_FORM_implicit_const is an integer const (#547)
- Fix for crash on CUs with no lineprograms (#549)
- Update action versions (#550)
- GNU readelf 2.42, released April 2024 (#551)
- Exceptions on malformed ELF header contents (#552)
- 24 bit integer support, forms strx3, addrx3 (#553)
- cfi: fix not parsing DW_CFA_def_cfa_offset_sf (#555)
- Parser performanc test (#556)
- Performance enhancements (#557)
- Missed some CPU specific section types (#559)
- Add missing riscv attributes (#560)
- CIEv4 and FDE ahead of its CIE (#563)
- Addding relocation type for PPC 32 EABI (#532)
- Support for .gnu_debuglink DWARF5 Section (#525)
- Clean up whitespace
- Added XHASH to ENUM_D_TAG_MIPS (#571)
- Section type check on dynamic to strtab link (#573)
- Check for SHN_UNDEF during symbol dumping (#574)
- PAGESIZE replaced with a constant (#578)
…and 9 more.
-
0.3114 Mar 2024Commits, not release notes
This project publishes no release notes. Between
v0.30andv0.31there were 23 commits, 23 of them substantive:- More Apple, LLVM attributes (#497)
- Dwarfdump test on Windows (#499)
- Support for DW_OP_WASM_location (#500)
- False positive on LocationParser.attribute_has_location() (#501)
- Remove redundant wheel dep from pyproject.toml (#496)
- Update CHANGES to mention Python 2 (lack of) support
- DW_OP_GNU_uninit (#511)
- Dynamic array size can be a loclist/locexpr (#512)
- Support getting RELR relocations from dynamic section (#509)
- Fix ranges autotest take 2 (#505)
- Add py.typed to elftools (#507)
- Initial s390x relocation support (#515)
- Update supported python versions for GitHub actions CI
- update README
- Fix for mixed version loclists, tests (#521)
- Support for the GNU note with the AARCH64 CPU features (#527)
- Support for XC16/PIC phantom bytes (#522)
- Fix iter_notes to handle >4 byte segment alignment (#537)
- Fix buffer overrun in NT_GNU_PROPERTY_TYPE_0 parser (#538)
- [RELOCATIONS] add enum for v850 relocations (#541)
…and 3 more.
-
0.3006 Sep 2023Commits, not release notes
This project publishes no release notes. Between
v0.29andv0.30there were 36 commits, 34 of them substantive:- Officially remove Python 2 support from this point forward
- Python version 3.10 needs quotes in the yaml file
- Remove mention of supporting Python 2 from the README
- Remove iter* utilities from py3compat and refactor uses
- Move utilities from py3compat to utils
- Remove path and maxint from py3compat
- Remove BytesIO and StringIO from py3compat
- Remove int2byte and byte2int utilities from py3compat
- Finish refactoring out py3compat and delete the file
- Support for DW_FORM_data16, unit test (#437)
- Remove z.py
- Cache instantiation of DWARF structs. (#435)
- Minor stylistic fixes following up the previous commit
- Fix for CU version check in LocationListsPair (#439)
- Added Dwarfv5 CU headers (#442)
- Add pyproject.toml (#443)
- add support for aarch64 to dwarfdump (#445)
- Some GNU extension attributes (#447)
- add support for arm to dwarfdump (#449)
- add support for loongarch64 to dwarfdump (#458)
…and 14 more.
-
0.2910 Aug 2022Commits, not release notes
This project publishes no release notes. Between
v0.28andv0.29there were 29 commits, 29 of them substantive:- Add support for DT_RELR/SHT_RELR compressed relocation sections (#395)
- Improve DWARF 5 compatibility. (#400)
- Storing the offset of DWARF operations within the expression block (#404)
- Support for sibling in form DW_FORM_ref_addr (#408)
- Minor cosmetic changes
- Reformat some docstrings
- Version 5 lineprogram header (#411)
- Whitespace cleanups
- Change supported Python versions in github actions (#416)
- DWARF 5 operations and DWARF5 location lists (#418)
- Say which test file failed in readelf tests
- Add previously untested output file to test set
- Clarify instructions in test/external_tools
- Support for DWARFv5 debug_rnglists section (#419)
- Readelf upgraded to 2.38, format fixes (#420)
- Clean up whitespace
- Autotest against llvm-dwarfdump (#428)
- Mixing v4 and v5 loclists and rangelists sections (#429)
- Indirect encoding support (#430)
- docs: Fix a few typos (#431)
…and 9 more.
-
0.2803 Feb 2022Commits, not release notes
This project publishes no release notes. Between
v0.27andv0.28there were 27 commits, 27 of them substantive:- Update TODO to mention git tag
- Update .gitignore to ignore .egg-info dirs
- added a method for returning the index of a section by name (#331)
- ELFFile: allow filtering of sections by type in iter_sections (#345)
- dynamic.py: move logic around to allow symbol access more easily (#346)
- fix wrong prpsinfo in 32bit coredump (#347)
- Fix/extend aarch64 register names table (#351)
- Support Android compressed rel/rela sections (#357)
- initial support for PPC64LE (#360)
- dwarf/constants: add DW_LNCT_* constants (#362)
- dwarf: initial DWARFv5 support (#363)
- fixed parsing for structures containing uids or gids in core dumps for most architectures (#354)
- [example] bug fixes in dwarf_decode_address example (#361)
- Keep raw note descriptors in ELF note sections as raw bytes (#372)
- Use assertEqual instead of assertEquals for Python 3.11 compatibility. (#374)
- ELFFile: allow filtering by segment type in iter_segments() (#375)
- add latest 'e_machine' mappings: EM_BPF, EM_CSKY, EM_FRV (#376)
- DW_AT_virtual (#380)
- DW_AT_private=0x24 (#382)
- Add support for .note.gnu.property notes section (#386)
…and 7 more.
-
0.2727 Oct 2020Commits, not release notes
This project publishes no release notes. Between
v0.26andv0.27there were 77 commits, 75 of them substantive:- Tweak release instructions in TODO
- Fix simple typo: wether -> whether (#259)
- Travis: drop Python 3.4, add 3.8
- segments.py: fix TLS checks in section_in_segment() (#275)
- Make sure ELFFile.has_dwarf_info() returns a boolean. (#266)
- Trim whitespace
- DWARF 5 tags and attributes (#271)
- Reformat whitespace in dwarf enums
- Move test file name to be included in distribution
- construct_utils.py: add missing import (#291)
- examples: Add dwarf_lineprogram_filenames.py (#285)
- Fix typo in comment
- ref_addr size changed between v2 and v3 - take 2 (#273)
- Reflow comments and clean up whitespace
- Add resilience for degenerate cases present in files with only debug information (#287)
- Reformat comments and a bit of test logic
- DW_AT_const_value is not a location, take 2 (#277)
- readelf.py: adapt section mapping output for .tbss sections (#289)
- Fix up README
- readelf: print addend for RELA relocations without symbol (#292)
…and 55 more.
-
0.2605 Dec 2019Commits, not release notes
This project publishes no release notes. Between
v0.25andv0.26there were 42 commits, 42 of them substantive:- Call relocation for ARM V3 (#194)
- Redo the new arm reloc test as a proper unit test, aligned with other tests
- Rename input files for arm relocation test to be more consistent
- Simplify arm reloc test file
- Move arm reloc test to proper location and simplify its code a bit
- Fix division in calculation function for 'R_ARM_CALL' (#196)
- Provide enums for DT_FLAGS and DT_FLAGS_1 (#200)
- ARMAttribute: fix access to structs, stream and nul (#203)
- Remove unnecessary 'preserve_stream_pos' (#204)
- Implemented ELFFile.get_machine_arch for the remaining architectures. (#206)
- Bugfix: Reset prevstate if line program sequence ends (#211)
- Simplify handling of null DIEs (#209)
- Added support for decoding .debug_pubtypes and .debug_pubnames sections (#208)
- More efficient AbbrevDecl handling (#212)
- Support for DWARFv4 location lists in dwarf_location_lists.py (#214)
- Fixup error on empty .debug_pubtypes section (#215)
- Small stylistic fixes
- Remove py34 testing target
- Also decode strings in _DynamicStringTable.get_string() (#217)
- Fix LookupError when testing with tox (#221)
…and 22 more.
-
0.2501 Sep 2018Commits, not release notes
This project publishes no release notes. Between
v0.24andv0.25there were 69 commits, 61 of them substantive:- Check for header attribute when comparing
- Add py35 to tox.ini
- Issue #119: readelf - don't do hex/string dumps for SHT_NOBITS sections
- Remove the PT_ARM_UNWIND enum
- Cosmetic changes
- Update CHANGES + cosmetic cleanup
- Fix relocation_bytesize typo
- Fix for padding encoding in Python 3.
- Fix more potential Python 3 issues in construct
- Update enums.py
- Remove duplicated word
- Fix parsing string table (#134)
- Add .stab section parser (#137)
- Reformat new test and add comment header
- Remove conditional unittest2 imports from tests
- Remove setup_syspath entirely
- Fix running tests on Travis
- Make elffile and elfstructs on Dynamic public (#141)
- NULL termination with IAR Embedded Workbench compiler (#146)
- Clean up a bit after previous PR
…and 41 more.
-
0.2405 Aug 2016Nothing published for this version
-
0.2308 Nov 2014Nothing published for this version
-
0.2230 Mar 2014Nothing published for this version
-
0.2117 Apr 2013Nothing published for this version
-
0.2030 Jan 2012Nothing published for this version