- }
-
- return 0;
-}
-
-static int data_bss_libsimgrid_region_compare(void *d1, void *d2, size_t size){
-
- size_t i = 0, ignore_size = 0;
- int pointer_align;
- void *addr_pointed1 = NULL, *addr_pointed2 = NULL;
-
- for(i=0; i<size; i++){
- if(memcmp(((char *)d1) + i, ((char *)d2) + i, 1) != 0){
- if((ignore_size = data_bss_ignore_size((char *)start_data_libsimgrid+i)) > 0){
- i = i + ignore_size;
- continue;
- }else if((ignore_size = data_bss_ignore_size((char *)start_bss_libsimgrid+i)) > 0){
- i = i + ignore_size;
- continue;
- }
- pointer_align = (i / sizeof(void*)) * sizeof(void*);
- addr_pointed1 = *((void **)((char *)d1 + pointer_align));
- addr_pointed2 = *((void **)((char *)d2 + pointer_align));
- if((addr_pointed1 > start_plt_libsimgrid && addr_pointed1 < end_plt_libsimgrid) || (addr_pointed2 > start_plt_libsimgrid && addr_pointed2 < end_plt_libsimgrid)){
- continue;
- }else if(addr_pointed1 >= raw_heap && addr_pointed1 <= end_raw_heap && addr_pointed2 >= raw_heap && addr_pointed2 <= end_raw_heap){
- continue;
- }else{
- if(XBT_LOG_ISENABLED(mc_compare, xbt_log_priority_verbose)){
- XBT_VERB("Different byte (offset=%zu) (%p - %p) in libsimgrid region", i, (char *)d1 + i, (char *)d2 + i);
- XBT_VERB("Addresses pointed : %p - %p\n", addr_pointed1, addr_pointed2);
- }
- return 1;
+ i = 0;
+ while(i < current_var->size){
+ if(memcmp((char *)d1 + offset + i, (char *)d2 + offset + i, 1) != 0){
+ pointer_align = (i / sizeof(void*)) * sizeof(void*);
+ addr_pointed1 = *((void **)((char *)d1 + offset + pointer_align));
+ addr_pointed2 = *((void **)((char *)d2 + offset + pointer_align));
+ if((addr_pointed1 > plt_start && addr_pointed1 < plt_end) || (addr_pointed2 > plt_start && addr_pointed2 < plt_end)){
+ i = pointer_align + sizeof(void*);
+ continue;
+ }else if((addr_pointed1 > std_heap) && ((char *)addr_pointed1 < (char *)std_heap + STD_HEAP_SIZE)
+ && (addr_pointed2 > std_heap) && ((char *)addr_pointed2 < (char *)std_heap + STD_HEAP_SIZE)){
+ res_compare = compare_area(addr_pointed1, addr_pointed2, NULL);
+ if(res_compare == 1){
+ #ifdef MC_VERBOSE
+ if(region_type == 2)
+ XBT_VERB("Different global variable in binary : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ else
+ XBT_VERB("Different global variable in libsimgrid : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ #endif
+ #ifdef MC_DEBUG
+ if(region_type == 2)
+ XBT_DEBUG("Different global variable in binary : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ else
+ XBT_DEBUG("Different global variable in libsimgrid : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ #endif
+ return 1;
+ }
+ i = pointer_align + sizeof(void*);
+ continue;
+ }else{
+ #ifdef MC_VERBOSE
+ if(region_type == 2)
+ XBT_VERB("Different global variable in binary : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ else
+ XBT_VERB("Different global variable in libsimgrid : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ #endif
+ #ifdef MC_DEBUG
+ if(region_type == 2)
+ XBT_DEBUG("Different global variable in binary : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ else
+ XBT_DEBUG("Different global variable in libsimgrid : %s at addresses %p - %p (size = %zu)", current_var->name, (char *)d1+offset, (char *)d2+offset, current_var->size);
+ #endif
+ return 1;
+ }