if(!compared_pointers){
compared_pointers = xbt_dynar_new(sizeof(pointers_pair_t), pointers_pair_free_voidp);
- MC_ignore_global_variable("compared_pointers");
}else{
xbt_dynar_reset(compared_pointers);
}
if(!compared_pointers){
compared_pointers = xbt_dynar_new(sizeof(pointers_pair_t), pointers_pair_free_voidp);
- MC_ignore_global_variable("compared_pointers");
}else{
xbt_dynar_reset(compared_pointers);
}
}
int MC_compare_snapshots(void *s1, void *s2){
-
- MC_ignore_local_variable("self", "simcall_BODY_mc_snapshot");
+
return simcall_mc_compare_snapshots(s1, s2);
}
case DW_FORM_block:
case DW_FORM_block1:
return MC_DW_CLASS_BLOCK;
+ case DW_FORM_data1:
case DW_FORM_data2:
case DW_FORM_data4:
case DW_FORM_data8:
// The attribute is a reference to a location list entry:
case DW_FORM_sec_offset:
+ case DW_FORM_data1:
case DW_FORM_data2:
case DW_FORM_data4:
case DW_FORM_data8:
Dwarf_Attribute attr;
dwarf_attr_integrate(child, DW_AT_data_member_location, &attr);
- int klass = MC_dwarf_form_get_class(dwarf_whatform(&attr));
+ int form = dwarf_whatform(&attr);
+ int klass = MC_dwarf_form_get_class(form);
switch (klass) {
case MC_DW_CLASS_EXPRLOC:
case MC_DW_CLASS_BLOCK:
// It's supposed to be possible in DWARF2 but I couldn't find its semantic
// in the spec.
default:
- xbt_die("Can't handle form class 0x%x (%i) as DW_AT_member_location", klass, klass);
+ xbt_die(
+ "Can't handle form class (%i) / form 0x%x as DW_AT_member_location",
+ klass, form);
}
}
Dwarf_Die die;
if(dwarf_offdie(dwarf, offset+length, &die)!=NULL) {
-
- // Skip C++ for now (we will add support for it soon):
- int lang = dwarf_srclang(&die);
- if((lang==DW_LANG_C_plus_plus) || (lang==DW_LANG_ObjC_plus_plus)) {
- offset = next_offset;
- continue;
- }
-
MC_dwarf_handle_die(info, &die, &die, NULL);
}
offset = next_offset;
MC_ignore_local_variable("_throw_ctx", "*");
MC_ignore_local_variable("ctx", "*");
+ MC_ignore_local_variable("self", "simcall_BODY_mc_snapshot");
MC_ignore_local_variable("next_context", "smx_ctx_sysv_suspend_serial");
MC_ignore_local_variable("i", "smx_ctx_sysv_suspend_serial");
/* Ignore local variable about time used for tracing */
MC_ignore_local_variable("start_time", "*");
+ MC_ignore_global_variable("compared_pointers");
MC_ignore_global_variable("mc_comp_times");
MC_ignore_global_variable("mc_snapshot_comparison_time");
MC_ignore_global_variable("mc_time");