xbt_abort();
}
- unw_word_t ip, sp, off;
+ unw_word_t ip, off;
dw_frame_t frame;
unsigned int cursor = 0;
while(ret >= 0 && !stop){
unw_get_reg(&c, UNW_REG_IP, &ip);
- unw_get_reg(&c, UNW_REG_SP, &sp);
unw_get_proc_name(&c, frame_name, sizeof (frame_name), &off);
// The pointers are both in the heap:
if(addr_pointed1 > std_heap && (char *)addr_pointed1 < (char*) std_heap + STD_HEAP_SIZE){
if(!(addr_pointed2 > std_heap && (char *)addr_pointed2 < (char*) std_heap + STD_HEAP_SIZE))
- xbt_die("Die");
+ return 1;
return compare_heap_area(addr_pointed1, addr_pointed2, NULL, info, other_info, type->dw_type_id, pointer_level);
}
// The pointers are both in the current object R/W segment:
else if(addr_pointed1 > start_data && (char*)addr_pointed1 <= (char *)start_data + region_size){
if(!(addr_pointed2 > start_data && (char*)addr_pointed2 <= (char *)start_data + region_size))
- xbt_die("Die");
+ return 1;
if(type->dw_type_id == NULL)
return (addr_pointed1 != addr_pointed2);
else
return loc;
}
+static int mc_anonymous_variable_index = 0;
+
static dw_variable_t MC_die_to_variable(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
// Drop declaration:
if (MC_dwarf_attr_flag(die, DW_AT_declaration, false))
klass, klass, (void*) variable->dwarf_offset, variable->name);
}
+ // The current code needs a variable name,
+ // generate a fake one:
+ if(!variable->name) {
+ variable->name = bprintf("@anonymous#%i", mc_anonymous_variable_index++);
+ }
+
return variable;
}