Blob Blame History Raw
2006-12-30  Andrew Cagney <cagney@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2-frame.c (execute_cfa_program): New support of
	`DW_CFA_GNU_negative_offset_extended'.


Index: ./gdb/dwarf2-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v
retrieving revision 1.64
diff -u -p -r1.64 dwarf2-frame.c
--- ./gdb/dwarf2-frame.c	28 Nov 2006 17:28:29 -0000	1.64
+++ ./gdb/dwarf2-frame.c	30 Dec 2006 18:24:58 -0000
@@ -555,6 +555,15 @@ bad CFI data; mismatched DW_CFA_restore_
 	      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);
+	      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."));
 	    }