docs: audit the development changelog against the release delta
Assisted-by: GLM 5.3 Flash
This commit is contained in:
+25
-33
@@ -20,9 +20,7 @@ Unreleased changes on the `development` branch.
|
|||||||
ptrace loops have not seen hardware yet.
|
ptrace loops have not seen hardware yet.
|
||||||
- **Headless debugging.** `gasm debug --script` runs REPL commands from a
|
- **Headless debugging.** `gasm debug --script` runs REPL commands from a
|
||||||
file (or stdin) and exits; `--timeout` kills the debuggee when a run
|
file (or stdin) and exits; `--timeout` kills the debuggee when a run
|
||||||
hangs, with the watchdog armed before the ptrace attach. `--cover` runs
|
hangs, with the watchdog armed before the ptrace attach.
|
||||||
to completion with a breakpoint on every label and reports which blocks
|
|
||||||
executed: label-level coverage for headless test runs.
|
|
||||||
- **Conditional breakpoints.** `break <label> if <reg> <op> <val>` now also
|
- **Conditional breakpoints.** `break <label> if <reg> <op> <val>` now also
|
||||||
compares two registers (`break loop if RAX > RBX`), not only a register
|
compares two registers (`break loop if RAX > RBX`), not only a register
|
||||||
against an immediate.
|
against an immediate.
|
||||||
@@ -31,40 +29,32 @@ Unreleased changes on the `development` branch.
|
|||||||
the hits per instruction and reports the executed instructions with
|
the hits per instruction and reports the executed instructions with
|
||||||
their hit counts, with the label coverage derived from the same run.
|
their hit counts, with the label coverage derived from the same run.
|
||||||
Expect the run to slow to ptrace speed.
|
Expect the run to slow to ptrace speed.
|
||||||
- **Debugger reliability fixes.** The ptrace session now drains runtime
|
|
||||||
signal-delivery-stops (a Go tracee reports SIGURG preemption to the
|
|
||||||
tracer) instead of mistaking them for the launch barrier, pins the
|
|
||||||
tracer thread the fork ran on (ptrace requests from another thread fail
|
|
||||||
with ESRCH), prefers the debuggee's reported code base over an RWX scan,
|
|
||||||
and single-steps over a hit breakpoint so resuming cannot re-trap on the
|
|
||||||
same instruction. A ptrace integration test
|
|
||||||
(`debug/ptrace_integration_test.go`) drives a real session end to end.
|
|
||||||
- **FP register display on riscv64 and loong64.** The debugger `regs`
|
- **FP register display on riscv64 and loong64.** The debugger `regs`
|
||||||
command shows the 32 FP registers plus fcsr (and fcc on loong64) via
|
command shows the 32 FP registers plus fcsr (and fcc on loong64) via
|
||||||
`PTRACE_GETREGSET`, where it previously printed nothing.
|
`PTRACE_GETREGSET`.
|
||||||
- **JIT execution trampolines.** `verify.Call` now works on all four
|
- **JIT execution trampolines.** `verify.Call` now works on all four
|
||||||
architectures via hand-written assembly trampolines
|
architectures via hand-written assembly trampolines
|
||||||
(`trampoline_{arm64,riscv64,loong64}.s`) that save the Go stack, switch
|
(`trampoline_{arm64,riscv64,loong64}.s`) that save the Go stack, switch
|
||||||
to a prepared stack, and branch to the JIT function.
|
to a prepared stack, and branch to the JIT function.
|
||||||
- **ABI checks on all architectures.** `gasm verify -abi` and the ABI
|
- **ABI checks on arm64, riscv64 and loong64.** `gasm verify -abi` and
|
||||||
half of `-fuzz` now work on arm64, riscv64 and loong64 via
|
the ABI half of `-fuzz` now cover the non-amd64 architectures via
|
||||||
per-architecture checked trampolines: sentinels planted in the
|
per-architecture checked trampolines: sentinels planted in the
|
||||||
registers the Go ABI fixes across calls (amd64 `BP`/`R14`, arm64
|
registers the Go ABI fixes across calls (arm64 `R29`/`R28`, riscv64
|
||||||
`R29`/`R28`, riscv64 `X27`, loong64 `R22`) are verified on return and
|
`X27`, loong64 `R22`; amd64 keeps `BP`/`R14`) are verified on return
|
||||||
the saved registers restored before Go code resumes, with the
|
and the saved registers restored before Go code resumes, with the
|
||||||
below-SP canary on every architecture. The root cause of the broken
|
below-SP canary on every architecture. loong64 kernels are verified
|
||||||
non-amd64 calls was a stack misalignment: the trampolines advanced SP
|
through the toolchain-comparison path only, pending hardware
|
||||||
past the linkage slot while the kernels read their first argument at
|
validation of their trampoline. `verify.Load` assembles each file
|
||||||
SP+8. riscv64 is validated end to end under qemu-user; arm64 shares
|
with the encoder its name suffix calls for. The `ABIReport` fields
|
||||||
the fix and matches the observed frame convention; loong64 stays
|
are the architecture-neutral `FPClobbered` and `GClobbered`.
|
||||||
ground-truth-only until hardware validation (the Go runtime cannot
|
|
||||||
start under the available loong64 emulators). `verify.Load` now
|
|
||||||
assembles each file with the encoder its name suffix calls for. The
|
|
||||||
`ABIReport` fields are renamed to the architecture-neutral
|
|
||||||
`FPClobbered` and `GClobbered`.
|
|
||||||
- **Hardware watchpoints on all architectures.** arm64 uses DBGWVR/DBGWCR
|
- **Hardware watchpoints on all architectures.** arm64 uses DBGWVR/DBGWCR
|
||||||
via `PTRACE_SETREGSET` with `NT_ARM_HW_BREAK`; riscv64 and loong64 use
|
via `PTRACE_SETREGSET` with `NT_ARM_HW_BREAK`; riscv64 and loong64 use
|
||||||
`PTRACE_POKEUSER` to access trigger/debug registers.
|
`PTRACE_POKEUSER` to access trigger/debug registers.
|
||||||
|
- **Cross-package GOOBJ resolution on arm64 and loong64.**
|
||||||
|
`AssembleFileARM64` and `AssembleFileLOONG64` mark external
|
||||||
|
relocations and populate `img.Externals`, so GOOBJ output from those
|
||||||
|
architectures resolves cross-package symbols like amd64 and riscv64
|
||||||
|
already do.
|
||||||
- **`gasm verify --args`.** Scalar arguments (`name=value`, decimal or
|
- **`gasm verify --args`.** Scalar arguments (`name=value`, decimal or
|
||||||
`0x` hex) can now be supplied to a `--call` invocation alongside `--buf`
|
`0x` hex) can now be supplied to a `--call` invocation alongside `--buf`
|
||||||
buffers, closing the gap where only buffers could be supplied.
|
buffers, closing the gap where only buffers could be supplied.
|
||||||
@@ -144,14 +134,18 @@ Unreleased changes on the `development` branch.
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- **Reliable ptrace sessions.** The debugger no longer mistakes runtime
|
||||||
|
signal-delivery-stops (a Go tracee reports SIGURG preemption to the
|
||||||
|
tracer) for its launch barrier, runs every ptrace request on the thread
|
||||||
|
that forked the debuggee (requests from another thread fail with
|
||||||
|
ESRCH), prefers the debuggee's reported code base over an RWX scan, and
|
||||||
|
single-steps over a hit breakpoint so resuming cannot re-trap on the
|
||||||
|
same instruction. A ptrace integration test
|
||||||
|
(`debug/ptrace_integration_test.go`) drives a real session end to end.
|
||||||
- **arm64 BL relocation.** `BL sym(SB)` now records a `RelArm64Branch`
|
- **arm64 BL relocation.** `BL sym(SB)` now records a `RelArm64Branch`
|
||||||
relocation instead of emitting a bare instruction with no relocation.
|
relocation instead of emitting a bare instruction with no relocation.
|
||||||
- **GOOBJ R_ADDRARM64 constant.** Corrected from 9 (`R_CALLARM64`) to 3
|
- **GOOBJ R_ADDRARM64 constant.** Corrected from 9 (`R_CALLARM64`) to 3
|
||||||
(`R_ADDRARM64`).
|
(`R_ADDRARM64`).
|
||||||
- **Cross-package GOOBJ resolution.** `AssembleFileRISCV`,
|
|
||||||
`AssembleFileLOONG64`, and `AssembleFileARM64` now mark external
|
|
||||||
relocations and populate `img.Externals`, enabling cross-package symbol
|
|
||||||
resolution in GOOBJ output.
|
|
||||||
- **Subprocess-isolated smoke and ABI sweeps.** A function that faults
|
- **Subprocess-isolated smoke and ABI sweeps.** A function that faults
|
||||||
during the `-smoke` or `-abi` sweep is reported without killing the
|
during the `-smoke` or `-abi` sweep is reported without killing the
|
||||||
parent; each sweep runs in a child process.
|
parent; each sweep runs in a child process.
|
||||||
@@ -162,8 +156,6 @@ Unreleased changes on the `development` branch.
|
|||||||
stack adjustment.
|
stack adjustment.
|
||||||
- **amd64 encoding parity.** A broad pass aligned the remaining encoder
|
- **amd64 encoding parity.** A broad pass aligned the remaining encoder
|
||||||
outputs and operand strictness with `go tool asm`.
|
outputs and operand strictness with `go tool asm`.
|
||||||
- **`gasm scaffold` parameter names.** Shared parameter names and
|
|
||||||
two-sided seed sets in the generated skeleton are now correct.
|
|
||||||
- **asm help text.** Updated to list arm64 as a supported architecture.
|
- **asm help text.** Updated to list arm64 as a supported architecture.
|
||||||
|
|
||||||
## [0.31.1] — 2026-08-20
|
## [0.31.1] — 2026-08-20
|
||||||
|
|||||||
Reference in New Issue
Block a user