From: Gabriel Corona Date: Tue, 25 Feb 2014 11:32:34 +0000 (+0100) Subject: [mc] Handle reference_type and rvalue_reference_type as pointer_type (C++) X-Git-Tag: v3_11~199^2~2^2~22^2~4 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3a80007514901595c94e124f9c57e6cb26c92b53?ds=sidebyside [mc] Handle reference_type and rvalue_reference_type as pointer_type (C++) --- diff --git a/src/mc/mc_compare.c b/src/mc/mc_compare.c index 193a90c550..cea9e12596 100644 --- a/src/mc/mc_compare.c +++ b/src/mc/mc_compare.c @@ -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)); diff --git a/src/mc/mc_dwarf.c b/src/mc/mc_dwarf.c index 28866c2e97..c4c00ba078 100644 --- a/src/mc/mc_dwarf.c +++ b/src/mc/mc_dwarf.c @@ -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: diff --git a/src/xbt/mmalloc/mm_diff.c b/src/xbt/mmalloc/mm_diff.c index ee02c18b49..5717fa153c 100644 --- a/src/xbt/mmalloc/mm_diff.c +++ b/src/xbt/mmalloc/mm_diff.c @@ -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));