diff --git a/CLAUDE.md b/CLAUDE.md index afacf38..133f6b0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -775,7 +775,13 @@ UCI (`cfg/c64-https-uci.cfg`, W1 hot/cold split — the reference): at $BA00 so sqtab lands at $BC00 (LIB_SHARED_SQTAB_BASE, asserted post-link) - $C000-$DFFF OVERLAY_FILE_PAD zero-pad; runtime TCP ring at $C000 + $C000-$CFFF (no region) TCP ring by equate; not in the PRG, + except comb's COLD_IMAGE (cold bank) + — the PRG ends $BFFF; comb with the + cold bank (COLD_BANK=1) ends $CFFF + $D000-$DFFF I/O never in the PRG: a KERNAL LOAD would + store into the registers (#288, + `tools/test_prg_io_range.py`) ip65 (`cfg/c64-https-ip65.cfg`): @@ -844,9 +850,10 @@ is LibreSSL and cannot serve this client) and `--selftest` proves the path with `openssl s_client -ciphersuites TLS_CHACHA20_POLY1305_SHA256`. `make package-verify` rebuilds and compares **PRG** hashes, reads each PRG -back out of its .d64 with `c1541`, boots each image in VICE -(`-trapdevice8 +drive8truedrive`, or the load never finishes), and runs the -listener selftest. A failed variant yields a partial release with an +back out of its .d64 with `c1541`, boots each image in VICE through a +real serial LOAD under true drive emulation (#288 — a poll that halts the +6510 between reads must `resume()` AFTER reading, or the load "never +finishes"), and runs the listener selftest. A failed variant yields a partial release with an `!! INCOMPLETE RELEASE !!` MANIFEST block, and the gate cannot pass vacuously (zero checks = fail; any `SKIP_*` = `PARTIAL VERIFICATION`). diff --git a/Makefile b/Makefile index 99867aa..409c9e4 100644 --- a/Makefile +++ b/Makefile @@ -504,6 +504,11 @@ $(PRG): $(PRG_DEPS) @grep -q '^al C:BC00 \.sqtab_lo' $(LABELS) || \ { echo 'ERROR: sqtab_lo is not at $$BC00 — TABLES_BSS layout drifted; realign LIB_SHARED_SQTAB_BASE in tools/integration/build_x25519.sh and build_nistcurves_p256.sh'; \ grep ' \.sqtab_lo$$' $(LABELS); exit 1; } + @la=$$(od -An -tu1 -N2 $@ | awk 'NR==1 {print $$1 + 256 * $$2}'); \ + end=$$(( la + $$(wc -c < $@) - 3 )); \ + if [ $$end -ge 53248 ] && [ $$la -le 57343 ]; then \ + echo "ERROR: $@ loads $$(printf '$$%04X-$$%04X' $$la $$end), into the I/O page at \$$D000-\$$DFFF: a KERNAL LOAD would store into the chip registers (#288, tools/check_prg_io_range.py)"; \ + rm -f $@; exit 1; fi ifeq ($(TRUST_RELEASE)$(TRUST_BUNDLE),11) @python3 tools/check_release_key.py $@ || { rm -f $@; exit 1; } endif diff --git a/README.md b/README.md index 9d7e105..f6b4991 100644 --- a/README.md +++ b/README.md @@ -346,8 +346,10 @@ $A000-$BFFF CRYPTO_COLD_SHADOW 8 KB BSS (same tenants as ip65, less cert_buf — which sits in CRYPTO_OVERLAY under UCI, at 2,048 B against ip65's 1,536 B) -$C000-$DFFF OVERLAY_FILE_PAD zero-pad in the PRG; at runtime the - 4 KB TCP_BUF ring lives at $C000 +$C000-$CFFF (no region) the 4 KB TCP ring, by equate; not in + the PRG, except uci-comb's cold-code + image, which boot stashes to the REU +$D000-$DFFF I/O never in the PRG (#288) ``` `CRYPTO_OVERLAY` is not empty in any shipped UCI image — it holds the @@ -369,9 +371,11 @@ one pool and moving segments between them creates nothing. `uci-onchip` is the roomy one, and only because it ships neither the comb tables nor the comb rodata; `uci-comb`'s `CRYPTO_OVERLAY` tail is small. -**PRG size is not a headroom gauge.** Both UCI products are 62,977 B and both -ip65 profiles are 47,105 B, because the ld65 configs mark the inter-region -gaps `fill = yes` so load addresses stay right. Re-measure from the map. +**PRG size is not a headroom gauge.** Every image ending at $BFFF is +47,105 B (both ip65 profiles, `uci-onchip`) and `uci-comb`, whose cold-code +image runs to $CFFF, is 51,201 B, because the ld65 configs mark the +inter-region gaps `fill = yes` so load addresses stay right. Re-measure from +the map. No segment may cross $A000: boot zeroes $A000-$BFFF as BSS, so anything executable there would be wiped on first call. @@ -495,17 +499,17 @@ it is supposed to detect. ## Project Status Current status of the three shipped products (re-measured at the -`libs/nistcurves` v0.14.0 pin with cc65 from Homebrew; `make clean` before each, then `stat` the PRG and +`libs/nistcurves` v0.15.0 pin with cc65 from Homebrew; `make clean` before each, then `stat` the PRG and `grep -c '^al ' build/labels.txt`): | product | PRG | labels | |---|---:|---:| -| `c64-https-ip65-onchip` | 47,105 B | 2,395 | -| `c64-https-uci-onchip` | 62,977 B | 2,726 | -| `c64-https-uci-comb` | 62,977 B | 2,859 | +| `c64-https-ip65-onchip` | 47,105 B | 2,420 | +| `c64-https-uci-onchip` | 47,105 B | 2,939 | +| `c64-https-uci-comb` | 51,201 B | 3,181 | The unshipped default profiles land on the same two PRG sizes (47,105 B / -62,977 B) with fewer labels, which is the point: **the PRG size is not a +51,201 B) with fewer labels, which is the point: **the PRG size is not a code-size measurement and not a headroom gauge.** Much of each image is deliberate zero fill, because the ld65 configs mark the inter-region gaps `fill = yes` so the load addresses stay right. Two different builds sharing a diff --git a/cfg/c64-https-uci-onchip-cold.cfg b/cfg/c64-https-uci-onchip-cold.cfg index ed5f57e..a897e1c 100644 --- a/cfg/c64-https-uci-onchip-cold.cfg +++ b/cfg/c64-https-uci-onchip-cold.cfg @@ -10,7 +10,7 @@ # run there, one at a time. (P256_SCRATCH_UNION sits there too; a cold # group never calls ecdsa_verify — the Makefile refuses TRUST_BUNDLE=1 # here, and src/net/uci/trust_bundle.s asserts it.) -# * COLD_IMAGE ($C000-$CFFF, the head of the old OVERLAY_FILE_PAD) is +# * COLD_IMAGE ($C000-$CFFF, the PRG's last file-backed area) is # where the PRG carries them, back to back; boot stashes it into the # REU before anything touches the TCP ring that shares the range. # * TARGET_PROMPT_CODE (+ TRUST_BUNDLE_CODE) + COLD_TAIL_UI, and @@ -92,10 +92,10 @@ # $01=$36; the large zero-init BSS — # BSS / CRYPTO_BSS / BSS_TAIL, and # TABLES_BSS pinned at $BA00) -# $C000-$DFFF : OVERLAY_FILE_PAD (zero-pad; tcp_recv_buf's 4 KB ring -# lives at $C000 inside this range, by -# equate — the separate TCP_BUF region -# was removed in Phase 3) +# $C000-$CFFF : TCP ring (tcp_recv_buf, 4 KB, by equate in +# src/constants.inc; RAM, no region) +# $D000-$DFFF : I/O (never in the PRG: a KERNAL LOAD +# would write the registers, #288) # # The W1 hot/cold split below DID happen: the note that used to stand here # saying the bumped library "does not fit that partition" described an @@ -234,34 +234,23 @@ MEMORY { # asserted equal to tls_rec_buf in src/crypto/x25519_tables.s. X25519_SCRATCH: start = $A000, size = $0224, type = rw, define = yes; - # File-backed zero pad from $C000. It was added (Phase 3) so the P-384 - # curve blob, the next region, landed at $E000; P-384 is retired and - # that region is gone, but the pad stays: removing it changes what a - # PRG load writes over $C000-$DFFF, which is its own change. $C000-$CFFF is TCP_BUF - # at runtime (RAM, populated by ip65/UCI rx callback after net - # init); the zero-fill PRG-load write is harmless because TCP_BUF - # is zero-initialised at first use anyway. $D000-$DFFF is I/O on - # a real C64 + 1541 the PRG load WOULD momentarily corrupt VIC / - # SID / CIA registers; production targets are VICE warp + U64 - # fastload, both of which inject bytes directly to RAM and bypass - # CPU I/O writes during PRG load. # Cold bank: the PRG's copy of the cold groups (src/net/uci/cold_bank.s), - # back to back; boot stashes it into the REU. The head of what was - # OVERLAY_FILE_PAD, and of the TCP ring's range. + # back to back; boot stashes it into the REU before the first connect + # reuses the range as the TCP ring. COLD_IMAGE: start = $C000, size = $1000, file = %O, define = yes, fill = yes, fillval = $00; - OVERLAY_FILE_PAD: start = $D000, size = $1000, file = %O, define = yes, fill = yes, fillval = $00; # Where each cold group runs: cert_buf, pinned below. Not file-backed. COLD_RUN_UI: start = $4200, size = $0800, type = rw, define = yes; COLD_RUN_TRUST: start = $4200, size = $0800, type = rw, define = yes; - # NOTE: the historical TCP_BUF MEMORY region at $C000-$CFFF was - # removed in Phase 3 -- the actual TCP rx ring is just the - # `tcp_recv_buf = $c000` equate in src/constants.inc and the bytes - # at runtime live inside OVERLAY_FILE_PAD's address range. PRG - # load zeros the ring; the rx callback overwrites it after net - # init. The optional TCP_RECV_BUF segment was also dropped from - # SEGMENTS below (no .s file references the segment name; the - # buffer is addressed via the equate, not via a segment label). + # The PRG ends at $CFFF, COLD_IMAGE's last byte (#288). + # Nothing above it is file-backed. A zero pad used to run on to $DFFF + # (it put the retired P-384 curve blob at $E000), so a KERNAL LOAD + # wrote zeros into the VIC/SID/CIA registers at $D000-$DFFF; + # tools/test_prg_io_range.py fails if a PRG reaches $D000 again. + # The TCP rx ring is the `tcp_recv_buf = $c000` equate in + # src/constants.inc, not a region: net_tcp_connect empties it + # (head = tail = 0) and nothing reads a byte net_poll did not write, + # so what the load left there never mattered. } # --- Region occupancy ------------------------------------------------------- diff --git a/cfg/c64-https-uci-onchip.cfg b/cfg/c64-https-uci-onchip.cfg index 382e5a4..2c94376 100644 --- a/cfg/c64-https-uci-onchip.cfg +++ b/cfg/c64-https-uci-onchip.cfg @@ -71,10 +71,10 @@ # $01=$36; the large zero-init BSS — # BSS / CRYPTO_BSS / BSS_TAIL, and # TABLES_BSS pinned at $BA00) -# $C000-$DFFF : OVERLAY_FILE_PAD (zero-pad; tcp_recv_buf's 4 KB ring -# lives at $C000 inside this range, by -# equate — the separate TCP_BUF region -# was removed in Phase 3) +# $C000-$CFFF : TCP ring (tcp_recv_buf, 4 KB, by equate in +# src/constants.inc; RAM, no region) +# $D000-$DFFF : I/O (never in the PRG: a KERNAL LOAD +# would write the registers, #288) # # The W1 hot/cold split below DID happen: the note that used to stand here # saying the bumped library "does not fit that partition" described an @@ -213,27 +213,15 @@ MEMORY { # asserted equal to tls_rec_buf in src/crypto/x25519_tables.s. X25519_SCRATCH: start = $A000, size = $0224, type = rw, define = yes; - # File-backed zero pad from $C000. It was added (Phase 3) so the P-384 - # curve blob, the next region, landed at $E000; P-384 is retired and - # that region is gone, but the pad stays: removing it changes what a - # PRG load writes over $C000-$DFFF, which is its own change. $C000-$CFFF is TCP_BUF - # at runtime (RAM, populated by ip65/UCI rx callback after net - # init); the zero-fill PRG-load write is harmless because TCP_BUF - # is zero-initialised at first use anyway. $D000-$DFFF is I/O on - # a real C64 + 1541 the PRG load WOULD momentarily corrupt VIC / - # SID / CIA registers; production targets are VICE warp + U64 - # fastload, both of which inject bytes directly to RAM and bypass - # CPU I/O writes during PRG load. - OVERLAY_FILE_PAD: start = $C000, size = $2000, file = %O, define = yes, fill = yes, fillval = $00; - - # NOTE: the historical TCP_BUF MEMORY region at $C000-$CFFF was - # removed in Phase 3 -- the actual TCP rx ring is just the - # `tcp_recv_buf = $c000` equate in src/constants.inc and the bytes - # at runtime live inside OVERLAY_FILE_PAD's address range. PRG - # load zeros the ring; the rx callback overwrites it after net - # init. The optional TCP_RECV_BUF segment was also dropped from - # SEGMENTS below (no .s file references the segment name; the - # buffer is addressed via the equate, not via a segment label). + # The PRG ends at $BFFF, CRYPTO_COLD_SHADOW's last byte (#288). + # Nothing above it is file-backed. A zero pad used to run on to $DFFF + # (it put the retired P-384 curve blob at $E000), so a KERNAL LOAD + # wrote zeros into the VIC/SID/CIA registers at $D000-$DFFF; + # tools/test_prg_io_range.py fails if a PRG reaches $D000 again. + # The TCP rx ring is the `tcp_recv_buf = $c000` equate in + # src/constants.inc, not a region: net_tcp_connect empties it + # (head = tail = 0) and nothing reads a byte net_poll did not write, + # so what the load left there never mattered. } # --- Region occupancy ------------------------------------------------------- diff --git a/cfg/c64-https-uci.cfg b/cfg/c64-https-uci.cfg index b3c6bf5..769f933 100644 --- a/cfg/c64-https-uci.cfg +++ b/cfg/c64-https-uci.cfg @@ -31,11 +31,10 @@ # $01=$36; the large zero-init BSS — # BSS / CRYPTO_BSS / BSS_TAIL, and # TABLES_BSS pinned at $BA00) -# $C000-$DFFF : OVERLAY_FILE_PAD (zero-pad; tcp_recv_buf's 4 KB ring -# lives at $C000 inside this range, by -# equate — the separate TCP_BUF region -# was removed in Phase 3, see the note -# in the MEMORY block) +# $C000-$CFFF : TCP ring (tcp_recv_buf, 4 KB, by equate in +# src/constants.inc; RAM, no region) +# $D000-$DFFF : I/O (never in the PRG: a KERNAL LOAD +# would write the registers, #288) # # The W1 hot/cold split below DID happen: the note that used to stand here # saying the bumped library "does not fit that partition" described an @@ -169,27 +168,15 @@ MEMORY { # asserted equal to tls_rec_buf in src/crypto/x25519_tables.s. X25519_SCRATCH: start = $A000, size = $0224, type = rw, define = yes; - # File-backed zero pad from $C000. It was added (Phase 3) so the P-384 - # curve blob, the next region, landed at $E000; P-384 is retired and - # that region is gone, but the pad stays: removing it changes what a - # PRG load writes over $C000-$DFFF, which is its own change. $C000-$CFFF is TCP_BUF - # at runtime (RAM, populated by ip65/UCI rx callback after net - # init); the zero-fill PRG-load write is harmless because TCP_BUF - # is zero-initialised at first use anyway. $D000-$DFFF is I/O on - # a real C64 + 1541 the PRG load WOULD momentarily corrupt VIC / - # SID / CIA registers; production targets are VICE warp + U64 - # fastload, both of which inject bytes directly to RAM and bypass - # CPU I/O writes during PRG load. - OVERLAY_FILE_PAD: start = $C000, size = $2000, file = %O, define = yes, fill = yes, fillval = $00; - - # NOTE: the historical TCP_BUF MEMORY region at $C000-$CFFF was - # removed in Phase 3 -- the actual TCP rx ring is just the - # `tcp_recv_buf = $c000` equate in src/constants.inc and the bytes - # at runtime live inside OVERLAY_FILE_PAD's address range. PRG - # load zeros the ring; the rx callback overwrites it after net - # init. The optional TCP_RECV_BUF segment was also dropped from - # SEGMENTS below (no .s file references the segment name; the - # buffer is addressed via the equate, not via a segment label). + # The PRG ends at $BFFF, CRYPTO_COLD_SHADOW's last byte (#288). + # Nothing above it is file-backed. A zero pad used to run on to $DFFF + # (it put the retired P-384 curve blob at $E000), so a KERNAL LOAD + # wrote zeros into the VIC/SID/CIA registers at $D000-$DFFF; + # tools/test_prg_io_range.py fails if a PRG reaches $D000 again. + # The TCP rx ring is the `tcp_recv_buf = $c000` equate in + # src/constants.inc, not a region: net_tcp_connect empties it + # (head = tail = 0) and nothing reads a byte net_poll did not write, + # so what the load left there never mattered. } # --- Region occupancy ------------------------------------------------------- diff --git a/docs/engineering-notes.md b/docs/engineering-notes.md index a9dbafc..3ef78bc 100644 --- a/docs/engineering-notes.md +++ b/docs/engineering-notes.md @@ -2568,7 +2568,9 @@ UCI layout (W1 reference — `cfg/c64-https-uci.cfg`): BSS chunks (BSS, CRYPTO_BSS, TABLES_BSS, BSS_TAIL). $C000-$DFFF OVERLAY_FILE_PAD Zero-pad in the PRG; runtime: TCP_BUF - ring at $C000. + ring at $C000. (Dropped by #288: the + PRG now ends at $BFFF, comb at $CFFF + — see Packaging for why it mattered.) $E000-$FDFF OVERLAY_BLOB_CURVE_RAM P-384 CURVE overlay blob; boot DMAs it to REU bank 7 then this region is @@ -2816,10 +2818,55 @@ byte-compares, boots every image in VICE asserting the banner, and runs the listener selftest. `SKIP_REBUILD` / `SKIP_VICE` / `SKIP_LISTENER` narrow it. -Booting a .d64 in VICE needs `-trapdevice8 +drive8truedrive`: under true -drive emulation the ~250-block load never completes inside any sane -budget, and the symptom is a screen stuck on `LOADING` that looks like a -bad image rather than a slow one. `verify_release.py` passes both flags. +Booting a .d64 in VICE used to need `-trapdevice8 +drive8truedrive`: +under true drive emulation (TDE) the load "never completed", the screen +stuck on `LOADING`. **Superseded by #288 (2026-10-12): `verify_release.py` +now boots every image through a real serial LOAD under TDE +(`-drive8truedrive +trapdevice8 +autostart-handle-tde`).** The old +statement had two causes, separated by measurement: + + - **The poll halted the machine.** Every binary-monitor command halts + the 6510 until `resume()`, and the loop did `sleep; resume; read`, so + VICE sat stopped through every sleep (0.0% CPU in `ps`) and ran only + in the gap between resume and read. A KERNAL trap load finishes in one + such slice; a TDE load crawled at ~0.5 B/s ($AE/$AF sampled every 15 s: + $0B54 → $0BF8 in 377 s) on every image, the ip65 control included. + The loop now reads, then resumes. + - **The UCI images loaded into I/O.** With the machine running + (read-then-resume probe, 10 s samples, VICE via c64-test-harness, + NTSC, warp, REU on), every 55,297 B image ending at $DFFF froze with + the load pointer inside CIA1's page, and every image ending at or + below $CFFF loaded. Which register write stops it was not isolated. + Store builds = `BACKEND=uci USE_NISTCURVES_ONCHIP=1 TRUST_STORE=1 + TRUST_RELEASE=1` (onchip) and `... USE_NISTCURVES_ONCHIP_COMB=1 ...` + (comb); TRUST_RELEASE does not move these hashes. + + | tree | image | PRG | TDE result | + |---|---|---|---| + | 3f420f2 (nistcurves v0.14.0), pad | onchip-store | `a3fdc772…` | frozen at $DC06, 900 s | + | 3f420f2, pad | comb-store | `6a5a2993…` | frozen at $DC09, 600 s | + | b4a88b1 (pad dropped, v0.14.0) | onchip-store | `5571c41c…` | banner 21 s | + | b4a88b1 | comb-store | `4c23bc3d…` | banner 21 s | + | b4a88b1 | ip65-onchip | `b262f3f9…` | menu 21 s | + | 17654bf (v0.15.0), pad | onchip-store | `7059930a…` | frozen at $DC0A, 300 s | + | 17654bf, pad | comb-store | `936884e9…` | frozen at $DC0A, 300 s | + | this branch (v0.15.0) | onchip-store | `fd37600b…` | banner 21 s | + | this branch | comb-store | `025af934…` | banner 21 s | + + `make package-verify` with the new boot step, on this branch's + images (`810f1158…`, `fd37600b…`, `025af934…`), on the #288 branch's + final commit: 14/14 checks (3 reproducibility, 3 dist-PRG load + ranges in step 1b, 3 d64 contents, 3 boots under TDE with the drive + setup read back, 2 listener), RELEASE ARTIFACTS VERIFIED; banners at + 10 s each. The pre-rebase images do not reproduce at the rebased + commits (the nistcurves pin moved), which is why both sets are listed. + +The hypothesis filed with #288 named CIA2 ($DD00/$DD02, the IEC lines); +the measured stops are in CIA1's page ($DC06, $DC09, $DC0A), before $DD00 +is reached. On a U64 the DMA load (`Ultimate64Client.load_prg`) of the +old image left $D020/$D021/$DC02/$DC03/$DD02 unchanged (measured in +review), so there only RAM changes. Probe scripts were scratch +(`probe2.py`), not committed. **The comb profile now SHIPS** (`uci-comb`). It was excluded from the lineup while its costs — REU bank 2 residency plus the boot precompute — diff --git a/docs/library-ingestion-architecture.md b/docs/library-ingestion-architecture.md index 16dbbc2..d76326b 100644 --- a/docs/library-ingestion-architecture.md +++ b/docs/library-ingestion-architecture.md @@ -16,7 +16,7 @@ This document proposes a structural refactor of c64-https so that future library | CRYPTO_OVERLAY | 49 ($6000, **0 B alias**) | 47 ($4200, **7.5 KB**, $1E00) | ip65 has no overlay slot. UCI's slot is the only spare for X25519_RODATA/BSS under USE_X25519_SIBLING=1 | | CRYPTO_RESIDENT | 43 ($6000, **24 KB**) | 48 (identical) | The pressure point — Phase C.4 already moved TLS_CODE + sha256/hmac_drbg out to fit P-256 sibling. CLAUDE.md:570 records "**CRYPTO is 100% full**" | | SHADOW_BSS | folded into CRYPTO_RESIDENT (43) | folded into CRYPTO_RESIDENT (48) | ip65 cfg comment line 6: "covers old CRYPTO + SHADOW_BSS span" | -| TCP_BUF | 60 ($C000, 4 KB) | repurposed as OVERLAY_FILE_PAD (62); runtime equate-only | UCI fills $C000–$DFFF with zeros at PRG load only to make the under-KERNAL CURVE_RAM image land at $E000 | +| TCP_BUF | 60 ($C000, 4 KB) | repurposed as OVERLAY_FILE_PAD (62); runtime equate-only | (historical) UCI filled $C000–$DFFF with zeros at PRG load only to make the under-KERNAL CURVE_RAM image land at $E000; the pad was dropped by #288 and no image loads above $BFFF ($CFFF for the comb cold bank) | | OVERLAY_BLOB_CURVE_RAM | 58 (zero-size alias) | 68 ($E000, 7.5 KB; DMA'd to REU bank 7 at boot) | P-384 staging — ip65 has no room for the embedded blob | Already-existing fragility points the bot would hit: @@ -24,7 +24,7 @@ Already-existing fragility points the bot would hit: - **CRYPTO_OVERLAY** is *simultaneously* the P-384 SHA-384/Curve overlay-paging slot (Phase 5), the test-time scratch slot for `tools/test_p384_symbols.py`, AND the resident home for sibling X25519 rodata under USE_X25519_SIBLING=1. The collision is documented in `cfg/c64-https-uci.cfg:127-128` and `src/crypto/shared/crypto_swap.s:166-171`: once a P-384 swap occurs, the X25519 sibling rodata is *gone* (no stash). c64-https gets away with it today only because the production TLS path never uses P-384. - **ip65 backend** is structurally incapable of holding the X25519 sibling: `cfg/c64-https-ip65.cfg:100-109` and `CLAUDE.md:400-402` confirm the 1 KB overflow. - **CRYPTO_RESIDENT is 100% full** today (CLAUDE.md:569-570), and any upstream bump that adds bytes — even a 10-byte defensive REU register init — will overflow. The nistcurves v0.2.0 → v0.3.0 bump triggered exactly this on 2026-05-19. -- The MEMORY layout has historic dead zones (`$C000-$DFFF` zero-filled into the PRG just for the file offset) that the Phase 6 commit explicitly defers as "follow-up". +- The MEMORY layout had historic dead zones (`$C000-$DFFF` zero-filled into the PRG just for the file offset) that the Phase 6 commit deferred as "follow-up"; #288 removed them. ### 1.2 Integration friction — the sed problem diff --git a/pytest.ini b/pytest.ini index 5684b6b..986fd7c 100644 --- a/pytest.ini +++ b/pytest.ini @@ -63,6 +63,7 @@ testpaths = tools/test_net_test_env.py tools/test_package_verify.py tools/test_pins.py + tools/test_prg_io_range.py tools/test_prg_load.py tools/test_pytest_boundary.py tools/test_reu_preflight.py diff --git a/tools/check_prg_io_range.py b/tools/check_prg_io_range.py new file mode 100644 index 0000000..80deb69 --- /dev/null +++ b/tools/check_prg_io_range.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python3 +"""check_prg_io_range.py -- no image may load into the I/O page (#288). + +A KERNAL LOAD (disk, .d64, a real 1541) stores every byte of a PRG with +the CPU, and with the default $01 every byte at $D000-$DFFF lands in a +chip register (VIC-II, SID, colour RAM, the CIAs). Measured in VICE under +true drive emulation, the old 55,297 B UCI images froze the load with its +pointer in CIA1's page ($DC06, $DC09 and $DC0A observed). On a U64 the DMA +load (Ultimate64Client.load_prg) of the old image left $D020/$D021/ +$DC02/$DC03/$DD02 unchanged, so there only RAM changes. + +Two checks, both pure: + + cfg where each file-backed MEMORY area of an ld65 cfg LOADS, from file + order: the first area writing the output file is the two-byte load + address header (start + 2 is the load address), and each later area + lands at the load address plus the bytes written before it. A + `fill = yes` area writes its whole size; any other area writes up to + its size if a segment that is not bss/zp loads into it, else + nothing. Sizes and starts may be expressions, and `fill` may be + yes/no/true/false or a numeric expression. It fails closed (an + error, never a pass) on: an entry, attribute, expression or boolean + it cannot parse; a missing MEMORY or SEGMENTS block, or more than + one of either; an area without start/size; a segment without load; + a first writing area that is not a 2-byte header. Attributes it + does not model (align, define, a MEMORY area's type, ...) are + ignored. + PRG a linked PRG's load range: load address + body length. + + python3 tools/check_prg_io_range.py [--cfg CFG ...] [PRG ...] + +Exit 0 clean, 1 an image reaches the I/O page or an input could not be +checked. tools/test_prg_io_range.py is its test (pytest testpaths); +make package-verify runs the PRG half on every dist/*.prg. +""" +from __future__ import annotations + +import ast +import re +import sys +from pathlib import Path + +IO_LO, IO_HI = 0xD000, 0xDFFF # inclusive +NO_OUTPUT_TYPES = {"bss", "zp"} + + +class CfgError(ValueError): + """The cfg has a shape this checker does not understand.""" + + +# --- expression evaluation ---------------------------------------------------- +_ALLOWED = (ast.Expression, ast.BinOp, ast.UnaryOp, ast.Constant, ast.Add, + ast.Sub, ast.Mult, ast.FloorDiv, ast.Div, ast.USub, ast.UAdd) + + +def eval_expr(text: str) -> int: + """Evaluate an ld65 numeric expression: $hex, %bin, decimal, + - * / ().""" + src = text.strip() + if not src: + raise CfgError("empty expression") + py = re.sub(r"\$([0-9A-Fa-f]+)", r"0x\1", src) + py = re.sub(r"%([01]+)\b", r"0b\1", py) + py = py.replace("/", "//") + try: + tree = ast.parse(py, mode="eval") + except SyntaxError as e: + raise CfgError(f"cannot parse expression {text!r}") from e + for node in ast.walk(tree): + if not isinstance(node, _ALLOWED) or ( + isinstance(node, ast.Constant) and not isinstance(node.value, int)): + raise CfgError(f"cannot evaluate expression {text!r}") + return int(eval(compile(tree, "", "eval"), {"__builtins__": {}})) + + +def _bool(text: str, what: str) -> bool: + """An ld65 boolean: yes/no/true/false, or a numeric expression.""" + word = text.strip().lower() + if word in ("yes", "true"): + return True + if word in ("no", "false"): + return False + try: + return eval_expr(text) != 0 + except CfgError as e: + raise CfgError(f"{what}: not a boolean: {text!r}") from e + + +# --- cfg parsing ---------------------------------------------------------------- +def _block(text: str, name: str) -> str: + heads = list(re.finditer(r"\b" + name + r"\s*\{", text)) + if not heads: + raise CfgError(f"no {name} block") + if len(heads) > 1: + raise CfgError(f"{len(heads)} {name} blocks; this checker reads one") + m = heads[0] + end = text.find("}", m.end()) + if end < 0: + raise CfgError(f"{name} block is not closed") + return text[m.end():end] + + +def _entries(block: str, what: str) -> list[tuple[str, dict[str, str]]]: + """`NAME: key = value, ...;` entries, newlines anywhere.""" + out = [] + for raw in block.split(";"): + body = " ".join(raw.split()) + if not body: + continue + m = re.fullmatch(r"([A-Za-z_][A-Za-z0-9_]*)\s*:\s*(.*)", body) + if not m: + raise CfgError(f"cannot parse {what} entry {body!r}") + attrs = {} + for part in m.group(2).split(","): + kv = part.split("=", 1) + if len(kv) != 2 or not kv[0].strip(): + raise CfgError(f"{m.group(1)}: cannot parse attribute {part.strip()!r}") + attrs[kv[0].strip().lower()] = kv[1].strip() + out.append((m.group(1), attrs)) + if not out: + raise CfgError(f"{what} block has no entries") + return out + + +def load_map(cfg_text: str) -> list[dict]: + """Each output-writing area of the main output file, with the address + range its bytes LOAD to (upper bound for a non-fill area).""" + text = re.sub(r"#[^\n]*", "", cfg_text) + areas = _entries(_block(text, "MEMORY"), "MEMORY") + segs = _entries(_block(text, "SEGMENTS"), "SEGMENTS") + loaded_types: dict[str, set[str]] = {} + for name, a in segs: + if "load" not in a: + raise CfgError(f"segment {name} has no load =") + loaded_types.setdefault(a["load"], set()).add(a.get("type", "ro").lower()) + + out, load_addr, off = [], None, 0 + for name, a in areas: + if a.get("file", "%O") != "%O": # "" or another output file + continue + try: + start, size = eval_expr(a["start"]), eval_expr(a["size"]) + except KeyError as e: + raise CfgError(f"area {name} has no {e.args[0]} =") from e + fill = _bool(a.get("fill", "no"), f"area {name} fill") + writes = fill or bool(loaded_types.get(name, set()) - NO_OUTPUT_TYPES) + if not writes: + continue + if load_addr is None: + if size != 2: + raise CfgError(f"first output area {name} is {size} B, not a " + "2-byte load-address header") + load_addr = start + size + continue + lo = load_addr + off + out.append({"name": name, "lo": lo, "hi": lo + size - 1, "fill": fill}) + off += size + if load_addr is None: + raise CfgError("no area writes the output file") + return out + + +def cfg_io_violations(cfg_text: str) -> list[str]: + """Output-writing areas whose bytes would load into $D000-$DFFF.""" + return [f"{a['name']} loads ${a['lo']:04X}-${a['hi']:04X}" + + ("" if a["fill"] else " (upper bound)") + for a in load_map(cfg_text) if not (a["hi"] < IO_LO or a["lo"] > IO_HI)] + + +# --- PRG ---------------------------------------------------------------------- +def prg_range(prg: bytes) -> tuple[int, int]: + if len(prg) < 3: + raise ValueError(f"PRG is {len(prg)} bytes") + la = prg[0] | prg[1] << 8 + return la, la + len(prg) - 3 + + +def prg_io_violation(prg: bytes) -> str | None: + lo, hi = prg_range(prg) + if hi < IO_LO or lo > IO_HI: + return None + return f"loads ${lo:04X}-${hi:04X}, into ${max(lo, IO_LO):04X}-${min(hi, IO_HI):04X}" + + +def main(argv: list[str]) -> int: + cfgs, prgs, it = [], [], iter(argv) + for a in it: + if a == "--cfg": + cfgs.append(Path(next(it))) + else: + prgs.append(Path(a)) + if not cfgs and not prgs: + print("usage: check_prg_io_range.py [--cfg CFG ...] [PRG ...]", + file=sys.stderr) + return 1 + bad = 0 + for p in cfgs: + try: + v = cfg_io_violations(p.read_text()) + except (OSError, CfgError) as e: + v = [f"cannot check: {e}"] + for line in v: + print(f"ERROR: {p}: {line}") + bad += bool(v) + for p in prgs: + try: + v = prg_io_violation(p.read_bytes()) + except (OSError, ValueError) as e: + v = f"cannot check: {e}" + if v: + print(f"ERROR: {p}: {v}") + bad += bool(v) + return 1 if bad else 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/tools/measure_margins.py b/tools/measure_margins.py index e3c2c2c..1016939 100644 --- a/tools/measure_margins.py +++ b/tools/measure_margins.py @@ -21,8 +21,7 @@ that another region overlaps (ip65's SCRATCH_UNION inside CRYPTO_COLD_SHADOW) counts the union's tenants as occupying it. A region with no segments at all is reported as EMPTY to ld65, which is NOT -headroom: ip65's NET_BSS is the blob's own BSS and the UCI -OVERLAY_FILE_PAD holds the TCP ring by equate. +headroom: ip65's NET_BSS is the blob's own BSS. Usage: diff --git a/tools/package/verify_release.py b/tools/package/verify_release.py index dd37e87..5a47e5c 100755 --- a/tools/package/verify_release.py +++ b/tools/package/verify_release.py @@ -49,6 +49,29 @@ results: list[tuple[str, bool, str]] = [] +# The boot gate's drive setup (#288): a real serial LOAD under true drive +# emulation, never the KERNAL traps. The flags are what VICE is told; the +# resources are what it ended up with, read back from the running instance +# so a reverted or overridden flag fails the gate instead of quietly +# loading through the traps again. +TDE_ARGS = ("-drive8truedrive", "+trapdevice8", "+autostart-handle-tde") +TDE_RESOURCES = {"Drive8TrueEmulation": 1, "TrapDevice8": 0, + "AutostartHandleTrueDriveEmulation": 0} + + +def tde_resource_problems(resource_get) -> list[str]: + """Each TDE_RESOURCES entry the instance does not hold, as text.""" + out = [] + for name, want in TDE_RESOURCES.items(): + try: + got = resource_get(name) + except Exception as exc: # noqa: BLE001 + out.append(f"{name}: unreadable ({type(exc).__name__})") + continue + if got != want: + out.append(f"{name}={got!r}, want {want}") + return out + def record(name: str, ok: bool, detail: str = "") -> bool: results.append((name, ok, detail)) @@ -113,6 +136,26 @@ def check_reproducible(variants: list[dict]) -> None: f"{again[:16]}… vs {rec['sha256'][:16]}…") +def check_prg_ranges(variants: list[dict]) -> None: + """No dist PRG may load into the $D000-$DFFF I/O page (#288).""" + print("\n=== 1b. PRG load ranges stay off the I/O page ===") + from check_prg_io_range import prg_io_violation, prg_range + prgs = [DIST / rec["prg"] for rec in variants if rec.get("result") == "OK"] + if not prgs: + record("dist PRGs to range-check", False, + "no variant built, so nothing was checked") + return + for prg in prgs: + if not prg.is_file(): + record(f"{prg.name} load range", False, "absent from dist/") + continue + data = prg.read_bytes() + lo, hi = prg_range(data) + bad = prg_io_violation(data) + record(f"{prg.name} load range", bad is None, + bad or f"${lo:04X}-${hi:04X}") + + # --------------------------------------------------------------------------- # 2. Disk images # --------------------------------------------------------------------------- @@ -200,14 +243,24 @@ def check_d64_contents(variants: list[dict]) -> None: def check_d64_boots(variants: list[dict]) -> None: """Autostart every disk image in VICE and assert the boot banner. - Two flags are load-bearing, and both were found the hard way: - - -trapdevice8 +drive8truedrive — use the KERNAL load traps instead of - true drive emulation. Under TDE the ~250-block serial load of a 63 KB - PRG does not finish inside any budget worth waiting for, and the - symptom (a screen frozen on LOADING) reads as a corrupt image rather - than a slow one. The image's contents are byte-compared separately in - 2a, so nothing is lost by loading it fast. + The load is a real KERNAL serial LOAD under true drive emulation + (-drive8truedrive, +trapdevice8, +autostart-handle-tde), which is what + a .d64 on a real 1541 does: every byte is a CPU store, so an image that + reaches the I/O page writes the chip registers (#288; the build-side + guard is tools/test_prg_io_range.py). It used to load through the + KERNAL traps because "the TDE load never finishes". Two causes, both + measured for #288: the poll below halted the machine for its whole + sleep (every binary-monitor command halts the 6510 until resume(), and + the loop read AFTER resuming), and the UCI images then ran to $DFFF and + froze the load with its pointer in CIA1's page ($DC06, $DC09 and + $DC0A observed). With the loop resuming after the read and the pad gone, + each image loads under TDE in ~20 s. The drive setup is read back from + the instance (TDE_RESOURCES) and a mismatch fails the image. + + What this gate can and cannot see: it catches an image whose I/O writes + HANG the load. One that writes the registers and still loads would pass + here; the PRG load-range check (check_prg_ranges, and the Makefile's + post-link check, both tools/check_prg_io_range.py) is what catches that. The pass criterion is the BANNER, not the menu. Two reasons, both measured. The ip65 images print NETWORK INIT FAILED with no network @@ -249,22 +302,34 @@ def check_d64_boots(variants: list[dict]) -> None: # -autostart on a .d64 loads and runs the first program on the disk. config = default_vice_config(prg_path=str(image), warp=True, ntsc=True, sound=False, - extra_args=["-trapdevice8", - "+drive8truedrive"]) + extra_args=list(TDE_ARGS)) seen: dict[str, float] = {} needles = [COMMON_BANNER, expected, MENU_MARKER] + list(foreign_banners.values()) try: with ViceInstanceManager(config=config) as mgr: inst = mgr.acquire() + bad_drive = tde_resource_problems(inst.transport.resource_get) + if bad_drive: + mgr.release(inst) + record(f"{image.name} boots under true drive emulation", + False, "; ".join(bad_drive)) + continue start = time.monotonic() + inst.transport.resume() while time.monotonic() - start < timeout: time.sleep(5.0) + # Read, THEN resume: the read halts the 6510, and the + # machine must run through the next sleep. try: - inst.transport.resume() text = ScreenGrid.from_transport( inst.transport).continuous_text().upper() except Exception: # noqa: BLE001 continue + finally: + try: + inst.transport.resume() + except Exception: # noqa: BLE001 + pass for needle in needles: if needle in text and needle not in seen: seen[needle] = time.monotonic() - start @@ -411,6 +476,7 @@ def main() -> int: print("\n=== 1. PRG reproducibility SKIPPED (SKIP_REBUILD=1) ===") skipped.append("reproducibility") + check_prg_ranges(variants) check_d64_contents(variants) if os.environ.get("SKIP_VICE") != "1": check_d64_boots(variants) diff --git a/tools/rig_scratch_profiles.json b/tools/rig_scratch_profiles.json index 4712347..774118f 100644 --- a/tools/rig_scratch_profiles.json +++ b/tools/rig_scratch_profiles.json @@ -1,27 +1,27 @@ { "uci": { "make": "BACKEND=uci", - "prg_sha256": "ed6871b2b1efe23b8dcd0d92b036f6491ca7307ee48a3dba9345a95dd0a1db7e", - "labels": "al C:0003 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9E37 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:55B4 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1D9A .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3948 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:C000 .__OVERLAY_FILE_PAD_LAST__\nal C:2000 .__OVERLAY_FILE_PAD_SIZE__\nal C:C000 .__OVERLAY_FILE_PAD_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:6253 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:6254 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:694A .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0CCA .http_get\nal C:0FAF .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5310 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:6250 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A11 .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:154C .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:154B .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6425 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:6531 .uci_socket_id\nal C:6544 .uci_status_buf\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:5324 .https_target_prompt\nal C:A227 .net_initialized\nal C:5310 .http_host_target\nal C:0A11 .print_resp_body\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:6254 .ecdsa_sig_len\nal C:6253 .ecdsa_hash_len\nal C:6250 .http_port\nal C:0FAF .http_get_plain\nal C:0CCA .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:154C .tls_recv_count\nal C:154B .tls_recv_state\nal C:694A .ecdsa_verify\nal C:653C .uci_read_hdr\nal C:6540 .uci_req_len\nal C:6531 .uci_socket_id\nal C:6425 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:6544 .uci_status_buf\n" + "prg_sha256": "806fda4cc310ed0a28c033d002af7070d72fcdfde2c1417a1c6747a2971e7603", + "labels": "al C:0003 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9E37 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:55B4 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1D9A .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3948 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:6253 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:6254 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:694A .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0CCA .http_get\nal C:0FAF .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5310 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:6250 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A11 .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:154C .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:154B .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6425 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:6531 .uci_socket_id\nal C:6544 .uci_status_buf\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:5324 .https_target_prompt\nal C:A227 .net_initialized\nal C:5310 .http_host_target\nal C:0A11 .print_resp_body\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:6254 .ecdsa_sig_len\nal C:6253 .ecdsa_hash_len\nal C:6250 .http_port\nal C:0FAF .http_get_plain\nal C:0CCA .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:154C .tls_recv_count\nal C:154B .tls_recv_state\nal C:694A .ecdsa_verify\nal C:653C .uci_read_hdr\nal C:6540 .uci_req_len\nal C:6531 .uci_socket_id\nal C:6425 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:6544 .uci_status_buf\n" }, "uci-onchip": { "make": "BACKEND=uci USE_NISTCURVES_ONCHIP=1", - "prg_sha256": "eaa43a6a2ab356be148f07b25b72c1047416fec7c0b5c961d3a431478bddce8a", - "labels": "al C:0000 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9E0B .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:55EE .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1D9A .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3940 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:C000 .__OVERLAY_FILE_PAD_LAST__\nal C:2000 .__OVERLAY_FILE_PAD_SIZE__\nal C:C000 .__OVERLAY_FILE_PAD_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:AE3D .ecdsa_curve_id\nal C:AE7E .ecdsa_hash\nal C:6253 .ecdsa_hash_len\nal C:AE9E .ecdsa_pubkey_x\nal C:AEBE .ecdsa_pubkey_y\nal C:6254 .ecdsa_sig_len\nal C:AE3E .ecdsa_sig_r\nal C:AE5E .ecdsa_sig_s\nal C:694A .ecdsa_verify\nal C:A859 .http_body_sink\nal C:A856 .http_body_total\nal C:0CCA .http_get\nal C:0FAF .http_get_plain\nal C:A525 .http_host_len\nal C:A523 .http_host_ptr\nal C:52F6 .http_host_target\nal C:A82F .http_parse_state\nal C:A528 .http_path_len\nal C:A526 .http_path_ptr\nal C:6250 .http_port\nal C:A62D .http_resp_buf\nal C:A82D .http_resp_len\nal C:A529 .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A224 .net_initialized\nal C:B076 .net_last_error\nal C:B06E .net_local_ip\nal C:2054 .net_poll\nal C:A246 .net_poll_entry_count\nal C:A248 .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B078 .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B077 .net_tcp_state\nal C:0A11 .print_resp_body\nal C:AEF2 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A241 .tcp_recv_head\nal C:A245 .tcp_recv_overflow\nal C:A243 .tcp_recv_tail\nal C:A85F .tls_app_len\nal C:A85D .tls_app_ptr\nal C:A3F5 .tls_app_read_iv\nal C:A3D5 .tls_app_read_key\nal C:A3C9 .tls_app_write_iv\nal C:A3A9 .tls_app_write_key\nal C:AF45 .tls_c_hs_secret\nal C:A251 .tls_client_random\nal C:A4C3 .tls_early_secret\nal C:A291 .tls_ecdhe_privkey\nal C:A2B1 .tls_ecdhe_pubkey\nal C:AFC5 .tls_finished_key\nal C:A4E3 .tls_handshake_secret\nal C:A39D .tls_hs_read_iv\nal C:A37D .tls_hs_read_key\nal C:A371 .tls_hs_write_iv\nal C:A351 .tls_hs_write_key\nal C:A24B .tls_last_state\nal C:A503 .tls_master_secret\nal C:A24C .tls_reached_connected\nal C:A409 .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A411 .tls_rec_header\nal C:A417 .tls_rec_len\nal C:A416 .tls_rec_type\nal C:154C .tls_recv_count\nal C:A24F .tls_recv_poll_count\nal C:A24D .tls_recv_progress\nal C:154B .tls_recv_state\nal C:A24E .tls_recv_sub_progress\nal C:A2D1 .tls_server_pubkey\nal C:A271 .tls_server_random\nal C:A2F1 .tls_shared_secret\nal C:A24A .tls_state\nal C:A311 .tls_transcript\nal C:AFA5 .tls_verify_data\nal C:A401 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6425 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:6531 .uci_socket_id\nal C:6544 .uci_status_buf\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:530A .https_target_prompt\nal C:A224 .net_initialized\nal C:52F6 .http_host_target\nal C:0A11 .print_resp_body\nal C:AEBE .ecdsa_pubkey_y\nal C:AE9E .ecdsa_pubkey_x\nal C:AE5E .ecdsa_sig_s\nal C:AE3E .ecdsa_sig_r\nal C:AE7E .ecdsa_hash\nal C:AE3D .ecdsa_curve_id\nal C:A85F .tls_app_len\nal C:A85D .tls_app_ptr\nal C:A859 .http_body_sink\nal C:A856 .http_body_total\nal C:A82F .http_parse_state\nal C:A82D .http_resp_len\nal C:A62D .http_resp_buf\nal C:A529 .http_status\nal C:A528 .http_path_len\nal C:A526 .http_path_ptr\nal C:A525 .http_host_len\nal C:A523 .http_host_ptr\nal C:A503 .tls_master_secret\nal C:A4E3 .tls_handshake_secret\nal C:A4C3 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A417 .tls_rec_len\nal C:A416 .tls_rec_type\nal C:A411 .tls_rec_header\nal C:A409 .tls_read_seq\nal C:A401 .tls_write_seq\nal C:A3F5 .tls_app_read_iv\nal C:A3D5 .tls_app_read_key\nal C:A3C9 .tls_app_write_iv\nal C:A3A9 .tls_app_write_key\nal C:A39D .tls_hs_read_iv\nal C:A37D .tls_hs_read_key\nal C:A371 .tls_hs_write_iv\nal C:A351 .tls_hs_write_key\nal C:A311 .tls_transcript\nal C:A2F1 .tls_shared_secret\nal C:A2D1 .tls_server_pubkey\nal C:A2B1 .tls_ecdhe_pubkey\nal C:A291 .tls_ecdhe_privkey\nal C:A271 .tls_server_random\nal C:A251 .tls_client_random\nal C:A24F .tls_recv_poll_count\nal C:A24E .tls_recv_sub_progress\nal C:A24D .tls_recv_progress\nal C:A24C .tls_reached_connected\nal C:A24B .tls_last_state\nal C:A24A .tls_state\nal C:A248 .net_poll_return_count\nal C:A246 .net_poll_entry_count\nal C:A245 .tcp_recv_overflow\nal C:A243 .tcp_recv_tail\nal C:A241 .tcp_recv_head\nal C:6254 .ecdsa_sig_len\nal C:6253 .ecdsa_hash_len\nal C:6250 .http_port\nal C:0FAF .http_get_plain\nal C:0CCA .http_get\nal C:AEF2 .reu_dma_timeout\nal C:AF65 .tls_s_hs_secret\nal C:AF85 .tls_derived_tmp\nal C:AFC5 .tls_finished_key\nal C:AF45 .tls_c_hs_secret\nal C:AFA5 .tls_verify_data\nal C:154C .tls_recv_count\nal C:154B .tls_recv_state\nal C:694A .ecdsa_verify\nal C:653C .uci_read_hdr\nal C:6540 .uci_req_len\nal C:6531 .uci_socket_id\nal C:6425 .uci_host_buf\nal C:B078 .net_send_len\nal C:25A9 .net_recv_byte\nal C:B077 .net_tcp_state\nal C:B076 .net_last_error\nal C:B06E .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:6544 .uci_status_buf\nal C:7DCC .gen_mul_row\n" + "prg_sha256": "6a1f52bd0263a1259f77152fb854703d68f5136939801b9032b61decd9ef9491", + "labels": "al C:0000 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9E0B .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:55EE .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1D9A .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3940 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:AE3D .ecdsa_curve_id\nal C:AE7E .ecdsa_hash\nal C:6253 .ecdsa_hash_len\nal C:AE9E .ecdsa_pubkey_x\nal C:AEBE .ecdsa_pubkey_y\nal C:6254 .ecdsa_sig_len\nal C:AE3E .ecdsa_sig_r\nal C:AE5E .ecdsa_sig_s\nal C:694A .ecdsa_verify\nal C:A859 .http_body_sink\nal C:A856 .http_body_total\nal C:0CCA .http_get\nal C:0FAF .http_get_plain\nal C:A525 .http_host_len\nal C:A523 .http_host_ptr\nal C:52F6 .http_host_target\nal C:A82F .http_parse_state\nal C:A528 .http_path_len\nal C:A526 .http_path_ptr\nal C:6250 .http_port\nal C:A62D .http_resp_buf\nal C:A82D .http_resp_len\nal C:A529 .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A224 .net_initialized\nal C:B076 .net_last_error\nal C:B06E .net_local_ip\nal C:2054 .net_poll\nal C:A246 .net_poll_entry_count\nal C:A248 .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B078 .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B077 .net_tcp_state\nal C:0A11 .print_resp_body\nal C:AEF2 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A241 .tcp_recv_head\nal C:A245 .tcp_recv_overflow\nal C:A243 .tcp_recv_tail\nal C:A85F .tls_app_len\nal C:A85D .tls_app_ptr\nal C:A3F5 .tls_app_read_iv\nal C:A3D5 .tls_app_read_key\nal C:A3C9 .tls_app_write_iv\nal C:A3A9 .tls_app_write_key\nal C:AF45 .tls_c_hs_secret\nal C:A251 .tls_client_random\nal C:A4C3 .tls_early_secret\nal C:A291 .tls_ecdhe_privkey\nal C:A2B1 .tls_ecdhe_pubkey\nal C:AFC5 .tls_finished_key\nal C:A4E3 .tls_handshake_secret\nal C:A39D .tls_hs_read_iv\nal C:A37D .tls_hs_read_key\nal C:A371 .tls_hs_write_iv\nal C:A351 .tls_hs_write_key\nal C:A24B .tls_last_state\nal C:A503 .tls_master_secret\nal C:A24C .tls_reached_connected\nal C:A409 .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A411 .tls_rec_header\nal C:A417 .tls_rec_len\nal C:A416 .tls_rec_type\nal C:154C .tls_recv_count\nal C:A24F .tls_recv_poll_count\nal C:A24D .tls_recv_progress\nal C:154B .tls_recv_state\nal C:A24E .tls_recv_sub_progress\nal C:A2D1 .tls_server_pubkey\nal C:A271 .tls_server_random\nal C:A2F1 .tls_shared_secret\nal C:A24A .tls_state\nal C:A311 .tls_transcript\nal C:AFA5 .tls_verify_data\nal C:A401 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6425 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:6531 .uci_socket_id\nal C:6544 .uci_status_buf\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:530A .https_target_prompt\nal C:A224 .net_initialized\nal C:52F6 .http_host_target\nal C:0A11 .print_resp_body\nal C:AEBE .ecdsa_pubkey_y\nal C:AE9E .ecdsa_pubkey_x\nal C:AE5E .ecdsa_sig_s\nal C:AE3E .ecdsa_sig_r\nal C:AE7E .ecdsa_hash\nal C:AE3D .ecdsa_curve_id\nal C:A85F .tls_app_len\nal C:A85D .tls_app_ptr\nal C:A859 .http_body_sink\nal C:A856 .http_body_total\nal C:A82F .http_parse_state\nal C:A82D .http_resp_len\nal C:A62D .http_resp_buf\nal C:A529 .http_status\nal C:A528 .http_path_len\nal C:A526 .http_path_ptr\nal C:A525 .http_host_len\nal C:A523 .http_host_ptr\nal C:A503 .tls_master_secret\nal C:A4E3 .tls_handshake_secret\nal C:A4C3 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A417 .tls_rec_len\nal C:A416 .tls_rec_type\nal C:A411 .tls_rec_header\nal C:A409 .tls_read_seq\nal C:A401 .tls_write_seq\nal C:A3F5 .tls_app_read_iv\nal C:A3D5 .tls_app_read_key\nal C:A3C9 .tls_app_write_iv\nal C:A3A9 .tls_app_write_key\nal C:A39D .tls_hs_read_iv\nal C:A37D .tls_hs_read_key\nal C:A371 .tls_hs_write_iv\nal C:A351 .tls_hs_write_key\nal C:A311 .tls_transcript\nal C:A2F1 .tls_shared_secret\nal C:A2D1 .tls_server_pubkey\nal C:A2B1 .tls_ecdhe_pubkey\nal C:A291 .tls_ecdhe_privkey\nal C:A271 .tls_server_random\nal C:A251 .tls_client_random\nal C:A24F .tls_recv_poll_count\nal C:A24E .tls_recv_sub_progress\nal C:A24D .tls_recv_progress\nal C:A24C .tls_reached_connected\nal C:A24B .tls_last_state\nal C:A24A .tls_state\nal C:A248 .net_poll_return_count\nal C:A246 .net_poll_entry_count\nal C:A245 .tcp_recv_overflow\nal C:A243 .tcp_recv_tail\nal C:A241 .tcp_recv_head\nal C:6254 .ecdsa_sig_len\nal C:6253 .ecdsa_hash_len\nal C:6250 .http_port\nal C:0FAF .http_get_plain\nal C:0CCA .http_get\nal C:AEF2 .reu_dma_timeout\nal C:AF65 .tls_s_hs_secret\nal C:AF85 .tls_derived_tmp\nal C:AFC5 .tls_finished_key\nal C:AF45 .tls_c_hs_secret\nal C:AFA5 .tls_verify_data\nal C:154C .tls_recv_count\nal C:154B .tls_recv_state\nal C:694A .ecdsa_verify\nal C:653C .uci_read_hdr\nal C:6540 .uci_req_len\nal C:6531 .uci_socket_id\nal C:6425 .uci_host_buf\nal C:B078 .net_send_len\nal C:25A9 .net_recv_byte\nal C:B077 .net_tcp_state\nal C:B076 .net_last_error\nal C:B06E .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6558 .uci_status_force\nal C:6554 .uci_status_len\nal C:6544 .uci_status_buf\nal C:7DCC .gen_mul_row\n" }, "uci-comb": { "make": "BACKEND=uci USE_NISTCURVES_ONCHIP_COMB=1", - "prg_sha256": "8f8a0d05f7876c6737a7dc0ce9c63855bba0458bae13568455ad4348142d240d", - "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C1AA .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:4200 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9A95 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5EC3 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1F3B .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3948 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:D000 .__OVERLAY_FILE_PAD_LAST__\nal C:1000 .__OVERLAY_FILE_PAD_SIZE__\nal C:D000 .__OVERLAY_FILE_PAD_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1BD5 .cold_call\nal C:1D29 .cold_err\nal C:96C4 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:6628 .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D0D .http_get\nal C:0FF2 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A2E .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:158F .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:158E .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6103 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:620F .uci_socket_id\nal C:6222 .uci_status_buf\nal C:6236 .uci_status_force\nal C:6232 .uci_status_len\nal C:0A69 .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A2E .print_resp_body\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:0FF2 .http_get_plain\nal C:0D0D .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:158F .tls_recv_count\nal C:158E .tls_recv_state\nal C:6628 .ecdsa_verify\nal C:621A .uci_read_hdr\nal C:621E .uci_req_len\nal C:620F .uci_socket_id\nal C:6103 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6236 .uci_status_force\nal C:6232 .uci_status_len\nal C:6222 .uci_status_buf\nal C:1D29 .cold_err\nal C:1BD5 .cold_call\nal C:75E9 .gen_mul_row\nal C:96C4 .ec_precompute_256\n" + "prg_sha256": "aa340d8f7a98cfa8409162fa628df8d76f4e6a2db8be1fb4a88fe1dd03c19892", + "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C1AA .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:4200 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9A95 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5EC3 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1F3B .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:3948 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1BD5 .cold_call\nal C:1D29 .cold_err\nal C:96C4 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:6628 .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D0D .http_get\nal C:0FF2 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A2E .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:158F .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:158E .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:26A5 .uci_begin_cmd\nal C:6103 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:620F .uci_socket_id\nal C:6222 .uci_status_buf\nal C:6236 .uci_status_force\nal C:6232 .uci_status_len\nal C:0A69 .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A2E .print_resp_body\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:0FF2 .http_get_plain\nal C:0D0D .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:158F .tls_recv_count\nal C:158E .tls_recv_state\nal C:6628 .ecdsa_verify\nal C:621A .uci_read_hdr\nal C:621E .uci_req_len\nal C:620F .uci_socket_id\nal C:6103 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:6236 .uci_status_force\nal C:6232 .uci_status_len\nal C:6222 .uci_status_buf\nal C:1D29 .cold_err\nal C:1BD5 .cold_call\nal C:75E9 .gen_mul_row\nal C:96C4 .ec_precompute_256\n" }, "uci-comb-trust": { "make": "BACKEND=uci USE_NISTCURVES_ONCHIP_COMB=1 TRUST_STORE=1", - "prg_sha256": "936884e9ff51eecd2208c240ec8bc0268b57fcd25c54dacab1965834d25bbe06", - "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C95F .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:49B5 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_TRUST_SIZE__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9B15 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5FD1 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1FAE .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:39D2 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:D000 .__OVERLAY_FILE_PAD_LAST__\nal C:1000 .__OVERLAY_FILE_PAD_SIZE__\nal C:D000 .__OVERLAY_FILE_PAD_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:C1AA .__TRUST_STORE_CODE_LOAD__\nal C:4200 .__TRUST_STORE_CODE_RUN__\nal C:04B0 .__TRUST_STORE_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1C1E .cold_call\nal C:1D9C .cold_err\nal C:49B4 .cold_marker_trust\nal C:56EE .dos_len\nal C:4200 .dos_open\nal C:42CA .dos_write\nal C:9744 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:66A8 .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D23 .http_get\nal C:1008 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A44 .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:15A5 .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:15A4 .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:397F .tp_mode\nal C:3981 .tp_ovr_armed\nal C:1C08 .trust_post\nal C:1C05 .trust_pre\nal C:1BEB .trust_store_load\nal C:1BF5 .trust_store_save\nal C:1BF0 .trust_store_stage\nal C:5708 .ts_found\nal C:56F6 .ts_gen\nal C:56F8 .ts_reason\nal C:571A .ts_rec\nal C:56F5 .ts_slot\nal C:56F9 .ts_slot_st\nal C:56F4 .ts_state\nal C:26A5 .uci_begin_cmd\nal C:6183 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:628F .uci_socket_id\nal C:62A2 .uci_status_buf\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:0A7F .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A44 .print_resp_body\nal C:3981 .tp_ovr_armed\nal C:397F .tp_mode\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:1008 .http_get_plain\nal C:0D23 .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:15A5 .tls_recv_count\nal C:15A4 .tls_recv_state\nal C:66A8 .ecdsa_verify\nal C:629A .uci_read_hdr\nal C:629E .uci_req_len\nal C:628F .uci_socket_id\nal C:6183 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62A2 .uci_status_buf\nal C:56EE .dos_len\nal C:42CA .dos_write\nal C:4200 .dos_open\nal C:46AE .ts_letter\nal C:46A2 .ts_name\nal C:462F .ts_set_name\nal C:5707 .ts_target\nal C:5708 .ts_found\nal C:571A .ts_rec\nal C:56F9 .ts_slot_st\nal C:56F6 .ts_gen\nal C:56F5 .ts_slot\nal C:56F8 .ts_reason\nal C:56F4 .ts_state\nal C:1BF5 .trust_store_save\nal C:1BF0 .trust_store_stage\nal C:1BEB .trust_store_load\nal C:1C08 .trust_post\nal C:1C05 .trust_pre\nal C:49B4 .cold_marker_trust\nal C:1D9C .cold_err\nal C:1C1E .cold_call\nal C:7669 .gen_mul_row\nal C:9744 .ec_precompute_256\n" + "prg_sha256": "025af934a094b2aac1d6a2e92034a4fb6bbc895032151bf348a06b307d7acdda", + "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C95F .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:49B5 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_TRUST_SIZE__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9B15 .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5FD1 .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1FAE .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CA1 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:39D2 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:C1AA .__TRUST_STORE_CODE_LOAD__\nal C:4200 .__TRUST_STORE_CODE_RUN__\nal C:04B0 .__TRUST_STORE_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1C1E .cold_call\nal C:1D9C .cold_err\nal C:49B4 .cold_marker_trust\nal C:56EE .dos_len\nal C:4200 .dos_open\nal C:42CA .dos_write\nal C:9744 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:66A8 .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D23 .http_get\nal C:1008 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A44 .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:15A5 .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:15A4 .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:397F .tp_mode\nal C:3981 .tp_ovr_armed\nal C:1C08 .trust_post\nal C:1C05 .trust_pre\nal C:1BEB .trust_store_load\nal C:1BF5 .trust_store_save\nal C:1BF0 .trust_store_stage\nal C:5708 .ts_found\nal C:56F6 .ts_gen\nal C:56F8 .ts_reason\nal C:571A .ts_rec\nal C:56F5 .ts_slot\nal C:56F9 .ts_slot_st\nal C:56F4 .ts_state\nal C:26A5 .uci_begin_cmd\nal C:6183 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:628F .uci_socket_id\nal C:62A2 .uci_status_buf\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:0A7F .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A44 .print_resp_body\nal C:3981 .tp_ovr_armed\nal C:397F .tp_mode\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:1008 .http_get_plain\nal C:0D23 .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:15A5 .tls_recv_count\nal C:15A4 .tls_recv_state\nal C:66A8 .ecdsa_verify\nal C:629A .uci_read_hdr\nal C:629E .uci_req_len\nal C:628F .uci_socket_id\nal C:6183 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62A2 .uci_status_buf\nal C:56EE .dos_len\nal C:42CA .dos_write\nal C:4200 .dos_open\nal C:46AE .ts_letter\nal C:46A2 .ts_name\nal C:462F .ts_set_name\nal C:5707 .ts_target\nal C:5708 .ts_found\nal C:571A .ts_rec\nal C:56F9 .ts_slot_st\nal C:56F6 .ts_gen\nal C:56F5 .ts_slot\nal C:56F8 .ts_reason\nal C:56F4 .ts_state\nal C:1BF5 .trust_store_save\nal C:1BF0 .trust_store_stage\nal C:1BEB .trust_store_load\nal C:1C08 .trust_post\nal C:1C05 .trust_pre\nal C:49B4 .cold_marker_trust\nal C:1D9C .cold_err\nal C:1C1E .cold_call\nal C:7669 .gen_mul_row\nal C:9744 .ec_precompute_256\n" }, "uci-comb-demo-trust": { "make": "BACKEND=uci USE_NISTCURVES_ONCHIP_COMB=1 TRUST_STORE=1 HTTPS_HOST=en.wikipedia.org HTTPS_PATH=/w/index.php?title=Commodore_64&action=raw HTTPS_BODY_TO_REU=1", - "prg_sha256": "b66eaf0cb9c170d6179fd9bc9e8e3f648ddc60c3fa8de278216e7d171a4632e9", - "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C95F .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:49B5 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_TRUST_SIZE__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9FBA .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5FFB .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1FE7 .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CB5 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:39D2 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:D000 .__OVERLAY_FILE_PAD_LAST__\nal C:1000 .__OVERLAY_FILE_PAD_SIZE__\nal C:D000 .__OVERLAY_FILE_PAD_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:C1AA .__TRUST_STORE_CODE_LOAD__\nal C:4200 .__TRUST_STORE_CODE_RUN__\nal C:04B0 .__TRUST_STORE_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1C57 .cold_call\nal C:1DD5 .cold_err\nal C:49B4 .cold_marker_trust\nal C:5718 .dos_len\nal C:4200 .dos_open\nal C:42CA .dos_write\nal C:9BE9 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:6B4D .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D5C .http_get\nal C:1041 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A7D .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:15DE .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:15DD .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:397F .tp_mode\nal C:3981 .tp_ovr_armed\nal C:1C41 .trust_post\nal C:1C3E .trust_pre\nal C:1C24 .trust_store_load\nal C:1C2E .trust_store_save\nal C:1C29 .trust_store_stage\nal C:5732 .ts_found\nal C:5720 .ts_gen\nal C:5722 .ts_reason\nal C:5744 .ts_rec\nal C:571F .ts_slot\nal C:5723 .ts_slot_st\nal C:571E .ts_state\nal C:26A5 .uci_begin_cmd\nal C:6183 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:628F .uci_socket_id\nal C:62A2 .uci_status_buf\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62BB .viewer_enter\nal C:0AB8 .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A7D .print_resp_body\nal C:3981 .tp_ovr_armed\nal C:397F .tp_mode\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:1041 .http_get_plain\nal C:0D5C .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:15DE .tls_recv_count\nal C:15DD .tls_recv_state\nal C:62BB .viewer_enter\nal C:6B4D .ecdsa_verify\nal C:629A .uci_read_hdr\nal C:629E .uci_req_len\nal C:628F .uci_socket_id\nal C:6183 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62A2 .uci_status_buf\nal C:5718 .dos_len\nal C:42CA .dos_write\nal C:4200 .dos_open\nal C:46AE .ts_letter\nal C:46A2 .ts_name\nal C:462F .ts_set_name\nal C:5731 .ts_target\nal C:5732 .ts_found\nal C:5744 .ts_rec\nal C:5723 .ts_slot_st\nal C:5720 .ts_gen\nal C:571F .ts_slot\nal C:5722 .ts_reason\nal C:571E .ts_state\nal C:1C2E .trust_store_save\nal C:1C29 .trust_store_stage\nal C:1C24 .trust_store_load\nal C:1C41 .trust_post\nal C:1C3E .trust_pre\nal C:49B4 .cold_marker_trust\nal C:1DD5 .cold_err\nal C:1C57 .cold_call\nal C:7B0E .gen_mul_row\nal C:9BE9 .ec_precompute_256\n" + "prg_sha256": "7607586f5d440415dc97a4684907162519a2046ce2d081fac375873db8337e20", + "labels": "al C:0004 .LIB_NISTCURVES_REU_BANKS_USED\nal C:C95F .__COLD_IMAGE_LAST__\nal C:1000 .__COLD_IMAGE_SIZE__\nal C:C000 .__COLD_IMAGE_START__\nal C:49B5 .__COLD_RUN_TRUST_LAST__\nal C:0800 .__COLD_RUN_TRUST_SIZE__\nal C:4200 .__COLD_RUN_TRUST_START__\nal C:43AA .__COLD_RUN_UI_LAST__\nal C:0800 .__COLD_RUN_UI_SIZE__\nal C:4200 .__COLD_RUN_UI_START__\nal C:0001 .__COLD_TAIL_TRUST_SIZE__\nal C:0001 .__COLD_TAIL_UI_SIZE__\nal C:C000 .__CRYPTO_COLD_SHADOW_LAST__\nal C:2000 .__CRYPTO_COLD_SHADOW_SIZE__\nal C:A000 .__CRYPTO_COLD_SHADOW_START__\nal C:9FBA .__CRYPTO_HOT_LAST__\nal C:4000 .__CRYPTO_HOT_SIZE__\nal C:6000 .__CRYPTO_HOT_START__\nal C:5FFB .__CRYPTO_OVERLAY_LAST__\nal C:1E00 .__CRYPTO_OVERLAY_SIZE__\nal C:4200 .__CRYPTO_OVERLAY_START__\nal C:1FE7 .__LOADER_LAST__\nal C:17FF .__LOADER_SIZE__\nal C:0801 .__LOADER_START__\nal C:3CB5 .__NET_BSS_TAIL_LAST__\nal C:069A .__NET_BSS_TAIL_SIZE__\nal C:3B66 .__NET_BSS_TAIL_START__\nal C:39D2 .__NET_CODE_LAST__\nal C:1B66 .__NET_CODE_SIZE__\nal C:2000 .__NET_CODE_START__\nal C:4722 .__P256_SCRATCH_UNION_LAST__\nal C:0800 .__P256_SCRATCH_UNION_SIZE__\nal C:4200 .__P256_SCRATCH_UNION_START__\nal C:01A9 .__TARGET_PROMPT_CODE_SIZE__\nal C:C1AA .__TRUST_STORE_CODE_LOAD__\nal C:4200 .__TRUST_STORE_CODE_RUN__\nal C:04B0 .__TRUST_STORE_CODE_SIZE__\nal C:4000 .__UCI_BSS_REGION_LAST__\nal C:0000 .__UCI_BSS_REGION_SIZE__\nal C:4000 .__UCI_BSS_REGION_START__\nal C:A220 .__X25519_SCRATCH_LAST__\nal C:0224 .__X25519_SCRATCH_SIZE__\nal C:A000 .__X25519_SCRATCH_START__\nal C:0022 .__ZP_CRYPTO_LAST__\nal C:001E .__ZP_CRYPTO_SIZE__\nal C:0022 .__ZP_CRYPTO_START__\nal C:0040 .__ZP_WIDE_LAST__\nal C:0040 .__ZP_WIDE_SIZE__\nal C:0040 .__ZP_WIDE_START__\nal C:0800 .cert_buf_size\nal C:1C57 .cold_call\nal C:1DD5 .cold_err\nal C:49B4 .cold_marker_trust\nal C:5718 .dos_len\nal C:4200 .dos_open\nal C:42CA .dos_write\nal C:9BE9 .ec_precompute_256\nal C:AE40 .ecdsa_curve_id\nal C:AE81 .ecdsa_hash\nal C:4C73 .ecdsa_hash_len\nal C:AEA1 .ecdsa_pubkey_x\nal C:AEC1 .ecdsa_pubkey_y\nal C:4C74 .ecdsa_sig_len\nal C:AE41 .ecdsa_sig_r\nal C:AE61 .ecdsa_sig_s\nal C:6B4D .ecdsa_verify\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:0D5C .http_get\nal C:1041 .http_get_plain\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:5638 .http_host_target\nal C:A832 .http_parse_state\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:4C70 .http_port\nal C:A630 .http_resp_buf\nal C:A830 .http_resp_len\nal C:A52C .http_status\nal C:227C .net_dhcp_acquire\nal C:257A .net_dns_resolve\nal C:2000 .net_init\nal C:A227 .net_initialized\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:2054 .net_poll\nal C:A249 .net_poll_entry_count\nal C:A24B .net_poll_return_count\nal C:25A9 .net_recv_byte\nal C:B07C .net_send_len\nal C:2532 .net_tcp_close\nal C:2319 .net_tcp_connect\nal C:23EF .net_tcp_send\nal C:B07B .net_tcp_state\nal C:0A7D .print_resp_body\nal C:AEF6 .reu_dma_timeout\nal C:C000 .tcp_recv_buf\nal C:A244 .tcp_recv_head\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:AF49 .tls_c_hs_secret\nal C:A254 .tls_client_random\nal C:A4C6 .tls_early_secret\nal C:A294 .tls_ecdhe_privkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:AFC9 .tls_finished_key\nal C:A4E6 .tls_handshake_secret\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A24E .tls_last_state\nal C:A506 .tls_master_secret\nal C:A24F .tls_reached_connected\nal C:A40C .tls_read_seq\nal C:A000 .tls_rec_buf\nal C:A414 .tls_rec_header\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:15DE .tls_recv_count\nal C:A252 .tls_recv_poll_count\nal C:A250 .tls_recv_progress\nal C:15DD .tls_recv_state\nal C:A251 .tls_recv_sub_progress\nal C:A2D4 .tls_server_pubkey\nal C:A274 .tls_server_random\nal C:A2F4 .tls_shared_secret\nal C:A24D .tls_state\nal C:A314 .tls_transcript\nal C:AFA9 .tls_verify_data\nal C:A404 .tls_write_seq\nal C:397F .tp_mode\nal C:3981 .tp_ovr_armed\nal C:1C41 .trust_post\nal C:1C3E .trust_pre\nal C:1C24 .trust_store_load\nal C:1C2E .trust_store_save\nal C:1C29 .trust_store_stage\nal C:5732 .ts_found\nal C:5720 .ts_gen\nal C:5722 .ts_reason\nal C:5744 .ts_rec\nal C:571F .ts_slot\nal C:5723 .ts_slot_st\nal C:571E .ts_state\nal C:26A5 .uci_begin_cmd\nal C:6183 .uci_host_buf\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:628F .uci_socket_id\nal C:62A2 .uci_status_buf\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62BB .viewer_enter\nal C:0AB8 .https_target_prompt\nal C:A227 .net_initialized\nal C:5638 .http_host_target\nal C:0A7D .print_resp_body\nal C:3981 .tp_ovr_armed\nal C:397F .tp_mode\nal C:AEC1 .ecdsa_pubkey_y\nal C:AEA1 .ecdsa_pubkey_x\nal C:AE61 .ecdsa_sig_s\nal C:AE41 .ecdsa_sig_r\nal C:AE81 .ecdsa_hash\nal C:AE40 .ecdsa_curve_id\nal C:A862 .tls_app_len\nal C:A860 .tls_app_ptr\nal C:A85C .http_body_sink\nal C:A859 .http_body_total\nal C:A832 .http_parse_state\nal C:A830 .http_resp_len\nal C:A630 .http_resp_buf\nal C:A52C .http_status\nal C:A52B .http_path_len\nal C:A529 .http_path_ptr\nal C:A528 .http_host_len\nal C:A526 .http_host_ptr\nal C:A506 .tls_master_secret\nal C:A4E6 .tls_handshake_secret\nal C:A4C6 .tls_early_secret\nal C:A000 .tls_rec_buf\nal C:A41A .tls_rec_len\nal C:A419 .tls_rec_type\nal C:A414 .tls_rec_header\nal C:A40C .tls_read_seq\nal C:A404 .tls_write_seq\nal C:A3F8 .tls_app_read_iv\nal C:A3D8 .tls_app_read_key\nal C:A3CC .tls_app_write_iv\nal C:A3AC .tls_app_write_key\nal C:A3A0 .tls_hs_read_iv\nal C:A380 .tls_hs_read_key\nal C:A374 .tls_hs_write_iv\nal C:A354 .tls_hs_write_key\nal C:A314 .tls_transcript\nal C:A2F4 .tls_shared_secret\nal C:A2D4 .tls_server_pubkey\nal C:A2B4 .tls_ecdhe_pubkey\nal C:A294 .tls_ecdhe_privkey\nal C:A274 .tls_server_random\nal C:A254 .tls_client_random\nal C:A252 .tls_recv_poll_count\nal C:A251 .tls_recv_sub_progress\nal C:A250 .tls_recv_progress\nal C:A24F .tls_reached_connected\nal C:A24E .tls_last_state\nal C:A24D .tls_state\nal C:A24B .net_poll_return_count\nal C:A249 .net_poll_entry_count\nal C:A248 .tcp_recv_overflow\nal C:A246 .tcp_recv_tail\nal C:A244 .tcp_recv_head\nal C:4C74 .ecdsa_sig_len\nal C:4C73 .ecdsa_hash_len\nal C:4C70 .http_port\nal C:1041 .http_get_plain\nal C:0D5C .http_get\nal C:AEF6 .reu_dma_timeout\nal C:AF69 .tls_s_hs_secret\nal C:AF89 .tls_derived_tmp\nal C:AFC9 .tls_finished_key\nal C:AF49 .tls_c_hs_secret\nal C:AFA9 .tls_verify_data\nal C:15DE .tls_recv_count\nal C:15DD .tls_recv_state\nal C:62BB .viewer_enter\nal C:6B4D .ecdsa_verify\nal C:629A .uci_read_hdr\nal C:629E .uci_req_len\nal C:628F .uci_socket_id\nal C:6183 .uci_host_buf\nal C:B07C .net_send_len\nal C:25A9 .net_recv_byte\nal C:B07B .net_tcp_state\nal C:B07A .net_last_error\nal C:B072 .net_local_ip\nal C:257A .net_dns_resolve\nal C:2532 .net_tcp_close\nal C:23EF .net_tcp_send\nal C:2319 .net_tcp_connect\nal C:227C .net_dhcp_acquire\nal C:2054 .net_poll\nal C:2000 .net_init\nal C:26CF .uci_push_wait\nal C:26BA .uci_put_byte\nal C:26A5 .uci_begin_cmd\nal C:62B6 .uci_status_force\nal C:62B2 .uci_status_len\nal C:62A2 .uci_status_buf\nal C:5718 .dos_len\nal C:42CA .dos_write\nal C:4200 .dos_open\nal C:46AE .ts_letter\nal C:46A2 .ts_name\nal C:462F .ts_set_name\nal C:5731 .ts_target\nal C:5732 .ts_found\nal C:5744 .ts_rec\nal C:5723 .ts_slot_st\nal C:5720 .ts_gen\nal C:571F .ts_slot\nal C:5722 .ts_reason\nal C:571E .ts_state\nal C:1C2E .trust_store_save\nal C:1C29 .trust_store_stage\nal C:1C24 .trust_store_load\nal C:1C41 .trust_post\nal C:1C3E .trust_pre\nal C:49B4 .cold_marker_trust\nal C:1DD5 .cold_err\nal C:1C57 .cold_call\nal C:7B0E .gen_mul_row\nal C:9BE9 .ec_precompute_256\n" } } diff --git a/tools/test_cold_bank.py b/tools/test_cold_bank.py index f604bc8..40b02cf 100644 --- a/tools/test_cold_bank.py +++ b/tools/test_cold_bank.py @@ -96,28 +96,29 @@ def check(ok, msg): # The ladder's placement comment: the cold cfg speaks for the shipped # TRUST_STORE products, which the comb cfg (COLD_BANK=0) cannot link. ( - ' # Sibling ladder (x25519.s, x25519_init.s). This cfg links only\n' - ' # COLD_BANK=0 comb images, which cannot hold TRUST_STORE (the Makefile\n' - ' # refuses it), so neither shipped product is built here; whether\n' + " # Sibling ladder (x25519.s, x25519_init.s). This cfg links only\n" + " # COLD_BANK=0 comb images, which cannot hold TRUST_STORE (the Makefile\n" + " # refuses it), so neither shipped product is built here; whether\n" " # CRYPTO_HOT could take the ladder is a question for this cfg's own\n" " # build, measured, not for the cold cfg's figures.\n" ' LIB_X25519_CODE: load = CRYPTO_OVERLAY, type = ro;\n', - ' # Sibling ladder (x25519.s, x25519_init.s). It is here for the comb\n' - ' # DEMO build (HTTPS_BODY_TO_REU=1), whose CRYPTO_HOT cannot hold it.\n' - ' # The shipped product (TRUST_STORE=1, no viewer) has CRYPTO_HOT room to\n' + " # Sibling ladder (x25519.s, x25519_init.s). It is here for the comb\n" + " # DEMO build (HTTPS_BODY_TO_REU=1), whose CRYPTO_HOT cannot hold it.\n" + " # The shipped product (TRUST_STORE=1, no viewer) has CRYPTO_HOT room to\n" ' # spare, so "no room" is a demo constraint, not a product one: compare\n' - ' # the uci-comb-store and uci-comb-demo-store rows of\n' - ' # tools/measure_margins.py before moving it, never a figure here.\n' + " # the uci-comb-store and uci-comb-demo-store rows of\n" + " # tools/measure_margins.py before moving it, never a figure here.\n" ' LIB_X25519_CODE: load = CRYPTO_OVERLAY, type = ro;\n'), - (" OVERLAY_FILE_PAD: start = $C000, size = $2000, file = %O, define = yes, fill = yes, fillval = $00;\n", + (" # The PRG ends at $BFFF, CRYPTO_COLD_SHADOW's last byte (#288).\n", " # Cold bank: the PRG's copy of the cold groups (src/net/uci/cold_bank.s),\n" - " # back to back; boot stashes it into the REU. The head of what was\n" - " # OVERLAY_FILE_PAD, and of the TCP ring's range.\n" + " # back to back; boot stashes it into the REU before the first connect\n" + " # reuses the range as the TCP ring.\n" " COLD_IMAGE: start = $C000, size = $1000, file = %O, define = yes, fill = yes, fillval = $00;\n" - " OVERLAY_FILE_PAD: start = $D000, size = $1000, file = %O, define = yes, fill = yes, fillval = $00;\n" " # Where each cold group runs: cert_buf, pinned below. Not file-backed.\n" " COLD_RUN_UI: start = $4200, size = $0800, type = rw, define = yes;\n" - " COLD_RUN_TRUST: start = $4200, size = $0800, type = rw, define = yes;\n"), + " COLD_RUN_TRUST: start = $4200, size = $0800, type = rw, define = yes;\n" + "\n" + " # The PRG ends at $CFFF, COLD_IMAGE's last byte (#288).\n"), (" TARGET_PROMPT_CODE: load = LOADER, type = ro, optional = yes;\n" " # #155 phase 2 (L3): the signed bundle's check (TRUST_BUNDLE=1).\n" " TRUST_BUNDLE_CODE: load = LOADER, type = ro, optional = yes;\n", diff --git a/tools/test_package_verify.py b/tools/test_package_verify.py index 0e84a29..7e4a4b4 100644 --- a/tools/test_package_verify.py +++ b/tools/test_package_verify.py @@ -229,6 +229,67 @@ def test_parse_build_info_records(tmp_lines: list[str] = None) -> None: check("FAILED record result", recs[1]["result"], "FAILED") +# --------------------------------------------------------------------------- +# #288: the boot gate loads under true drive emulation, and every dist PRG +# stays off the I/O page +# --------------------------------------------------------------------------- + +def test_boot_gate_drive_setup() -> None: + print("\n-- boot gate: TDE flags, and the resources read back --") + check("TDE on, traps off, autostart leaves TDE alone", + set(vr.TDE_ARGS) >= {"-drive8truedrive", "+trapdevice8", + "+autostart-handle-tde"}, True) + check("no trap-load flag", set(vr.TDE_ARGS) & {"+drive8truedrive", + "-trapdevice8"}, set()) + import inspect + src = inspect.getsource(vr.check_d64_boots) + check("the gate launches with TDE_ARGS", "extra_args=list(TDE_ARGS)" in src, True) + check("the gate reads the resources back", + "tde_resource_problems(inst.transport.resource_get)" in src, True) + good = dict(vr.TDE_RESOURCES) + check("held resources pass", vr.tde_resource_problems(good.__getitem__), []) + trap = {"Drive8TrueEmulation": 0, "TrapDevice8": 1, + "AutostartHandleTrueDriveEmulation": 0} + check("the old trap setup fails", + len(vr.tde_resource_problems(trap.__getitem__)), 2) + handled = dict(good, AutostartHandleTrueDriveEmulation=1) + check("autostart disabling TDE fails", + len(vr.tde_resource_problems(handled.__getitem__)), 1) + + def boom(name): + raise RuntimeError("monitor gone") + check("an unreadable resource fails", + len(vr.tde_resource_problems(boom)), len(vr.TDE_RESOURCES)) + + +def test_prg_range_check() -> None: + print("\n-- dist PRGs: load range off the I/O page --") + import tempfile + def prg(last): + return bytes([0x01, 0x08]) + bytes(last - 0x0801 + 1) + with tempfile.TemporaryDirectory() as tmp: + d = Path(tmp) + (d / "old.prg").write_bytes(prg(0xDFFF)) + (d / "new.prg").write_bytes(prg(0xBFFF)) + saved_dist, saved_results = vr.DIST, list(vr.results) + vr.DIST, vr.results[:] = d, [] + try: + vr.check_prg_ranges([{"prg": "old.prg", "result": "OK"}, + {"prg": "new.prg", "result": "OK"}, + {"prg": "gone.prg", "result": "FAILED"}]) + got = [(n, ok) for n, ok, _ in vr.results] + vr.results[:] = [] + vr.check_prg_ranges([]) + empty = [(n, ok) for n, ok, _ in vr.results] + finally: + vr.DIST = saved_dist + vr.results[:] = saved_results + check("a $DFFF image fails, a $BFFF one passes, unbuilt skipped", got, + [("old.prg load range", False), ("new.prg load range", True)]) + check("nothing to check is a failure", empty, + [("dist PRGs to range-check", False)]) + + def main() -> int: print("=== release-gate verdict regression tests ===") test_verdict_empty_run_is_a_failure() @@ -243,6 +304,8 @@ def main() -> int: test_expected_images_empty_when_nothing_built() test_expected_images_tolerate_old_build_info() test_parse_build_info_records(SAMPLE_BUILD_INFO) + test_boot_gate_drive_setup() + test_prg_range_check() print(f"\n{'=' * 60}") print(f"{PASSED} passed, {FAILED} failed") from _skip_policy import verdict diff --git a/tools/test_prg_io_range.py b/tools/test_prg_io_range.py new file mode 100644 index 0000000..9fec34f --- /dev/null +++ b/tools/test_prg_io_range.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +"""No image may load into the I/O page at $D000-$DFFF (#288). + +A KERNAL LOAD (disk, .d64, a real 1541) stores every byte of a PRG with +the CPU, so bytes at $D000-$DFFF land in the chip registers. The UCI +images used to carry a zero pad to $DFFF (OVERLAY_FILE_PAD, which +positioned the retired P-384 curve blob at $E000); in VICE under true +drive emulation that froze the load with its pointer in CIA1's page +($DC06, $DC09 and $DC0A observed). The checker is tools/check_prg_io_range.py; +this is its test: + + * cfg: every ``cfg/c64-https-*.cfg`` is run through the checker's + load map (where each file-backed area LOADS, from file order and + evaluated sizes), and the three cfg shapes that beat the first + version of this guard are red cases: a size written as an expression, + the old pad split over two lines, and a fill area after the last one. + * PRG: synthetic images at the boundaries. Standalone, it also checks + the PRGs named on the command line, or build/ and dist/ ones. + +The Makefile checks every linked PRG's range after ld65, and +make package-verify checks every dist/*.prg. + + pytest tools/test_prg_io_range.py + python3 tools/test_prg_io_range.py [PRG ...] +""" + +from __future__ import annotations + +import sys +from pathlib import Path + +REPO = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO / "tools")) + +from _skip_policy import verdict # noqa: E402 +from check_prg_io_range import ( # noqa: E402 + CfgError, cfg_io_violations, load_map, prg_io_violation, prg_range, +) + +CERTIFIES = "no linked image loads into the $D000-$DFFF I/O page (#288)" +# Every profile the Makefile can select links one of these; a rename that +# hid one from the glob would otherwise shrink this suite silently. +CFGS = ("c64-https-ip65.cfg", "c64-https-uci.cfg", "c64-https-uci-onchip.cfg", + "c64-https-uci-onchip-cold.cfg", "c64-https-uci-m3.cfg") +# Where each real cfg's file bytes end (the linked PRGs end there too). +LOAD_END = {"c64-https-ip65.cfg": 0xBFFF, "c64-https-uci.cfg": 0xBFFF, + "c64-https-uci-onchip.cfg": 0xBFFF, + "c64-https-uci-onchip-cold.cfg": 0xCFFF, + "c64-https-uci-m3.cfg": 0x9FFF} + +ANCHOR = " X25519_SCRATCH: start = $A000, size = $0224, type = rw, define = yes;\n" +MUTANTS = { + # (a) the old pad, its size an expression: relinks the 55,297 B image + "size expression": ANCHOR + " OVERLAY_FILE_PAD: start = $C000, " + "size = $1000 + $1000, file = %O, define = yes, fill = yes, fillval = $00;\n", + # (b) the old pad split over two lines + "split over lines": ANCHOR + " OVERLAY_FILE_PAD: start = $C000, size = $2000,\n" + " file = %O, define = yes, fill = yes, fillval = $00;\n", + # (c) a fill area after the last one, STARTING above I/O: its bytes + # follow $BFFF in the file, so they load at $C000-$D0FF + "fill after the last area": ANCHOR + " HIGHPAD: start = $E000, " + "size = $1100, file = %O, fill = yes;\n", + # (d), (e) the old pad with the other spellings ld65 accepts for fill + "fill = true": ANCHOR + " OVERLAY_FILE_PAD: start = $C000, " + "size = $2000, file = %O, fill = true;\n", + "fill = 1": ANCHOR + " OVERLAY_FILE_PAD: start = $C000, " + "size = $2000, file = %O, fill = 1;\n", +} +#: The old pad in a second MEMORY block appended to the cfg. +SECOND_MEMORY_BLOCK = ("\nMEMORY {\n OVERLAY_FILE_PAD: start = $C000, " + "size = $2000, file = %O, fill = yes;\n}\n") + + +def _uci_cfg() -> str: + text = (REPO / "cfg" / "c64-https-uci.cfg").read_text() + assert text.count(ANCHOR) == 1, "mutation anchor moved: re-derive it" + return text + + +def _synthetic(last: int, la: int = 0x0801) -> bytes: + return bytes([la & 0xFF, la >> 8]) + bytes(last - la + 1) + + +# --- pytest ------------------------------------------------------------------ +def test_cfg_mutants_are_red(): + base = _uci_cfg() + for name, repl in MUTANTS.items(): + bad = cfg_io_violations(base.replace(ANCHOR, repl)) + assert bad, f"mutant {name!r} passed the cfg check" + assert "$C000-$DFFF" in cfg_io_violations( + base.replace(ANCHOR, MUTANTS["size expression"]))[0] + assert "$C000-$D0FF" in cfg_io_violations( + base.replace(ANCHOR, MUTANTS["fill after the last area"]))[0] + + +def test_cfg_check_fails_closed(): + base = _uci_cfg() + for broken in (ANCHOR + " PAD: start = $C000, size = PADLEN, fill = yes;\n", + ANCHOR + " PAD start = $C000, size = $10;\n", + ANCHOR + " PAD: start = $C000, fill = yes;\n", + ANCHOR + " PAD: start = $C000, size = $10, fill = maybe;\n"): + try: + cfg_io_violations(base.replace(ANCHOR, broken)) + except CfgError: + continue + raise AssertionError(f"unparseable area accepted: {broken.strip()!r}") + for text in (base + SECOND_MEMORY_BLOCK, + base + "\nSEGMENTS {\n PADSEG: load = LOADER, type = ro;\n}\n"): + try: + cfg_io_violations(text) + except CfgError: + continue + raise AssertionError("a second MEMORY/SEGMENTS block was accepted") + + +def test_prg_checker_sees_the_defect(): + assert prg_io_violation(_synthetic(0xDFFF)) # the old 55,297 B image + assert prg_io_violation(_synthetic(0xD000)) # one byte in + assert prg_io_violation(_synthetic(0xBFFF)) is None # 47,105 B + assert prg_io_violation(_synthetic(0xCFFF)) is None # comb cold bank, 51,201 B + assert len(_synthetic(0xBFFF)) == 47105 and len(_synthetic(0xCFFF)) == 51201 + + +def test_no_cfg_loads_into_the_io_page(): + checked = 0 + for name in CFGS: + text = (REPO / "cfg" / name).read_text() + assert not cfg_io_violations(text), f"{name}: {cfg_io_violations(text)}" + assert load_map(text)[-1]["hi"] == LOAD_END[name], name + checked += 1 + assert checked == len(CFGS) + others = {p.name for p in (REPO / "cfg").glob("c64-https-*.cfg")} - set(CFGS) + assert not others, f"unlisted cfgs (add them to CFGS): {sorted(others)}" + + +# --- standalone -------------------------------------------------------------- +def main(argv: list[str]) -> int: + passed = failed = 0 + + def check(ok: bool, msg: str) -> None: + nonlocal passed, failed + print((" PASS " if ok else " FAIL ") + msg) + if ok: + passed += 1 + else: + failed += 1 + + for fn in (test_cfg_mutants_are_red, test_cfg_check_fails_closed, + test_prg_checker_sees_the_defect, test_no_cfg_loads_into_the_io_page): + try: + fn() + check(True, fn.__name__) + except (AssertionError, CfgError) as e: + check(False, f"{fn.__name__}: {e}") + + prgs = [Path(a) for a in argv] or [ + p for p in [REPO / "build" / "c64-https.prg", + *sorted((REPO / "dist").glob("*.prg"))] if p.is_file()] + for p in prgs: + data = p.read_bytes() + bad = prg_io_violation(data) + lo, hi = prg_range(data) + check(bad is None, f"{p}: {len(data)} B, ${lo:04X}-${hi:04X}" + + (f" -- {bad}" if bad else "")) + if not prgs: + print(" (no PRG named or built: the cfg half above is the check)") + return verdict(passed, failed, certifies=CERTIFIES) + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/tools/test_rig_scratch.py b/tools/test_rig_scratch.py index 45bdc16..d914be2 100644 --- a/tools/test_rig_scratch.py +++ b/tools/test_rig_scratch.py @@ -547,6 +547,33 @@ def test_page2_window_withholds_the_vectors() -> None: for r in policy.reserved_regions) +#: Writes the rig write guard must refuse on every UCI profile (#288): the +#: TCP ring and the I/O page. The dropped OVERLAY_FILE_PAD region used to +#: reserve both by accident; nothing linked covers them now. +RUNTIME_ONLY_PROBES = (0xC000, 0xC800, 0xCF00, 0xCFFF, 0xD000, 0xD020, + 0xDC00, 0xDFFF) + + +def test_policy_reserves_the_ring_and_the_io_page() -> None: + from c64_test_harness.memory_policy import MemoryPolicyError + import warnings + fixtures = _profile_fixtures() + assert fixtures, "no profile fixtures" + for name, text in fixtures.items(): + with tempfile.TemporaryDirectory() as td: + labels = Path(td) / "labels.txt" + labels.write_text(text) + policy = mp.build_policy(labels, labels) + for addr in RUNTIME_ONLY_PROBES: + try: + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + policy.check_write(addr, 1) + except MemoryPolicyError: + continue + raise AssertionError(f"{name}: a write at ${addr:04X} is allowed") + + def test_every_rig_allocates_on_the_current_build() -> None: """The real build/labels.txt, whole, when build/ holds a UCI link — the captured fixtures above can go stale; this cannot. A non-UCI or absent diff --git a/tools/uci/_memory_policy.py b/tools/uci/_memory_policy.py index cbdbfea..57242e2 100644 --- a/tools/uci/_memory_policy.py +++ b/tools/uci/_memory_policy.py @@ -198,6 +198,18 @@ def build_policy( MemoryRegion(start, declared_end, note=f"segment:{name}") ) + # Runtime-only ranges no linked region covers (#288). The image used to + # run on to $DFFF with a file-backed pad, and that pad region was what + # reserved both of these; with it gone they would be "unknown" (a + # warning, not a refusal). The TCP ring is the `tcp_recv_buf` equate + # (src/constants.inc), 4 KB, live from the first connect; the I/O page + # is never scratch. + ring = _label_value(labels_path, "tcp_recv_buf", TCP_RING_DEFAULT) + reserved.append(MemoryRegion(ring, ring + TCP_RING_SIZE, + note="tcp_recv_buf ring (runtime, #288)")) + reserved.append(MemoryRegion(IO_PAGE[0], IO_PAGE[1], + note="I/O page (#288)")) + reserved.extend(extra_reserved) return MemoryPolicy( reserved_regions=tuple(reserved), @@ -205,6 +217,26 @@ def build_policy( ) +#: The TCP rx ring (src/constants.inc `tcp_recv_buf`, TCP_RECV_MASK + 1). +TCP_RING_DEFAULT = 0xC000 +TCP_RING_SIZE = 0x1000 +#: VIC/SID/colour RAM/CIAs/expansion I/O, [start, end). +IO_PAGE = (0xD000, 0xE000) + + +def _label_value(labels_path: Path, name: str, default: int) -> int: + """A label's value from a VICE-format labels.txt, or ``default``.""" + try: + text = Path(labels_path).read_text() + except OSError: + return default + for line in text.splitlines(): + parts = line.split() + if len(parts) == 3 and parts[2] == "." + name: + return int(parts[1].split(":")[-1], 16) + return default + + def _parse_used_ends(labels_path: Path) -> dict[str, int]: """Return the half-open ``___LAST__`` value for every region.""" ends: dict[str, int] = {} diff --git a/tools/uci/_prg_load.py b/tools/uci/_prg_load.py index 11fc83d..716e481 100644 --- a/tools/uci/_prg_load.py +++ b/tools/uci/_prg_load.py @@ -54,7 +54,8 @@ #: BASIC ROM, which a host read returns as ROM until boot.s banks it out. VERIFY_END = 0xA000 #: A second span that IS compared: RAM no ROM shadows. The cold-code bank -#: (src/net/uci/cold_bank.s) carries its image here; other images zeros. +#: (src/net/uci/cold_bank.s) carries its image here; no other image reaches +#: it since #288 (they end at $BFFF), so the window compares nothing there. RAM_WINDOW = (0xC000, 0xD000) #: The head-zeroing event lands 2-5 s after READY; re-check past it. HEAD_SETTLE_S = 7.0