Grr, gcc-5.4 creates DW_AT_typedef without DW_AT_type for HARD_REG_SET!

<1><c26b>: Abbrev Number: 4 (DW_TAG_typedef)
    <c26c>   DW_AT_name        : (indirect string, offset: 0x16e30): HARD_REG_ELT_TYPE
    <c270>   DW_AT_decl_file   : 57
    <c271>   DW_AT_decl_line   : 43
    <c272>   DW_AT_type        : <0x70>
 <1><c276>: Abbrev Number: 102 (DW_TAG_typedef)
    <c277>   DW_AT_name        : (indirect string, offset: 0x2f954): HARD_REG_SET
    <c27b>   DW_AT_decl_file   : 57
    <c27c>   DW_AT_decl_line   : 54
This commit is contained in:
christos 2016-06-08 21:32:27 +00:00
parent aad330ff83
commit 2964f15a7a
1 changed files with 12 additions and 2 deletions

View File

@ -1224,8 +1224,18 @@ die_sou_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
(mt->t_name == NULL || mt->t_name[0] == '\0'))
continue;
printf("%s unresolved type = %d (%s)\n", tdesc_name(tdp),
mt->t_type, tdesc_name(mt));
/*
* XXX: Gcc-5.4 DW_TAG_typedef without DW_AT_type;
* assume pointer
*/
if (mt->t_id == TID_VOID) {
ml->ml_size = dw->dw_ptrsz;
continue;
}
fprintf(stderr, "%s unresolved type=%d (%s) tid=%#x\n",
tdesc_name(tdp), mt->t_type, tdesc_name(mt),
mt->t_id);
dw->dw_nunres++;
return (1);
}