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 **************************************/
}
-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)){
}
-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;
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 !");
}
} 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;