aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-06-22 15:03:19 +0000
committerJakub Jelinek <jakub@redhat.com>2011-06-22 15:03:19 +0000
commitf8b999f94554f44229f48a6c93fc14e715871091 (patch)
treee2aa65ff240d99dc69a889386b148ed4d0b477cf
parentc38c4bc5b298545effe1f4afb31d53d66153f189 (diff)
downloadgdb-f8b999f94554f44229f48a6c93fc14e715871091.zip
gdb-f8b999f94554f44229f48a6c93fc14e715871091.tar.gz
gdb-f8b999f94554f44229f48a6c93fc14e715871091.tar.bz2
* dwarf2.h (enum dwarf_location_atom): Add DW_OP_GNU_parameter_ref.
* dwarf.c (decode_location_expression): For DW_OP_GNU_convert and DW_OP_GNU_reinterpret, if uvalue is 0, don't add cu_offset. Handle DW_OP_GNU_parameter_ref.
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/dwarf.c9
-rw-r--r--include/ChangeLog4
-rw-r--r--include/dwarf2.h2
4 files changed, 19 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 29563e1..edb8760 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (decode_location_expression): For DW_OP_GNU_convert and
+ DW_OP_GNU_reinterpret, if uvalue is 0, don't add cu_offset.
+ Handle DW_OP_GNU_parameter_ref.
+
2011-06-16 Tom Tromey <tromey@redhat.com>
* dwarf-mode.el (dwarf-do-insert-substructure): Call
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 46c454a..f5a8d7b 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -1179,13 +1179,18 @@ decode_location_expression (unsigned char * data,
uvalue = read_leb128 (data, &bytes_read, 0);
data += bytes_read;
printf ("DW_OP_GNU_convert <0x%s>",
- dwarf_vmatoa ("x", cu_offset + uvalue));
+ dwarf_vmatoa ("x", uvalue ? cu_offset + uvalue : 0));
break;
case DW_OP_GNU_reinterpret:
uvalue = read_leb128 (data, &bytes_read, 0);
data += bytes_read;
printf ("DW_OP_GNU_reinterpret <0x%s>",
- dwarf_vmatoa ("x", cu_offset + uvalue));
+ dwarf_vmatoa ("x", uvalue ? cu_offset + uvalue : 0));
+ break;
+ case DW_OP_GNU_parameter_ref:
+ printf ("DW_OP_GNU_parameter_ref: <0x%s>",
+ dwarf_vmatoa ("x", cu_offset + byte_get (data, 4)));
+ data += 4;
break;
/* HP extensions. */
diff --git a/include/ChangeLog b/include/ChangeLog
index 6ff56e6..83c7bce 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2011-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2.h (enum dwarf_location_atom): Add DW_OP_GNU_parameter_ref.
+
2011-06-20 Jakub Jelinek <jakub@redhat.com>
PR ld/12570
diff --git a/include/dwarf2.h b/include/dwarf2.h
index 0b00866..b2806ef 100644
--- a/include/dwarf2.h
+++ b/include/dwarf2.h
@@ -563,6 +563,8 @@ enum dwarf_location_atom
DW_OP_GNU_deref_type = 0xf6,
DW_OP_GNU_convert = 0xf7,
DW_OP_GNU_reinterpret = 0xf9,
+ /* The GNU parameter ref extension. */
+ DW_OP_GNU_parameter_ref = 0xfa,
/* HP extensions. */
DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */
DW_OP_HP_is_value = 0xe1,