From 1ea8c4886716ef92770605811f4ecb81e1833af1 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Tue, 26 May 2026 16:11:50 -0700 Subject: [PATCH] raddbg exemplar tests -> use specific hash version, name exemplars by their platform, skip if test data unavailable --- .../exemplar_windows | 1500 +++++++++++++++++ .../exemplar_windows | 1464 ++++++++++++++++ .../exemplar_windows | 1476 ++++++++++++++++ project.raddbg | 2 +- src/base/base_test.h | 21 +- src/raddbg/tests/raddbg_tests.c | 349 ++-- src/torture/torture.c | 19 +- src/torture/torture.h | 2 +- 8 files changed, 4663 insertions(+), 170 deletions(-) create mode 100644 data/test_exemplars/mule_main_9ff1e58f_control_flow_step_regressions/exemplar_windows create mode 100644 data/test_exemplars/mule_main_9ff1e58f_step_regressions_0/exemplar_windows create mode 100644 data/test_exemplars/mule_main_9ff1e58f_step_regressions_1/exemplar_windows diff --git a/data/test_exemplars/mule_main_9ff1e58f_control_flow_step_regressions/exemplar_windows b/data/test_exemplars/mule_main_9ff1e58f_control_flow_step_regressions/exemplar_windows new file mode 100644 index 00000000..b7a9e2c2 --- /dev/null +++ b/data/test_exemplars/mule_main_9ff1e58f_control_flow_step_regressions/exemplar_windows @@ -0,0 +1,1500 @@ +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2366 + column_num: 1 + voff_range: + [ + 0xea20 + 0xea24 + ) + } +} +ip_voff: 0xea20 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2368 + column_num: 1 + voff_range: + [ + 0xea24 + 0xea2c + ) + } +} +ip_voff: 0xea24 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2369 + column_num: 1 + voff_range: + [ + 0xea2c + 0xea33 + ) + } +} +ip_voff: 0xea2c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2372 + column_num: 1 + voff_range: + [ + 0xea3d + 0xea44 + ) + } +} +ip_voff: 0xea3d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2373 + column_num: 1 + voff_range: + [ + 0xea44 + 0xea4f + ) + } +} +ip_voff: 0xea44 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2378 + column_num: 1 + voff_range: + [ + 0xea4f + 0xea57 + ) + } +} +ip_voff: 0xea4f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2379 + column_num: 1 + voff_range: + [ + 0xea57 + 0xea5e + ) + } +} +ip_voff: 0xea57 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2383 + column_num: 1 + voff_range: + [ + 0xea68 + 0xea6f + ) + } +} +ip_voff: 0xea68 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2385 + column_num: 1 + voff_range: + [ + 0xea6f + 0xea7a + ) + } +} +ip_voff: 0xea6f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2390 + column_num: 1 + voff_range: + [ + 0xea7a + 0xea82 + ) + } +} +ip_voff: 0xea7a +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2391 + column_num: 1 + voff_range: + [ + 0xea82 + 0xea89 + ) + } +} +ip_voff: 0xea82 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2393 + column_num: 1 + voff_range: + [ + 0xea93 + 0xea9a + ) + } +} +ip_voff: 0xea93 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2394 + column_num: 1 + voff_range: + [ + 0xea9a + 0xeaa5 + ) + } +} +ip_voff: 0xea9a +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2398 + column_num: 1 + voff_range: + [ + 0xeaa5 + 0xeaad + ) + } +} +ip_voff: 0xeaa5 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2399 + column_num: 1 + voff_range: + [ + 0xeaad + 0xeab5 + ) + } +} +ip_voff: 0xeaad +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2400 + column_num: 1 + voff_range: + [ + 0xeab5 + 0xeabf + ) + } +} +ip_voff: 0xeab5 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2401 + column_num: 1 + voff_range: + [ + 0xeabf + 0xeac9 + ) + } +} +ip_voff: 0xeabf +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2405 + column_num: 1 + voff_range: + [ + 0xead5 + 0xeadf + ) + } +} +ip_voff: 0xead5 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2407 + column_num: 1 + voff_range: + [ + 0xeadf + 0xeae1 + ) + } +} +ip_voff: 0xeadf +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2419 + column_num: 1 + voff_range: + [ + 0xeb05 + 0xeb0d + ) + } +} +ip_voff: 0xeb05 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2420 + column_num: 1 + voff_range: + [ + 0xeb0d + 0xeb15 + ) + } +} +ip_voff: 0xeb0d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2421 + column_num: 1 + voff_range: + [ + 0xeb15 + 0xeb1f + ) + } +} +ip_voff: 0xeb15 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2423 + column_num: 1 + voff_range: + [ + 0xeb1f + 0xeb29 + ) + } +} +ip_voff: 0xeb1f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2429 + column_num: 1 + voff_range: + [ + 0xeb35 + 0xeb3f + ) + } +} +ip_voff: 0xeb35 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2431 + column_num: 1 + voff_range: + [ + 0xeb3f + 0xeb41 + ) + } +} +ip_voff: 0xeb3f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2446 + column_num: 1 + voff_range: + [ + 0xeb65 + 0xeb6d + ) + } +} +ip_voff: 0xeb65 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2447 + column_num: 1 + voff_range: + [ + 0xeb6d + 0xeb75 + ) + } +} +ip_voff: 0xeb6d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2448 + column_num: 1 + voff_range: + [ + 0xeb75 + 0xeb7f + ) + } +} +ip_voff: 0xeb75 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2449 + column_num: 1 + voff_range: + [ + 0xeb7f + 0xeb89 + ) + } +} +ip_voff: 0xeb7f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2452 + column_num: 1 + voff_range: + [ + 0xeb95 + 0xeba1 + ) + } +} +ip_voff: 0xeb95 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2461 + column_num: 1 + voff_range: + [ + 0xebc5 + 0xebcd + ) + } +} +ip_voff: 0xebc5 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebcd +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2463 + column_num: 1 + voff_range: + [ + 0xebe8 + 0xebf8 + ) + } +} +ip_voff: 0xebe8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2464 + column_num: 1 + voff_range: + [ + 0xebf8 + 0xebfa + ) + } +} +ip_voff: 0xebf8 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2462 + column_num: 1 + voff_range: + [ + 0xebcd + 0xebe8 + ) + } +} +ip_voff: 0xebd7 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2468 + column_num: 1 + voff_range: + [ + 0xebfa + 0xec02 + ) + } +} +ip_voff: 0xebfa +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec02 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2471 + column_num: 1 + voff_range: + [ + 0xec1d + 0xec2d + ) + } +} +ip_voff: 0xec1d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2472 + column_num: 1 + voff_range: + [ + 0xec2d + 0xec2f + ) + } +} +ip_voff: 0xec2d +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2469 + column_num: 1 + voff_range: + [ + 0xec02 + 0xec1d + ) + } +} +ip_voff: 0xec0c +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2476 + column_num: 1 + voff_range: + [ + 0xec2f + 0xec37 + ) + } +} +ip_voff: 0xec2f +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2477 + column_num: 1 + voff_range: + [ + 0xec37 + 0xec52 + ) + } +} +ip_voff: 0xec37 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2478 + column_num: 1 + voff_range: + [ + 0xec52 + 0xec64 + ) + } +} +ip_voff: 0xec52 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2477 + column_num: 1 + voff_range: + [ + 0xec37 + 0xec52 + ) + } +} +ip_voff: 0xec41 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2478 + column_num: 1 + voff_range: + [ + 0xec52 + 0xec64 + ) + } +} +ip_voff: 0xec52 +ip_voff_symbol: control_flow_stepping_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 2477 + column_num: 1 + voff_range: + [ + 0xec37 + 0xec52 + ) + } +} +ip_voff: 0xec41 +ip_voff_symbol: control_flow_stepping_tests diff --git a/data/test_exemplars/mule_main_9ff1e58f_step_regressions_0/exemplar_windows b/data/test_exemplars/mule_main_9ff1e58f_step_regressions_0/exemplar_windows new file mode 100644 index 00000000..96d94635 --- /dev/null +++ b/data/test_exemplars/mule_main_9ff1e58f_step_regressions_0/exemplar_windows @@ -0,0 +1,1464 @@ +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3193 + column_num: 1 + voff_range: + [ + 0x1bb0 + 0x1bbd + ) + } +} +ip_voff: 0x1bb0 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3194 + column_num: 1 + voff_range: + [ + 0x1bbd + 0x1bd0 + ) + } +} +ip_voff: 0x1bbd +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 245 + column_num: 1 + voff_range: + [ + 0x1040 + 0x1044 + ) + } +} +ip_voff: 0x1040 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x1044 +ip_voff_symbol: raddbg_thread_id__impl +lines +ip_voff: 0x15890 +ip_voff_symbol: "" +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x104a +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 247 + column_num: 1 + voff_range: + [ + 0x104e + 0x1052 + ) + } +} +ip_voff: 0x104e +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 248 + column_num: 1 + voff_range: + [ + 0x1052 + 0x1057 + ) + } +} +ip_voff: 0x1052 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3194 + column_num: 1 + voff_range: + [ + 0x1bbd + 0x1bd0 + ) + } +} +ip_voff: 0x1bc2 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3195 + column_num: 1 + voff_range: + [ + 0x1bd0 + 0x1be2 + ) + } +} +ip_voff: 0x1bd0 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 245 + column_num: 1 + voff_range: + [ + 0x1040 + 0x1044 + ) + } +} +ip_voff: 0x1040 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x1044 +ip_voff_symbol: raddbg_thread_id__impl +lines +ip_voff: 0x15890 +ip_voff_symbol: "" +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x104a +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 247 + column_num: 1 + voff_range: + [ + 0x104e + 0x1052 + ) + } +} +ip_voff: 0x104e +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 248 + column_num: 1 + voff_range: + [ + 0x1052 + 0x1057 + ) + } +} +ip_voff: 0x1052 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3195 + column_num: 1 + voff_range: + [ + 0x1bd0 + 0x1be2 + ) + } +} +ip_voff: 0x1bd5 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3196 + column_num: 1 + voff_range: + [ + 0x1be2 + 0x1beb + ) + } +} +ip_voff: 0x1be2 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 239 + column_num: 1 + voff_range: + [ + 0x1000 + 0x1004 + ) + } +} +ip_voff: 0x1000 +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 240 + column_num: 1 + voff_range: + [ + 0x1004 + 0x102f + ) + } +} +ip_voff: 0x1004 +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 241 + column_num: 1 + voff_range: + [ + 0x102f + 0x1034 + ) + } +} +ip_voff: 0x102f +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3196 + column_num: 1 + voff_range: + [ + 0x1be2 + 0x1beb + ) + } +} +ip_voff: 0x1be7 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3198 + column_num: 1 + voff_range: + [ + 0x1beb + 0x1bf8 + ) + } +} +ip_voff: 0x1beb +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3201 + column_num: 1 + voff_range: + [ + 0x1bf8 + 0x1bfd + ) + } +} +ip_voff: 0x1bf8 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 39 + column_num: 1 + voff_range: + [ + 0x1af0 + 0x1af4 + ) + } +} +ip_voff: 0x1af0 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 40 + column_num: 1 + voff_range: + [ + 0x1af4 + 0x1b08 + ) + } +} +ip_voff: 0x1af4 +ip_voff_symbol: mule_init +lines +ip_voff: 0x20830 +ip_voff_symbol: "" +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 40 + column_num: 1 + voff_range: + [ + 0x1af4 + 0x1b08 + ) + } +} +ip_voff: 0x1b01 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 41 + column_num: 1 + voff_range: + [ + 0x1b08 + 0x1b0d + ) + } +} +ip_voff: 0x1b08 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3203 + column_num: 1 + voff_range: + [ + 0x1bfd + 0x1c02 + ) + } +} +ip_voff: 0x1bfd +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 424 + column_num: 1 + voff_range: + [ + 0x1d20 + 0x1d42 + ) + } +} +ip_voff: 0x1d20 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 425 + column_num: 1 + voff_range: + [ + 0x1d42 + 0x1dd0 + ) + } +} +ip_voff: 0x1d42 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 426 + column_num: 1 + voff_range: + [ + 0x1dd0 + 0x1e4a + ) + } +} +ip_voff: 0x1dd0 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 428 + column_num: 1 + voff_range: + [ + 0x1e4a + 0x1e55 + ) + } +} +ip_voff: 0x1e4a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 429 + column_num: 1 + voff_range: + [ + 0x1e55 + 0x1e60 + ) + } +} +ip_voff: 0x1e55 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 431 + column_num: 1 + voff_range: + [ + 0x1e60 + 0x1e68 + ) + } +} +ip_voff: 0x1e60 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 432 + column_num: 1 + voff_range: + [ + 0x1e68 + 0x1e74 + ) + } +} +ip_voff: 0x1e68 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 434 + column_num: 1 + voff_range: + [ + 0x1e74 + 0x1e90 + ) + } +} +ip_voff: 0x1e74 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 435 + column_num: 1 + voff_range: + [ + 0x1e90 + 0x1eac + ) + } +} +ip_voff: 0x1e90 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 440 + column_num: 1 + voff_range: + [ + 0x1eac + 0x1ec8 + ) + } +} +ip_voff: 0x1eac +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 445 + column_num: 1 + voff_range: + [ + 0x1ec8 + 0x1f18 + ) + } +} +ip_voff: 0x1ec8 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 451 + column_num: 1 + voff_range: + [ + 0x1f18 + 0x1f31 + ) + } +} +ip_voff: 0x1f18 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 452 + column_num: 1 + voff_range: + [ + 0x1f31 + 0x1f4a + ) + } +} +ip_voff: 0x1f31 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 454 + column_num: 1 + voff_range: + [ + 0x1f4a + 0x1f59 + ) + } +} +ip_voff: 0x1f4a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 455 + column_num: 1 + voff_range: + [ + 0x1f59 + 0x1f75 + ) + } +} +ip_voff: 0x1f59 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 456 + column_num: 1 + voff_range: + [ + 0x1f75 + 0x1f84 + ) + } +} +ip_voff: 0x1f75 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 458 + column_num: 1 + voff_range: + [ + 0x1f84 + 0x1f93 + ) + } +} +ip_voff: 0x1f84 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 460 + column_num: 1 + voff_range: + [ + 0x1f93 + 0x1fa3 + ) + } +} +ip_voff: 0x1f93 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 461 + column_num: 1 + voff_range: + [ + 0x1fa3 + 0x1fb3 + ) + } +} +ip_voff: 0x1fa3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 462 + column_num: 1 + voff_range: + [ + 0x1fb3 + 0x1fc3 + ) + } +} +ip_voff: 0x1fb3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 467 + column_num: 1 + voff_range: + [ + 0x1fc3 + 0x1fdf + ) + } +} +ip_voff: 0x1fc3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 468 + column_num: 1 + voff_range: + [ + 0x1fdf + 0x1ffb + ) + } +} +ip_voff: 0x1fdf +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 469 + column_num: 1 + voff_range: + [ + 0x1ffb + 0x2017 + ) + } +} +ip_voff: 0x1ffb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 470 + column_num: 1 + voff_range: + [ + 0x2017 + 0x2033 + ) + } +} +ip_voff: 0x2017 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 471 + column_num: 1 + voff_range: + [ + 0x2033 + 0x204f + ) + } +} +ip_voff: 0x2033 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 472 + column_num: 1 + voff_range: + [ + 0x204f + 0x206b + ) + } +} +ip_voff: 0x204f +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 473 + column_num: 1 + voff_range: + [ + 0x206b + 0x2087 + ) + } +} +ip_voff: 0x206b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 474 + column_num: 1 + voff_range: + [ + 0x2087 + 0x20a3 + ) + } +} +ip_voff: 0x2087 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 475 + column_num: 1 + voff_range: + [ + 0x20a3 + 0x20d3 + ) + } +} +ip_voff: 0x20a3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 477 + column_num: 1 + voff_range: + [ + 0x20d3 + 0x20de + ) + } +} +ip_voff: 0x20d3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 481 + column_num: 1 + voff_range: + [ + 0x20de + 0x20fa + ) + } +} +ip_voff: 0x20de +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 482 + column_num: 1 + voff_range: + [ + 0x20fa + 0x2116 + ) + } +} +ip_voff: 0x20fa +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 483 + column_num: 1 + voff_range: + [ + 0x2116 + 0x2132 + ) + } +} +ip_voff: 0x2116 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 484 + column_num: 1 + voff_range: + [ + 0x2132 + 0x214e + ) + } +} +ip_voff: 0x2132 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 485 + column_num: 1 + voff_range: + [ + 0x214e + 0x216a + ) + } +} +ip_voff: 0x214e +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 486 + column_num: 1 + voff_range: + [ + 0x216a + 0x2186 + ) + } +} +ip_voff: 0x216a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 490 + column_num: 1 + voff_range: + [ + 0x2186 + 0x2193 + ) + } +} +ip_voff: 0x2186 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 491 + column_num: 1 + voff_range: + [ + 0x2193 + 0x219b + ) + } +} +ip_voff: 0x2193 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 494 + column_num: 1 + voff_range: + [ + 0x219b + 0x21b3 + ) + } +} +ip_voff: 0x219b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 497 + column_num: 1 + voff_range: + [ + 0x21b3 + 0x21cb + ) + } +} +ip_voff: 0x21b3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 498 + column_num: 1 + voff_range: + [ + 0x21cb + 0x21e3 + ) + } +} +ip_voff: 0x21cb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 499 + column_num: 1 + voff_range: + [ + 0x21e3 + 0x21fb + ) + } +} +ip_voff: 0x21e3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 500 + column_num: 1 + voff_range: + [ + 0x21fb + 0x2213 + ) + } +} +ip_voff: 0x21fb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 501 + column_num: 1 + voff_range: + [ + 0x2213 + 0x222b + ) + } +} +ip_voff: 0x2213 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 504 + column_num: 1 + voff_range: + [ + 0x222b + 0x2243 + ) + } +} +ip_voff: 0x222b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 512 + column_num: 1 + voff_range: + [ + 0x2243 + 0x2257 + ) + } +} +ip_voff: 0x2243 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 514 + column_num: 1 + voff_range: + [ + 0x2257 + 0x2262 + ) + } +} +ip_voff: 0x2257 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 515 + column_num: 1 + voff_range: + [ + 0x2262 + 0x2273 + ) + } +} +ip_voff: 0x2262 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 516 + column_num: 1 + voff_range: + [ + 0x2273 + 0x2287 + ) + } +} +ip_voff: 0x2273 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 517 + column_num: 1 + voff_range: + [ + 0x2287 + 0x22a1 + ) + } +} +ip_voff: 0x2287 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 518 + column_num: 1 + voff_range: + [ + 0x22a1 + 0x22b5 + ) + } +} +ip_voff: 0x22a1 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 519 + column_num: 1 + voff_range: + [ + 0x22b5 + 0x22cf + ) + } +} +ip_voff: 0x22b5 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 520 + column_num: 1 + voff_range: + [ + 0x22cf + 0x22e3 + ) + } +} +ip_voff: 0x22cf +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 521 + column_num: 1 + voff_range: + [ + 0x22e3 + 0x22fd + ) + } +} +ip_voff: 0x22e3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 522 + column_num: 1 + voff_range: + [ + 0x22fd + 0x2305 + ) + } +} +ip_voff: 0x22fd +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 525 + column_num: 1 + voff_range: + [ + 0x2305 + 0x2315 + ) + } +} +ip_voff: 0x2305 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 526 + column_num: 1 + voff_range: + [ + 0x2315 + 0x2326 + ) + } +} +ip_voff: 0x2315 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 528 + column_num: 1 + voff_range: + [ + 0x2326 + 0x2331 + ) + } +} +ip_voff: 0x2326 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 530 + column_num: 1 + voff_range: + [ + 0x2331 + 0x2368 + ) + } +} +ip_voff: 0x2331 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 533 + column_num: 1 + voff_range: + [ + 0x2368 + 0x2377 + ) + } +} +ip_voff: 0x2368 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 534 + column_num: 1 + voff_range: + [ + 0x2377 + 0x2387 + ) + } +} +ip_voff: 0x2377 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 535 + column_num: 1 + voff_range: + [ + 0x2387 + 0x2396 + ) + } +} +ip_voff: 0x2387 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 536 + column_num: 1 + voff_range: + [ + 0x2396 + 0x23a6 + ) + } +} +ip_voff: 0x2396 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 537 + column_num: 1 + voff_range: + [ + 0x23a6 + 0x23e0 + ) + } +} +ip_voff: 0x23a6 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 542 + column_num: 1 + voff_range: + [ + 0x23e0 + 0x2415 + ) + } +} +ip_voff: 0x23e0 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 543 + column_num: 1 + voff_range: + [ + 0x2415 + 0x244a + ) + } +} +ip_voff: 0x2415 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 544 + column_num: 1 + voff_range: + [ + 0x244a + 0x247f + ) + } +} +ip_voff: 0x244a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 545 + column_num: 1 + voff_range: + [ + 0x247f + 0x24b4 + ) + } +} +ip_voff: 0x247f +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 549 + column_num: 1 + voff_range: + [ + 0x24b4 + 0x24d6 + ) + } +} +ip_voff: 0x24b4 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 551 + column_num: 1 + voff_range: + [ + 0x24d6 + 0x24e6 + ) + } +} +ip_voff: 0x24d6 +ip_voff_symbol: type_coverage_eval_tests diff --git a/data/test_exemplars/mule_main_9ff1e58f_step_regressions_1/exemplar_windows b/data/test_exemplars/mule_main_9ff1e58f_step_regressions_1/exemplar_windows new file mode 100644 index 00000000..6262f50b --- /dev/null +++ b/data/test_exemplars/mule_main_9ff1e58f_step_regressions_1/exemplar_windows @@ -0,0 +1,1476 @@ +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3193 + column_num: 1 + voff_range: + [ + 0x1bb0 + 0x1bbd + ) + } +} +ip_voff: 0x1bb0 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3194 + column_num: 1 + voff_range: + [ + 0x1bbd + 0x1bd0 + ) + } +} +ip_voff: 0x1bbd +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3195 + column_num: 1 + voff_range: + [ + 0x1bd0 + 0x1be2 + ) + } +} +ip_voff: 0x1bd0 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 245 + column_num: 1 + voff_range: + [ + 0x1040 + 0x1044 + ) + } +} +ip_voff: 0x1040 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x1044 +ip_voff_symbol: raddbg_thread_id__impl +lines +ip_voff: 0x15890 +ip_voff_symbol: "" +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 246 + column_num: 1 + voff_range: + [ + 0x1044 + 0x104e + ) + } +} +ip_voff: 0x104a +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 247 + column_num: 1 + voff_range: + [ + 0x104e + 0x1052 + ) + } +} +ip_voff: 0x104e +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 248 + column_num: 1 + voff_range: + [ + 0x1052 + 0x1057 + ) + } +} +ip_voff: 0x1052 +ip_voff_symbol: raddbg_thread_id__impl +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3195 + column_num: 1 + voff_range: + [ + 0x1bd0 + 0x1be2 + ) + } +} +ip_voff: 0x1bd5 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3196 + column_num: 1 + voff_range: + [ + 0x1be2 + 0x1beb + ) + } +} +ip_voff: 0x1be2 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 239 + column_num: 1 + voff_range: + [ + 0x1000 + 0x1004 + ) + } +} +ip_voff: 0x1000 +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 240 + column_num: 1 + voff_range: + [ + 0x1004 + 0x102f + ) + } +} +ip_voff: 0x1004 +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/lib_raddbg_markup/raddbg_markup.h" + line_num: 241 + column_num: 1 + voff_range: + [ + 0x102f + 0x1034 + ) + } +} +ip_voff: 0x102f +ip_voff_symbol: raddbg_is_attached__impl +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3196 + column_num: 1 + voff_range: + [ + 0x1be2 + 0x1beb + ) + } +} +ip_voff: 0x1be7 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3198 + column_num: 1 + voff_range: + [ + 0x1beb + 0x1bf8 + ) + } +} +ip_voff: 0x1beb +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3201 + column_num: 1 + voff_range: + [ + 0x1bf8 + 0x1bfd + ) + } +} +ip_voff: 0x1bf8 +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 39 + column_num: 1 + voff_range: + [ + 0x1af0 + 0x1af4 + ) + } +} +ip_voff: 0x1af0 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 40 + column_num: 1 + voff_range: + [ + 0x1af4 + 0x1b08 + ) + } +} +ip_voff: 0x1af4 +ip_voff_symbol: mule_init +lines +ip_voff: 0x20830 +ip_voff_symbol: "" +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 40 + column_num: 1 + voff_range: + [ + 0x1af4 + 0x1b08 + ) + } +} +ip_voff: 0x1b01 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 41 + column_num: 1 + voff_range: + [ + 0x1b08 + 0x1b0d + ) + } +} +ip_voff: 0x1b08 +ip_voff_symbol: mule_init +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 3203 + column_num: 1 + voff_range: + [ + 0x1bfd + 0x1c02 + ) + } +} +ip_voff: 0x1bfd +ip_voff_symbol: mule_main +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 424 + column_num: 1 + voff_range: + [ + 0x1d20 + 0x1d42 + ) + } +} +ip_voff: 0x1d20 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 425 + column_num: 1 + voff_range: + [ + 0x1d42 + 0x1dd0 + ) + } +} +ip_voff: 0x1d42 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 426 + column_num: 1 + voff_range: + [ + 0x1dd0 + 0x1e4a + ) + } +} +ip_voff: 0x1dd0 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 428 + column_num: 1 + voff_range: + [ + 0x1e4a + 0x1e55 + ) + } +} +ip_voff: 0x1e4a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 429 + column_num: 1 + voff_range: + [ + 0x1e55 + 0x1e60 + ) + } +} +ip_voff: 0x1e55 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 431 + column_num: 1 + voff_range: + [ + 0x1e60 + 0x1e68 + ) + } +} +ip_voff: 0x1e60 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 432 + column_num: 1 + voff_range: + [ + 0x1e68 + 0x1e74 + ) + } +} +ip_voff: 0x1e68 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 434 + column_num: 1 + voff_range: + [ + 0x1e74 + 0x1e90 + ) + } +} +ip_voff: 0x1e74 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 435 + column_num: 1 + voff_range: + [ + 0x1e90 + 0x1eac + ) + } +} +ip_voff: 0x1e90 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 440 + column_num: 1 + voff_range: + [ + 0x1eac + 0x1ec8 + ) + } +} +ip_voff: 0x1eac +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 445 + column_num: 1 + voff_range: + [ + 0x1ec8 + 0x1f18 + ) + } +} +ip_voff: 0x1ec8 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 451 + column_num: 1 + voff_range: + [ + 0x1f18 + 0x1f31 + ) + } +} +ip_voff: 0x1f18 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 452 + column_num: 1 + voff_range: + [ + 0x1f31 + 0x1f4a + ) + } +} +ip_voff: 0x1f31 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 454 + column_num: 1 + voff_range: + [ + 0x1f4a + 0x1f59 + ) + } +} +ip_voff: 0x1f4a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 455 + column_num: 1 + voff_range: + [ + 0x1f59 + 0x1f75 + ) + } +} +ip_voff: 0x1f59 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 456 + column_num: 1 + voff_range: + [ + 0x1f75 + 0x1f84 + ) + } +} +ip_voff: 0x1f75 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 458 + column_num: 1 + voff_range: + [ + 0x1f84 + 0x1f93 + ) + } +} +ip_voff: 0x1f84 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 460 + column_num: 1 + voff_range: + [ + 0x1f93 + 0x1fa3 + ) + } +} +ip_voff: 0x1f93 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 461 + column_num: 1 + voff_range: + [ + 0x1fa3 + 0x1fb3 + ) + } +} +ip_voff: 0x1fa3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 462 + column_num: 1 + voff_range: + [ + 0x1fb3 + 0x1fc3 + ) + } +} +ip_voff: 0x1fb3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 467 + column_num: 1 + voff_range: + [ + 0x1fc3 + 0x1fdf + ) + } +} +ip_voff: 0x1fc3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 468 + column_num: 1 + voff_range: + [ + 0x1fdf + 0x1ffb + ) + } +} +ip_voff: 0x1fdf +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 469 + column_num: 1 + voff_range: + [ + 0x1ffb + 0x2017 + ) + } +} +ip_voff: 0x1ffb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 470 + column_num: 1 + voff_range: + [ + 0x2017 + 0x2033 + ) + } +} +ip_voff: 0x2017 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 471 + column_num: 1 + voff_range: + [ + 0x2033 + 0x204f + ) + } +} +ip_voff: 0x2033 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 472 + column_num: 1 + voff_range: + [ + 0x204f + 0x206b + ) + } +} +ip_voff: 0x204f +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 473 + column_num: 1 + voff_range: + [ + 0x206b + 0x2087 + ) + } +} +ip_voff: 0x206b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 474 + column_num: 1 + voff_range: + [ + 0x2087 + 0x20a3 + ) + } +} +ip_voff: 0x2087 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 475 + column_num: 1 + voff_range: + [ + 0x20a3 + 0x20d3 + ) + } +} +ip_voff: 0x20a3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 477 + column_num: 1 + voff_range: + [ + 0x20d3 + 0x20de + ) + } +} +ip_voff: 0x20d3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 481 + column_num: 1 + voff_range: + [ + 0x20de + 0x20fa + ) + } +} +ip_voff: 0x20de +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 482 + column_num: 1 + voff_range: + [ + 0x20fa + 0x2116 + ) + } +} +ip_voff: 0x20fa +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 483 + column_num: 1 + voff_range: + [ + 0x2116 + 0x2132 + ) + } +} +ip_voff: 0x2116 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 484 + column_num: 1 + voff_range: + [ + 0x2132 + 0x214e + ) + } +} +ip_voff: 0x2132 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 485 + column_num: 1 + voff_range: + [ + 0x214e + 0x216a + ) + } +} +ip_voff: 0x214e +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 486 + column_num: 1 + voff_range: + [ + 0x216a + 0x2186 + ) + } +} +ip_voff: 0x216a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 490 + column_num: 1 + voff_range: + [ + 0x2186 + 0x2193 + ) + } +} +ip_voff: 0x2186 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 491 + column_num: 1 + voff_range: + [ + 0x2193 + 0x219b + ) + } +} +ip_voff: 0x2193 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 494 + column_num: 1 + voff_range: + [ + 0x219b + 0x21b3 + ) + } +} +ip_voff: 0x219b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 497 + column_num: 1 + voff_range: + [ + 0x21b3 + 0x21cb + ) + } +} +ip_voff: 0x21b3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 498 + column_num: 1 + voff_range: + [ + 0x21cb + 0x21e3 + ) + } +} +ip_voff: 0x21cb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 499 + column_num: 1 + voff_range: + [ + 0x21e3 + 0x21fb + ) + } +} +ip_voff: 0x21e3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 500 + column_num: 1 + voff_range: + [ + 0x21fb + 0x2213 + ) + } +} +ip_voff: 0x21fb +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 501 + column_num: 1 + voff_range: + [ + 0x2213 + 0x222b + ) + } +} +ip_voff: 0x2213 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 504 + column_num: 1 + voff_range: + [ + 0x222b + 0x2243 + ) + } +} +ip_voff: 0x222b +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 512 + column_num: 1 + voff_range: + [ + 0x2243 + 0x2257 + ) + } +} +ip_voff: 0x2243 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 514 + column_num: 1 + voff_range: + [ + 0x2257 + 0x2262 + ) + } +} +ip_voff: 0x2257 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 515 + column_num: 1 + voff_range: + [ + 0x2262 + 0x2273 + ) + } +} +ip_voff: 0x2262 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 516 + column_num: 1 + voff_range: + [ + 0x2273 + 0x2287 + ) + } +} +ip_voff: 0x2273 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 517 + column_num: 1 + voff_range: + [ + 0x2287 + 0x22a1 + ) + } +} +ip_voff: 0x2287 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 518 + column_num: 1 + voff_range: + [ + 0x22a1 + 0x22b5 + ) + } +} +ip_voff: 0x22a1 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 519 + column_num: 1 + voff_range: + [ + 0x22b5 + 0x22cf + ) + } +} +ip_voff: 0x22b5 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 520 + column_num: 1 + voff_range: + [ + 0x22cf + 0x22e3 + ) + } +} +ip_voff: 0x22cf +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 521 + column_num: 1 + voff_range: + [ + 0x22e3 + 0x22fd + ) + } +} +ip_voff: 0x22e3 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 522 + column_num: 1 + voff_range: + [ + 0x22fd + 0x2305 + ) + } +} +ip_voff: 0x22fd +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 525 + column_num: 1 + voff_range: + [ + 0x2305 + 0x2315 + ) + } +} +ip_voff: 0x2305 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 526 + column_num: 1 + voff_range: + [ + 0x2315 + 0x2326 + ) + } +} +ip_voff: 0x2315 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 528 + column_num: 1 + voff_range: + [ + 0x2326 + 0x2331 + ) + } +} +ip_voff: 0x2326 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 530 + column_num: 1 + voff_range: + [ + 0x2331 + 0x2368 + ) + } +} +ip_voff: 0x2331 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 533 + column_num: 1 + voff_range: + [ + 0x2368 + 0x2377 + ) + } +} +ip_voff: 0x2368 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 534 + column_num: 1 + voff_range: + [ + 0x2377 + 0x2387 + ) + } +} +ip_voff: 0x2377 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 535 + column_num: 1 + voff_range: + [ + 0x2387 + 0x2396 + ) + } +} +ip_voff: 0x2387 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 536 + column_num: 1 + voff_range: + [ + 0x2396 + 0x23a6 + ) + } +} +ip_voff: 0x2396 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 537 + column_num: 1 + voff_range: + [ + 0x23a6 + 0x23e0 + ) + } +} +ip_voff: 0x23a6 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 542 + column_num: 1 + voff_range: + [ + 0x23e0 + 0x2415 + ) + } +} +ip_voff: 0x23e0 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 543 + column_num: 1 + voff_range: + [ + 0x2415 + 0x244a + ) + } +} +ip_voff: 0x2415 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 544 + column_num: 1 + voff_range: + [ + 0x244a + 0x247f + ) + } +} +ip_voff: 0x244a +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 545 + column_num: 1 + voff_range: + [ + 0x247f + 0x24b4 + ) + } +} +ip_voff: 0x247f +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 549 + column_num: 1 + voff_range: + [ + 0x24b4 + 0x24d6 + ) + } +} +ip_voff: 0x24b4 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 551 + column_num: 1 + voff_range: + [ + 0x24d6 + 0x24e6 + ) + } +} +ip_voff: 0x24d6 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 561 + column_num: 1 + voff_range: + [ + 0x24e6 + 0x24f7 + ) + } +} +ip_voff: 0x24e6 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 562 + column_num: 1 + voff_range: + [ + 0x24f7 + 0x2505 + ) + } +} +ip_voff: 0x24f7 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 563 + column_num: 1 + voff_range: + [ + 0x2505 + 0x2513 + ) + } +} +ip_voff: 0x2505 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 564 + column_num: 1 + voff_range: + [ + 0x2513 + 0x251f + ) + } +} +ip_voff: 0x2513 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 565 + column_num: 1 + voff_range: + [ + 0x251f + 0x2530 + ) + } +} +ip_voff: 0x251f +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 567 + column_num: 1 + voff_range: + [ + 0x2530 + 0x2544 + ) + } +} +ip_voff: 0x2530 +ip_voff_symbol: type_coverage_eval_tests +lines: +{ + { + file_path: "../../../../src/mule/mule_main.cpp" + line_num: 569 + column_num: 1 + voff_range: + [ + 0x2544 + 0x254f + ) + } +} +ip_voff: 0x2544 +ip_voff_symbol: type_coverage_eval_tests diff --git a/project.raddbg b/project.raddbg index 7ba34992..167bebd2 100644 --- a/project.raddbg +++ b/project.raddbg @@ -41,6 +41,6 @@ target: { executable: "build/torture.exe" working_directory: build - arguments: "raddbg/*" + arguments: "raddbg/* --gui" enabled: 1 } diff --git a/src/base/base_test.h b/src/base/base_test.h index 19e87a88..7d4f3c9a 100644 --- a/src/base/base_test.h +++ b/src/base/base_test.h @@ -23,7 +23,18 @@ struct TestResult char *fail_cond; }; -#define TEST_FUNCTION_SIG(name) void name(Arena *arena, CmdLine *cmdline, String8 test_exemplars_path, String8 test_artifacts_path, TestResult *result_out, String8List *test_out) +typedef struct TestCtx TestCtx; +struct TestCtx +{ + CmdLine *cmdline; + String8 exemplars_path; + String8 artifacts_path; + String8 input_data_path; + TestResult *result_out; + String8List *test_out; +}; + +#define TEST_FUNCTION_SIG(name) void name(Arena *arena, TestCtx *ctx) #define TEST_FUNCTION_DEF(name) TEST_FUNCTION_SIG(test__##name) typedef TEST_FUNCTION_SIG(TestFunctionType); @@ -76,17 +87,17 @@ TEST_FUNCTION_DEF(name) #define SkippedTest(name) DeclareTest(name, 1)\ TEST_FUNCTION_DEF(name) -#define test_out(string) str8_list_push(arena, test_out, (string)) -#define test_outf(...) str8_list_pushf(arena, test_out, __VA_ARGS__) +#define test_out(string) str8_list_push(arena, ctx->test_out, (string)) +#define test_outf(...) str8_list_pushf(arena, ctx->test_out, __VA_ARGS__) #define TestCheck(c) do { if (!(c)) {\ -*result_out = (TestResult){ .fail_file = __FILE__, .fail_line = __LINE__, .fail_cond = Stringify(c) };\ +ctx->result_out[0] = (TestResult){ .fail_file = __FILE__, .fail_line = __LINE__, .fail_cond = Stringify(c) };\ if(debugger_is_attached()) { Trap(); }\ return;\ } } while(0) #define TestSkip() do {\ -*result_out = (TestResult){ .status = TestStatus_Skip };\ +ctx->result_out[0] = (TestResult){ .status = TestStatus_Skip };\ return;\ } while(0) diff --git a/src/raddbg/tests/raddbg_tests.c b/src/raddbg/tests/raddbg_tests.c index 8f9c7bf7..b604e9f6 100644 --- a/src/raddbg/tests/raddbg_tests.c +++ b/src/raddbg/tests/raddbg_tests.c @@ -5,10 +5,10 @@ //~ rjf: Debugger Testing IPC Driving Helpers internal String8 -rd_test__mule_main_path(Arena *arena) +rd_test__test_binary_path(Arena *arena, TestCtx *ctx, String8 name) { - String8 mule_main_exe_path = str8f(arena, "%S/%S%S", get_process_info()->binary_path, s("mule_main"), program_ext_postfix_from_os(OperatingSystem_CURRENT)); - return mule_main_exe_path; + String8 path = str8f(arena, "%S/%S/%S%S", ctx->input_data_path, name, name, program_ext_postfix_from_os(OperatingSystem_CURRENT)); + return path; } internal String8 @@ -20,11 +20,11 @@ rd_test__raddbg_path(Arena *arena, CmdLine *cmdline) } internal Process -rd_test__open_debugger(CmdLine *cmdline, String8 test_artifacts_path, String8 target_cmd_line) +rd_test__open_debugger(TestCtx *ctx, String8 target_cmd_line) { Temp scratch = scratch_begin(0, 0); - String8 raddbg_path = rd_test__raddbg_path(scratch.arena, cmdline); - String8 user_file_path = str8f(scratch.arena, "%S/test.raddbg_user", test_artifacts_path); + String8 raddbg_path = rd_test__raddbg_path(scratch.arena, ctx->cmdline); + String8 user_file_path = str8f(scratch.arena, "%S/test.raddbg_user", ctx->artifacts_path); delete_file_at_path(user_file_path); Process process = launch_cmd_linef("%S --gen_crash_dump --no_focus_on_stop --user:%S --logs:logs %S", raddbg_path, user_file_path, target_cmd_line); scratch_end(scratch); @@ -38,11 +38,11 @@ rd_test__close_debugger(Process process) } internal String8 -rd_test__ipc_cmd(Arena *arena, CmdLine *cmdline, String8 test_artifacts_path, U64 debugger_pid, String8 string) +rd_test__ipc_cmd(Arena *arena, TestCtx *ctx, U64 debugger_pid, String8 string) { Temp scratch = scratch_begin(&arena, 1); - String8 raddbg_path = rd_test__raddbg_path(scratch.arena, cmdline); - String8 stdout_path = str8f(scratch.arena, "%S/ipc_output", test_artifacts_path); + String8 raddbg_path = rd_test__raddbg_path(scratch.arena, ctx->cmdline); + String8 stdout_path = str8f(scratch.arena, "%S/ipc_output", ctx->artifacts_path); Process process = launch_cmd_linef("%S --ipc --pid:%I64u %S > %S", raddbg_path, debugger_pid, string, stdout_path); process_join(process, max_U64, 0); String8 response = data_from_file_path(arena, stdout_path); @@ -55,18 +55,18 @@ rd_test__ipc_cmd(Arena *arena, CmdLine *cmdline, String8 test_artifacts_path, U6 //~ rjf: Exemplar Test Helpers internal void -rd_test__exemplar_test_finish(Arena *arena, String8List test_log_strings, String8 test_exemplars_path, String8 test_artifacts_path, TestResult *result_out, String8List *test_out) +rd_test__exemplar_test_finish(Arena *arena, TestCtx *ctx, String8List test_log_strings) { Temp scratch = scratch_begin(&arena, 1); // rjf: combine all current test log output; write to 'current' data String8 test_log_current = str8_list_join(scratch.arena, &test_log_strings, 0); - String8 test_log_current_path = str8f(scratch.arena, "%S/current", test_artifacts_path); + String8 test_log_current_path = str8f(scratch.arena, "%S/current", ctx->artifacts_path); write_data_to_file_path(test_log_current_path, test_log_current); // rjf: load test log exemplar - make_directory(test_exemplars_path); - String8 exemplar_path = str8f(scratch.arena, "%S/exemplar", test_exemplars_path); + make_directory(ctx->exemplars_path); + String8 exemplar_path = str8f(scratch.arena, "%S/exemplar_%S", ctx->exemplars_path, lower_from_str8(scratch.arena, string_from_operating_system(OperatingSystem_CURRENT))); String8 exemplar_data = data_from_file_path(scratch.arena, exemplar_path); // rjf: if exemplar data is empty -> just save our output as the new exemplar @@ -96,203 +96,228 @@ rd_test__exemplar_test_finish(Arena *arena, String8List test_log_strings, String //~ rjf: Test Helpers internal void -rd_test__stepping_regressions(Arena *arena, CmdLine *cmdline, String8 test_exemplars_path, String8 test_artifacts_path, TestResult *result_out, String8List *test_out, String8 target_cmdline, String8 start_symbol, B32 step_over_on_even) +rd_test__stepping_regressions(Arena *arena, TestCtx *ctx, String8 target_binary, String8 start_symbol, B32 step_over_on_even) { Temp scratch = scratch_begin(&arena, 1); String8List test_log_strings = {0}; - // rjf: start debugger - Process debugger = rd_test__open_debugger(cmdline, test_artifacts_path, target_cmdline); - U64 debugger_pid = pid_from_process(debugger); + // rjf: get binary path + String8 binary_path = rd_test__test_binary_path(arena, ctx, target_binary); + B32 binary_exists_locally = (properties_from_file_path(binary_path).modified != 0); - // rjf: step & gather info + // rjf: if binary does not exist -> skip this test, + if(!binary_exists_locally) { - U64 last_stop_count = max_U64; - B32 ready_for_next_operation = 0; - String8 next_step_cmd = {0}; - for(U64 cmd_idx = 0;;) - { - Temp scratch2 = scratch_begin(&scratch.arena, 1); - - // rjf: need next operation -> do op - if(ready_for_next_operation) - { - ready_for_next_operation = 0; - String8 step_cmd = s("step_into"); - if(cmd_idx == 0) - { - step_cmd = str8f(scratch2.arena, "run_to_name %S", start_symbol); - } - else if((cmd_idx % 2 == 0 && step_over_on_even) || (cmd_idx % 2 == 1 && !step_over_on_even)) - { - step_cmd = s("step_over"); - } - if(next_step_cmd.size != 0) - { - step_cmd = next_step_cmd; - MemoryZeroStruct(&next_step_cmd); - } - String8 step_response = rd_test__ipc_cmd(scratch2.arena, cmdline, test_artifacts_path, debugger_pid, step_cmd); - (void)step_response; - cmd_idx += 1; - } - - // rjf: query state, parse - String8 state_response = rd_test__ipc_cmd(scratch2.arena, cmdline, test_artifacts_path, debugger_pid, s("state")); - MD_Node *state_response_tree = md_tree_from_string(scratch2.arena, state_response); - MD_Node *state = md_child_from_string(state_response_tree, s("state"), 0); - - // rjf: we are only ready for next step command when the stop count has changed - { - U64 stop_count = 0; - try_u64_from_str8_c_rules(md_child_from_string(state, s("stop_count"), 0)->first->string, &stop_count); - if(stop_count != last_stop_count) - { - ready_for_next_operation = 1; - last_stop_count = stop_count; - } - } - - // rjf: if we are ready for the next operation, then accumulate deterministic log info - if(ready_for_next_operation) - { - MD_Node *lines = md_child_from_string(state, s("lines"), 0); - MD_Node *ip_voff = md_child_from_string(state, s("ip_voff"), 0); - MD_Node *ip_voff_symbol = md_child_from_string(state, s("ip_voff_symbol"), 0); - String8 lines_dump = md_string_from_tree(scratch.arena, lines); - String8 ip_voff_dump = md_string_from_tree(scratch.arena, ip_voff); - String8 ip_voff_symbol_dump = md_string_from_tree(scratch.arena, ip_voff_symbol); - str8_list_push(scratch.arena, &test_log_strings, lines_dump); - str8_list_push(scratch.arena, &test_log_strings, ip_voff_dump); - str8_list_push(scratch.arena, &test_log_strings, ip_voff_symbol_dump); - } - - // rjf: are we without line info? -> step out - if(ready_for_next_operation) - { - U64 ip_vaddr = 0; - try_u64_from_str8_c_rules(md_child_from_string(state, s("ip"), 0)->first->string, &ip_vaddr); - if(ip_vaddr != 0 && md_child_from_string(state, s("lines"), 0)->first == &md_nil_node) - { - next_step_cmd = s("step_out"); - } - } - - scratch_end(scratch2); - if(cmd_idx >= 100) - { - break; - } - } + TestSkip(); } - // rjf: end exemplar test - rd_test__exemplar_test_finish(arena, test_log_strings, test_exemplars_path, test_artifacts_path, result_out, test_out); - - // rjf: close debugger - rd_test__close_debugger(debugger); + // rjf: otherwise run + else + { + // rjf: start debugger + Process debugger = rd_test__open_debugger(ctx, binary_path); + U64 debugger_pid = pid_from_process(debugger); + + // rjf: step & gather info + { + U64 last_stop_count = max_U64; + B32 ready_for_next_operation = 0; + String8 next_step_cmd = {0}; + for(U64 cmd_idx = 0;;) + { + Temp scratch2 = scratch_begin(&scratch.arena, 1); + + // rjf: need next operation -> do op + if(ready_for_next_operation) + { + ready_for_next_operation = 0; + String8 step_cmd = s("step_into"); + if(cmd_idx == 0) + { + step_cmd = str8f(scratch2.arena, "run_to_name %S", start_symbol); + } + else if((cmd_idx % 2 == 0 && step_over_on_even) || (cmd_idx % 2 == 1 && !step_over_on_even)) + { + step_cmd = s("step_over"); + } + if(next_step_cmd.size != 0) + { + step_cmd = next_step_cmd; + MemoryZeroStruct(&next_step_cmd); + } + String8 step_response = rd_test__ipc_cmd(scratch2.arena, ctx, debugger_pid, step_cmd); + (void)step_response; + cmd_idx += 1; + } + + // rjf: query state, parse + String8 state_response = rd_test__ipc_cmd(scratch2.arena, ctx, debugger_pid, s("state")); + MD_Node *state_response_tree = md_tree_from_string(scratch2.arena, state_response); + MD_Node *state = md_child_from_string(state_response_tree, s("state"), 0); + + // rjf: we are only ready for next step command when the stop count has changed + { + U64 stop_count = 0; + try_u64_from_str8_c_rules(md_child_from_string(state, s("stop_count"), 0)->first->string, &stop_count); + if(stop_count != last_stop_count) + { + ready_for_next_operation = 1; + last_stop_count = stop_count; + } + } + + // rjf: if we are ready for the next operation, then accumulate deterministic log info + if(ready_for_next_operation) + { + MD_Node *lines = md_child_from_string(state, s("lines"), 0); + MD_Node *ip_voff = md_child_from_string(state, s("ip_voff"), 0); + MD_Node *ip_voff_symbol = md_child_from_string(state, s("ip_voff_symbol"), 0); + String8 lines_dump = md_string_from_tree(scratch.arena, lines); + String8 ip_voff_dump = md_string_from_tree(scratch.arena, ip_voff); + String8 ip_voff_symbol_dump = md_string_from_tree(scratch.arena, ip_voff_symbol); + str8_list_push(scratch.arena, &test_log_strings, lines_dump); + str8_list_push(scratch.arena, &test_log_strings, ip_voff_dump); + str8_list_push(scratch.arena, &test_log_strings, ip_voff_symbol_dump); + } + + // rjf: are we without line info? -> step out + if(ready_for_next_operation) + { + U64 ip_vaddr = 0; + try_u64_from_str8_c_rules(md_child_from_string(state, s("ip"), 0)->first->string, &ip_vaddr); + if(ip_vaddr != 0 && md_child_from_string(state, s("lines"), 0)->first == &md_nil_node) + { + next_step_cmd = s("step_out"); + } + } + + scratch_end(scratch2); + if(cmd_idx >= 100) + { + break; + } + } + } + + // rjf: end exemplar test + rd_test__exemplar_test_finish(arena, ctx, test_log_strings); + + // rjf: close debugger + rd_test__close_debugger(debugger); + } scratch_end(scratch); } internal void -rd_test__eval_regressions(Arena *arena, CmdLine *cmdline, String8 test_exemplars_path, String8 test_artifacts_path, TestResult *result_out, String8List *test_out, String8 target_cmdline, String8 target_line) +rd_test__eval_regressions(Arena *arena, TestCtx *ctx, String8 target_binary, String8 target_line) { Temp scratch = scratch_begin(&arena, 1); String8List test_log_strings = {0}; - // rjf: start debugger - Process debugger = rd_test__open_debugger(cmdline, test_artifacts_path, target_cmdline); - U64 debugger_pid = pid_from_process(debugger); + // rjf: get binary path + String8 binary_path = rd_test__test_binary_path(arena, ctx, target_binary); + B32 binary_exists_locally = (properties_from_file_path(binary_path).modified != 0); - // rjf: query state - U64 initial_stop_count = 0; + // rjf: if binary does not exist -> skip this test, + if(!binary_exists_locally) { - String8 response = rd_test__ipc_cmd(scratch.arena, cmdline, test_artifacts_path, debugger_pid, s("state")); - MD_Node *state = md_child_from_string(md_tree_from_string(scratch.arena, response), s("state"), 0); - MD_Node *stop_count = md_child_from_string(state, s("stop_count"), 0); - try_u64_from_str8_c_rules(stop_count->first->string, &initial_stop_count); + TestSkip(); } - // rjf: run to target line - rd_test__ipc_cmd(scratch.arena, cmdline, test_artifacts_path, debugger_pid, str8f(scratch.arena, "run_to_line %S", target_line)); - - // rjf: wait for stop, collect locals - String8List locals = {0}; - for(;;) + // rjf: otherwise run + else { - Temp scratch2 = scratch_begin(&scratch.arena, 1); - String8 response = rd_test__ipc_cmd(scratch.arena, cmdline, test_artifacts_path, debugger_pid, s("state")); - MD_Node *state = md_child_from_string(md_tree_from_string(scratch.arena, response), s("state"), 0); - MD_Node *stop_count = md_child_from_string(state, s("stop_count"), 0); - U64 new_stop_count = 0; - try_u64_from_str8_c_rules(stop_count->first->string, &new_stop_count); - scratch_end(scratch2); - if(new_stop_count != initial_stop_count) + // rjf: start debugger + Process debugger = rd_test__open_debugger(ctx, binary_path); + U64 debugger_pid = pid_from_process(debugger); + + // rjf: query state + U64 initial_stop_count = 0; { - MD_Node *locals_root = md_child_from_string(state, s("locals"), 0); - for MD_EachNode(c, locals_root->first) + String8 response = rd_test__ipc_cmd(scratch.arena, ctx, debugger_pid, s("state")); + MD_Node *state = md_child_from_string(md_tree_from_string(scratch.arena, response), s("state"), 0); + MD_Node *stop_count = md_child_from_string(state, s("stop_count"), 0); + try_u64_from_str8_c_rules(stop_count->first->string, &initial_stop_count); + } + + // rjf: run to target line + rd_test__ipc_cmd(scratch.arena, ctx, debugger_pid, str8f(scratch.arena, "run_to_line %S", target_line)); + + // rjf: wait for stop, collect locals + String8List locals = {0}; + for(;;) + { + Temp scratch2 = scratch_begin(&scratch.arena, 1); + String8 response = rd_test__ipc_cmd(scratch.arena, ctx, debugger_pid, s("state")); + MD_Node *state = md_child_from_string(md_tree_from_string(scratch.arena, response), s("state"), 0); + MD_Node *stop_count = md_child_from_string(state, s("stop_count"), 0); + U64 new_stop_count = 0; + try_u64_from_str8_c_rules(stop_count->first->string, &new_stop_count); + scratch_end(scratch2); + if(new_stop_count != initial_stop_count) { - str8_list_push(scratch.arena, &locals, c->string); + MD_Node *locals_root = md_child_from_string(state, s("locals"), 0); + for MD_EachNode(c, locals_root->first) + { + str8_list_push(scratch.arena, &locals, c->string); + } + break; } - break; } - } - - // rjf: evaluate all locals - String8List eval_cmd_strings = {0}; - for EachNode(n, String8Node, locals.first) - { - str8_list_pushf(scratch.arena, &eval_cmd_strings, "eval %S", n->string); - } - StringJoin join = {.sep = s(" ; ")}; - String8 eval_msg = str8_list_join(scratch.arena, &eval_cmd_strings, &join); - String8 response = rd_test__ipc_cmd(scratch.arena, cmdline, test_artifacts_path, debugger_pid, eval_msg); - MD_Node *response_tree = md_tree_from_string(scratch.arena, response); - for MD_EachNode(n, response_tree->first) - { - if(str8_match(n->string, s("eval"), 0)) + + // rjf: evaluate all locals + String8List eval_cmd_strings = {0}; + for EachNode(n, String8Node, locals.first) { - String8 eval_dump = md_string_from_tree(scratch.arena, n); - str8_list_push(scratch.arena, &test_log_strings, eval_dump); + str8_list_pushf(scratch.arena, &eval_cmd_strings, "eval %S", n->string); } + StringJoin join = {.sep = s(" ; ")}; + String8 eval_msg = str8_list_join(scratch.arena, &eval_cmd_strings, &join); + String8 response = rd_test__ipc_cmd(scratch.arena, ctx, debugger_pid, eval_msg); + MD_Node *response_tree = md_tree_from_string(scratch.arena, response); + for MD_EachNode(n, response_tree->first) + { + if(str8_match(n->string, s("eval"), 0)) + { + String8 eval_dump = md_string_from_tree(scratch.arena, n); + str8_list_push(scratch.arena, &test_log_strings, eval_dump); + } + } + + // rjf: end exemplar test + rd_test__exemplar_test_finish(arena, ctx, test_log_strings); + + // rjf: close debugger + rd_test__close_debugger(debugger); } - // rjf: end exemplar test - rd_test__exemplar_test_finish(arena, test_log_strings, test_exemplars_path, test_artifacts_path, result_out, test_out); - - // rjf: close debugger - rd_test__close_debugger(debugger); - scratch_end(scratch); } //////////////////////////////// //~ rjf: Tests -#if 0 -Test(mule_main_step_regressions_0) +Test(mule_main_9ff1e58f_step_regressions_0) { - String8 exe_path = {0}; - rd_test__stepping_regressions(arena, cmdline, test_exemplars_path, test_artifacts_path, result_out, test_out, rd_test__mule_main_path(arena), s("mule_main"), 0); + rd_test__stepping_regressions(arena, ctx, s("mule_main_9ff1e58f"), s("mule_main"), 0); } -Test(mule_main_step_regressions_1) +Test(mule_main_9ff1e58f_step_regressions_1) { - rd_test__stepping_regressions(arena, cmdline, test_exemplars_path, test_artifacts_path, result_out, test_out, rd_test__mule_main_path(arena), s("mule_main"), 1); + rd_test__stepping_regressions(arena, ctx, s("mule_main_9ff1e58f"), s("mule_main"), 1); } -Test(control_flow_step_regressions) +Test(mule_main_9ff1e58f_control_flow_step_regressions) { - rd_test__stepping_regressions(arena, cmdline, test_exemplars_path, test_artifacts_path, result_out, test_out, rd_test__mule_main_path(arena), s("mule_main"), 0); + rd_test__stepping_regressions(arena, ctx, s("mule_main_9ff1e58f"), s("control_flow_stepping_tests"), 0); } -SkippedTest(type_coverage_eval_regressions) +SkippedTest(mule_main_9ff1e58f_type_coverage_eval_regressions) { // TODO(rjf): see @eval_regressions - rd_test__eval_regressions(arena, cmdline, test_exemplars_path, test_artifacts_path, result_out, test_out, rd_test__mule_main_path(arena), s("C:/devel/raddebugger/src/mule/mule_main.cpp:723")); + rd_test__eval_regressions(arena, ctx, s("mule_main_9ff1e58f"), s("C:/devel/raddebugger/src/mule/mule_main.cpp:723")); } -#endif #if 0 //////////////////////////////// diff --git a/src/torture/torture.c b/src/torture/torture.c index 57769d19..493583ad 100644 --- a/src/torture/torture.c +++ b/src/torture/torture.c @@ -5,6 +5,7 @@ global String8 g_stdout_file_name = str8_lit_comp("torture.out"); global String8 g_wdir; global String8 g_exemplar_dir; +global String8 g_input_data_dir; global String8 g_out = str8_lit_comp("torture_artifacts"); global B32 g_verbose; global B32 g_redirect_stdout = 1; @@ -169,7 +170,16 @@ t_run_caller(void *raw_ctx) if (ctx->test->skip) { ctx->result.status = TestStatus_Skip; } else { - ctx->test->test_fn(scratch.arena, ctx->cmdline, g_exemplar_dir, g_wdir, &ctx->result, &test_out); + TestCtx test_ctx = + { + .cmdline = ctx->cmdline, + .exemplars_path = g_exemplar_dir, + .artifacts_path = g_wdir, + .input_data_path = g_input_data_dir, + .result_out = &ctx->result, + .test_out = &test_out, + }; + ctx->test->test_fn(scratch.arena, &test_ctx); } if (ctx->result.status == TestStatus_Fail || ctx->result.status == TestStatus_Crash) { @@ -1281,6 +1291,13 @@ t_entry_point(CmdLine *cmdline) g_exemplar_dir = str8f(scratch.arena, "%S/data/test_exemplars/%S", root_dir_path, test->label); } + // rjf: find input data directory + { + String8 binary_dir_path = get_process_info()->binary_path; + String8 root_dir_path = str8_chop_last_slash(binary_dir_path); + g_input_data_dir = str8f(scratch.arena, "%S/local/test_data", root_dir_path); + } + // setup output directory g_wdir = str8f(scratch.arena, "%S/%S", g_out, test->label); g_wdir = full_path_from_path(scratch.arena, g_wdir); diff --git a/src/torture/torture.h b/src/torture/torture.h index 97cfd597..78b8df15 100644 --- a/src/torture/torture.h +++ b/src/torture/torture.h @@ -24,7 +24,7 @@ typedef struct #define T_Ok(c) TestCheck(c) #define T_MatchLinef(out, ...) T_Ok(t_match_linef(out, __VA_ARGS__)) -#define t_outf(...) str8_list_pushf(arena, test_out, ## __VA_ARGS__) +#define t_outf(...) str8_list_pushf(arena, ctx->test_out, ## __VA_ARGS__) ////////////////////////////////////////////////////////////////