mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-06 01:04:13 -04:00
5e78dccf07
- ROOT CAUSE PINNED (the session-2 half-pin was INVERTED; both probes were vacuous, R35): cc1 emits .align 3 before EVERY jump table; maspsx passes it VERBATIM (the :435 'drop' is an inventory-only pass); as bakes the pad SECTION-RELATIVE; link placement was never guilty (SUBALIGN(2) + ALIGN(.,4) place 4-mod-8 carve starts tight). Merging originally-separate TUs fires an intra-TU align where the original packed tight -> +4 at rodata 0xCC -> image-wide %lo shift. Honest probes persisted: .run/probe_jtbl/ (verdict.md + objdumps). - NEW tools/jtbl_rodata_pads.py: post-maspsx filter replaces each rodata .align 3 with the ORIGINAL's exact pad bytes per a JTBL_PADS spec; fail-loud on table-count drift / non-align-3 / non-jtbl rodata content. Byte-proven: verbatim 0xE4 pad-at-0xCC -> filtered 0xE0 tight (= the merged carve span). - jtbl_carve.py: spec-aware same-subseg merge (gap 0 or 4-with-zero-payload-word; else NON-CONTIGUOUS -> isolate), interval-arithmetic pad specs (committed values CARRIED, never re-derived), JTBL_PADS target-var emission into overlays.mk + revert() restore + stale-.o invalidation; the false 'maspsx drops .align' docstring corrected (H5). - Makefile: $(if $(JTBL_PADS),| jtbl_rodata_pads.py ...) stage in build/src/%.o + file-scope empty default (env-shield). jtbl_family_bank.stub_file: duplicate-stub fail-loud (the earlier 'ladder failure' was a wrong-TU splice into a stale _a.c stub, byte-witnessed). - R22 clean-fleet WITH the fix wired: 140/140 byte-identical, tools-health green (dedup 1846/0, C1 234205/234205), ZERO new banks -- fleet-neutral by construction. - cookbook §8e (the jtbl alignment law) + §8a/§8a-pad corrections; decision-log R31 entry; SETUP.md tool row; .gitignore allowlist for the probe verdict artifacts.
23 lines
1.2 KiB
Plaintext
23 lines
1.2 KiB
Plaintext
|
|
.run/probe_jtbl/tu_verbatim.o: file format elf32-tradlittlemips
|
|
|
|
Contents of section .rodata:
|
|
0000 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0010 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0020 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0030 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0040 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0050 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0060 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0070 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0080 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
0090 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
00a0 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
00b0 50000000 50000000 50000000 50000000 P...P...P...P...
|
|
00c0 48000000 48000000 48000000 00000000 H...H...H.......
|
|
00d0 60670000 60670000 54690000 6c6a0000 `g..`g..Ti..lj..
|
|
00e0 146c0000 .l..
|
|
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
|
|
[ 9] .rodata PROGBITS 00000000 00f6f0 0000e4 00 A 0 0 8
|
|
[10] .rel.rodata REL 00000000 017ac0 0001c0 08 I 12 9 4
|