nx_nxasm_neutral_gate.nx
buildroot/runtime/nx_nxasm_neutral_gate.nx
about
nx_nxasm_neutral_gate.nx -- DID ADDING THE FUNCTION-BOUNDS RECORDER CHANGE ONE EMITTED BYTE?
DDR-009 step 1 added a `.type NAME, @function` recorder to nxasm so .debug_info can later carry
DW_AT_low_pc/high_pc. It RECORDS ONLY and emits nothing, so every ELF nxasm produces must be
BYTE-IDENTICAL to before. DDR-002 section 5 is explicit that nxasm is the crown jewel below the
compiler and that changes to it land in steps which each carry their own proof -- the compiler's
equivalence gate cannot speak here, because its subject is the COMPILER.
Old = _offc/nxasm_x86_main.elf (the blessed 144,534-byte build, no recorder)
New = ../nxasm_x86_main.elf (148,308 bytes, recorder present)
Same .s in, byte-compare the ELFs out.
★ THE LOAD-BEARING TOOTH IS NOT "IDENTICAL" -- IT IS "THE RECORDER ACTUALLY RAN". A .s with no
.type directives would produce identical output from both assemblers while proving NOTHING,
which is the vacuous pass this estate keeps paying for. So the fixture is asserted to CONTAIN
.type directives before the comparison is believed.
license_tier: ORIGINAL expect_exit: 0
dependencies 2 imports · 0 importers
imports: syscalls.nxnx_gate_verdict.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 21 | const NN_CAP: i64 = 4194304 |
functions
| 23 | func nn_run_out(elf: *u8, args: *i64, nargs: i64, outfile: *u8) -> i64 called by 1: main |
| 43 | func nn_read(path: *u8, buf: *u8, cap: i64) -> i64 called by 1: main |
| 55 | func nn_has(b: *u8, n: i64, pat: *u8) -> i64 called by 1: main |
| 69 | func main() -> i64 |