Files
BFM-decomp/cookbook/C0378.md
T

1.1 KiB

§337 — THE CC1-ONLY BLOCKER CLASS: blocker_probe's STATIC ORACLE REPORTS "none" AND THE WHOLE-TU COMPILE STILL FAILS (P31 S67; ov_SC04_011/func_801827DC, md_MAIN_027/func_800CB4A4)

Two byte-correct bodies this wave were rejected for declaration conflicts the STATIC analyzer could not see, and it said so — blocker "none" — while real cc1 died:

  • func_801827DC — the TU declares extern void *D_80194500[] at file scope (line 6005) and the draft redeclared it [][3]. Fixed with the TU's own §183 __asm__-label alias (extern void *a4500[][3] __asm__("D_80194500");), preserving the 2-D index shape.
  • func_800CB4A4 — the draft's typedef ... Blk8; collides with one at md_MAIN_027.c:314, which sits AFTER the INCLUDE_ASM site. Fixed by dropping the typedef and adopting the TU's house spelling (memcpy((void*)(s3+0x154), &D_800CC298[0], 8)). The lesson is about the oracle, not the drafts: a "none" from the static analyzer is not evidence of no blocker — it is evidence the analyzer is blind here (R34). Always finish on the real whole-TU compile.