40 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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];
 | 
						|
       }
 |