jit/backend/aarch64/test/test_runner.py::TestARM64::()::test_compile_asmlen
self = <rpython.jit.backend.aarch64.test.test_runner.TestARM64 object at 0x0000000111ad91a0>
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 ----------
[c58dc5eadfd8300] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00000 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58dc5eae111c80] jit-backend-dump}
[c58dc5eae3f3f00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00060 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F905DD99D2E526A0F20500CCF2A40040F9060080D2A60000F905DC99D2E526A0F20500CCF2A60000F9A41700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58dc5eae571a80] jit-backend-dump}
[c58dc5eaed4fb00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b000f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDE00740A9FE0300F9A00F00F9E0031DAA10DD99D2F026A0F21000CCF2100240F9B01700F910DC99D2F026A0F21000CCF2130240F910DD99D2F026A0F21000CCF2110080D2110200F910DC99D2F026A0F21000CCF2110200F910BE81D2F084A0F23000C0F21000E0F200023FD6FD0300AA10DD99D2F026A0F21000CCF2B11740F9110200F9110080D2B11700F910DC99D2F026A0F21000CCF2130200F9100080D2B00F00F9A02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDFE0340F9FF430091C0035FD6
[c58dc5eaf162300] jit-backend-dump}
[c58dc5eaf663c80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00270 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDE0031DAAF35344A9FE77C5A8C0035FD6
[c58dc5eaf7b5d00] jit-backend-dump}
[c58dc5eafb08800] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b002f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FD05DD99D2E526A0F20500CCF2A40040F9060080D2A60000F905DC99D2E526A0F20500CCF2A60000F9A41700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58dc5eafcd0b00] jit-backend-dump}
[c58dc5eafe73200] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b003a0 +0 10DD99D2F026A0F21000CCF2000240F9110080D2110200F910DC99D2F026A0F21000CCF2110200F9A01700F9000080D2A00700F9E0031DAAF35344A9FE77C5A8C0035FD6
[c58dc5eaff4c100] jit-backend-dump}
[c58dc5eb0348100] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b003f0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9F00340F9FF43009100025FD6
[c58dc5eb056c500] jit-backend-dump}
[c58dc5eb0909980] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b004c0 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9F00340F9FF43009100025FD6
[c58dc5eb0aff100] jit-backend-dump}
[c58dc5eb12f6f80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00580 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9B35B00F9B45F00F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9B35B40F9B45F40F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDF00340F9FF43009100025FD6
[c58dc5eb1581200] jit-backend-dump}
[c58dc5eb19b8380] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00670 +0 A02300F9A12700F9A22B00F9A32F00F9A43300F9A53700F9A63B00F9A73F00F9A84300F9A94700F9AA4B00F9AB4F00F9AC5300F9AD5700F9A06300FDA16700FDA26B00FDA36F00FDA47300FDA57700FDA67B00FDA77F00FDFF4300D1F00700F9FE0300F920023FD6F10300AAA02340F9A12740F9A22B40F9A32F40F9A43340F9A53740F9A63B40F9A73F40F9A84340F9A94740F9AA4B40F9AB4F40F9AC5340F9AD5740F9A06340FDA16740FDA26B40FDA36F40FDA47340FDA57740FDA67B40FDA77F40FDF00340F9FF43009100025FD6
[c58dc5eb1c01500] jit-backend-dump}
---------- Captured stderr call ----------
[c58dc5eb2077e00] {jit-mem-looptoken-alloc
allocating Loop # -1
[c58dc5eb2085f00] jit-mem-looptoken-alloc}
[c58dc5eb23a0d80] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b00770 +0 00000000000000000000000000000000FE77BBA9F35304A9E10F00F9FD0300AAA08340F90000008B1F0000F1000020D4FDFFFF17000020D450FEFF58B00700F910EB80D210B6A0F2100EC0F2B00F00F9100080D210B6A0F2100EC0F21000E0F200023FD6
[c58dc5eb24e4f00] jit-backend-dump}
[c58dc5eb2574600] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b0079c +0 60000054
[c58dc5eb259af80] jit-backend-dump}
[c58dc5eb26cef00] {jit-backend-addr
Loop -1 () has address 0x7005b00790 to 0x7005b007a8 (bootstrap 0x7005b00780)
gc table: 0x7005b00770
function: 0x7005b00780
resops: 0x7005b00790
failures: 0x7005b007a8
end: 0x7005b007d4
[c58dc5eb26e5280] jit-backend-addr}
[c58dc5eb26f5600] {jit-mem-looptoken-alloc
allocating Bridge # 1 of Loop # -1
[c58dc5eb26fe100] jit-mem-looptoken-alloc}
[c58dc5eb29d7700] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007f0 +0 B01F40F91F2003D51F2003D51F2003D51F2003D51F0211EB8A010054FF4300D1F10700F910FC80D210B6A0F2100EC0F2F00300F9101E80D210B6A0F2100EC0F21000E0F200023FD690F280D210B6A0F2100EC0F21000E0F200021FD6000020D4
[c58dc5eb2b07800] jit-backend-dump}
[c58dc5eb2b4ea80] {jit-backend-addr
bridge out of Guard 0x13247cd08 has address 0x7005b007f0 to 0x7005b00850
gc table: 0x7005b007f0
jump target: 0x7005b007f0
resops: 0x7005b00838
failures: 0x7005b00850
end: 0x7005b00850
[c58dc5eb2b5f480] jit-backend-addr}
[c58dc5eb2be6c00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007a8 +0 10FE80D210B6A0F2100EC0F21000E0F200023FD6
[c58dc5eb2c32f00] jit-backend-dump}
[c58dc5eb2c66f00] {jit-backend-dump
BACKEND arm
SYS_EXECUTABLE ??
CODE_DUMP @7005b007f4 +0 310380D2
[c58dc5eb2c86d00] jit-backend-dump}
builder: rpython-macos-arm64 build #263
test: jit/backend/aarch64/test/test_runner/py/TestARM64/()/test_compile_asmlen