Re: Invalid registers

Andrew STUBBS
2005-07-12T16:07:22Z

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