diff options
author | Jason Merrill <jason@redhat.com> | 2002-01-11 09:32:50 +0000 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2002-01-11 09:32:50 +0000 |
commit | f15d9dd743331d47409dc96c614e045dced5bb46 (patch) | |
tree | 79d90322b7aec2ac42a4cbec4a3f1fb3454243de | |
parent | ae14763ef309a8353a8f16bb11f4c21ab899e4b8 (diff) | |
download | gdb-f15d9dd743331d47409dc96c614e045dced5bb46.tar.gz |
* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
Fix DW_OP_minus.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 42 |
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; |