PE/COFF linker + section appender + bare-metal image formats
objects/PIE โ PE32+ EFI (amd64 ยท arm64 ยท riscv64 ยท loongarch64)
pure-Go PE/COFF tooling for UEFI without binutils or LLD: linker (relocatable .o or PIE โ PE32+/EFI, the lld-link /subsystem:efi_application replacement), appender (add sections to an existing PE โ objcopy --add-section, for UKI assembly), and fwimg for non-UEFI bare-metal images (ELF โ flat binary, Motorola SREC, Intel HEX, U-Boot uImage). Zero third-party deps, 100% coverage.
Reference CLI: link / convert / append / pack / sign
single static binary, no binutils / LLD / objcopy / sbsign
Cobra-based reference CLI over the peln library: links relocatable objects โ PE32+/EFI, converts a PIE ELF โ PE32+/EFI, runs objcopy-style ELF conversions, appends PE sections (UKI assembly), packs EFI binaries (via efipack), and Authenticode-signs for Secure Boot. Pure Go, no C toolchain. 100% coverage.
Self-extracting PE32+/EFI compressor (UPX-equivalent)
host side only โ runtime decompressor stub is future work
pure-Go library that wraps a PE32+/EFI binary into a self-extracting PE32+/EFI image โ a UPX-equivalent for the EFI format, intended to mitigate the EDK2 OVMF amd64 CpuPageTableLib #GP on LoadImage/StartImage of large EFI binaries (cloud-boot M6.2). Current revision ships the host side: compression API, PE32+/EFI envelope assembly, arch detection (amd64/arm64/riscv64/loong64) and round-trip tests. The runtime per-arch decompressor stub is not yet implemented, so the output is not yet a runnable EFI.
stub
firmware
A UEFI Unified Kernel Image stub, in TinyGo
x86_64 ยท aarch64, booted under OVMF
The piece that removes systemd as a BUILD-TIME dependency for anybody assembling a UKI: pair it with peln and pectl and the whole pipeline runs without binutils and without systemd-stub. Written in TinyGo plus a thin assembly shim. <strong>Phase 3 (basic)</strong>: it boots under OVMF on both architectures, prints a banner through SimpleTextOutput, walks its own PE section table through EFI_LOADED_IMAGE_PROTOCOL, and chain-loads a .linux section through BootServices.LoadImage when one is present.