Skip to content

Link ov023 actor sections from one intact TU - #2172

Merged
andrewboudreau merged 1 commit into
mainfrom
cpp/ov023-complete-overlay
Sep 2, 2026
Merged

Link ov023 actor sections from one intact TU#2172
andrewboudreau merged 1 commit into
mainfrom
cpp/ov023-complete-overlay

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Summary

  • make src/actors/daObjFm_Battan_c.cpp the intact owner of ov023's actor .text, .init, .ctor, class .data, and resource .bss
  • generate the retail static initializer and destructor-registration topology organically from two C++ resource-handle globals
  • retain the independently extracted old level-data bands as ROM-gap linker inputs
  • record exact section, relocation, symbol-binding, address-point, and source-name provenance in the TU manifest

Stacked on #2170. This PR should be retargeted to main after the tooling PR merges.

Validation

  • python tools/tubuild.py linkcheck --baseline --clean -j 16 — 106/106 modules exact; stock 16 MiB ROM SHA-256 reproduced
  • python tools/tubuild.py linkcheck ov023/daObjFm_Battan_c --clean -j 16 — all 5 owned ranges, 9/9 functions, and 48 non-text relocations exact; 0 new symbol errors; full ROM identical to strict control
  • python tools/rombuild.py -j 16 --no-rom — 11,088/11,088 functions, 10/10 data claims, 40-byte BSS claim, and 106/106 modules exact
  • python tools/cpp_tu_compat.py --require-ready — READY
  • python tools/prepush_attribution.py --base tools/intact-multisection-tu --head cpp/ov023-complete-overlay — 0 changed, 0 lost
  • pre-push gates — 405/405 port references and 98/98 reconstructed TUs compile

The repository-wide symbol checker still reports the same nine pre-existing control errors; this candidate introduces zero new errors.

@tangos-validator

tangos-validator Bot commented Sep 2, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

Committed merge passes; 1 contributor credit reassignment(s) noted, not a blocker.

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,635 / 11,347 (93.73%, +0)
Byte-verified code bytes 1,987,836 / 2,211,124 (89.90%, +0)
Claimed, not byte-verified 582 functions, 117,844 bytes (+0)
Perfect source moves 0 R100
Enrolled ranges (delinks complete) 11,059 functions, 2,053,148 bytes (92.86%, +0) -- differs from byte-verified by +424
Contributor credit 0 added, 1 changed, 0 lost
Relocation check 10 checked; 1 BLIND, 9 VERIFIED
Port reference check 405 checked; 0 stale
Module fidelity 106/106 exact; 100.000000% compared bytes
Code linked from verified source 11,088 functions, 2,067,148 bytes (93.49%)
Module bytes from source 2,067,148 / 3,049,600 (67.8%); 811,492 (26.6%) are data no delink entry reaches
ROM data reproduced from source 594 symbol(s) exact, 175 partial, 5 differ

Contributor credit moved (1)

Function Source Before After
ov023:0x02111aa8 src/__sinit_ov023_02111aa8.c -> src/actors/daObjFm_Battan_c.cpp tangosdev andrewboudreau

Byte-verified means the range carries complete in a delinks.txt, so the ROM build compiled it and compared it to the cartridge. The 582 claimed functions have a src/ file named after the symbol with no NONMATCHING banner, and nothing compiles them -- dsd fills their addresses with the ROM's own bytes. Both together are the 11,217 this project calls matched.

Warnings: contributor attribution changed, not a blocker (1 changed, 0 lost -- src/actors/daObjFm_Battan_c.cpp: tangosdev -> andrewboudreau); 1 linkcheck result(s) have unresolved relocations.

Per-file link-check detail

All 1 changed file(s) compile to the ROM byte-for-byte with correct relocation targets.

File Symbol Result Slots checked
src/actors/daObjFm_Battan_c.cpp _ZN16daObjFm_Battan_cD1Ev + _ZN16daObjFm_Battan_cD0Ev + _ZN16daObjFm_Battan_c12UpdateShadowEv + _ZN16daObjFm_Battan_c20UpdateModelTransformEv + _ZN16daObjFm_Battan_c16CleanupResourcesEv + _ZN16daObjFm_Battan_c6RenderEv + _ZN16daObjFm_Battan_c8BehaviorEv + _ZN16daObjFm_Battan_c13InitResourcesEv + daObjFm_Battan_c_classInit + __sinit_daObjFm_Battan_c.cpp 🔶 blind (a reloc slot could not be resolved) 10

The private worker commits a test merge, builds the stock ROM profile, compares every executable module, measures matched and source-built code, checks contributor lineage, and verifies affected relocations. The mod profile is opt-in and is not part of this merge gate.

@andrewboudreau
andrewboudreau marked this pull request as ready for review September 2, 2026 12:48
@andrewboudreau
andrewboudreau marked this pull request as draft September 2, 2026 12:59
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 2, 2026 13:50
Base automatically changed from tools/intact-multisection-tu to main September 2, 2026 16:25
@andrewboudreau
andrewboudreau merged commit 710b95f into main Sep 2, 2026
8 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/ov023-complete-overlay branch September 2, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant