# `object` Change Log

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

## 0.36.4

Released 2024/08/30.

### Added

* Added `pe::IMAGE_FILE_MACHINE_ARM64X` and `pe::IMAGE_FILE_MACHINE_CHPE_X86`.
  [#717](https://github.com/gimli-rs/object/pull/717)

* Added `elf::SHF_GNU_RETAIN` and `elf::SHF_GNU_MBIND`.
  [#720](https://github.com/gimli-rs/object/pull/720)

### Changed

* Fixed the checksum for COFF BSS section symbols in `write::Object`.
  [#718](https://github.com/gimli-rs/object/pull/718)

* Changed `read::CompressedData::decompress` to validate the decompressed size.
  [#723](https://github.com/gimli-rs/object/pull/723)

* Updated `wasmparser` dependency.

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

## 0.36.3

Released 2024/08/07.

### Added

* Added `Iterator` implementations for various types in the low level read API.
  [#713](https://github.com/gimli-rs/object/pull/713)
  [#714](https://github.com/gimli-rs/object/pull/714)

### Changed

* Changed `from_bytes` constructors for integer endian types to `const`.
  [#712](https://github.com/gimli-rs/object/pull/712)

* Changed `next` methods in the low level read API to fuse after returning an
  error.
  [#714](https://github.com/gimli-rs/object/pull/714)

* Updated `wasmparser` dependency.
  [#715](https://github.com/gimli-rs/object/pull/715)

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

## 0.36.2

Released 2024/07/24.

### Changed

* Improved writing of GNU symbol versioning in `build::elf::Builder`.
  [#705](https://github.com/gimli-rs/object/pull/705)

* Fixed alignment of `SHT_HASH`/`SHT_GNU_verdef`/`SHT_GNU_verneed` sections in
  `write::elf::Writer`.
  [#706](https://github.com/gimli-rs/object/pull/706)

* Fixed writing of GNU hash for absolute symbols in `build::elf::Builder`.
  [#707](https://github.com/gimli-rs/object/pull/707)

* Fixed writing of empty ELF string table in `write::Object`.
  [#710](https://github.com/gimli-rs/object/pull/710)

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

## 0.36.1

Released 2024/06/29.

### Added

* Added `SectionKind::DebugString`.
  [#694](https://github.com/gimli-rs/object/pull/694)

* Added `Architecture::Sparc` and `Architecture::Sparc32Plus`.
  [#699](https://github.com/gimli-rs/object/pull/699)
  [#700](https://github.com/gimli-rs/object/pull/700)

* Added more RISC-V ELF relocation constants.
  [#701](https://github.com/gimli-rs/object/pull/701)

### Changed

* Changed `read::ElfFile::imports` to return the library for versioned symbols.
  [#693](https://github.com/gimli-rs/object/pull/693)

* Changed `read::MachOFile` to support Go's debug section compression.
  [#697](https://github.com/gimli-rs/object/pull/697)

* Reversed the order of Mach-O relocations emitted by `write::Object`.
  [#702](https://github.com/gimli-rs/object/pull/702)

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

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