phase6: add the symbol registry and per-region flag overrides, and register 0x8002D2A0

This commit is contained in:
Christopher Williams
2026-09-23 20:54:10 -04:00
parent 73e8cd9a2e
commit 673edb2ded
8 changed files with 342 additions and 26 deletions
+21 -4
View File
@@ -19,8 +19,18 @@ allocation" is **not** a match. If the bytes differ, the function stays fallback
Add one row to the tracked registry `config/regions.tsv`:
```
# start<TAB>end<TAB>source
# start<TAB>end<TAB>source[<TAB>overrides]
0x80017AD4 0x80017AE8 src/func_80017AD4.c
0x8002D2A0 0x8002D2BC src/func_8002D2A0.c
```
A row may carry an optional fourth field of **per-region flag overrides**: space-separated
`key=value` tokens with key `cc1` or `as`, each value a comma-separated flag list. The flags are
appended to that region's effective toolchain flags only, so a region can override a global default
(for example `cc1=-O0`). Example:
```
0x80030000 0x80030040 src/func_80030000.c cc1=-O0 as=-G8
```
Rules the harness enforces:
@@ -69,9 +79,16 @@ start before sharing.
## Symbols
Cross-references to functions and globals that are not themselves matched are supplied as absolute
assembler definitions (`--defsym NAME=0xADDR`). The harness currently accepts these **globally** for a
whole build; per-region symbols are not yet supported, which is why a symbol-referencing match such as
`0x8002D2A0` is verified but not yet registered.
assembler definitions (`--defsym NAME=0xADDR`). A **tracked symbol registry**, `config/symbols.tsv`,
holds these as `NAME<TAB>address` rows (hex, `0x` optional) and is loaded with `--symbols`:
```
g_80122354 0x80122354
```
`make code` and `make gate` pass `config/symbols.tsv` automatically; `range` accepts `--symbols`
(and `--defsym` for one-off names). A name in the registry is an address placeholder, not a claim
about the object's meaning. `0x8002D2A0` is registered and gated this way.
## Verification procedure