A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[mc] Do not take NULL to mean 'the current address space' in dwarf expressions
[simgrid.git]
/
src
/
mc
/
mc_dwarf.c
diff --git
a/src/mc/mc_dwarf.c
b/src/mc/mc_dwarf.c
index
a286459
..
55de42e
100644
(file)
--- a/
src/mc/mc_dwarf.c
+++ b/
src/mc/mc_dwarf.c
@@
-1373,18
+1373,27
@@
void MC_post_process_object_info(mc_process_t process, mc_object_info_t info)
dw_type_t type = NULL;
xbt_dict_foreach(info->types, cursor, key, type) {
dw_type_t type = NULL;
xbt_dict_foreach(info->types, cursor, key, type) {
+ dw_type_t subtype = type;
+ while (subtype->type == DW_TAG_typedef || subtype->type == DW_TAG_volatile_type
+ || subtype->type == DW_TAG_const_type) {
+ if (subtype->subtype)
+ subtype = subtype->subtype;
+ else
+ break;
+ }
+
// Resolve full_type:
// Resolve full_type:
- if (
type->name &&
type->byte_size == 0) {
+ if (
subtype->name && sub
type->byte_size == 0) {
for (size_t i = 0; i != process->object_infos_size; ++i) {
dw_type_t same_type =
xbt_dict_get_or_null(process->object_infos[i]->full_types_by_name,
for (size_t i = 0; i != process->object_infos_size; ++i) {
dw_type_t same_type =
xbt_dict_get_or_null(process->object_infos[i]->full_types_by_name,
- type->name);
+
sub
type->name);
if (same_type && same_type->name && same_type->byte_size) {
type->full_type = same_type;
break;
}
}
if (same_type && same_type->name && same_type->byte_size) {
type->full_type = same_type;
break;
}
}
- }
+ }
else type->full_type = subtype;
}
}
}
}