- switch(s1->regions[i]->type){
- case 0 :
- /* Compare heapregion */
- if(s1->regions[i]->size != s2->regions[i]->size){
- XBT_DEBUG("Different size of heap (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- XBT_DEBUG("Different start addr of heap (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[i]->data, (xbt_mheap_t)s2->regions[i]->data, &stacks1, &stacks2, &equals)){
- XBT_INFO("Different heap (mmalloc_compare)");
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- heap1 = s1->regions[i]->data;
- heap2 = s2->regions[i]->data;
- break;
- case 1 :
- /* Compare data libsimgrid region */
- if(s1->regions[i]->size != s2->regions[i]->size){
- XBT_DEBUG("Different size of libsimgrid (data) (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- XBT_DEBUG("Different start addr of libsimgrid (data) (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- if(data_libsimgrid_region_compare(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){
- XBT_INFO("Different memcmp for data in libsimgrid");
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- break;
-
- case 2 :
- /* Compare data program region */
- if(s1->regions[i]->size != s2->regions[i]->size){
- XBT_DEBUG("Different size of data program (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)
- MC_UNSET_RAW_MEM;
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- XBT_DEBUG("Different start addr of data program (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- if(!raw_mem_set)