- while(start <= end){
- cursor = (start + end) / 2;
- var = (mc_data_bss_ignore_variable_t)xbt_dynar_get_as(mc_data_bss_comparison_ignore, cursor, mc_data_bss_ignore_variable_t);
- if(var->address == address)
- return var->size;
- if(var->address < address)
- start = cursor + 1;
- if(var->address > address)
- end = cursor - 1;
- }
-
- return 0;
-}
-
-static int data_bss_program_region_compare(void *d1, void *d2, size_t size){
-
- size_t i = 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){
- 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_binary && addr_pointed1 < end_plt_binary) || (addr_pointed2 > start_plt_binary && addr_pointed2 < end_plt_binary)){
- continue;
- }else{
- if(XBT_LOG_ISENABLED(mc_compare, xbt_log_priority_verbose)){
- XBT_VERB("Different byte (offset=%zu) (%p - %p) in data program region", i, (char *)d1 + i, (char *)d2 + i);
- XBT_VERB("Addresses pointed : %p - %p\n", addr_pointed1, addr_pointed2);
- }
- return 1;
- }
- }
- }
-
- 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;