Re: Discrepency between gdbarch_frame_locals_address and get_frame_locals_address?

Andrew Cagney
2003-06-23T19:47:16Z

> Andrew,
>
> Whilst poking around on related things, I observed that, at least on
> Linux,

Um, which GNU/Linux, which architecture, and how recent a GDB? Lets
assume i386 and gdb_6_0-branch.

> the values of gdbarch_frame_locals_address and
> get_frame_locals_address disagree. The latter appears to be correct,
> since it is used in read_var_value in what I assume is the intended
> way (add SYMBOL_VALUE to get_frame_locals_address (frame) to get
> variable address).

Yes. get_frame_locals_address returns what debug info thinks of as the
frame base. Local variables being specified as offsets from that
address. Just don't confuse it with gdb's [deprecated] get_frame_base :-(

> Would you like a patch, or is there a subtle
> point here that I am missing?

There is likely a subtle point^D^D^Dproblem vis: The backward
compatible path is
get_frame_locals_address
-> [deprecated] gdbarch_frame_locals_address
-> get_frame_base
-> get_frame_id.stack_addr
and, so pre-frame code has identical values for both. New code,
however, has a different frame ID .stack_addr and frame-locals-address.

You've probably found code using the wrong one.

Andrew