X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/54dc4437fa893572ced42c3e9174f4a9888b0258..bf23fe353d38f31a84d517a064eed072cd6197f1:/src/mc/mc_diff.cpp diff --git a/src/mc/mc_diff.cpp b/src/mc/mc_diff.cpp index 82c1d0af66..e64d3a95a9 100644 --- a/src/mc/mc_diff.cpp +++ b/src/mc/mc_diff.cpp @@ -15,6 +15,8 @@ #include "mc/mc_private.h" #include "mc/mc_snapshot.h" +using simgrid::mc::remote; + extern "C" { XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_diff, xbt, @@ -419,7 +421,7 @@ mc_mem_region_t MC_get_heap_region(mc_snapshot_t snapshot) size_t n = snapshot->snapshot_regions_count; for (size_t i=0; i!=n; ++i) { mc_mem_region_t region = snapshot->snapshot_regions[i]; - if (region->region_type == MC_REGION_TYPE_HEAP) + if (region->region_type() == MC_REGION_TYPE_HEAP) return region; } xbt_die("No heap region"); @@ -818,13 +820,13 @@ static int compare_heap_area_without_type(struct s_mc_diff *state, int process_i if (MC_snapshot_region_memcmp(((char *) real_area1) + i, heap_region1, ((char *) real_area2) + i, heap_region2, 1) != 0) { pointer_align = (i / sizeof(void *)) * sizeof(void *); - addr_pointed1 = MC_snapshot_read_pointer(snapshot1, (char *) real_area1 + pointer_align, process_index); - addr_pointed2 = MC_snapshot_read_pointer(snapshot2, (char *) real_area2 + pointer_align, process_index); + addr_pointed1 = snapshot1->read( + remote((void**)((char *) real_area1 + pointer_align)), process_index); + addr_pointed2 = snapshot2->read( + remote((void**)((char *) real_area2 + pointer_align)), process_index); - if (addr_pointed1 > process->maestro_stack_start - && addr_pointed1 < process->maestro_stack_end - && addr_pointed2 > process->maestro_stack_start - && addr_pointed2 < process->maestro_stack_end) { + if (process->in_maestro_stack(remote(addr_pointed1)) + && process->in_maestro_stack(remote(addr_pointed2))) { i = pointer_align + sizeof(void *); continue; } else if (addr_pointed1 > state->std_heap_copy.heapbase @@ -978,15 +980,19 @@ top: case DW_TAG_rvalue_reference_type: case DW_TAG_pointer_type: if (type->subtype && type->subtype->type == DW_TAG_subroutine_type) { - addr_pointed1 = MC_snapshot_read_pointer(snapshot1, real_area1, process_index); - addr_pointed2 = MC_snapshot_read_pointer(snapshot2, real_area2, process_index); + addr_pointed1 = snapshot1->read(remote((void**)real_area1), process_index); + addr_pointed2 = snapshot2->read(remote((void**)real_area2), process_index); return (addr_pointed1 != addr_pointed2);; } else { pointer_level++; if (pointer_level > 1) { /* Array of pointers */ for (size_t i = 0; i < (area_size / sizeof(void *)); i++) { - addr_pointed1 = MC_snapshot_read_pointer(snapshot1, (char*) real_area1 + i * sizeof(void *), process_index); - addr_pointed2 = MC_snapshot_read_pointer(snapshot2, (char*) real_area2 + i * sizeof(void *), process_index); + addr_pointed1 = snapshot1->read( + remote((void**)((char*) real_area1 + i * sizeof(void *))), + process_index); + addr_pointed2 = snapshot2->read( + remote((void**)((char*) real_area2 + i * sizeof(void *))), + process_index); if (addr_pointed1 > state->std_heap_copy.heapbase && addr_pointed1 < mc_snapshot_get_heap_end(snapshot1) && addr_pointed2 > state->std_heap_copy.heapbase @@ -1001,8 +1007,8 @@ top: return res; } } else { - addr_pointed1 = MC_snapshot_read_pointer(snapshot1, real_area1, process_index); - addr_pointed2 = MC_snapshot_read_pointer(snapshot2, real_area2, process_index); + addr_pointed1 = snapshot1->read(remote((void**)real_area1), process_index); + addr_pointed2 = snapshot2->read(remote((void**)real_area2), process_index); if (addr_pointed1 > state->std_heap_copy.heapbase && addr_pointed1 < mc_snapshot_get_heap_end(snapshot1) && addr_pointed2 > state->std_heap_copy.heapbase @@ -1159,10 +1165,10 @@ int compare_heap_area(int process_index, const void *area1, const void *area2, m // This is the address of std_heap->heapinfo in the application process: void* heapinfo_address = &((xbt_mheap_t) process->heap_address)->heapinfo; - const malloc_info* heapinfos1 = (const malloc_info*) MC_snapshot_read_pointer( - snapshot1, heapinfo_address, process_index); - const malloc_info* heapinfos2 = (const malloc_info*) MC_snapshot_read_pointer( - snapshot2, heapinfo_address, process_index); + const malloc_info* heapinfos1 = snapshot1->read( + remote((const malloc_info**)heapinfo_address), process_index); + const malloc_info* heapinfos2 = snapshot2->read( + remote((const malloc_info**)heapinfo_address), process_index); malloc_info heapinfo_temp1, heapinfo_temp2;