From: Gabriel Corona Date: Mon, 24 Mar 2014 11:37:33 +0000 (+0100) Subject: [mc] Replace frame->frame (frame *name*) by frame->subprogram (dw_type_t) X-Git-Tag: v3_11~192^2^2~7 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c9b5c4107389722899efcee79bc56d8181a621fa?ds=sidebyside [mc] Replace frame->frame (frame *name*) by frame->subprogram (dw_type_t) --- diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index dab41991cf..c57a4f5750 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -43,7 +43,6 @@ static void MC_snapshot_stack_free_voidp(void *s){ } static void local_variable_free(local_variable_t v){ - xbt_free(v->frame); xbt_free(v->name); xbt_free(v); } @@ -273,7 +272,7 @@ static void mc_fill_local_variables_values(mc_stack_frame_t stack_frame, dw_fram region_type = 2; local_variable_t new_var = xbt_new0(s_local_variable_t, 1); - new_var->frame = xbt_strdup(stack_frame->frame_name); + new_var->subprogram = stack_frame->frame; new_var->ip = stack_frame->ip; new_var->name = xbt_strdup(current_variable->name); new_var->type = current_variable->type; diff --git a/src/mc/mc_compare.c b/src/mc/mc_compare.c index 8e51c81093..5a6eb587e4 100644 --- a/src/mc/mc_compare.c +++ b/src/mc/mc_compare.c @@ -305,14 +305,16 @@ static int compare_local_variables(mc_snapshot_t snapshot1, mc_snapshot_t snapsh while(cursor < xbt_dynar_length(stack1->local_variables)){ current_var1 = (local_variable_t)xbt_dynar_get_as(stack1->local_variables, cursor, local_variable_t); current_var2 = (local_variable_t)xbt_dynar_get_as(stack2->local_variables, cursor, local_variable_t); - if(strcmp(current_var1->name, current_var2->name) != 0 || strcmp(current_var1->frame, current_var2->frame) != 0 || current_var1->ip != current_var2->ip){ + if(strcmp(current_var1->name, current_var2->name) != 0 || current_var1->subprogram != current_var1->subprogram || current_var1->ip != current_var2->ip){ xbt_dynar_free(&compared_pointers); - XBT_VERB("Different name of variable (%s - %s) or frame (%s - %s) or ip (%lu - %lu)", current_var1->name, current_var2->name, current_var1->frame, current_var2->frame, current_var1->ip, current_var2->ip); + // TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram + XBT_VERB("Different name of variable (%s - %s) or frame (%s - %s) or ip (%lu - %lu)", current_var1->name, current_var2->name, current_var1->subprogram->name, current_var2->subprogram->name, current_var1->ip, current_var2->ip); return 1; } offset1 = (char *)current_var1->address - (char *)std_heap; offset2 = (char *)current_var2->address - (char *)std_heap; - XBT_DEBUG("Compare local variable %s of frame %s", current_var1->name, current_var1->frame); + // TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram + XBT_DEBUG("Compare local variable %s of frame %s", current_var1->subprogram->name, current_var1->subprogram->name); if(current_var1->region == 1) { @@ -323,7 +325,8 @@ static int compare_local_variables(mc_snapshot_t snapshot1, mc_snapshot_t snapsh res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, snapshot1, snapshot2, subtype, 0, 2, start_data_binary, 0); } if(res == 1){ - XBT_VERB("Local variable %s (%p - %p) in frame %s is different between snapshots", current_var1->name,(char *)heap1 + offset1, (char *)heap2 + offset2, current_var1->frame); + // TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram + XBT_VERB("Local variable %s (%p - %p) in frame %s is different between snapshots", current_var1->name,(char *)heap1 + offset1, (char *)heap2 + offset2, current_var1->subprogram->name); xbt_dynar_free(&compared_pointers); compared_pointers = NULL; return res; diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index 3e24dcffc4..cbf1f35e83 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -520,7 +520,7 @@ void* mc_find_frame_base(dw_frame_t frame, unw_cursor_t* unw_cursor); /********************************** Miscellaneous **********************************/ typedef struct s_local_variable{ - char *frame; + dw_frame_t subprogram; unsigned long ip; char *name; dw_type_t type;