@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.11.43] - 2026-06-14
11+
12+ ** ON-TARGET SHIPPABILITY — gale #345 : dissolved ` --relocatable ` objects are now
13+ MCU-shippable and link-survivable (both fix steps bundled).**
14+
15+ - ** #345 step 1 — zero-init wasm linmem → ` .bss ` ** (#347 ): a dissolved
16+ ` --relocatable --native-pointer-abi ` object emitted the entire wasm
17+ linear-memory reservation as a SHT_PROGBITS ` .data ` section — ~ 64 KB of
18+ mostly-zero bytes, a non-starter on a 128 KB-RAM MCU. Now the zero-init
19+ reservation rides a SHT_NOBITS ` .bss ` (zero file bytes; the host loader zeroes
20+ it, preserving wasm zero-init semantics), with only the materialized
21+ ` __synth_globals ` slots in a tiny PROGBITS ` .data ` . Initialized ` (data) `
22+ segments stay PROGBITS. Measured on the dissolved ` k_mutex_unlock ` : ` .data `
23+ ** 65548 → 4 bytes** .
24+ - ** #345 step 2 — link-survivable linmem addressing** (#348 ): the
25+ ` __synth_wasm_data ` /` __synth_globals ` addresses were loaded with inline-immediate
26+ ` MOVW ` /` MOVT-ABS ` (` R_ARM_MOVW_ABS_NC ` /` MOVT_ABS ` ), whose instruction-immediate
27+ form gets mangled into an undefined instruction when linked into a large Zephyr
28+ image (G474RE USAGE FAULT). Replaced with a ** literal-pool load** — `LDR rX,
29+ [ pc, #off] ` from a ` .text` word carrying ` R_ARM_ABS32` (which ` ld`/bfd patches
30+ in a data word and survives a large multi-object link). Mutex object: ** 22
31+ inline ` MOVW/MOVT-ABS ` → 0; 11 link-survivable ` R_ARM_ABS32 ` ** . (A new
32+ ` LdrSym ` literal-pool op, wired through the encoder + reg_effect; a defensive
33+ ` func_base % 4 == 0 ` assert makes the imm12 alignment coupling explicit.)
34+ Together these unblock the 51 struct-return decide drop-ins + jess PR #60 .
35+ The four frozen differentials (control_step 0x00210A55, flight_seam
36+ 0x07FDF307, div_const 338/338, mutex_pressure) stay ** byte-identical** (the
37+ whole change is gated on ` --native-pointer-abi ` ).
38+
39+ ** Falsification:** wrong if a dissolved ` --native-pointer-abi --relocatable `
40+ object still carries a 64 KB PROGBITS ` .data ` or any inline
41+ ` R_ARM_MOVW_ABS_NC ` /` MOVT_ABS ` against ` __synth_wasm_data ` ; or if gale's
42+ G474RE ` mutex_api ` (` CONFIG_GALE_WASM_LTO_MUTEX=y ` ) still links to a USAGE
43+ FAULT. (Reloc-shape + value-differential verified in-tree; gale's silicon
44+ link-test is the final gate.)
45+
1046## [ 0.11.42] - 2026-06-14
1147
1248** IF/ELSE-WITH-RESULT RECONCILIATION BUG-FIX — gale #313 : asymmetric arms
0 commit comments