diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 1 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-strp.S | 28 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-strp.exp | 5 |
5 files changed, 39 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index beeb707..93127d6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-05-21 Jan Kratochvil <jan.kratochvil@redhat.com> + + Fix parsing DW_AT_const_value using DW_FORM_string. + * dwarf2read.c (dwarf2_const_value <DW_FORM_string>): New. + 2009-05-20 Joel Brobecker <brobecker@adacore.com> * aix-thread.c (giter_count): Do not count the main thread. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 6ddaecd..bb08841 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -7957,6 +7957,7 @@ dwarf2_const_value (struct attribute *attr, struct symbol *sym, DW_ADDR (attr)); SYMBOL_CLASS (sym) = LOC_CONST_BYTES; break; + case DW_FORM_string: case DW_FORM_strp: /* DW_STRING is already allocated on the obstack, point directly to it. */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 70ded08..c65edbe 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-05-21 Jan Kratochvil <jan.kratochvil@redhat.com> + + * gdb.dwarf2/dw2-strp.exp (p a_string2, ptype a_string2): New. + * gdb.dwarf2/dw2-strp.S (a_string2): New. + 2009-05-18 Jon Beniston <jon@beniston.com> * gdb.asm/asm-source.exp: Add lm32 target. diff --git a/gdb/testsuite/gdb.dwarf2/dw2-strp.S b/gdb/testsuite/gdb.dwarf2/dw2-strp.S index 293cc1b..4dbb761 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-strp.S +++ b/gdb/testsuite/gdb.dwarf2/dw2-strp.S @@ -52,17 +52,23 @@ .byte 1 /* DW_AT_byte_size */ .byte 6 /* DW_AT_encoding */ - .uleb128 5 /* Abbrev: DW_TAG_variable */ + .uleb128 5 /* Abbrev: DW_TAG_variable DW_FORM_strp */ .4byte .Lvarname /* DW_AT_name */ .4byte .Lconst_type-.Lcu1_begin/* DW_AT_type */ .4byte .Lvarcontents /* DW_AT_const_value */ .byte 1 /* DW_AT_external */ + .uleb128 6 /* Abbrev: DW_TAG_variable DW_FORM_string */ + .string "a_string2" /* DW_AT_name */ + .4byte .Lconst_type-.Lcu1_begin/* DW_AT_type */ + .string "hello world2\n" /* DW_AT_const_value */ + .byte 1 /* DW_AT_external */ + .Lconst_type: - .uleb128 6 /* Abbrev: DW_TAG_const_type */ + .uleb128 7 /* Abbrev: DW_TAG_const_type */ .4byte .Larray_type-.Lcu1_begin/* DW_AT_type */ - .uleb128 7 /* Abbrev: DW_TAG_variable (name "") */ + .uleb128 8 /* Abbrev: DW_TAG_variable (name "") */ .4byte .Lemptyname /* DW_AT_name */ .byte 0 /* End of children of CU */ @@ -125,6 +131,20 @@ .byte 0x0 /* Terminator */ .uleb128 6 /* Abbrev code */ + .uleb128 0x34 /* DW_TAG_variable */ + .byte 0x0 /* no_children */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x1c /* DW_AT_const_value */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 7 /* Abbrev code */ .uleb128 0x26 /* DW_TAG_const_type */ .byte 0x0 /* DW_children_no */ .uleb128 0x49 /* DW_AT_type */ @@ -132,7 +152,7 @@ .byte 0x0 /* Terminator */ .byte 0x0 /* Terminator */ - .uleb128 7 /* Abbrev code */ + .uleb128 8 /* Abbrev code */ .uleb128 0x34 /* DW_TAG_variable */ .byte 0x0 /* DW_children_no */ .uleb128 0x3 /* DW_AT_name */ diff --git a/gdb/testsuite/gdb.dwarf2/dw2-strp.exp b/gdb/testsuite/gdb.dwarf2/dw2-strp.exp index 2201d30..41620a4 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-strp.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-strp.exp @@ -48,5 +48,8 @@ gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} -gdb_test "p a_string" "\\\$1 = \"hello world!\\\\n\"" +gdb_test "p a_string" " = \"hello world!\\\\n\"" gdb_test "ptype a_string" "type = char \\\[14\\\]" + +gdb_test "p a_string2" " = \"hello world2\\\\n\"" +gdb_test "ptype a_string2" "type = char \\\[14\\\]" |