object
Change LogReleased 2024/06/29.
Added SectionKind::DebugString
. #694
Added Architecture::Sparc
and Architecture::Sparc32Plus
. #699 #700
Added more RISC-V ELF relocation constants. #701
Changed read::ElfFile::imports
to return the library for versioned symbols. #693
Changed read::MachOFile
to support Go's debug section compression. #697
Reversed the order of Mach-O relocations emitted by write::Object
. #702
Released 2024/05/26.
Deleted data
and align
parameters for write::Object::add_subsection
. Use add_symbol_data
or add_symbol_bss
instead. #676
Changed methods in the lower level read API to accept or return SectionIndex
or SymbolIndex
instead of usize
. #677 #684 #685
Deleted SymbolKind::Null
. Changed read::Object::sections
and read::Object::symbols
to no longer return null entries. This affects ELF and XCOFF. #679
Changed read::ObjectMap::object
to return ObjectMapFile
. This handles splitting the object file name into path and member. #686
Changed read::coff::ImageSymbol::address
to only return an address for symbols that have an address. #689
Added pod::slice_from_all_bytes
and pod::slice_from_all_bytes_mut
. #672
Added write::Object::set_subsections_via_symbols
. Changed write::Object::add_symbol_data
and write::Object::add_symbol_bss
to correctly handle zero size symbols when subsections are enabled. #676
Added methods in the unified read API to return the lower level API structures. Some existing methods were deprecated so that naming of these methods is more consistent. #678
Added methods in the lower level read API to return a SectionIndex
or SymbolIndex
. #684 #689
Implemented Display
for read::SymbolIndex
and read::SectionIndex
. #684
Added is_common
, is_absolute
, is_local
, and is_weak
to read::elf::Sym
. #685
Changed read::ArchiveFile
to skip the <ECSYMBOLS>
member. #669
Fixed handling of segment data in the dyld shared cache. #673
Changed read::RelocationMap
to handle Mach-O section relocations. #675
Changed read::elf::RelocationSections
to ignore relocations that apply to relocations. #680
Removed a lifetime bound from an argument in read::elf::SectionTable::section_name
, read::elf::SymbolTable::symbol_name
, and read::elf::SymbolTable::symbol_section
. #681
Released 2024/04/10.
'file
lifetime parameter from read::Object
to its associated types. #655Added support more section kinds in build::elf
. #650
Added thin archive support to read::ArchiveFile
. #651
Added read::ReadCacheOps
and changed read::ReadCache
bound from Read + Seek
to ReadCacheOps
. #652
Added read::ObjectSection::relocation_map
#654
Added read::ArchiveFile::symbols
. #658
Added BinaryFormat::native_object
. #661
The minimum supported rust version for the read
feature and its dependencies has changed to 1.65.0. #655
Fixed sh_offset
handling for SHT_NOBITS
sections in build::elf
. #645
Fixed handling of ELF files with dynamic symbols but no dynamic strings. #646
Fixed potential panics in read::WasmFile
due to invalid function indices. #649
Fixed handling of Wasm components in read::WasmFile
. #649
Fixed sh_entsize
for 32-bit hash sections in write::elf
. #650
Fixed sh_size
for attribute sections in build::elf
. #650
Fixed sh_info
for SHT_DYNSYM
sections in build::elf
. #650
Fixed handling of dynamic relocations with invalid sh_link
in build::elf
. #650
Fixed parsing of member names containing ‘/’ in read::ArchiveFile
. #657
Fixed handling of load segment alignments in build::elf::Builder::read
. #659
Released 2024/03/11.
macho::DyldSubCacheInfo
with macho::DyldSubCacheEntryV1
. Changed the return type of macho::DyldCacheHeader::subcaches
. #642macho::DyldSubCacheEntryV2
and changed read::macho::DyldCache
to handle both versions. This is needed for macOS 13 and above. #642Released 2024/03/05.
Deleted file format variants in RelocationKind
. Replaced their usage with read::Relocation::flags
and write::Relocation::flags
. #585
Replaced kind
, encoding
and size
fields in write::Relocation
with RelocationFlags::Generic
in the flags
field. #585
Replaced macho::FatHeader::parse
, macho::FatHeader::parse_arch32
, and macho::FatHeader::parse_arch64
with read::macho::MachOFatFile
, read::macho::MachOFatFile32
and read::macho::MachOFatFile64
. #623
Added macho::PLATFORM_XROS
and macho::PLATFORM_XROSSIMULATOR
. #626
Added build::elf::Builder
and associated types. Extended write::elf::Writer
to support this. #618
Changed the lifetime to 'data
for the return value of ObjectSection::name
, ObjectSection::name_bytes
, ObjectComdat::name
, ObjectComdat::name_bytes
. #620 #622
Checked that sizes are smaller than the file length in read::ReadCache
. #630
Used Vec::try_reserve_exact
for large allocations. #632
Released 2023/12/24.
Added ELF support for SHARC. #593
Added write::coff::Writer
. #595
Added SubArchitecture::Arm64EC
support for PE/COFF. #607
Added SubArchitecture::Arm64E
support for Mach-O. #614
Added read::Object::symbol_by_name
and read::Object::symbol_by_name_bytes
. #602
Added more functions to the low level API in read::xcoff
. #608
Added more functions to the low level API in read::macho
. #584
Fixes for AArch64 relocation addends for Mach-O. #581
Changes to write::Object
output for Mach-O, including the addition of a LC_DYSYMTAB
load command. #584
Changed write::Object
to always use R_X86_64_PLT32
for x86-64 branches for ELF. #590
Fixed read::ObjectSymbol::kind
for undefined section symbols for COFF. #592
Fixed write::Object
to accept undefined section symbols for COFF. #594
Improved parsing of auxiliary section symbols for COFF. #603
Improved the selection of symbols for read::Object::symbol_map
. This includes changes to read::Symbol::is_definition
. #601 #606
Changed read::ObjectSymbol::kind
for ELF STT_NOTYPE
symbols to SymbolKind::Unknown
. #604
Changed read::ObjectSymbol::scope
for XCOFF C_HIDEXT
symbols to SymbolScope::Compilation
. #605
Released 2023/09/03.
write::Object::set_macho_cpu_subtype
. #574Released 2023/08/12.
Changed read::elf::Note::name
to exclude all trailing null bytes. #549
Updated dependencies, and changed some optional dependencies to use the dep:
feature syntax. #558 #569
The minimum supported rust version for the read
feature and its dependencies has changed to 1.60.0.
The minimum supported rust version for other features has changed to 1.65.0.
Changed many definitions from static
to const
. #549
Fixed Mach-O section alignment padding in write::Object
. #553
Changed read::File
to an enum. #564
Added elf::ELF_NOTE_GO
, elf::NT_GO_BUILD_ID
, and read::elf::Note::name_bytes
. #549
Added read::FileKind::CoffImport
and read::coff::ImportFile
. #555 #556
Added Architecture::Csky
and basic ELF support for C-SKY. #561
Added read::elf::ElfSymbol::raw_symbol
. #562
Released 2023/06/05.
write::Object
. #553Released 2023/05/09.
Fixed address for global symbols in read::wasm
. #539
Fixed writing of alignment for empty ELF sections. #540
Added more elf::GNU_PROPERTY_*
definitions. Added read::elf::note::gnu_properties
, write::StandardSection::GnuProperty
, and write::Object::add_elf_gnu_property_u32
. #537 #541
Added Mach-O support for Architecture::Aarch64_Ilp32
. #542 #545
Added Architecture::Wasm64
. #543
Released 2023/04/14.
Added a type parameter on existing COFF types to support reading COFF /bigobj
files. #502
Changed PE symbols to support COFF /bigobj
. Changed pe::IMAGE_SYM_*
to i32
. Changed pe::ImageSymbolEx::section_number
to I32Bytes
. Deleted a number of methods from pe::ImageSymbol
. Use the read::pe::ImageSymbol
trait instead. #502
Changed pe::Guid
to a single array, and added methods to read the individual fields. #502
Added Symbol
type parameter to SymbolFlags
to support SymbolFlags::Xcoff
. #527
Fix alignment when reserving zero length sections in write::elf::Write::reserve
. #514
Validate command size in read::macho::LoadCommandIterator
. #516
Handle invalid alignment in read::macho::MachoSection::align
. #516
Accept SymbolKind::Unknown
in write::Object::macho_write
. #519
Updated wasmparser
dependency. #528
Added more elf::EF_RISCV_*
definitions. #507
Added read::elf::SectionHeader::gnu_attributes
and associated types. Added .gnu.attributes
support to write::elf::Writer
. #509 #525
Added write::Object::set_macho_build_version
. #524
Added read::FileKind::Xcoff32
, read::FileKind::Xcoff64
, read::XcoffFile
, and associated types. Added XCOFF support to write::Object
. #469 #476 #477 #482 #484 #486 #527
Added read::FileKind::CoffBig
, read::pe::CoffHeader
and read::pe::ImageSymbol
. #502
Added elf::PT_GNU_PROPERTY
. #530
Added elf::ELFCOMPRESS_ZSTD
, read::CompressionFormat::Zstandard
, and Zstandard decompression in read::CompressedData::decompress
using the ruzstd
crate. #532
Added read::elf::NoteIterator::new
. #533
Released 2023/01/23.
SectionKind::ReadOnlyDataWithRel
for writing. #504Released 2023/01/11.
Released 2023/01/04.
read::ElfSymbol::kind
to handle STT_NOTYPE
and STT_GNU_IFUNC
. #498Added read::CoffSymbol::raw_symbol
. #494
Added ELF support for Solana Binary Format. #491
Added ELF support for AArch64 ILP32. #497
Released 2022/11/22.
The minimum supported rust version for the read
feature has changed to 1.52.0. #458
The minimum supported rust version for the write
feature has changed to 1.61.0.
Fixed endian handling in read::elf::SymbolTable::shndx
. #458
Fixed endian handling in read::pe::ResourceName
. #458
Changed definitions for LoongArch ELF header flags. #483
Fixed parsing of multiple debug directory entries in read::pe::PeFile::pdb_info
. #451
Changed the section name used when writing COFF stub symbols. #475
Added read::pe::DataDirectories::delay_load_import_table
. #448
Added read::macho::LoadCommandData::raw_data
. #449
Added ELF relocations for LoongArch ps ABI v2. #450
Added PowerPC support for Mach-O. #460
Added support for reading the AIX big archive format. #462 #467 #473
Added support for RelocationEncoding::AArch64Call
when writing Mach-O files. #465
Added support for RelocationKind::Relative
when writing RISC-V ELF files. #470
Added Xtensa architecture support for ELF. #481
Added read::pe::ResourceName::raw_data
. #487
Released 2022/06/22.
The write
feature now has a minimum supported rust version of 1.56.1. #444
Added os_abi
and abi_version
fields to FileFlags::Elf
. #438 #441
read::elf::ElfFile::symbol_table
and read::elf::ElfFile::dynamic_symbol_table
. #443ELF_OSABI_*
constants. #439Released 2022/05/09.
Added read::pe::DataDirectories::resource_directory
. #425 #427
Added PE support for more ARM relocations. #428
Added elf::EF_MIPS_ABI
and associated constants. #433
Released 2022/01/19.
write::Object
, accept RelocationKind::MachO
for all architectures, and accept RelocationKind::Absolute
for ARM64. #422Added pe::ImageDataDirectory::file_range
, read::pe::SectionTable::pe_file_range_at
and pe::ImageSectionHeader::pe_file_range_at
. #421
Added write::Object::add_coff_exports
. #423
Released 2022/01/09.
Ignored errors for the Wasm extended name section in read::WasmFile::parse
. #408
Ignored errors for the COFF symbol table in read::PeFile::parse
. #410
Fixed handling of SectionFlags::Coff
in write::Object::coff_write
. #412
Released 2021/12/12.
Released 2021/12/12.
write_core
feature no longer enables std
support. Use write_std
instead. #400
Multiple changes related to Mach-O split dyld cache support. #398
Added write::pe::Writer::write_file_align
. #397
Added support for Mach-O split dyld cache. #398
Added support for IMAGE_SCN_LNK_NRELOC_OVFL
when reading and writing COFF. #399
Added write::elf::Writer::reserve_null_symbol_index
. #402
Released 2021/10/22.
Released 2021/10/17.
Changed read::elf
to use SectionIndex
instead of usize
in more places. #341
Changed some read::elf
section methods to additionally return the linked section index. #341
Changed read::pe::ImageNtHeaders::parse
to return DataDirectories
instead of a slice. #357
Deleted value
parameter for write:WritableBuffer::resize
. #369
Changed write::Object
and write::Section
to use Cow
for section data. This added a lifetime parameter, which existing users can set to 'static
. #370
Fixed parsing when PE import directory has zero size. #341
Fixed parsing when PE import directory has zero for original first thunk. #385 #387
Fixed parsing when PE export directory has zero number of names. #353
Fixed parsing when PE export directory has zero number of names and addresses. #362
Fixed parsing when PE sections are contiguous. #354
Fixed std
feature for indexmap
dependency. #374
Fixed overflow in COFF section name offset parsing. #390
Added name_bytes
methods to unified read
traits. #351
Added read::Object::kind
. #352
Added read::elf::VersionTable
and related helpers. #341
Added read::elf::SectionTable::dynamic
and related helpers. #345
Added read::coff::SectionTable::max_section_file_offset
. #344
Added read::pe::ImportTable
and related helpers. #357
Added read::pe::DataDirectories
and related helpers. #357 #384
Added read::pe::RichHeaderInfo
and related helpers. #375 #379
Added read::pe::RelocationBlocks
and related helpers. #378
Added write::elf::Writer
. #350
Added write::Section::data/data_mut
. #367
Added write::Object::write_stream
. #369
Added MIPSr6 ELF header flag definitions. #372
Released 2021/08/28.
read::archive
. #366Released 2021/08/19.
memchr
's rustc-dep-of-std
feature #356Released 2021/07/26.
Changed ReadRef::read_bytes_at_until
to accept a range parameter. #326
Added ReadRef
type parameter to read::StringTable
and types that contain it. String table entries are now only read as required. #326
Changed result type of read::elf::SectionHeader::data
and data_as_array
. #332
Moved pod::WritableBuffer
to write::WritableBuffer
. Renamed WritableBuffer::extend
to write_bytes
. Added more provided methods to WritableBuffer
. #335
Moved pod::Bytes
to read::Bytes
. #336
Added is_mips64el
parameter to elf::Rela64::r_info/set_r_info
. #337
alloc
dependency when no features are enabled. #336Added read::pe::PeFile
methods: section_table
, data_directory
, and data
. #324
Added more ELF definitions. #332
Added read::elf::SectionTable
methods for hash tables and symbol version information. #332
Added PE RISC-V definitions. #333
Added WritableBuffer
implementation for Vec
. #335
Released 2021/06/12.
RelocationEncoding::AArch64Call
. #322Released 2021/06/04.
Architecture::X86_64_X32
. #320Released 2021/06/03.
write: Fix choice of SHT_REL
or SHT_RELA
for most architectures. #318
write: Fix relocation encoding for MIPS64EL. #318
Released 2021/06/02.
Added non_exhaustive
to most public enums. #306
MachHeader::parse
and MachHeader::load_commands
now require a header offset. #304
Added ReadRef::read_bytes_at_until
. #308
PeFile::entry
, PeSection::address
and PeSegment::address
now return a virtual address instead of a RVA. #315
Added pod::from_bytes_mut
, pod::slice_from_bytes_mut
, pod::bytes_of_mut
, and pod::bytes_of_slice_mut
. #296 #297
Added Object::pdb_info
. #298
Added read::macho::DyldCache
, other associated definitions, and support for these in the examples. #308
Derive more traits for enums. #311
Added Object::relative_address_base
. #315