From fefffff8d22c26ea6e69d24097913e2b6adae2e3 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 29 Jan 2008 02:55:48 +0000 Subject: [PATCH] * dwarf.c (display_debug_loc): Correct test for base address entry when 64-bit host dumping 32-bit object. --- binutils/ChangeLog | 5 +++++ binutils/dwarf.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 3d727eaae68..60ec244db69 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2008-01-29 Alan Modra + + * dwarf.c (display_debug_loc): Correct test for base address + entry when 64-bit host dumping 32-bit object. + 2008-01-29 Alan Modra * MAINTAINERS: Remove myself as ix86 maintainer. Add for SPU. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index d4eb4aa617f..426cf36ec64 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -2618,6 +2618,7 @@ display_debug_loc (struct dwarf_section *section, void *file) { unsigned long begin; unsigned long end; + unsigned long minus_one; unsigned short length; unsigned long offset; unsigned int pointer_size; @@ -2678,7 +2679,10 @@ display_debug_loc (struct dwarf_section *section, void *file) } /* Check base address specifiers. */ - if (begin == -1UL && end != -1UL) + minus_one = -1; + if (pointer_size < sizeof (minus_one)) + minus_one = (1L << (pointer_size * 8)) - 1; + if (begin == minus_one && end != minus_one) { base_address = end; printf (_(" %8.8lx %8.8lx %8.8lx (base address)\n"), -- 2.30.2