summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_getlocation.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2006-12-17 23:56:51 +0000
committerRoland McGrath <roland@redhat.com>2006-12-17 23:56:51 +0000
commit8190db6a86a37aec86c81626ab1b083c96aff891 (patch)
tree2b065733f6ee44885a447e9506fae59518076048 /libdw/dwarf_getlocation.c
parent7c0e79ffc201e4828a050b35f2c9d96e3001cb48 (diff)
propagate from branch 'com.redhat.elfutils' (head b4944cf70801d9dac056f4f80ef1334e5acb8bdc)
to branch 'com.redhat.elfutils.roland.pending' (head e7e402c668fb0670fc5f6b6a522853ae88f32f11)
Diffstat (limited to 'libdw/dwarf_getlocation.c')
-rw-r--r--libdw/dwarf_getlocation.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c
index f513f3ae..cefd052b 100644
--- a/libdw/dwarf_getlocation.c
+++ b/libdw/dwarf_getlocation.c
@@ -1,5 +1,5 @@
/* Return location expression list.
- Copyright (C) 2000, 2001, 2002, 2004, 2005 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
@@ -472,8 +472,12 @@ dwarf_getlocation_addr (attr, address, llbufs, listlens, maxlocs)
&base) != 0)
{
if (INTUSE(dwarf_errno) () == 0)
- goto invalid;
- return -1;
+ /* The compiler provided no base address when it should
+ have. Buggy GCC does this when it used absolute
+ addresses in the location list and no DW_AT_ranges. */
+ base = 0;
+ else
+ return -1;
}
}