diff options
author | Bill Seurer <seurer@linux.vnet.ibm.com> | 2015-03-25 14:56:02 +0000 |
---|---|---|
committer | Bill Seurer <seurer@linux.vnet.ibm.com> | 2015-03-25 14:56:02 +0000 |
commit | 92760a3551c7c5d54409b522d897ecde921c12bb (patch) | |
tree | 4c2bb104f27cda859e4b4afaa353362ac4cc277a /compiler-rt/lib/sanitizer_common/scripts/sancov.py | |
parent | 1c012293c8aa091e14b297b0112c8b6ef1bf8c1b (diff) | |
download | bcm5719-llvm-92760a3551c7c5d54409b522d897ecde921c12bb.tar.gz bcm5719-llvm-92760a3551c7c5d54409b522d897ecde921c12bb.zip |
[PowerPC]Fix sancov.py to once again support big endian
Some recent changes to sancov.py broke ASAN for big endian. This fixes it.
http://reviews.llvm.org/D8594
llvm-svn: 233189
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/scripts/sancov.py')
-rwxr-xr-x | compiler-rt/lib/sanitizer_common/scripts/sancov.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/compiler-rt/lib/sanitizer_common/scripts/sancov.py b/compiler-rt/lib/sanitizer_common/scripts/sancov.py index fc886c6f7e0..53180d09b76 100755 --- a/compiler-rt/lib/sanitizer_common/scripts/sancov.py +++ b/compiler-rt/lib/sanitizer_common/scripts/sancov.py @@ -21,32 +21,32 @@ def Usage(): def CheckBits(bits): if bits != 32 and bits != 64: - raise Exception("Wrond bitness: %d" % bits) + raise Exception("Wrong bitness: %d" % bits) def TypeCodeForBits(bits): CheckBits(bits) return 'L' if bits == 64 else 'I' -kMagic64 = 0xC0BFFFFFFFFFFF64 -kMagic32 = 0xC0BFFFFFFFFFFF32 kMagic32SecondHalf = 0xFFFFFF32; kMagic64SecondHalf = 0xFFFFFF64; kMagicFirstHalf = 0xC0BFFFFF; def MagicForBits(bits): CheckBits(bits) - # Little endian. - return [kMagic64SecondHalf if bits == 64 else kMagic32SecondHalf, kMagicFirstHalf] + if sys.byteorder == 'little': + return [kMagic64SecondHalf if bits == 64 else kMagic32SecondHalf, kMagicFirstHalf] + else: + return [kMagicFirstHalf, kMagic64SecondHalf if bits == 64 else kMagic32SecondHalf] def ReadMagicAndReturnBitness(f, path): magic_bytes = f.read(8) magic_words = struct.unpack('II', magic_bytes); bits = 0 - # Assuming little endian. - if magic_words[1] == kMagicFirstHalf: - if magic_words[0] == kMagic64SecondHalf: + idx = 1 if sys.byteorder == 'little' else 0 + if magic_words[idx] == kMagicFirstHalf: + if magic_words[1-idx] == kMagic64SecondHalf: bits = 64 - elif magic_words[0] == kMagic32SecondHalf: + elif magic_words[1-idx] == kMagic32SecondHalf: bits = 32 if bits == 0: raise Exception('Bad magic word in %s' % path) |