Step2 evaluates whether decompiled code can be repaired by the LLM until it recompiles and links successfully.
decompiled code
-> compile / link
-> parse errors
-> ask the LLM for a fix
-> apply the patch
-> retry
Primary entry:
evaluator/syntactic/auto_fixer_v3.py
Step2 ends in one of three main states:
success- compilation and linking both succeed
linker_failed- compilation succeeds but linking still fails
compile_failed- compilation never succeeds
Task-level exceptional states may also occur, for example:
context_exceededtool_call_invalidapi_error
Each task writes Step2 outputs to:
results_<llm>_v4_full/<arch>/<src>/<bin_name>/<decompiler>/syntactic/
Key files:
repair_trace.jsoncompile_checkpoint.jsonfix_<bin_name>.cbin/<bin_name>_fixed
final_statustotal_iterationshistoryinitial_errorshistorical_lowest_errors
Each history entry typically includes:
- current phase
- error summary
- token usage
time_cost
In eval_state_{arch}.json:
steps.syntactic.statusmaps tofinal_statussteps.syntactic.iterationsmaps to the iteration countsteps.syntactic.tokensandtime_costare aggregated fromrepair_trace.json
- Only the
auto_fixer_v3.pyline is retained; older Step2 entrypoints are removed - The results tree keeps full Step2 artifacts for reproducibility and secondary analysis