Skip to content

Commit a97b09c

Browse files
antonsyndclaude
andcommitted
harness: log overlay_29 section_diff attempt (rodata alignment blocker)
34/34 functions matched at instruction level but MWCC -ipa file splits u8[] rodata into separate alignment-1 ELF sections, causing wrong linker concatenation order vs the asm's interleaved layout. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 99091aa commit a97b09c

2 files changed

Lines changed: 3 additions & 1 deletion

File tree

tools/decomp_harness/attempts_log.jsonl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,3 +313,5 @@
313313
{"file": "asm/overlay_93_arm.s", "function": "ov93_0225EFAC", "approach": "raw NNS_G3dGeBufferOP_N per GE command, sibling scopes per vertex", "outcome": "matched", "lesson": "Texcoord needs the double cast (u16)(fx16)(x >> (FX32_SHIFT-4)); the operand NOT shifted left by 16 must be the first | operand.", "pattern_id": "nnsg3d-immediate-mode-is-one-local-per-ge-command", "ts": "2026-08-09T20:12:40Z"}
314314
{"file": "asm/overlay_93_arm.s", "function": "ov93_0225F548", "approach": "short if/else arm moved to else; second-half values reuse the a/b/mid locals", "outcome": "matched", "lesson": "MWCC/ARM predicates only the else block; fresh locals for recycled r6/r7/r8 rotate into ip/lr no matter the declaration order. Second switch is default: merged with case 0, then case 2, then case 1.", "pattern_id": "callee-saved-recycling-follows-variable-identity", "ts": "2026-08-09T20:12:40Z"}
315315
{"file": "asm/overlay_93_arm.s", "function": "ov93_0225F8E4", "approach": "hoisted the dead *p4 = a2 store above the if", "outcome": "matched", "lesson": "An earlier first use of a stack parameter anchors its ldr at the top of the block even when the store itself sinks back down. Declaration reordering, temps, and a local pointer copy all failed.", "pattern_id": "hoist-the-dead-pointer-store-to-move-a-stack-param-load", "ts": "2026-08-09T20:12:40Z"}
316+
{"file": "asm/overlay_29.s", "function": "ALL", "approach": "Full decomp with 7 NONMATCHING. 34/34 functions match but rodata section ordering wrong.", "outcome": "section_diff", "lesson": "MWCC -ipa file splits u8[] rodata into separate alignment-1 ELF sections. Linker places them before alignment-4 sections but asm interleaves them.", "ts": "2026-08-25T22:30:41Z"}
317+
{"file": "asm/overlay_29.s", "function": "ALL", "approach": "27/34 funcs matched in C, 7 needed NONMATCHING. Rodata ordering blocker: sDigitPositions u8 arrays create separate alignment-1 ELF sections that linker places wrong.", "outcome": "section_diff", "lesson": "Files with mixed u8[] and pointer/struct rodata may need combined struct approach to prevent MWCC -ipa file from splitting rodata into separate sections with different alignments.", "ts": "2026-08-25T22:34:26Z"}

tools/decomp_harness/triage_report.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"generated": "2026-08-12T03:32:29Z",
2+
"generated": "2026-08-25T19:32:17Z",
33
"weights": {
44
"insn_line": 1.0,
55
"unknown_callee": 40.0,

0 commit comments

Comments
 (0)