# `object` Change Log -------------------------------------------------------------------------------- ## 0.32.2 Released 2023/12/24. ### Added * Added ELF relocations for LoongArch ABI v2.20. [#578](https://github.com/gimli-rs/object/pull/578) [#589](https://github.com/gimli-rs/object/pull/589) * Added ELF support for SHARC. [#593](https://github.com/gimli-rs/object/pull/593) * Added `write::coff::Writer`. [#595](https://github.com/gimli-rs/object/pull/595) * Added `SubArchitecture::Arm64EC` support for PE/COFF. [#607](https://github.com/gimli-rs/object/pull/607) * Added `SubArchitecture::Arm64E` support for Mach-O. [#614](https://github.com/gimli-rs/object/pull/614) * Added `read::Object::symbol_by_name` and `read::Object::symbol_by_name_bytes`. [#602](https://github.com/gimli-rs/object/pull/602) * Added more functions to the low level API in `read::xcoff`. [#608](https://github.com/gimli-rs/object/pull/608) * Added more functions to the low level API in `read::macho`. [#584](https://github.com/gimli-rs/object/pull/584) ### Changed * Fixes for AArch64 relocation addends for Mach-O. [#581](https://github.com/gimli-rs/object/pull/581) * Changes to `write::Object` output for Mach-O, including the addition of a `LC_DYSYMTAB` load command. [#584](https://github.com/gimli-rs/object/pull/584) * Changed `write::Object` to always use `R_X86_64_PLT32` for x86-64 branches for ELF. [#590](https://github.com/gimli-rs/object/pull/590) * Fixed `read::ObjectSymbol::kind` for undefined section symbols for COFF. [#592](https://github.com/gimli-rs/object/pull/592) * Fixed `write::Object` to accept undefined section symbols for COFF. [#594](https://github.com/gimli-rs/object/pull/594) * Improved parsing of auxiliary section symbols for COFF. [#603](https://github.com/gimli-rs/object/pull/603) * Improved the selection of symbols for `read::Object::symbol_map`. This includes changes to `read::Symbol::is_definition`. [#601](https://github.com/gimli-rs/object/pull/601) [#606](https://github.com/gimli-rs/object/pull/606) * Changed `read::ObjectSymbol::kind` for ELF `STT_NOTYPE` symbols to `SymbolKind::Unknown`. [#604](https://github.com/gimli-rs/object/pull/604) * Changed `read::ObjectSymbol::scope` for XCOFF `C_HIDEXT` symbols to `SymbolScope::Compilation`. [#605](https://github.com/gimli-rs/object/pull/605) -------------------------------------------------------------------------------- ## 0.32.1 Released 2023/09/03. ### Added * Added `write::Object::set_macho_cpu_subtype`. [#574](https://github.com/gimli-rs/object/pull/574) -------------------------------------------------------------------------------- ## 0.32.0 Released 2023/08/12. ### Breaking changes * Changed `read::elf::Note::name` to exclude all trailing null bytes. [#549](https://github.com/gimli-rs/object/pull/549) * Updated dependencies, and changed some optional dependencies to use the `dep:` feature syntax. [#558](https://github.com/gimli-rs/object/pull/558) [#569](https://github.com/gimli-rs/object/pull/569) ### Changed * 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](https://github.com/gimli-rs/object/pull/549) * Fixed Mach-O section alignment padding in `write::Object`. [#553](https://github.com/gimli-rs/object/pull/553) * Changed `read::File` to an enum. [#564](https://github.com/gimli-rs/object/pull/564) ### Added * Added `elf::ELF_NOTE_GO`, `elf::NT_GO_BUILD_ID`, and `read::elf::Note::name_bytes`. [#549](https://github.com/gimli-rs/object/pull/549) * Added `read::FileKind::CoffImport` and `read::coff::ImportFile`. [#555](https://github.com/gimli-rs/object/pull/555) [#556](https://github.com/gimli-rs/object/pull/556) * Added `Architecture::Csky` and basic ELF support for C-SKY. [#561](https://github.com/gimli-rs/object/pull/561) * Added `read::elf::ElfSymbol::raw_symbol`. [#562](https://github.com/gimli-rs/object/pull/562) -------------------------------------------------------------------------------- ## 0.30.4 Released 2023/06/05. ### Changed * Fixed Mach-O section alignment padding in `write::Object`. [#553](https://github.com/gimli-rs/object/pull/553) -------------------------------------------------------------------------------- ## 0.31.1 Released 2023/05/09. ### Changed * Fixed address for global symbols in `read::wasm`. [#539](https://github.com/gimli-rs/object/pull/539) * Fixed writing of alignment for empty ELF sections. [#540](https://github.com/gimli-rs/object/pull/540) ### Added * Added more `elf::GNU_PROPERTY_*` definitions. Added `read::elf::note::gnu_properties`, `write::StandardSection::GnuProperty`, and `write::Object::add_elf_gnu_property_u32`. [#537](https://github.com/gimli-rs/object/pull/537) [#541](https://github.com/gimli-rs/object/pull/541) * Added Mach-O support for `Architecture::Aarch64_Ilp32`. [#542](https://github.com/gimli-rs/object/pull/542) [#545](https://github.com/gimli-rs/object/pull/545) * Added `Architecture::Wasm64`. [#543](https://github.com/gimli-rs/object/pull/543) -------------------------------------------------------------------------------- ## 0.31.0 Released 2023/04/14. ### Breaking changes * Added a type parameter on existing COFF types to support reading COFF `/bigobj` files. [#502](https://github.com/gimli-rs/object/pull/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](https://github.com/gimli-rs/object/pull/502) * Changed `pe::Guid` to a single array, and added methods to read the individual fields. [#502](https://github.com/gimli-rs/object/pull/502) * Added `Symbol` type parameter to `SymbolFlags` to support `SymbolFlags::Xcoff`. [#527](https://github.com/gimli-rs/object/pull/527) ### Changed * Fix alignment when reserving zero length sections in `write::elf::Write::reserve`. [#514](https://github.com/gimli-rs/object/pull/514) * Validate command size in `read::macho::LoadCommandIterator`. [#516](https://github.com/gimli-rs/object/pull/516) * Handle invalid alignment in `read::macho::MachoSection::align`. [#516](https://github.com/gimli-rs/object/pull/516) * Accept `SymbolKind::Unknown` in `write::Object::macho_write`. [#519](https://github.com/gimli-rs/object/pull/519) * Updated `wasmparser` dependency. [#528](https://github.com/gimli-rs/object/pull/528) ### Added * Added more `elf::EF_RISCV_*` definitions. [#507](https://github.com/gimli-rs/object/pull/507) * Added `read::elf::SectionHeader::gnu_attributes` and associated types. Added `.gnu.attributes` support to `write::elf::Writer`. [#509](https://github.com/gimli-rs/object/pull/509) [#525](https://github.com/gimli-rs/object/pull/525) * Added `write::Object::set_macho_build_version`. [#524](https://github.com/gimli-rs/object/pull/524) * Added `read::FileKind::Xcoff32`, `read::FileKind::Xcoff64`, `read::XcoffFile`, and associated types. Added XCOFF support to `write::Object`. [#469](https://github.com/gimli-rs/object/pull/469) [#476](https://github.com/gimli-rs/object/pull/476) [#477](https://github.com/gimli-rs/object/pull/477) [#482](https://github.com/gimli-rs/object/pull/482) [#484](https://github.com/gimli-rs/object/pull/484) [#486](https://github.com/gimli-rs/object/pull/486) [#527](https://github.com/gimli-rs/object/pull/527) * Added `read::FileKind::CoffBig`, `read::pe::CoffHeader` and `read::pe::ImageSymbol`. [#502](https://github.com/gimli-rs/object/pull/502) * Added `elf::PT_GNU_PROPERTY`. [#530](https://github.com/gimli-rs/object/pull/530) * Added `elf::ELFCOMPRESS_ZSTD`, `read::CompressionFormat::Zstandard`, and Zstandard decompression in `read::CompressedData::decompress` using the `ruzstd` crate. [#532](https://github.com/gimli-rs/object/pull/532) * Added `read::elf::NoteIterator::new`. [#533](https://github.com/gimli-rs/object/pull/533) -------------------------------------------------------------------------------- ## 0.30.3 Released 2023/01/23. ### Added * Added `SectionKind::ReadOnlyDataWithRel` for writing. [#504](https://github.com/gimli-rs/object/pull/504) -------------------------------------------------------------------------------- ## 0.30.2 Released 2023/01/11. ### Added * Added more ELF constants for AVR flags and relocations. [#500](https://github.com/gimli-rs/object/pull/500) -------------------------------------------------------------------------------- ## 0.30.1 Released 2023/01/04. ### Changed * Changed `read::ElfSymbol::kind` to handle `STT_NOTYPE` and `STT_GNU_IFUNC`. [#498](https://github.com/gimli-rs/object/pull/498) ### Added * Added `read::CoffSymbol::raw_symbol`. [#494](https://github.com/gimli-rs/object/pull/494) * Added ELF support for Solana Binary Format. [#491](https://github.com/gimli-rs/object/pull/491) * Added ELF support for AArch64 ILP32. [#497](https://github.com/gimli-rs/object/pull/497) -------------------------------------------------------------------------------- ## 0.30.0 Released 2022/11/22. ### Breaking changes * The minimum supported rust version for the `read` feature has changed to 1.52.0. [#458](https://github.com/gimli-rs/object/pull/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](https://github.com/gimli-rs/object/pull/458) * Fixed endian handling in `read::pe::ResourceName`. [#458](https://github.com/gimli-rs/object/pull/458) * Changed definitions for LoongArch ELF header flags. [#483](https://github.com/gimli-rs/object/pull/483) ### Changed * Fixed parsing of multiple debug directory entries in `read::pe::PeFile::pdb_info`. [#451](https://github.com/gimli-rs/object/pull/451) * Changed the section name used when writing COFF stub symbols. [#475](https://github.com/gimli-rs/object/pull/475) ### Added * Added `read::pe::DataDirectories::delay_load_import_table`. [#448](https://github.com/gimli-rs/object/pull/448) * Added `read::macho::LoadCommandData::raw_data`. [#449](https://github.com/gimli-rs/object/pull/449) * Added ELF relocations for LoongArch ps ABI v2. [#450](https://github.com/gimli-rs/object/pull/450) * Added PowerPC support for Mach-O. [#460](https://github.com/gimli-rs/object/pull/460) * Added support for reading the AIX big archive format. [#462](https://github.com/gimli-rs/object/pull/462) [#467](https://github.com/gimli-rs/object/pull/467) [#473](https://github.com/gimli-rs/object/pull/473) * Added support for `RelocationEncoding::AArch64Call` when writing Mach-O files. [#465](https://github.com/gimli-rs/object/pull/465) * Added support for `RelocationKind::Relative` when writing RISC-V ELF files. [#470](https://github.com/gimli-rs/object/pull/470) * Added Xtensa architecture support for ELF. [#481](https://github.com/gimli-rs/object/pull/481) * Added `read::pe::ResourceName::raw_data`. [#487](https://github.com/gimli-rs/object/pull/487) -------------------------------------------------------------------------------- ## 0.29.0 Released 2022/06/22. ### Breaking changes * The `write` feature now has a minimum supported rust version of 1.56.1. [#444](https://github.com/gimli-rs/object/pull/444) * Added `os_abi` and `abi_version` fields to `FileFlags::Elf`. [#438](https://github.com/gimli-rs/object/pull/438) [#441](https://github.com/gimli-rs/object/pull/441) ### Changed * Fixed handling of empty symbol tables in `read::elf::ElfFile::symbol_table` and `read::elf::ElfFile::dynamic_symbol_table`. [#443](https://github.com/gimli-rs/object/pull/443) ### Added * Added more `ELF_OSABI_*` constants. [#439](https://github.com/gimli-rs/object/pull/439) -------------------------------------------------------------------------------- ## 0.28.4 Released 2022/05/09. ### Added * Added `read::pe::DataDirectories::resource_directory`. [#425](https://github.com/gimli-rs/object/pull/425) [#427](https://github.com/gimli-rs/object/pull/427) * Added PE support for more ARM relocations. [#428](https://github.com/gimli-rs/object/pull/428) * Added support for `Architecture::LoongArch64`. [#430](https://github.com/gimli-rs/object/pull/430) [#432](https://github.com/gimli-rs/object/pull/432) * Added `elf::EF_MIPS_ABI` and associated constants. [#433](https://github.com/gimli-rs/object/pull/433) -------------------------------------------------------------------------------- ## 0.28.3 Released 2022/01/19. ### Changed * For the Mach-O support in `write::Object`, accept `RelocationKind::MachO` for all architectures, and accept `RelocationKind::Absolute` for ARM64. [#422](https://github.com/gimli-rs/object/pull/422) ### Added * Added `pe::ImageDataDirectory::file_range`, `read::pe::SectionTable::pe_file_range_at` and `pe::ImageSectionHeader::pe_file_range_at`. [#421](https://github.com/gimli-rs/object/pull/421) * Added `write::Object::add_coff_exports`. [#423](https://github.com/gimli-rs/object/pull/423) -------------------------------------------------------------------------------- ## 0.28.2 Released 2022/01/09. ### Changed * Ignored errors for the Wasm extended name section in `read::WasmFile::parse`. [#408](https://github.com/gimli-rs/object/pull/408) * Ignored errors for the COFF symbol table in `read::PeFile::parse`. [#410](https://github.com/gimli-rs/object/pull/410) * Fixed handling of `SectionFlags::Coff` in `write::Object::coff_write`. [#412](https://github.com/gimli-rs/object/pull/412) ### Added * Added `read::ObjectSegment::flags`. [#416](https://github.com/gimli-rs/object/pull/416) [#418](https://github.com/gimli-rs/object/pull/418) -------------------------------------------------------------------------------- ## 0.28.1 Released 2021/12/12. ### Changed * Fixed `read::elf::SymbolTable::shndx_section`. [#405](https://github.com/gimli-rs/object/pull/405) * Fixed build warnings. [#405](https://github.com/gimli-rs/object/pull/405) [#406](https://github.com/gimli-rs/object/pull/406) -------------------------------------------------------------------------------- ## 0.28.0 Released 2021/12/12. ### Breaking changes * `write_core` feature no longer enables `std` support. Use `write_std` instead. [#400](https://github.com/gimli-rs/object/pull/400) * Multiple changes related to Mach-O split dyld cache support. [#398](https://github.com/gimli-rs/object/pull/398) ### Added * Added `write::pe::Writer::write_file_align`. [#397](https://github.com/gimli-rs/object/pull/397) * Added support for Mach-O split dyld cache. [#398](https://github.com/gimli-rs/object/pull/398) * Added support for `IMAGE_SCN_LNK_NRELOC_OVFL` when reading and writing COFF. [#399](https://github.com/gimli-rs/object/pull/399) * Added `write::elf::Writer::reserve_null_symbol_index`. [#402](https://github.com/gimli-rs/object/pull/402) -------------------------------------------------------------------------------- ## 0.27.1 Released 2021/10/22. ### Changed * Fixed build error with older Rust versions due to cargo resolver version. -------------------------------------------------------------------------------- ## 0.27.0 Released 2021/10/17. ### Breaking changes * Changed `read::elf` to use `SectionIndex` instead of `usize` in more places. [#341](https://github.com/gimli-rs/object/pull/341) * Changed some `read::elf` section methods to additionally return the linked section index. [#341](https://github.com/gimli-rs/object/pull/341) * Changed `read::pe::ImageNtHeaders::parse` to return `DataDirectories` instead of a slice. [#357](https://github.com/gimli-rs/object/pull/357) * Deleted `value` parameter for `write:WritableBuffer::resize`. [#369](https://github.com/gimli-rs/object/pull/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](https://github.com/gimli-rs/object/pull/370) ### Changed * Fixed parsing when PE import directory has zero size. [#341](https://github.com/gimli-rs/object/pull/341) * Fixed parsing when PE import directory has zero for original first thunk. [#385](https://github.com/gimli-rs/object/pull/385) [#387](https://github.com/gimli-rs/object/pull/387) * Fixed parsing when PE export directory has zero number of names. [#353](https://github.com/gimli-rs/object/pull/353) * Fixed parsing when PE export directory has zero number of names and addresses. [#362](https://github.com/gimli-rs/object/pull/362) * Fixed parsing when PE sections are contiguous. [#354](https://github.com/gimli-rs/object/pull/354) * Fixed `std` feature for `indexmap` dependency. [#374](https://github.com/gimli-rs/object/pull/374) * Fixed overflow in COFF section name offset parsing. [#390](https://github.com/gimli-rs/object/pull/390) ### Added * Added `name_bytes` methods to unified `read` traits. [#351](https://github.com/gimli-rs/object/pull/351) * Added `read::Object::kind`. [#352](https://github.com/gimli-rs/object/pull/352) * Added `read::elf::VersionTable` and related helpers. [#341](https://github.com/gimli-rs/object/pull/341) * Added `read::elf::SectionTable::dynamic` and related helpers. [#345](https://github.com/gimli-rs/object/pull/345) * Added `read::coff::SectionTable::max_section_file_offset`. [#344](https://github.com/gimli-rs/object/pull/344) * Added `read::pe::ExportTable` and related helpers. [#349](https://github.com/gimli-rs/object/pull/349) [#353](https://github.com/gimli-rs/object/pull/353) * Added `read::pe::ImportTable` and related helpers. [#357](https://github.com/gimli-rs/object/pull/357) * Added `read::pe::DataDirectories` and related helpers. [#357](https://github.com/gimli-rs/object/pull/357) [#384](https://github.com/gimli-rs/object/pull/384) * Added `read::pe::RichHeaderInfo` and related helpers. [#375](https://github.com/gimli-rs/object/pull/375) [#379](https://github.com/gimli-rs/object/pull/379) * Added `read::pe::RelocationBlocks` and related helpers. [#378](https://github.com/gimli-rs/object/pull/378) * Added `write::elf::Writer`. [#350](https://github.com/gimli-rs/object/pull/350) * Added `write::pe::Writer`. [#382](https://github.com/gimli-rs/object/pull/382) [#388](https://github.com/gimli-rs/object/pull/388) * Added `write::Section::data/data_mut`. [#367](https://github.com/gimli-rs/object/pull/367) * Added `write::Object::write_stream`. [#369](https://github.com/gimli-rs/object/pull/369) * Added MIPSr6 ELF header flag definitions. [#372](https://github.com/gimli-rs/object/pull/372) -------------------------------------------------------------------------------- ## 0.26.2 Released 2021/08/28. ### Added * Added support for 64-bit symbol table names to `read::archive`. [#366](https://github.com/gimli-rs/object/pull/366) -------------------------------------------------------------------------------- ## 0.26.1 Released 2021/08/19. ### Changed * Activate `memchr`'s `rustc-dep-of-std` feature [#356](https://github.com/gimli-rs/object/pull/356) -------------------------------------------------------------------------------- ## 0.26.0 Released 2021/07/26. ### Breaking changes * Changed `ReadRef::read_bytes_at_until` to accept a range parameter. [#326](https://github.com/gimli-rs/object/pull/326) * Added `ReadRef` type parameter to `read::StringTable` and types that contain it. String table entries are now only read as required. [#326](https://github.com/gimli-rs/object/pull/326) * Changed result type of `read::elf::SectionHeader::data` and `data_as_array`. [#332](https://github.com/gimli-rs/object/pull/332) * Moved `pod::WritableBuffer` to `write::WritableBuffer`. Renamed `WritableBuffer::extend` to `write_bytes`. Added more provided methods to `WritableBuffer`. [#335](https://github.com/gimli-rs/object/pull/335) * Moved `pod::Bytes` to `read::Bytes`. [#336](https://github.com/gimli-rs/object/pull/336) * Added `is_mips64el` parameter to `elf::Rela64::r_info/set_r_info`. [#337](https://github.com/gimli-rs/object/pull/337) ### Changed * Removed `alloc` dependency when no features are enabled. [#336](https://github.com/gimli-rs/object/pull/336) ### Added * Added `read::pe::PeFile` methods: `section_table`, `data_directory`, and `data`. [#324](https://github.com/gimli-rs/object/pull/324) * Added more ELF definitions. [#332](https://github.com/gimli-rs/object/pull/332) * Added `read::elf::SectionTable` methods for hash tables and symbol version information. [#332](https://github.com/gimli-rs/object/pull/332) * Added PE RISC-V definitions. [#333](https://github.com/gimli-rs/object/pull/333) * Added `WritableBuffer` implementation for `Vec`. [#335](https://github.com/gimli-rs/object/pull/335) -------------------------------------------------------------------------------- ## 0.25.3 Released 2021/06/12. ### Added * Added `RelocationEncoding::AArch64Call`. [#322](https://github.com/gimli-rs/object/pull/322) -------------------------------------------------------------------------------- ## 0.25.2 Released 2021/06/04. ### Added * Added `Architecture::X86_64_X32`. [#320](https://github.com/gimli-rs/object/pull/320) -------------------------------------------------------------------------------- ## 0.25.1 Released 2021/06/03. ### Changed * write: Fix choice of `SHT_REL` or `SHT_RELA` for most architectures. [#318](https://github.com/gimli-rs/object/pull/318) * write: Fix relocation encoding for MIPS64EL. [#318](https://github.com/gimli-rs/object/pull/318) -------------------------------------------------------------------------------- ## 0.25.0 Released 2021/06/02. ### Breaking changes * Added `non_exhaustive` to most public enums. [#306](https://github.com/gimli-rs/object/pull/306) * `MachHeader::parse` and `MachHeader::load_commands` now require a header offset. [#304](https://github.com/gimli-rs/object/pull/304) * Added `ReadRef::read_bytes_at_until`. [#308](https://github.com/gimli-rs/object/pull/308) * `PeFile::entry`, `PeSection::address` and `PeSegment::address` now return a virtual address instead of a RVA. [#315](https://github.com/gimli-rs/object/pull/315) ### Added * Added `pod::from_bytes_mut`, `pod::slice_from_bytes_mut`, `pod::bytes_of_mut`, and `pod::bytes_of_slice_mut`. [#296](https://github.com/gimli-rs/object/pull/296) [#297](https://github.com/gimli-rs/object/pull/297) * Added `Object::pdb_info`. [#298](https://github.com/gimli-rs/object/pull/298) * Added `read::macho::DyldCache`, other associated definitions, and support for these in the examples. [#308](https://github.com/gimli-rs/object/pull/308) * Added more architecture support. [#303](https://github.com/gimli-rs/object/pull/303) [#309](https://github.com/gimli-rs/object/pull/309) * Derive more traits for enums. [#311](https://github.com/gimli-rs/object/pull/311) * Added `Object::relative_address_base`. [#315](https://github.com/gimli-rs/object/pull/315) ### Changed * Improved performance for string parsing. [#302](https://github.com/gimli-rs/object/pull/302) * `objdump` example allows selecting container members. [#308](https://github.com/gimli-rs/object/pull/308)