2005-11-23 Frédéric Riss * dwarf2-frame.c: (execute_cfa_program): Don't access past the allocated dwarf2_frame_state.initial.regs. --- dwarf2-frame.c.orig 2005-11-23 10:19:31.000000000 +0100 +++ dwarf2-frame.c 2005-11-23 10:28:22.000000000 +0100 @@ -294,7 +294,16 @@ execute_cfa_program (gdb_byte *insn_ptr, gdb_assert (fs->initial.reg); reg = insn & 0x3f; dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - fs->regs.reg[reg] = fs->initial.reg[reg]; + if (reg < fs->initial.num_regs) + fs->regs.reg[reg] = fs->initial.reg[reg]; + else + fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNSPECIFIED; + + if (fs->regs.reg[reg].how == DWARF2_FRAME_REG_UNSPECIFIED) + complaint (&symfile_complaints, _( +"incomplete CFI data; DW_CFA_restore of unspecified\n" +"registers (e.g., regnum %i) at 0x%s"), + DWARF2_REG_TO_REGNUM(reg), paddr (fs->pc)); } else {