aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlok Kumar Sharma <AlokKumar.Sharma@amd.com>2020-07-01 11:53:09 +0530
committeralosharm <AlokKumar.Sharma@amd.com>2020-07-01 16:57:17 +0530
commit9cdf98207c5bab668e3734d11d5a24d6b5375b54 (patch)
tree64cb7a8e7c5d5011a3926de90b50e9368de5f811
parentcc574a35a22ed984fb2d459669d1bac9f843f920 (diff)
downloadgdb-9cdf98207c5bab668e3734d11d5a24d6b5375b54.zip
gdb-9cdf98207c5bab668e3734d11d5a24d6b5375b54.tar.gz
gdb-9cdf98207c5bab668e3734d11d5a24d6b5375b54.tar.bz2
Allow reference form for DW_AT_associated and DW_AT_allocated attributes
Currently, GDB rejects the (die) reference form while it accepts exprloc form. It is allowed in DWARF standard. "Table 7.5: Attribute encodings" in DWARF5 standard. Flang compiler assigns (die) reference to DW_AT_associated and DW_AT_allocated for some cases. gdb/ChangeLog * dwarf2/read.c (set_die_type): Removed conditions to restrict forms for DW_AT_associated and DW_AT_allocated attributes, which is already checked in function attr_to_dynamic_prop.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/dwarf2/read.c16
2 files changed, 8 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d64f572..404ee40 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-07-01 Alok Kumar Sharma <AlokKumar.Sharma@amd.com>
+
+ * dwarf2/read.c (set_die_type): Removed conditions to restrict
+ forms for DW_AT_associated and DW_AT_allocated attributes,
+ which is already checked in function attr_to_dynamic_prop.
+
2020-06-30 Tom Tromey <tromey@adacore.com>
* dwarf2/read.c (quirk_rust_enum): Correctly call
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index b097f62..4622d14 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -23859,33 +23859,21 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
/* Read DW_AT_allocated and set in type. */
attr = dwarf2_attr (die, DW_AT_allocated, cu);
- if (attr != NULL && attr->form_is_block ())
+ if (attr != NULL)
{
struct type *prop_type = cu->addr_sized_int_type (false);
if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
type->add_dyn_prop (DYN_PROP_ALLOCATED, prop);
}
- else if (attr != NULL)
- {
- complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
- (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
- sect_offset_str (die->sect_off));
- }
/* Read DW_AT_associated and set in type. */
attr = dwarf2_attr (die, DW_AT_associated, cu);
- if (attr != NULL && attr->form_is_block ())
+ if (attr != NULL)
{
struct type *prop_type = cu->addr_sized_int_type (false);
if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
type->add_dyn_prop (DYN_PROP_ASSOCIATED, prop);
}
- else if (attr != NULL)
- {
- complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
- (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
- sect_offset_str (die->sect_off));
- }
/* Read DW_AT_data_location and set in type. */
attr = dwarf2_attr (die, DW_AT_data_location, cu);