aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/readelf.c17
2 files changed, 14 insertions, 7 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 03b50e2..f4c03c5 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2003-01-21 Daniel Berlin <dan@dberlin.org>
+
+ * readelf.c (display_debug_loc): Skip address base changes.
+
2003-01-17 Fabio Alemagna <falemagn@aros.org>
* readelf.c (get_osabi_name): Handle ELFOSABI_AROS, ELFOSABI_OPENVMS
diff --git a/binutils/readelf.c b/binutils/readelf.c
index dcc2ec2..ef36de0 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -7628,13 +7628,12 @@ display_debug_loc (section, start, file)
while (1)
{
- /* Normally, the lists in the debug_loc section are related to a
- given compilation unit, and thus, we would use the
- pointer size of that compilation unit. However, since we are
- displaying it seperately here, we either have to store
- pointer sizes of all compilation units, or assume they don't
- change. We assume, like the debug_line display, that
- it doesn't change. */
+ /* Normally, the lists in the debug_loc section are related to a
+ given compilation unit, and thus, we would use the pointer size
+ of that compilation unit. However, since we are displaying it
+ seperately here, we either have to store pointer sizes of all
+ compilation units, or assume they don't change. We assume,
+ like the debug_line display, that it doesn't change. */
begin = byte_get (start, debug_line_pointer_size);
start += debug_line_pointer_size;
end = byte_get (start, debug_line_pointer_size);
@@ -7643,6 +7642,10 @@ display_debug_loc (section, start, file)
if (begin == 0 && end == 0)
break;
+ /* For now, skip any base address specifiers. */
+ if (begin == 0xffffffff)
+ continue;
+
begin += addr;
end += addr;