From 74013231d1989923b284265e536a13457da4907c Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 12 Sep 2004 05:52:44 +0000 Subject: [PATCH] * readelf.c (decode_location_expression): Sign extend value for DW_OP_const1s, DW_OP_const2s, DW_OP_const4s, DW_OP_bra, DW_OP_skip. --- binutils/ChangeLog | 11 ++++++++--- binutils/readelf.c | 15 ++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 93f96d71d8b..f1f374f66cb 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2004-09-12 Alan Modra + + * readelf.c (decode_location_expression): Sign extend value for + DW_OP_const1s, DW_OP_const2s, DW_OP_const4s, DW_OP_bra, DW_OP_skip. + 2004-09-09 Nick Clifton PR 363 @@ -10,8 +15,8 @@ 2004-09-06 Danny Smith - * doc/binutils.texi (dlltool): Update --add-underscore, --kill-at - documentation. + * doc/binutils.texi (dlltool): Update --add-underscore, --kill-at + documentation. 2004-09-06 Michael Wardle @@ -23,7 +28,7 @@ * dlltool.c (make_one_lib_file): Test if internal_name was specified by user before using it. -2004-09-02 Carlo Wood +2004-09-02 Carlo Wood PR binutils/351 * dlltool.c (make_one_lib_file): For IDATA6 take the name from diff --git a/binutils/readelf.c b/binutils/readelf.c index bf8409352cd..6b03b23d6ce 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1,5 +1,6 @@ /* readelf.c -- display contents of an ELF format file - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. Originally developed by Eric Youngdale Modifications by Nick Clifton @@ -23,7 +24,7 @@ /* The difference between readelf and objdump: - Both programs are capabale of displaying the contents of ELF format files, + Both programs are capable of displaying the contents of ELF format files, so why does the binutils project have two file dumpers ? The reason is that objdump sees an ELF file through a BFD filter of the @@ -7670,14 +7671,14 @@ decode_location_expression (unsigned char * data, printf ("DW_OP_const1u: %lu", (unsigned long) byte_get (data++, 1)); break; case DW_OP_const1s: - printf ("DW_OP_const1s: %ld", (long) byte_get (data++, 1)); + printf ("DW_OP_const1s: %ld", (long) byte_get_signed (data++, 1)); break; case DW_OP_const2u: printf ("DW_OP_const2u: %lu", (unsigned long) byte_get (data, 2)); data += 2; break; case DW_OP_const2s: - printf ("DW_OP_const2s: %ld", (long) byte_get (data, 2)); + printf ("DW_OP_const2s: %ld", (long) byte_get_signed (data, 2)); data += 2; break; case DW_OP_const4u: @@ -7685,7 +7686,7 @@ decode_location_expression (unsigned char * data, data += 4; break; case DW_OP_const4s: - printf ("DW_OP_const4s: %ld", (long) byte_get (data, 4)); + printf ("DW_OP_const4s: %ld", (long) byte_get_signed (data, 4)); data += 4; break; case DW_OP_const8u: @@ -7775,7 +7776,7 @@ decode_location_expression (unsigned char * data, printf ("DW_OP_xor"); break; case DW_OP_bra: - printf ("DW_OP_bra: %ld", (long) byte_get (data, 2)); + printf ("DW_OP_bra: %ld", (long) byte_get_signed (data, 2)); data += 2; break; case DW_OP_eq: @@ -7797,7 +7798,7 @@ decode_location_expression (unsigned char * data, printf ("DW_OP_ne"); break; case DW_OP_skip: - printf ("DW_OP_skip: %ld", (long) byte_get (data, 2)); + printf ("DW_OP_skip: %ld", (long) byte_get_signed (data, 2)); data += 2; break; -- 2.30.2