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];
 | |
|        }
 | 
