Changelog ========= + Version 0.30 (2023.09.06) - Python 2 support officially dropped (#415) - Optimization: cache instantiation of DWARF structs (#435) - DWARFv5 CU headers (#442) - Bug fix in attribute reporting for DWA_FORM_indirect (#475) - Support for RISC-V attributes (#459) - Readelf used for testing upgraded to 2.41 (#489) - Support for MIPS64 object files (#495) - LoongArch support (#470, #483) + Version 0.29 (2022.08.09) - Lots of improvements to DWARFv5 support (#400, #411, #418, #419, #429 and additional PRs) - Support for compressed relocation sections (#395) - Support for supplementary object files - debug fission (#426) - Improved support for corrupted ELF headers (#434) - Readelf used for testing upgraded to 2.38 (#420) - Add auto-testing vs. llvm-dwarfdump (#428) + Version 0.28 (2022.02.03) - Added a method for returning the index of a section by name (#331) - Allow filtering by section types in iter_sections (#345) - Support Android compressed rel/rela sections (#357) - Initial support for PPC64LE (#360) - Initial DWARF v5 support (#363 with several follow-ups) - Fixed parsing for structures containing uids or gids in core dumps (#354) - Allow filtering by segment types in iter_segments (#375) - Add support for .note.gnu.property (#386) - Update readelf tests to work with more recent version of readelf (#387) - Add support for note GNU_PROPERTY_X86_FEATURE_1_AND (#388) + Version 0.27 (2020.10.27) - Print addend wfor RELA relocations without symbol (#292) - Implement symbol lookup for {GNU,}HashSection (#290) - Major rewrite of expression parsing - Cashed random access to CUs and DIEs (#264) - GNU expressions (#303) - Support parsing LSDA pointers from FDEs (#308) - Add support for DWA_OP_GNU_push_tls_address in expressions (#315) - Some initial support for AArch64 little-endian (#318) - Support for ELF files with a large number of sections (#333) - Some minimal support for DWARFv1 (#335) - Many small bug fixes; see git log. + Version 0.26 (2019.12.05) - Call relocation for ARM v3 (#194) - More complete architecture coverage for ENUM_E_MACHINE (#206) - Support for .debug_pubtypes and .debug_pubnames sections (#208) - Support for DWARF v4 location lists (#214) - Decode strings in dynamic string tables (#217) - Improve symbol table handling in dynamic segments (#219) - Improved handling of location information (#225) - Avoid deprecation warnings in Python 3.7+ - Add DWARF v5 OPs (#240) - Handle many new translation forms and constants - Lazy DIE parsing to speed up partial parsing of DWARF info (#249) + Version 0.25 (2018.09.01) - Make parsing of SH_TYPE and PT_TYPE fields dependent on the machine (e_machine header field), making it possible to support conflicting type enums between different machines (#71 and #121). - Add parsing and readelf dumping for .eh_frame (#155) - Support compressed sections (#152) - Better support for parsing core dumps (#147) - More comprehensive handling of ARM relocations (#121) - Convert all ascii encoding to utf-8 encoding (#182) - Don't attempt to hex/string dump SHT_NOBITS sections in readelf (#119). - Test with Python 3.6 - Minor bugfixes (#118) - Cleanup: Use argparse instead of optparse - Make readelf comparison tests run in parallel using multiprocessing; cuts testing time 3-5x - Improvements in MIPS flags handling (#165) + Version 0.24 (2016.08.04) - Retrieve symbols by name - get_symbol_by_name (#58). - Symbol/section names are strings internally now, not bytestrings (this may affect API usage in Python 3) (#76). - Added DT_MIPS_* constants to ENUM_D_TAG (#79) - Made dwarf_decode_address example a bit more useful for command-line invocation. - More DWARF v4 support w.r.t decoding function ranges; DW_AT_high_pc value is now either absolute or relative to DW_AT_low_pc, depending on the class of the form encoded in the file. Also #89. - Support for SHT_NOTE sections (#109) - Support for .debug_aranges section (#108) - Support for zlib-compressed debug sections (#102) - Support for DWARF v4 line programs (#82) + Version 0.23 (2014.11.08) - Minimal Python 2.x version raised to 2.7 - Basic support for MIPS (contributed by Karl Vogel). - Support for PT_NOTE segment parsing (contributed by Alex Deymo). - Support for parsing symbol table in dynamic segment (contributed by Nam T. Nguyen). + Version 0.22 (2014.03.30) - pyelftools repository moved to https://github.com/eliben/pyelftools - Support for version sections - contributed by Yann Rouillard. - Better ARM support (including AArch64) - contributed by Dobromir Stefanov. - Added some initial support for parsing Solaris OpenCSW ELF files (contributed by Yann Rouillard). - Added some initial support for DWARF4 (as generated by gcc 4.8) and DWARF generated by recent versions of Clang (3.3). - Added the get_full_path utility method to DIEs that have an associated file name / path (based on pull request #16 by Shaheed Haque). - Set up Travis CI integration. + Version 0.21 (2013.04.17) - Added new example: dwarf_decode_address - decode function name and file & line information from an address. - Issue #7: parsing incorrect DWARF was made a bit more forgiving for cases where serialized DIE trees have extra NULLs at the end. - Very initial support for ARM ELF files (Matthew Fernandez - pull request #6). - Support for dumping the dynamic section (Mike Frysinger - pull request #7). - Output of scripts/readelf.py now matches that of binutils 2.23.52. - Added more machine EM_ values to ENUM_E_TYPE. + Version 0.20 (2012.01.27) - Python 3 support - Fixed some problems with running tests - Issue #2: made all examples run (and test/run_examples_test.py pass) on Windows. + Version 0.10 - Initial public release (2012.01.06)