* dwarf2-frame.c (execute_cfa_program): New support of
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 21 Jan 2007 22:42:09 +0000 (22:42 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 21 Jan 2007 22:42:09 +0000 (22:42 +0000)
`DW_CFA_GNU_negative_offset_extended'.

gdb/ChangeLog
gdb/dwarf2-frame.c

index f109382..6fcaa08 100644 (file)
@@ -1,3 +1,10 @@
+2007-01-11  Andrew Cagney  <cagney@redhat.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+           Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * dwarf2-frame.c (execute_cfa_program): New support of
+       `DW_CFA_GNU_negative_offset_extended'.
+
 2007-01-21  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * NEWS: Mention flash support for "load" and new remote packets.
index da1d3d4..fd4002c 100644 (file)
@@ -579,6 +579,17 @@ bad CFI data; mismatched DW_CFA_restore_state at 0x%s"), paddr (fs->pc));
              insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp);
              break;
 
+           case DW_CFA_GNU_negative_offset_extended:
+             insn_ptr = read_uleb128 (insn_ptr, insn_end, &reg);
+             if (eh_frame_p)
+               reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg);
+             insn_ptr = read_uleb128 (insn_ptr, insn_end, &offset);
+             offset *= fs->data_align;
+             dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
+             fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
+             fs->regs.reg[reg].loc.offset = -offset;
+             break;
+
            default:
              internal_error (__FILE__, __LINE__, _("Unknown CFI encountered."));
            }