-/* Copyright (c) 2012-2013. The SimGrid Team.
+/* Copyright (c) 2012-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
void *addr_pointed1, *addr_pointed2;
switch(type->type){
+ case DW_TAG_unspecified_type:
+ return 1;
+
case DW_TAG_base_type:
case DW_TAG_enumeration_type:
case DW_TAG_union_type:
case DW_TAG_array_type:
subtype = type->subtype;
switch(subtype->type){
+ case DW_TAG_unspecified_type:
+ return 1;
+
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_class_type:
case DW_TAG_union_type:
if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
subtype = subtype->other_object_same_type;
}
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));
}
break;
case DW_TAG_structure_type:
+ case DW_TAG_class_type:
xbt_dynar_foreach(type->members, cursor, member){
XBT_DEBUG("Compare member %s", member->name);
res = compare_areas_with_type((char *)area1 + member->offset, (char *)area2 + member->offset, info, other_info, member->subtype, region_size, region_type, start_data, pointer_level);