Skip to content

Releases: Zainium-Dynamics/oxideutils

OxideUtils v0.1.0-alpha

Pre-release

Choose a tag to compare

@alizainx alizainx released this 14 Aug 11:00

OxideUtils v0.1.0-alpha

First public alpha — a memory-safe Rust reimplementation of the classic GNU binutils userland tool surface (Zainium Dynamics). Behavioural reference is binutils 2.46.1 for QA comparison only — no GNU code is linked, this is not a GNU project.

Fully implemented (verified, not just "present")

  • Foundation — workspace, oxideutils-core, CLI, dual std/no_std build, CI.
  • oxide-size — flag matrix, output formats.
  • oxide-ar — full read (t/p/x) plus write (rcs/d/s) and ranlib symbol index, with passing create/list/delete round-trip tests.
  • oxide-as / oxide-ld core path — real x86_64 assembler + ELF64 linker, verified end-to-end against real glibc and executed on the real kernel: static and dynamic linking (PLT/GOT), .init_array/.fini_array symbol synthesis, initial-exec TLS (PT_TLS, TPOFF32/GOTTPOFF), SSE/SSE2 float encoding, sym+N addends, .macro/.rept/.if preprocessor.
  • readelf notes parsing.
  • x86_64 disassembly via iced-x86 — real decode, high confidence.
  • Build/CI hygienecargo fmt --check clean, cargo clippy --workspace --all-targets 0 warnings, cargo test --workspace all passing.

Partially working

  • readelf deeper features (versym, GOT, SFrame) — implemented and test-covered, but not independently audited byte-for-byte against GNU output yet.
  • AArch64 disassembly via bad64 — real decode where supported, explicit hex-fallback (not a silent guess) elsewhere.
  • oxide-nm — flag matrix mostly aligned to GNU; -S semantics fix is landing under the 0.1.1 correctness pass.

Not working / not done — why this is "alpha"

  • strip/objcopy — ELF32 strip can silently no-op instead of failing loud; ELF64 strip is a hand-rolled rewrite without a full validation pass. Do not use as a default system strip/objcopy.
  • PE / Mach-O / Wasm — stub/summary-level only, no real parity.
  • oxide-as/oxide-ld scope — x86_64-only; no lazy PLT, no GOT-relative data imports, no full TLS/IFUNC matrix, no AVX/x87.
  • Test coverage — golden/integration tests against a real binutils 2.46.1 tree are still thin.

Full detail: CHANGELOG.md and docs/AUDIT-REPORT-BINUTILS-2.46.1.md in this tag.

Full Changelog: https://github.com/Zainium-Dynamics/oxideutils/commits/v0.1.0-alpha