summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2012-08-29 18:37:10 +0000
committerdim <dim@FreeBSD.org>2012-08-29 18:37:10 +0000
commit5adf2c54b3105c045c6986fa0c072ac520a30b03 (patch)
treefa268c1fe98e9673d85f133c1186d3ea929debe9
parent1d346c645e9050e54033b7058760203f8fbd2833 (diff)
downloadFreeBSD-src-5adf2c54b3105c045c6986fa0c072ac520a30b03.zip
FreeBSD-src-5adf2c54b3105c045c6986fa0c072ac520a30b03.tar.gz
Teach gdb about the DW_FORM_flag_present dwarf attribute, so it doesn't
error out on files that contain it. (This attribute can be emitted by newer versions of clang.) MFC after: 2 weeks
-rw-r--r--contrib/binutils/include/elf/dwarf2.h3
-rw-r--r--contrib/gdb/gdb/dwarf2read.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/contrib/binutils/include/elf/dwarf2.h b/contrib/binutils/include/elf/dwarf2.h
index 2683f51..9877f1c 100644
--- a/contrib/binutils/include/elf/dwarf2.h
+++ b/contrib/binutils/include/elf/dwarf2.h
@@ -238,7 +238,8 @@ enum dwarf_form
DW_FORM_ref4 = 0x13,
DW_FORM_ref8 = 0x14,
DW_FORM_ref_udata = 0x15,
- DW_FORM_indirect = 0x16
+ DW_FORM_indirect = 0x16,
+ DW_FORM_flag_present = 0x19
};
/* Attribute names and codes. */
diff --git a/contrib/gdb/gdb/dwarf2read.c b/contrib/gdb/gdb/dwarf2read.c
index 400750d..1093ff2 100644
--- a/contrib/gdb/gdb/dwarf2read.c
+++ b/contrib/gdb/gdb/dwarf2read.c
@@ -4604,6 +4604,9 @@ read_attribute_value (struct attribute *attr, unsigned form,
DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
info_ptr += 1;
break;
+ case DW_FORM_flag_present:
+ DW_UNSND (attr) = 1;
+ break;
case DW_FORM_sdata:
DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
info_ptr += bytes_read;
@@ -7226,6 +7229,9 @@ dump_die (struct die_info *die)
else
fprintf_unfiltered (gdb_stderr, "flag: FALSE");
break;
+ case DW_FORM_flag_present:
+ fprintf_unfiltered (gdb_stderr, "flag: TRUE");
+ break;
case DW_FORM_indirect:
/* the reader will have reduced the indirect form to
the "base form" so this form should not occur */
OpenPOWER on IntegriCloud