v0.6.0
[0.6.0] - 2022-11-01
New Features
Add fuzz targets for parts of our ELF parsing interface via cargo-fuzz
Add SysVHashTable which interprets the contents of a SHT_HASH section
Add StringTable::get_raw() to get an uninterpreted &[u8]
Add ParsingTable.len() method to get the number of elements in the table
Add some note n_type constants for GNU extension notes.
Add default "to_str" feature to get &str for gabi constant names
Changed Interfaces
Change File::segments() to return a ParsingTable instead of just a ParsingIterator
Change File's SectionHeader interfaces to provide a ParsingTable instead of just a ParsingIterator
Remove deprecated File::section_data_for_header() in favor of File::section_data()
Remove FileHeader wrapper types OSABI, Architecture, and ObjectFileType
Remove ProgramHeader wrapper types ProgType and ProgFlag
Remove Symbol wrapper types SymbolType SymbolBind SymbolVis
Remove wrapper type SectionType
Remove unhelpful SectionFlag wrapper type
Remove Display impl for FileHeader, SectionHeader, ProgramHeader, Symbol
Remove ParseError::UnsupportedElfVersion in favor of more general ParseError::UnsupportedVersion
Bug Fixes
Fix divide by zero panic when parsing a note with alignment of 0 (Error instead of panic)
Use checked integer math all over the parsing code (Error instead of panic or overflow)
Fix note parsing for 8-byte aligned .note.gnu.property sections (Successfully parse instead of Erroring)
Add size validation when parsing tables with entsizes (Error instead of panic)