mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 06:49:47 -04:00
feat(phase-21): T2 — fuel prefetch, Ghidra-C cache complete for the ROI pool
- headless DecompileFunctions over 263 uncached ROI-pool fns (MCP stopped, R23): 263 ok / 0 fail / 0 no-func. cache 300 -> 563. ROI-pool fuel now 325/325 cached (28/28 giants, 310/310 reach-134, 7/7 capped) -> the unattended run never needs MCP. - FIX DecompileFunctions.java: key output by entry address func_<UPPERHEX>.c (Ghidra's raw-import default is FUN_<lowerhex>, which every consumer + the existing 300 files miss). Renamed the 263; the tool fix makes re-prefetch reproducible. - build_fuel_manifest.py --emit-prefetch: reproducible uncached-ROI-pool addr-list (for the T7 runbook). 349 reach-1 x1-leverage fns intentionally excluded (P9). - ghidra/ db churn is the MCP-stop no-op save (R23 restart-noise, not staged).
This commit is contained in:
@@ -45,7 +45,12 @@ public class DecompileFunctions extends GhidraScript {
|
||||
out = "// DECOMPILE FAILED: " + (res != null ? res.getErrorMessage() : "null result");
|
||||
fail++;
|
||||
}
|
||||
Files.write(Paths.get(outDir, f.getName() + ".c"), out.getBytes());
|
||||
// Key the cache file by the function's ENTRY ADDRESS as func_<UPPERHEX>.c — the
|
||||
// convention every consumer uses (derive_canonical_sigs.py, gen_wave.py, the
|
||||
// fuel manifest). Ghidra's default raw-import name is FUN_<lowerhex>, so naming by
|
||||
// f.getName() would miss the cache; keying by address is reproducible + correct.
|
||||
String fname = "func_" + Long.toHexString(f.getEntryPoint().getOffset()).toUpperCase() + ".c";
|
||||
Files.write(Paths.get(outDir, fname), out.getBytes());
|
||||
}
|
||||
di.dispose();
|
||||
println("DecompileFunctions: " + ok + " ok, " + fail + " decompile-fail, " + nofunc
|
||||
|
||||
Reference in New Issue
Block a user