jit/backend/aarch64/test/test_runner.py::TestARM64::()::test_compile_asmlen
self = <rpython.jit.backend.aarch64.test.test_runner.TestARM64 object at 0x0000000150084b48>
def test_compile_asmlen(self):
if not isinstance(self.cpu, AbstractLLCPU):
py.test.skip("pointless test on non-asm")
from rpython.jit.backend.tool.viewcode import machine_code_dump, ObjdumpNotFound
import ctypes
targettoken = TargetToken()
ops = """
[i2]
i0 = same_as_i(i2) # but forced to be in a register
label(i0, descr=targettoken)
i1 = int_add(i0, i0)
guard_true(i1, descr=faildescr) [i1]
jump(i1, descr=targettoken)
"""
faildescr = BasicFailDescr(2)
loop = parse(ops, self.cpu, namespace=locals())
bridge_ops = """
[i0]
jump(i0, descr=targettoken)
"""
bridge = parse(bridge_ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
self.cpu.assembler.set_debug(False)
info = self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
bridge_info = self.cpu.compile_bridge(faildescr, bridge.inputargs,
bridge.operations,
looptoken)
self.cpu.assembler.set_debug(True) # always on untranslated
assert info.asmlen != 0
cpuname = autodetect()
# XXX we have to check the precise assembler, otherwise
# we don't quite know if borders are correct
def checkops(mc, ops_regexp):
import re
words = []
print('----- checkops -----')
for line in mc:
print(line.rstrip())
t = line.split("\t")
if len(t) <= 2:
continue
w = t[2].split()
if len(w) == 0:
if '<UNDEFINED>' in line:
w = ['UNDEFINED']
else:
continue
words.append(w[0] + ';')
print('[[%s]]' % (w[0],))
text = ' '.join(words)
assert re.compile(ops_regexp).match(text)
data = ctypes.string_at(info.asmaddr, info.asmlen)
try:
> mc = list(machine_code_dump(data, info.asmaddr, cpuname))
jit/backend/test/runner_test.py:4675:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
data = '\xa0\x83@\xf9\x00\x00\x00\x8b\x1f\x00\x00\xf1`\x00\x00T\xfd\xff\xff\x17\x00\x00 \xd4'
originaddr = 481131759504, backend_name = 'aarch64', 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
---------- Captured stderr setup ----------
[c58668028a46d00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00000 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58668028b3ff80] jit-backend-dump}
[c58668028e1a700] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00060 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F905398BD2054AA0F20500CCF2A40040F9060080D2A60000F905388BD2054AA0F20500CCF2A60000F9A41700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58668028f94e00] jit-backend-dump}
[c5866802978ed80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b000f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDE00740A9FE0300F9A00F00F9E0031DAA10398BD2104AA0F21000CCF2100240F9B01700F910388BD2104AA0F21000CCF2130240F910398BD2104AA0F21000CCF2110080D2110200F910388BD2104AA0F21000CCF2110200F910BE91D2B00DA0F23000C0F21000E0F200023FD6FD0300AA10398BD2104AA0F21000CCF2B11740F9110200F9110080D2B11700F910388BD2104AA0F21000CCF2130200F9100080D2B00F00F9A02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDFE0340F9FF430091C0035FD6
[c58668029baf400] jit-backend-dump}
[c58668029e0fc00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00270 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDE0031DAAF35344A9FE77C5A8C0035FD6
[c58668029f5ba80] jit-backend-dump}
[c5866802a2b4200] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b002f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FD05398BD2054AA0F20500CCF2A40040F9060080D2A60000F905388BD2054AA0F20500CCF2A60000F9A41700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c5866802a481880] jit-backend-dump}
[c5866802a63a580] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b003a0 +0 10398BD2104AA0F21000CCF2000240F9110080D2110200F910388BD2104AA0F21000CCF2110200F9A01700F9000080D2A00700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c5866802a711300] jit-backend-dump}
[c5866802ab18d00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b003f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9F00340F9FF43009100025FD6
[c5866802ad75880] jit-backend-dump}
[c5866802b140b80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b004c0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9F00340F9FF43009100025FD6
[c5866802b33bf00] jit-backend-dump}
[c5866802b7e7800] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00580 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDF00340F9FF43009100025FD6
[c5866802ba72000] jit-backend-dump}
[c5866802becbc80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00670 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDF00340F9FF43009100025FD6
[c5866802c12b180] jit-backend-dump}
---------- Captured stderr call ----------
[c5866802c5edb00] {jit-mem-looptoken-alloc
allocating Loop # -1
[c5866802c5fa080] jit-mem-looptoken-alloc}
[c5866802c91d600] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00770 +0 00000000000000000000000000000000FE77BBA9F35304A9E10F00F9FD0300AAA08340F90000008B1F0000F1000020D4FDFFFF17000020D450FEFF58B00700F910EB80D210B6A0F2100EC0F2B00F00F9100080D210B6A0F2100EC0F21000E0F200023FD6
[c5866802ca6fa00] jit-backend-dump}
[c5866802cb03d00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b0079c +0 60000054
[c5866802cb24680] jit-backend-dump}
[c5866802cc5d480] {jit-backend-addr
Loop -1 () has address 0x7005b00790 to 0x7005b007a8 (bootstrap 0x7005b00780)
gc table: 0x7005b00770
function: 0x7005b00780
resops: 0x7005b00790
failures: 0x7005b007a8
end: 0x7005b007d4
[c5866802cc6de00] jit-backend-addr}
[c5866802cc7ed80] {jit-mem-looptoken-alloc
allocating Bridge # 1 of Loop # -1
[c5866802cca6800] jit-mem-looptoken-alloc}
[c5866802d0a1b00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007f0 +0 B01F40F91F2003D51F2003D51F2003D51F2003D51F0211EB8A010054FF4300D1F10700F910FC80D210B6A0F2100EC0F2F00300F9101E80D210B6A0F2100EC0F21000E0F200023FD690F280D210B6A0F2100EC0F21000E0F200021FD6000020D4
[c5866802d1d8200] jit-backend-dump}
[c5866802d224100] {jit-backend-addr
bridge out of Guard 0x119ce6cd0 has address 0x7005b007f0 to 0x7005b00850
gc table: 0x7005b007f0
jump target: 0x7005b007f0
resops: 0x7005b00838
failures: 0x7005b00850
end: 0x7005b00850
[c5866802d233e80] jit-backend-addr}
[c5866802d2be180] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007a8 +0 10FE80D210B6A0F2100EC0F21000E0F200023FD6
[c5866802d309500] jit-backend-dump}
[c5866802d33e480] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007f4 +0 310380D2
[c5866802d35bb00] jit-backend-dump}
builder: rpython-macos-arm64 build #261
test: jit/backend/aarch64/test/test_runner/py/TestARM64/()/test_compile_asmlen