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 Sun Jun 17 12:57:46 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 + }