Changelog
May 5, 2026 ยท View on GitHub
All notable changes to ofrak-patch-maker will be documented in this file.
The format is based on Keep a Changelog and adheres to Semantic Versioning.
Unreleased
Fixed
- Patchmaker: prevent emission of NEON instructions (aarch64) (#742)
Changed
- make
make_bomparallel using threads (#743)
4.1.0 - 2025-10-03
Added
Removed
- Switch from binutils version of linker, bin_parser, assembler for X86_64 to default Debian versions. (#405)
Fixed
- X86_64 toolchain now installs on Docker image builds for AARCH64 hosts. (#405)
- Toolchain now drops the .altinstrs_replacement as well as the .altinstructions section in our generated linker scripts (#414)
- GNU toolchain uses the correct
-fPIEflag when building relocatable patches (#590)
Changed
- Removed
SUBALIGN(0)for.bsssections - Minor update to OFRAK Community License, add OFRAK Pro License (#478)
- Install toolchains (x86_64, aarch64 platforms) from source or tarball instead of relying on the Debian package manager (#405, #502, #541, #562)
- Deprecate reserving
.bssspace at the FEM linking step withcreate_unsafe_bss_segmentmethod andunsafe_bss_segmentargument. (#505) - Determine the correct allocation behavior of sections from ELF flags rather than section names. (#505)
- The PatchMaker Toolchain now includes stdout and stderr in the raised ValueError upon toolchain failure. (#634)
4.0.2
Fixed
- Remove option to read or install toolchain.conf from/to "/etc/toolchain.conf" (#342)
4.0.1
Added
- Interface to iterate over all Toolchain implementations (#287)
Fixed
- Localize magic import (#299)
4.0.0
Changed
- Discard
.altinstructionssection when linking - Use
SUBALIGN(0)for.bsssections - Force literal pool at end of function for AARCH64 using
-mpc-relative-literal-loads
Added
-fno-optimize-sibling-callsflag added to AVR toolchain.-fno-picflag added to the GNU_10_Toolchain to omit GOTs in patches (FEMs) against binaries that aren't dynamically linked. (see #245)- Add methods to parse relocation symbols from object files.
- Extend parsed symbol dictionary to include LinkableSymbolType.
- Extend AssembledObject and BOM types to include relocation and unresolved symbols.
- Add separate data sections support to LLVM toolchain, and add general flag for including subsections
- Add support for big endian in the GNU toolchain
- Add support for ARM BE8 in the GNU toolchain
Changed
- Switch to standard GCC-like frontend for LLVM, which supports C attribute(weak)
- Treat weak symbols as "undefined" in BOM, so alternative, strong definitions can be searched
- Pass
-mmcuvalue to the AVR preprocessor. - Raise a more descriptive error on toolchain failure.
Fixed
- Toolchain
preprocess()method now returns the path to the preprocessed file.
3.0.0 - 2023-01-20
Added
- Optional permission map parameter to
Allocatable.allocate_bom, which enables developers to express where segments of one set of permissions may be placed in the destination binary. For example, a developer may specify to placeMemoryPermissions.RSegmentsin destination programMemoryRegionsofMemoryPermissions.RorMemoryPermissions.RX.
Changed
PatchMakeris now initialized with an existingToolchaininstance. GNU toolchain implementations are split into separate files.- Make toolchain names in
toolchain.confmore specific:GNU_ARM_NONEchanged toGNU_ARM_NONE_EABI_10_2_1.GNU_X86_64_LINUXchanged toGNU_X86_64_LINUX_EABI_10_3_0.
Removed
- Removed
ToolchainVersion.
2.0.0 - 2023-01-03
Changed
Toolchaininterface usesArchInfoinstead ofProgramAttributesto remove dependency onofrak.bss_size_requiredparameter added toAssembledObject.segment_alignmentparameter added toBOM.- Removed reference to obsolete
ofrak_componentsfrom README.md.
Deprecated
- Deprecated
PatchMaker.allocate_bomto remove dependency onofrak. Useofrak==2.0.0'sAllocatable.allocate_bominstead.
Removed
Toolchain.get_required_alignmentmethod is now the propertyToolchain.segment_alignment.- Removed incomplete
LLVM_MACH_O_Parserimplementation (see #156).
1.0.0 - 2022-09-02
Added
Initial release. Hello world!