summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-01-11 09:32:50 +0000
committerJason Merrill <jason@redhat.com>2002-01-11 09:32:50 +0000
commitf15d9dd743331d47409dc96c614e045dced5bb46 (patch)
tree79d90322b7aec2ac42a4cbec4a3f1fb3454243de
parentae14763ef309a8353a8f16bb11f4c21ab899e4b8 (diff)
downloadgdb-f15d9dd743331d47409dc96c614e045dced5bb46.tar.gz
* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
Fix DW_OP_minus.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/dwarf2read.c42
2 files changed, 46 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6647f4dc543..9e91405cd5a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-10 Jason Merrill <jason@redhat.com>
+
+ * dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
+ Fix DW_OP_minus.
+
2002-01-10 Andrew Cagney <ac131313@redhat.com>
* config/djgpp/fnchange.lst: Add renames for bfd/ChangeLog-0001
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 7c78eb5ad81..28317f2e7b8 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -5807,6 +5807,41 @@ decode_locdesc (struct dwarf_block *blk, struct objfile *objfile,
op = data[i++];
switch (op)
{
+ case DW_OP_lit0:
+ case DW_OP_lit1:
+ case DW_OP_lit2:
+ case DW_OP_lit3:
+ case DW_OP_lit4:
+ case DW_OP_lit5:
+ case DW_OP_lit6:
+ case DW_OP_lit7:
+ case DW_OP_lit8:
+ case DW_OP_lit9:
+ case DW_OP_lit10:
+ case DW_OP_lit11:
+ case DW_OP_lit12:
+ case DW_OP_lit13:
+ case DW_OP_lit14:
+ case DW_OP_lit15:
+ case DW_OP_lit16:
+ case DW_OP_lit17:
+ case DW_OP_lit18:
+ case DW_OP_lit19:
+ case DW_OP_lit20:
+ case DW_OP_lit21:
+ case DW_OP_lit22:
+ case DW_OP_lit23:
+ case DW_OP_lit24:
+ case DW_OP_lit25:
+ case DW_OP_lit26:
+ case DW_OP_lit27:
+ case DW_OP_lit28:
+ case DW_OP_lit29:
+ case DW_OP_lit30:
+ case DW_OP_lit31:
+ stack[++stacki] = op - DW_OP_lit0;
+ break;
+
case DW_OP_reg0:
case DW_OP_reg1:
case DW_OP_reg2:
@@ -5965,6 +6000,11 @@ decode_locdesc (struct dwarf_block *blk, struct objfile *objfile,
i += bytes_read;
break;
+ case DW_OP_dup:
+ stack[stacki + 1] = stack[stacki];
+ stacki++;
+ break;
+
case DW_OP_plus:
stack[stacki - 1] += stack[stacki];
stacki--;
@@ -5976,7 +6016,7 @@ decode_locdesc (struct dwarf_block *blk, struct objfile *objfile,
break;
case DW_OP_minus:
- stack[stacki - 1] = stack[stacki] - stack[stacki - 1];
+ stack[stacki - 1] -= stack[stacki];
stacki--;
break;