object 0.36.0

A unified interface for reading and writing object file formats.
Documentation
# `object` Change Log

--------------------------------------------------------------------------------

## 0.36.0

Released 2024/05/26.

### Breaking changes

* Deleted `data` and `align` parameters for `write::Object::add_subsection`.
  Use `add_symbol_data` or `add_symbol_bss` instead.
  [#676]https://github.com/gimli-rs/object/pull/676

* Changed methods in the lower level read API to accept or return `SectionIndex`
  or `SymbolIndex` instead of `usize`.
  [#677]https://github.com/gimli-rs/object/pull/677
  [#684]https://github.com/gimli-rs/object/pull/684
  [#685]https://github.com/gimli-rs/object/pull/685

* Deleted `SymbolKind::Null`. Changed `read::Object::sections` and `read::Object::symbols`
  to no longer return null entries. This affects ELF and XCOFF.
  [#679]https://github.com/gimli-rs/object/pull/679

* Changed `read::ObjectMap::object` to return `ObjectMapFile`. This handles
  splitting the object file name into path and member.
  [#686]https://github.com/gimli-rs/object/pull/686

* Changed `read::coff::ImageSymbol::address` to only return an address for
  symbols that have an address.
  [#689]https://github.com/gimli-rs/object/pull/689

### Added

* Added `pod::slice_from_all_bytes` and `pod::slice_from_all_bytes_mut`.
  [#672]https://github.com/gimli-rs/object/pull/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]https://github.com/gimli-rs/object/pull/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]https://github.com/gimli-rs/object/pull/678

* Added methods in the lower level read API to return a `SectionIndex` or `SymbolIndex`.
  [#684]https://github.com/gimli-rs/object/pull/684
  [#689]https://github.com/gimli-rs/object/pull/689

* Implemented `Display` for `read::SymbolIndex` and `read::SectionIndex`.
  [#684]https://github.com/gimli-rs/object/pull/684

* Added `is_common`, `is_absolute`, `is_local`, and `is_weak` to `read::elf::Sym`.
  [#685]https://github.com/gimli-rs/object/pull/685

### Changed

* Changed `read::ArchiveFile` to skip the `<ECSYMBOLS>` member.
  [#669]https://github.com/gimli-rs/object/pull/669

* Fixed handling of segment data in the dyld shared cache.
  [#673]https://github.com/gimli-rs/object/pull/673

* Changed `read::RelocationMap` to handle Mach-O section relocations.
  [#675]https://github.com/gimli-rs/object/pull/675

* Changed `read::elf::RelocationSections` to ignore relocations that apply to relocations.
  [#680]https://github.com/gimli-rs/object/pull/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]https://github.com/gimli-rs/object/pull/681

--------------------------------------------------------------------------------

## 0.35.0

Released 2024/04/10.

### Breaking changes

* Moved the `'file` lifetime parameter from `read::Object` to its associated types.
  [#655]https://github.com/gimli-rs/object/pull/655

### Added

* Added support more section kinds in `build::elf`.
  [#650]https://github.com/gimli-rs/object/pull/650

* Added thin archive support to `read::ArchiveFile`.
  [#651]https://github.com/gimli-rs/object/pull/651

* Added `read::ReadCacheOps` and changed `read::ReadCache` bound from `Read + Seek` to `ReadCacheOps`.
  [#652]https://github.com/gimli-rs/object/pull/652

* Added `read::ObjectSection::relocation_map`
  [#654]https://github.com/gimli-rs/object/pull/654

* Added `read::ArchiveFile::symbols`.
  [#658]https://github.com/gimli-rs/object/pull/658

* Added `BinaryFormat::native_object`.
  [#661]https://github.com/gimli-rs/object/pull/661

### Changed

* The minimum supported rust version for the `read` feature and its dependencies
  has changed to 1.65.0.
  [#655]https://github.com/gimli-rs/object/pull/655

* Fixed `sh_offset` handling for `SHT_NOBITS` sections in `build::elf`.
  [#645]https://github.com/gimli-rs/object/pull/645

* Fixed handling of ELF files with dynamic symbols but no dynamic strings.
  [#646]https://github.com/gimli-rs/object/pull/646

* Fixed potential panics in `read::WasmFile` due to invalid function indices.
  [#649]https://github.com/gimli-rs/object/pull/649

* Fixed handling of Wasm components in `read::WasmFile`.
  [#649]https://github.com/gimli-rs/object/pull/649

* Fixed `sh_entsize` for 32-bit hash sections in `write::elf`.
  [#650]https://github.com/gimli-rs/object/pull/650

* Fixed `sh_size` for attribute sections in `build::elf`.
  [#650]https://github.com/gimli-rs/object/pull/650

* Fixed `sh_info` for `SHT_DYNSYM` sections in `build::elf`.
  [#650]https://github.com/gimli-rs/object/pull/650

* Fixed handling of dynamic relocations with invalid `sh_link` in `build::elf`.
  [#650]https://github.com/gimli-rs/object/pull/650

* Fixed parsing of member names containing '/' in `read::ArchiveFile`.
  [#657]https://github.com/gimli-rs/object/pull/657

* Fixed handling of load segment alignments in `build::elf::Builder::read`.
  [#659]https://github.com/gimli-rs/object/pull/659

--------------------------------------------------------------------------------

## 0.34.0

Released 2024/03/11.

### Breaking changes

* Replaced `macho::DyldSubCacheInfo` with `macho::DyldSubCacheEntryV1`.
  Changed the return type of `macho::DyldCacheHeader::subcaches`.
  [#642]https://github.com/gimli-rs/object/pull/642

### Changed

* Added `macho::DyldSubCacheEntryV2` and changed `read::macho::DyldCache`
  to handle both versions. This is needed for macOS 13 and above.
  [#642]https://github.com/gimli-rs/object/pull/642

--------------------------------------------------------------------------------

## 0.33.0

Released 2024/03/05.

### Breaking changes

* Deleted file format variants in `RelocationKind`. Replaced their usage
  with `read::Relocation::flags` and `write::Relocation::flags`.
  [#585]https://github.com/gimli-rs/object/pull/585

* Replaced `kind`, `encoding` and `size` fields in `write::Relocation`
  with `RelocationFlags::Generic` in the `flags` field.
  [#585]https://github.com/gimli-rs/object/pull/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]https://github.com/gimli-rs/object/pull/623

### Added

* Added `macho::PLATFORM_XROS` and `macho::PLATFORM_XROSSIMULATOR`.
  [#626]https://github.com/gimli-rs/object/pull/626

* Added `build::elf::Builder` and associated types.
  Extended `write::elf::Writer` to support this.
  [#618]https://github.com/gimli-rs/object/pull/618

### Changed

* Changed the lifetime to `'data` for the return value of `ObjectSection::name`,
  `ObjectSection::name_bytes`, `ObjectComdat::name`, `ObjectComdat::name_bytes`.
  [#620]https://github.com/gimli-rs/object/pull/620
  [#622]https://github.com/gimli-rs/object/pull/622

* Checked that sizes are smaller than the file length in `read::ReadCache`.
  [#630]https://github.com/gimli-rs/object/pull/630

* Used `Vec::try_reserve_exact` for large allocations.
  [#632]https://github.com/gimli-rs/object/pull/632

--------------------------------------------------------------------------------

## 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