Fix gcc bug 24490, location list query failed due to out-of-range address.

PR 2024
* dwarf2loc.c (dwarf_expr_frame_base): Use get_frame_address_in_block
instead of get_frame_pc.
(loclist_read_variable): Likewise.
This commit is contained in:
Jim Wilson 2005-11-14 22:25:16 +00:00
parent bd73ccbdac
commit 22c6cabacd
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2005-11-14 James E Wilson <wilson@specifix.com>
PR 2024
* dwarf2loc.c (dwarf_expr_frame_base): Use get_frame_address_in_block
instead of get_frame_pc.
(loclist_read_variable): Likewise.
2005-11-14 Andrew Stubbs <andrew.stubbs@st.com>
* MAINTAINERS (Write After Approval): Add myself to the list.

View File

@ -164,9 +164,11 @@ dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
if (SYMBOL_OPS (framefunc) == &dwarf2_loclist_funcs)
{
struct dwarf2_loclist_baton *symbaton;
struct frame_info *frame = debaton->frame;
symbaton = SYMBOL_LOCATION_BATON (framefunc);
*start = find_location_expression (symbaton, length,
get_frame_pc (debaton->frame));
get_frame_address_in_block (frame));
}
else
{
@ -597,7 +599,8 @@ loclist_read_variable (struct symbol *symbol, struct frame_info *frame)
size_t size;
data = find_location_expression (dlbaton, &size,
frame ? get_frame_pc (frame) : 0);
frame ? get_frame_address_in_block (frame)
: 0);
if (data == NULL)
{
val = allocate_value (SYMBOL_TYPE (symbol));