From d329a4202e1f4a8b3283e31e2dfb5a838c49796e Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Mon, 22 Aug 2011 11:36:30 -0500 Subject: Fix gensyms endianness on pool machines. Change-Id: Iefcc0f963f68cccfcde03d5b0dcec3c00d8399c2 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/269 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/build/tools/gensyms | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/build/tools/gensyms b/src/build/tools/gensyms index 75242c15b..015c39d40 100755 --- a/src/build/tools/gensyms +++ b/src/build/tools/gensyms @@ -4,6 +4,8 @@ use strict; use IO::Seekable; +my $littleendian = (unpack("L", pack("N", 0xabcd1234)) != 0xabcd1234); + sub add_image_subdir { my $image = shift; @@ -80,9 +82,16 @@ foreach my $module (@modules) { seek IMAGE, ($address - $image_offset), SEEK_SET; read IMAGE, $code_loc, 8; - $code_loc = unpack("Q>", $code_loc) + $image_offset; - - my $tmp = $code_loc; $code_loc = $address; $address = $tmp; + if ($littleendian) + { + $code_loc = unpack("Q", reverse($code_loc)) + $image_offset; + } + else + { + $code_loc = unpack("Q", $code_loc) + $image_offset; + } + + my $tmp = $code_loc; $code_loc = $address; $address = $tmp; } my $outstring = ""; $outstring = sprintf "%s,%08x,%08x,%08x,%s\n", ($is_function?"F":"V"),$address,$code_loc,$size,$name; -- cgit v1.2.1