/************************** Snapshot comparison *******************************/
/******************************************************************************/
/************************** Snapshot comparison *******************************/
/******************************************************************************/
int process_index,
void* real_area1, mc_snapshot_t snapshot1, mc_mem_region_t region1,
void* real_area2, mc_snapshot_t snapshot2, mc_mem_region_t region2,
int process_index,
void* real_area1, mc_snapshot_t snapshot1, mc_mem_region_t region1,
void* real_area2, mc_snapshot_t snapshot2, mc_mem_region_t region2,
else if (region1->contain(simgrid::mc::remote(addr_pointed1))) {
if (!region2->contain(simgrid::mc::remote(addr_pointed2)))
return 1;
else if (region1->contain(simgrid::mc::remote(addr_pointed1))) {
if (!region2->contain(simgrid::mc::remote(addr_pointed2)))
return 1;
return (addr_pointed1 != addr_pointed2);
else {
return compare_areas_with_type(state, process_index,
return (addr_pointed1 != addr_pointed2);
else {
return compare_areas_with_type(state, process_index,
- for(simgrid::mc::Type& member : type->members) {
- void *member1 =
- mc_member_resolve(real_area1, type, &member, snapshot1, process_index);
- void *member2 =
- mc_member_resolve(real_area2, type, &member, snapshot2, process_index);
+ for(simgrid::mc::Member& member : type->members) {
+ void *member1 = simgrid::dwarf::resolve_member(
+ real_area1, type, &member, snapshot1, process_index);
+ void *member2 = simgrid::dwarf::resolve_member(
+ real_area2, type, &member, snapshot2, process_index);
mc_mem_region_t subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
mc_mem_region_t subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
res =
compare_areas_with_type(state, process_index,
member1, snapshot1, subregion1,
member2, snapshot2, subregion2,
mc_mem_region_t subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
mc_mem_region_t subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
res =
compare_areas_with_type(state, process_index,
member1, snapshot1, subregion1,
member2, snapshot2, subregion2,
// If the variable is not in this object, skip it:
// We do not expect to find a pointer to something which is not reachable
// by the global variables.
// If the variable is not in this object, skip it:
// We do not expect to find a pointer to something which is not reachable
// by the global variables.
- if ((char *) current_var->address < (char *) object_info->start_rw
- || (char *) current_var->address > (char *) object_info->end_rw)
+ if ((char *) current_var.address < (char *) object_info->start_rw
+ || (char *) current_var.address > (char *) object_info->end_rw)
- (char *) current_var->address, snapshot1, r1,
- (char *) current_var->address, snapshot2, r2,
+ (char *) current_var.address, snapshot1, r1,
+ (char *) current_var.address, snapshot2, r2,
bvariable_type, 0);
if (res == 1) {
XBT_TRACE3(mc, global_diff, -1, -1, current_var->name);
XBT_VERB("Global variable %s (%p) is different between snapshots",
bvariable_type, 0);
if (res == 1) {
XBT_TRACE3(mc, global_diff, -1, -1, current_var->name);
XBT_VERB("Global variable %s (%p) is different between snapshots",
- current_var->name.c_str(),
- (char *) current_var->address);
+ current_var.name.c_str(),
+ (char *) current_var.address);
res =
compare_areas_with_type(state, process_index,
current_var1->address, snapshot1, mc_get_snapshot_region(current_var1->address, snapshot1, process_index),
res =
compare_areas_with_type(state, process_index,
current_var1->address, snapshot1, mc_get_snapshot_region(current_var1->address, snapshot1, process_index),
xbt_os_walltimer_stop(timer);
mc_comp_times->global_variables_comparison_time
+= xbt_os_timer_elapsed(timer);
xbt_os_walltimer_stop(timer);
mc_comp_times->global_variables_comparison_time
+= xbt_os_timer_elapsed(timer);
- XBT_DEBUG("(%d - %d) Different global variables in %s", num1, num2,
- name);
+ XBT_DEBUG("(%d - %d) Different global variables in %s",
+ num1, num2, name.c_str());
- XBT_VERB("(%d - %d) Different global variables in %s", num1, num2,
- name);
+ XBT_VERB("(%d - %d) Different global variables in %s",
+ num1, num2, name.c_str());