Invalid registers

Andrew STUBBS andrew.stubbs@st.com
Tue Jul 12 16:07:00 GMT 2005


On Mon, 11 Jul 2005 16:49:26 +0100, Daniel Jacobowitz <drow@false.org>  
wrote:
> On Mon, Jul 11, 2005 at 04:39:51PM +0100, Andrew STUBBS wrote:
>> Hi,
>>
>> I have been having a little trouble updating from GDB 5.3 to GDB 6.3.
>>
>> It used to be the case that GDB would report '*value not available*'  
>> (for
>> SH - I haven't checked other architectures) if the value of a register  
>> is
>> not known in the current stack frame. However, it no longer does this.
>> Since I assume it has not acquired some way to find out what that value
>> was, I also assume this is somehow broken.
>
> How's it supposed to know that the value is not available?  If you want
> to do this based on the standard call ABI, please take a look at the
> current callers of dwarf2_frame_set_init_reg.

Thank you. This has helped me find the right stuff to look at.

I do not think I actually want to use dwarf2_frame_set_init_reg. The  
compiler (GCC 3.4.3) produces CFI information which I think ought to be  
enough.

The function execute_cfa_program in dwarf2-frame.c appears to load all the  
relevant data (setting breakpoints in strategic places show this). If I  
use 'up' and 'info registers' I see the values change, which shows that  
the CFI data has been loaded (doesn't it?). It just appears that the 'how'  
field from the CFA is being ignored when the values are printed. Setting  
'how' via dwarf2_frame_set_init_reg is not ignored however. It must be  
being reset, or perhaps not copied in the first place.

Any clues?

Thanks

Andrew Stubbs



More information about the Gdb mailing list