From 74ee3b9850b7b255919be83a82976551e4ea3787 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 16 Oct 2024 12:47:10 -0700 Subject: [PATCH] option to rdi_from_pdb for deterministic generation; omits non-intrinsic, build-dependent information --- src/rdi_from_pdb/rdi_from_pdb.c | 17 ++++++++++++++--- src/rdi_from_pdb/rdi_from_pdb.h | 1 + src/tester/tester_main.c | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/rdi_from_pdb/rdi_from_pdb.c b/src/rdi_from_pdb/rdi_from_pdb.c index 12767f30..fbee7f08 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.c +++ b/src/rdi_from_pdb/rdi_from_pdb.c @@ -95,7 +95,7 @@ p2r_user2convert_from_cmdln(Arena *arena, CmdLine *cmdline) } } - //- rjf: define string -> flag bits + //- rjf: define string -> section flag bits #define FlagNameMapXList \ Case("sections", BinarySections)\ Case("units", Units)\ @@ -114,7 +114,7 @@ Case("type_name_map", TypeNameMap)\ Case("link_name_map", LinkNameProcedureNameMap)\ Case("source_path_name_map",NormalSourcePathNameMap)\ - //- rjf: get flags + //- rjf: get section flags { result->flags = P2R_ConvertFlag_All; String8List only_names = cmd_line_strings(cmdline, str8_lit("only")); @@ -142,6 +142,14 @@ Case("source_path_name_map",NormalSourcePathNameMap)\ } } + //- rjf: get other flags + { + if(cmd_line_has_flag(cmdline, str8_lit("deterministic"))) + { + result->flags |= P2R_ConvertFlag_Deterministic; + } + } + #undef FlagNameMapXList return result; } @@ -3349,7 +3357,10 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) top_level_info.exe_name = str8_skip_last_slash(in->input_exe_name); top_level_info.exe_hash = exe_hash; top_level_info.voff_max = exe_voff_max; - top_level_info.producer_name = str8_lit(BUILD_TITLE_STRING_LITERAL); + if(!(in->flags & P2R_ConvertFlag_Deterministic)) + { + top_level_info.producer_name = str8_lit(BUILD_TITLE_STRING_LITERAL); + } } ////////////////////////////////////////////////////////////// diff --git a/src/rdi_from_pdb/rdi_from_pdb.h b/src/rdi_from_pdb/rdi_from_pdb.h index 89704861..130e14f9 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.h +++ b/src/rdi_from_pdb/rdi_from_pdb.h @@ -28,6 +28,7 @@ enum P2R_ConvertFlag_TypeNameMap = (1<<15), P2R_ConvertFlag_LinkNameProcedureNameMap= (1<<16), P2R_ConvertFlag_NormalSourcePathNameMap = (1<<17), + P2R_ConvertFlag_Deterministic = (1<<18), P2R_ConvertFlag_All = 0xffffffff, }; diff --git a/src/tester/tester_main.c b/src/tester/tester_main.c index 5886d846..7318d4eb 100644 --- a/src/tester/tester_main.c +++ b/src/tester/tester_main.c @@ -68,7 +68,7 @@ entry_point(CmdLine *cmdline) { String8 rdi_path = push_str8f(arena, "%S/repeat_%I64u.rdi", repeat_folder, repeat_idx); str8_list_push(arena, &rdi_paths, rdi_path); - os_handle_list_push(arena, &processes, os_cmd_line_launchf("rdi_from_pdb --pdb:%S --out:%S > %S/repeat_%I64u.dump", pdb_path, rdi_path, repeat_folder, repeat_idx)); + os_handle_list_push(arena, &processes, os_cmd_line_launchf("rdi_from_pdb --deterministic --pdb:%S --out:%S", pdb_path, rdi_path)); } for(OS_HandleNode *n = processes.first; n != 0; n = n->next) {