tool/jitlogparser/test/test_parser.py::test_parsing_assembler
def test_parsing_assembler():
if sys.platform == 'win32' or not autodetect().startswith('x86'):
py.test.skip('x86 only test')
backend_dump = "554889E5534154415541564157488DA500000000488B042590C5540148C7042590C554010000000048898570FFFFFF488B042598C5540148C7042598C554010000000048898568FFFFFF488B0425A0C5540148C70425A0C554010000000048898560FFFFFF488B0425A8C5540148C70425A8C554010000000048898558FFFFFF4C8B3C2550525B0149BB30E06C96FC7F00004D8B334983C60149BB30E06C96FC7F00004D89334981FF102700000F8D000000004983C7014C8B342580F76A024983EE014C89342580F76A024983FE000F8C00000000E9AEFFFFFF488B042588F76A024829E0483B042580EC3C01760D49BB05F30894FC7F000041FFD3554889E5534154415541564157488DA550FFFFFF4889BD70FFFFFF4889B568FFFFFF48899560FFFFFF48898D58FFFFFF4D89C7E954FFFFFF49BB00F00894FC7F000041FFD34440484C3D030300000049BB00F00894FC7F000041FFD34440484C3D070304000000"
dump_start = 0x7f3b0b2e63d5
try:
loop = parse("""
# Loop 0 : loop with 19 ops
[p0, p1, p2, p3, i4]
debug_merge_point(0, 0, '<code object f. file 'x.py'. line 2> #15 COMPARE_OP')
+166: i6 = int_lt(i4, 10000)
guard_true(i6, descr=<Guard0x3>) [p1, p0, p2, p3, i4]
debug_merge_point(0, 0, '<code object f. file 'x.py'. line 2> #27 INPLACE_ADD')
+179: i8 = int_add(i4, 1)
debug_merge_point(0, 0, '<code object f. file 'x.py'. line 2> #31 JUMP_ABSOLUTE')
+183: i10 = getfield_raw_i(40564608, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
+191: i12 = int_sub(i10, 1)
+195: setfield_raw(40564608, i12, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
+203: i14 = int_lt(i12, 0)
guard_false(i14, descr=<Guard0x4>) [p1, p0, p2, p3, i8, None]
debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
+213: jump(p0, p1, p2, p3, i8, descr=<Loop0>)
+218: --end of the loop--""", backend_dump=backend_dump,
dump_start=dump_start,
> backend_tp='x86_64')
tool/jitlogparser/test/test_parser.py:217:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tool/jitlogparser/test/test_parser.py:12: in parse
return SimpleParser.parse_from_input(input, **kwds)
tool/jitlogparser/parser.py:158: in parse_from_input
return parser.postprocess(loop, **kwds)
tool/jitlogparser/parser.py:110: in postprocess
backend_tp, dump_start)
tool/jitlogparser/parser.py:151: in _asm_disassemble
return list(machine_code_dump(d, origin_addr, tp))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
data = 'UH\x89\xe5SATAUAVAWH\x8d\xa5\x00\x00\x00\x00H\x8b\x04%\x90\xc5T\x01H\xc7\x04%\x90\xc5T\x01\x00\x00\x00\x00H\x89\x85p\...f\x00\x00A\xff\xd3D@HL=\x03\x03\x00\x00\x00I\xbb\x00\xf0\x08\x94\xfc\x7f\x00\x00A\xff\xd3D@HL=\x07\x03\x04\x00\x00\x00'
originaddr = 139891567387605, backend_name = 'x86_64', label_list = None
def machine_code_dump(data, originaddr, backend_name, label_list=None):
objdump_machine_option = {
'x86': 'i386',
'x86-without-sse2': 'i386',
'x86_32': 'i386',
'x86_64': 'i386:x86-64',
'x86-64': 'i386:x86-64',
'i386': 'i386',
'arm': 'arm',
'arm_32': 'arm',
'aarch64': 'aarch64',
'ppc' : 'powerpc:common64',
'ppc-64' : 'powerpc:common64',
'riscv64': 'riscv:rv64',
's390x': 's390:64-bit',
}
machine_endianness = {
# default value: 'little'
'ppc' : sys.byteorder, # i.e. same as the running machine...
'ppc-64' : sys.byteorder, # i.e. same as the running machine...
's390x' : sys.byteorder, # i.e. same as the running machine...
}
cmd = find_objdump()
objdump = ('%(command)s -b binary -m %(machine)s '
'--endian=%(endianness)s '
'--disassembler-options=intel-mnemonics '
'--adjust-vma=%(origin)d -D %(file)s')
#
f = open(tmpfile, 'wb')
f.write(data)
f.close()
p = subprocess.Popen(objdump % {
'command': cmd,
'file': tmpfile,
'origin': originaddr,
'machine': objdump_machine_option[backend_name],
'endianness': machine_endianness.get(backend_name, 'little'),
}, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
assert not p.returncode, ('Encountered an error running objdump: %s' %
> stderr)
E AssertionError: Encountered an error running objdump: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump: error: unknown argument '-b'
jit/backend/tool/viewcode.py:82: AssertionError
builder: rpython-macos-x86-64 build #273
test: tool/jitlogparser/test/test_parser/py/test_parsing_assembler