summaryrefslogtreecommitdiffstats
path: root/llvm/test/Scripts/common_dump.py
diff options
context:
space:
mode:
authorJason W Kim <jason.w.kim.2009@gmail.com>2010-10-19 17:39:10 +0000
committerJason W Kim <jason.w.kim.2009@gmail.com>2010-10-19 17:39:10 +0000
commite8b3711ae917468879564c1d7d5b4dc1ffeb78a4 (patch)
treef0344a3ae79bbba28c1b8d5c05bf937e0d4fb63e /llvm/test/Scripts/common_dump.py
parent63a9e14164e5fd51d252b67fa0d0bb0243b84a32 (diff)
downloadbcm5719-llvm-e8b3711ae917468879564c1d7d5b4dc1ffeb78a4.tar.gz
bcm5719-llvm-e8b3711ae917468879564c1d7d5b4dc1ffeb78a4.zip
Fixing r116753 r116756 r116777
The failures in r116753 r116756 were caused by a python issue - Python likes to append 'L' suffix to stringified numbers if the number is larger than a machine int. Unfortunately, this causes a divergence of behavior between 32 and 64 bit python versions. I re-crafted elf-dump/common_dump to take care of these issues by: 1. always printing 0x (makes for easy sed/regex) 2. always print fixed length (exactly 2 + numBits/4 digits long) by mod ((2^numBits) - 1) 3. left-padded with '0' There is a residual common routine that is also used by macho-dump (dataToHex) , so I left the 'section_data' test values alone. llvm-svn: 116823
Diffstat (limited to 'llvm/test/Scripts/common_dump.py')
-rw-r--r--llvm/test/Scripts/common_dump.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/Scripts/common_dump.py b/llvm/test/Scripts/common_dump.py
index 444b389dd0e..3d69c3fb27f 100644
--- a/llvm/test/Scripts/common_dump.py
+++ b/llvm/test/Scripts/common_dump.py
@@ -11,3 +11,36 @@ def dataToHex(d):
hex_byte += ' '
bytes.append(hex_byte)
return ''.join(bytes).strip()
+
+def dataToHexUnified(d):
+ """ Convert the raw data in 'd' to an hex string with a space every 4 bytes.
+ Each 4byte number is prefixed with 0x for easy sed/rx
+ Fixme: convert all MC tests to use this routine instead of the above
+ """
+ bytes = []
+ for i,c in enumerate(d):
+ byte = ord(c)
+ hex_byte = hex(byte)[2:]
+ if byte <= 0xf:
+ hex_byte = '0' + hex_byte
+ if i % 4 == 0:
+ hex_byte = '0x' + hex_byte
+ if i % 4 == 3:
+ hex_byte += ' '
+ bytes.append(hex_byte)
+ return ''.join(bytes).strip()
+
+
+def HexDump(val, numBits=32):
+ """
+ 1. do not print 'L'
+ 2. Handle negatives and large numbers by mod (2^numBits)
+ 3. print fixed length, prepend with zeros.
+ Length is exactly 2+(numBits/4)
+ 4. Do print 0x Why?
+ so that they can be easily distinguished using sed/rx
+ """
+ val = val & (( 1 << numBits) - 1)
+ newFmt = "0x%0" + "%d" % (numBits / 4) + "x"
+ return newFmt % val
+
OpenPOWER on IntegriCloud