- if (maps->regions[i].pathname == NULL){
- if (reg.start_addr == std_heap){ // only save the std heap (and not the raw one)
- MC_snapshot_add_region(snapshot, 0, reg.start_addr, (char*)reg.end_addr - (char*)reg.start_addr);
+ if (maps->regions[i].pathname != NULL){
+ if (!memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
+ start_data_libsimgrid = reg.start_addr;
+ i++;
+ reg = maps->regions[i];
+ if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && i < maps->mapsize)
+ start_bss_libsimgrid = reg.start_addr;
+ }else if (!memcmp(basename(maps->regions[i].pathname), basename(xbt_binary_name), strlen(basename(xbt_binary_name)))){
+ start_data_binary = reg.start_addr;
+ i++;
+ reg = maps->regions[i];
+ if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && reg.start_addr != std_heap && reg.start_addr != raw_heap && i < maps->mapsize){
+ start_bss_binary = reg.start_addr;
+ i++;
+ }
+ }else if(!memcmp(maps->regions[i].pathname, "[heap]", 6)){
+ end_raw_heap = reg.end_addr;
+ i++;