summaryrefslogtreecommitdiff
path: root/toolchain/gdb/6.3/790-debian_dwarf2-cfi-warning.patch
blob: cfb3d95de5fcb8bbd1b10ce96aeef12e28766fd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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.

Index: gdb-6.3/gdb/dwarf2-frame.c
===================================================================
--- gdb-6.3.orig/gdb/dwarf2-frame.c	2004-11-15 11:54:57.000000000 -0500
+++ gdb-6.3/gdb/dwarf2-frame.c	2004-12-08 18:02:23.896409471 -0500
@@ -705,9 +705,12 @@ dwarf2_frame_cache (struct frame_info *n
 	   table.  We need a way of iterating through all the valid
 	   DWARF2 register numbers.  */
 	if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
-	  complaint (&symfile_complaints,
-		     "Incomplete CFI data; unspecified registers at 0x%s",
-		     paddr (fs->pc));
+	  {
+	    if (0)
+	      complaint (&symfile_complaints,
+			 "Incomplete CFI data; unspecified registers at 0x%s",
+			 paddr (fs->pc));
+	  }
 	else
 	  cache->reg[regnum] = fs->regs.reg[column];
       }