mc_stats_pair_t mc_stats_pair = NULL;
xbt_fifo_t mc_stack_liveness = NULL;
-mc_snapshot_t initial_snapshot_liveness = NULL;
+mc_global_t initial_state_liveness = NULL;
int compare;
/* Local */
if(raw_mem_set)
MC_SET_RAW_MEM;
- else
- MC_UNSET_RAW_MEM;
}
}
void MC_init_liveness(){
+
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
mc_time = xbt_new0(double, simix_process_maxpid);
get_libsimgrid_plt_section();
get_binary_plt_section();
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+
}
void MC_modelcheck_liveness(){
/* We're done */
MC_print_statistics_pairs(mc_stats_pair);
xbt_free(mc_time);
- MC_memory_exit();
- exit(0);
+
}
XBT_DEBUG("**** Begin Replay ****");
/* Restore the initial state */
- MC_restore_snapshot(initial_snapshot_liveness);
+ MC_restore_snapshot(initial_state_liveness->initial_snapshot);
/* At the moment of taking the snapshot the raw heap was set, so restoring
* it will set it back again, we have to unset it to continue */
+
MC_UNSET_RAW_MEM;
if(all_stack){
if(raw_mem_set)
MC_SET_RAW_MEM;
- else
- MC_UNSET_RAW_MEM;
}
if(raw_mem_set)
MC_SET_RAW_MEM;
- else
- MC_UNSET_RAW_MEM;
}
if(raw_mem_set)
MC_SET_RAW_MEM;
- else
- MC_UNSET_RAW_MEM;
}
void MC_ignore(void *address, size_t size){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
MC_SET_RAW_MEM;
if(mc_comparison_ignore == NULL)
xbt_dynar_insert_at(mc_comparison_ignore, cursor, ®ion);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
}
void MC_new_stack_area(void *stack, char *name, void* context){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
MC_SET_RAW_MEM;
if(stacks_areas == NULL)
xbt_dynar_push(stacks_areas, ®ion);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
}
/************ DWARF ***********/
dw_location_t new_element = xbt_new0(s_dw_location_t, 1);
new_element->type = e_dw_bregister_op;
new_element->location.breg_op.reg = atoi(strtok(tok2, "DW_OP_breg"));
- new_element->location.breg_op.offset = atoi(xbt_dynar_get_as(tokens2, 2, char*));
+ new_element->location.breg_op.offset = atoi(xbt_dynar_get_as(tokens2, 1, char*));
xbt_dynar_push(loc->location.compose, &new_element);
}else if(strncmp(tok2, "DW_OP_lit", 9) == 0){
dw_location_t new_element = xbt_new0(s_dw_location_t, 1);