Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Handle reference_type and rvalue_reference_type as pointer_type (C++)
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 25 Feb 2014 11:32:34 +0000 (12:32 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 25 Feb 2014 11:32:53 +0000 (12:32 +0100)
src/mc/mc_compare.c
src/mc/mc_dwarf.c
src/xbt/mmalloc/mm_diff.c

index 193a90c..cea9e12 100644 (file)
@@ -123,6 +123,8 @@ static int compare_areas_with_type(void *area1, void *area2, mc_object_info_t in
     case DW_TAG_base_type:
     case DW_TAG_enumeration_type:
     case DW_TAG_pointer_type:
+    case DW_TAG_reference_type:
+    case DW_TAG_rvalue_reference_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
       if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
@@ -155,6 +157,8 @@ static int compare_areas_with_type(void *area1, void *area2, mc_object_info_t in
     }
     break;
   case DW_TAG_pointer_type:
+  case DW_TAG_reference_type:
+  case DW_TAG_rvalue_reference_type:
     if(type->subtype && type->subtype->type == DW_TAG_subroutine_type){
       addr_pointed1 = *((void **)(area1)); 
       addr_pointed2 = *((void **)(area2));
index 28866c2..c4c00ba 100644 (file)
@@ -136,6 +136,8 @@ static mc_tag_class MC_dwarf_tag_classify(int tag) {
     case DW_TAG_enumeration_type:
     case DW_TAG_typedef:
     case DW_TAG_pointer_type:
+    case DW_TAG_reference_type:
+    case DW_TAG_rvalue_reference_type:
     case DW_TAG_string_type:
     case DW_TAG_structure_type:
     case DW_TAG_subroutine_type:
index ee02c18..5717fa1 100644 (file)
@@ -812,6 +812,8 @@ static int compare_heap_area_with_type(struct s_mm_diff *state, void *real_area1
     case DW_TAG_base_type:
     case DW_TAG_enumeration_type:
     case DW_TAG_pointer_type:
+    case DW_TAG_reference_type:
+    case DW_TAG_rvalue_reference_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
       if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
@@ -845,6 +847,8 @@ static int compare_heap_area_with_type(struct s_mm_diff *state, void *real_area1
         return res;
     }
     break;
+  case DW_TAG_reference_type:
+  case DW_TAG_rvalue_reference_type:
   case DW_TAG_pointer_type:
     if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(info->types, type->dw_type_id))->type == DW_TAG_subroutine_type){
       addr_pointed1 = *((void **)(area1));