Status: Unsuitable for upstream (at least, without a lot of arguing). GCC does not specify the state of every last register in the CIE. Since GCC's focus is on correctness of runtime unwinding, any registers which have to be unwound will be specified; but unmodified registers will not be explicitly marked. (How about modified, call-clobbered registers? I'm not sure if they are marked as unavailable.) GDB issues a noisy warning about this. The warning is generally not useful, and we can get it extremely frequently (any time we load a new CIE). This patch disables the warning. Alternately we could set the complaints threshold to zero, or implement a default frame init-register method for every architecture. But someday the compiler will support using different calling conventions for internal functions, so that's not much of a stopgap. ARM has a complex algorithm for handling this, involving scanning all CIEs - benefit not completely clear outside of the ARM context of flexible register sets. --- gdb/dwarf2-frame.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: gdb-7.0.1/gdb/dwarf2-frame.c =================================================================== --- gdb-7.0.1.orig/gdb/dwarf2-frame.c 2010-01-30 16:24:03.000000000 -0500 +++ gdb-7.0.1/gdb/dwarf2-frame.c 2010-01-30 16:24:34.000000000 -0500 @@ -1023,7 +1023,7 @@ dwarf2_frame_cache (struct frame_info *t DWARF2 register numbers. */ if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED) { - if (cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED) + if (0 && cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED) complaint (&symfile_complaints, _("\ incomplete CFI data; unspecified registers (e.g., %s) at %s"), gdbarch_register_name (gdbarch, regnum),