Commit 501a6e9
gale #354: the #345 zero-init split is binary (split_linmem_bss = native_layout
&& data_segments.is_empty()), so ANY initialized (data) segment makes the whole
[0, used_extent) linmem image PROGBITS. A dissolved stack_push seam carries a
12-byte .rodata const (-12/-ENOMEM) at linmem offset 65536, above the 64 KiB
shadow stack → 65552-byte PROGBITS .data (MCU-unshippable; mutex is .data=4).
This is the mixed-case deferred in the #345 code comment coming due — NOT a
v0.11.44 regression; #350 just made stack_push compile far enough to expose it.
- artifacts/gale-integration.yaml: GI-NPA-004 (sw-req, proposed, release-v0.11.45).
Design: per-region SYMBOLS (zero reservation keeps __synth_wasm_data/.bss; each
init segment gets its own PROGBITS section + symbol; selector relocates each
static access against its region's symbol) — link-survivable, unlike a naive
per-section split (single base symbol + baked addends need contiguity the
linker won't grant). Sound iff init-data is statically separable from the zero
region — to confirm against gale's stack_push.loom.wasm before implementing.
- scripts/repro/high_offset_init_segment_354.wat: minimal reconstruction (SP
global init 65536 + 12-byte init segment at 65536 + static load at addr 65544)
that reproduces .data=65552 locally with --native-pointer-abi --relocatable.
Implementation (selector + ELF) is the next feature-loop; this commit tracks +
secures the repro. Frozen differentials unaffected (no code change here).
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent a22cb9b commit 501a6e9
2 files changed
Lines changed: 56 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
516 | 516 | | |
517 | 517 | | |
518 | 518 | | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
0 commit comments