From f150764ab6d151957355c437ad66146210cbf8f9 Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Thu, 2 Jan 2014 15:22:23 +0100 Subject: [PATCH 1/1] [mc] Cleanup mc_object_info_t code --- src/mc/mc_checkpoint.c | 12 ++++++++++-- src/mc/mc_global.c | 11 +++-------- src/mc/mc_private.h | 4 +++- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index 6b120afd89..b9a715ccd9 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -17,6 +17,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc, char *libsimgrid_path; +static void MC_find_object_address(memory_map_t maps, mc_object_info_t result); static void MC_get_plt_section(mc_object_info_t info); /************************************ Free functions **************************************/ @@ -234,15 +235,22 @@ void MC_init_memory_map_info(){ } -mc_object_info_t MC_find_object_address(memory_map_t maps, char* name) { +mc_object_info_t MC_find_object_info(memory_map_t maps, char* name) { mc_object_info_t result = MC_new_object_info(); result->file_name = xbt_strdup(name); result->start_data = NULL; result->start_text = NULL; + MC_find_object_address(maps, result); + MC_get_plt_section(result); + MC_dwarf_get_variables(result); + return result; +} +static void MC_find_object_address(memory_map_t maps, mc_object_info_t result) { unsigned int i = 0; s_map_region_t reg; - int len = strlen(basename(name)); + const char* name = result->file_name; + int len = strlen(basename(result->file_name)); while (i < maps->mapsize) { reg = maps->regions[i]; if (maps->regions[i].pathname == NULL || memcmp(basename(maps->regions[i].pathname), basename(name), len)){ diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index ea39360d40..7521448d9f 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -526,7 +526,7 @@ static int MC_dwarf_get_variable_index(xbt_dynar_t variables, char* var, void *a } -static void MC_dwarf_get_variables(mc_object_info_t info){ +void MC_dwarf_get_variables(mc_object_info_t info) { mc_object_info_t result = info; const char *elf_file = info->file_name; @@ -1749,15 +1749,10 @@ static void MC_init_debug_info() { memory_map_t maps = MC_get_memory_map(); /* Get local variables for state equality detection */ - - mc_binary_info = MC_find_object_address(maps, xbt_binary_name); - MC_dwarf_get_variables(mc_binary_info); - - mc_libsimgrid_info = MC_find_object_address(maps, libsimgrid_path); - MC_dwarf_get_variables(mc_libsimgrid_info); + mc_binary_info = MC_find_object_info(maps, xbt_binary_name); + mc_libsimgrid_info = MC_find_object_info(maps, libsimgrid_path); MC_free_memory_map(maps); - XBT_INFO("Get debug information done !"); } diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index 10abd85150..c992fcdffa 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -331,9 +331,11 @@ typedef struct s_mc_object_info { } s_mc_object_info_t, *mc_object_info_t; mc_object_info_t MC_new_object_info(); -mc_object_info_t MC_find_object_address(memory_map_t maps, char* name); +mc_object_info_t MC_find_object_info(memory_map_t maps, char* name); void MC_free_object_info(mc_object_info_t* p); +void MC_dwarf_get_variables(mc_object_info_t info); + extern mc_object_info_t mc_libsimgrid_info; extern mc_object_info_t mc_binary_info; -- 2.20.1