patches/gdb/6.3/790-debian_dwarf2-cfi-warning.patch
changeset 96 aa1a9fbd6eb8
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/gdb/6.3/790-debian_dwarf2-cfi-warning.patch	Thu May 17 16:22:51 2007 +0000
     1.3 @@ -0,0 +1,39 @@
     1.4 +Status: Unsuitable for upstream (at least, without a lot of arguing).
     1.5 +
     1.6 +GCC does not specify the state of every last register in the CIE.  Since
     1.7 +GCC's focus is on correctness of runtime unwinding, any registers which
     1.8 +have to be unwound will be specified; but unmodified registers will not
     1.9 +be explicitly marked.  (How about modified, call-clobbered registers?
    1.10 +I'm not sure if they are marked as unavailable.)
    1.11 +
    1.12 +GDB issues a noisy warning about this.  The warning is generally not useful,
    1.13 +and we can get it extremely frequently (any time we load a new CIE).
    1.14 +
    1.15 +This patch disables the warning.  Alternately we could set the complaints
    1.16 +threshold to zero, or implement a default frame init-register method for
    1.17 +every architecture.  But someday the compiler will support using different
    1.18 +calling conventions for internal functions, so that's not much of a stopgap. 
    1.19 +ARM has a complex algorithm for handling this, involving scanning all CIEs -
    1.20 +benefit not completely clear outside of the ARM context of flexible register
    1.21 +sets.
    1.22 +
    1.23 +Index: gdb-6.3/gdb/dwarf2-frame.c
    1.24 +===================================================================
    1.25 +--- gdb-6.3.orig/gdb/dwarf2-frame.c	2004-11-15 11:54:57.000000000 -0500
    1.26 ++++ gdb-6.3/gdb/dwarf2-frame.c	2004-12-08 18:02:23.896409471 -0500
    1.27 +@@ -705,9 +705,12 @@ dwarf2_frame_cache (struct frame_info *n
    1.28 + 	   table.  We need a way of iterating through all the valid
    1.29 + 	   DWARF2 register numbers.  */
    1.30 + 	if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
    1.31 +-	  complaint (&symfile_complaints,
    1.32 +-		     "Incomplete CFI data; unspecified registers at 0x%s",
    1.33 +-		     paddr (fs->pc));
    1.34 ++	  {
    1.35 ++	    if (0)
    1.36 ++	      complaint (&symfile_complaints,
    1.37 ++			 "Incomplete CFI data; unspecified registers at 0x%s",
    1.38 ++			 paddr (fs->pc));
    1.39 ++	  }
    1.40 + 	else
    1.41 + 	  cache->reg[regnum] = fs->regs.reg[column];
    1.42 +       }