From d07ae91cb49d7c0205f83aaffb5cc64812be1809 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 24 Jan 2024 10:41:55 -0800 Subject: [PATCH] add version encoding difference detection in dbgi layer when deciding whether or not to re-convert; this will allow using the raddbg encoding version as a 'generation number', as the encoding changes, to prevent cases where the debugger loads old versions & treats them as new unknowingly --- src/dbgi/dbgi.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/dbgi/dbgi.c b/src/dbgi/dbgi.c index 95053eb9..6183982e 100644 --- a/src/dbgi/dbgi.c +++ b/src/dbgi/dbgi.c @@ -638,6 +638,32 @@ dbgi_parse_thread_entry_point(void *p) } } + //- rjf: if raddbg file is up to date based on timestamp, check the + // encoding generation number, to see if we need to regenerate it + // regardless + if(do_task && raddbg_file_is_up_to_date) + { + OS_Handle file = {0}; + OS_Handle file_map = {0}; + FileProperties file_props = {0}; + void *file_base = 0; + file = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead, raddbg_path); + file_map = os_file_map_open(OS_AccessFlag_Read, file); + file_props = os_properties_from_file(file); + file_base = os_file_map_view_open(file_map, OS_AccessFlag_Read, r1u64(0, file_props.size)); + if(sizeof(RADDBG_Header) <= file_props.size) + { + RADDBG_Header *header = (RADDBG_Header*)&file_base; + if(header->encoding_version != RADDBG_ENCODING_VERSION) + { + raddbg_file_is_up_to_date = 0; + } + } + os_file_map_view_close(file_map, file_base); + os_file_map_close(file_map); + os_file_close(file); + } + //- rjf: raddbg file not up-to-date? we need to generate it if(do_task) {