Home - Summaries: (main) : (py3.11) : Everything - Nightly builds - Benchmarks - RPython - Builders - About

jit/backend/x86/test/test_runner.py::TestX86::()::test_compile_asmlen

self = <rpython.jit.backend.x86.test.test_runner.TestX86 object at 0x00007f9dfaa5e988>

    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 = 'H\x8b\x8d \x01\x00\x00\x0f\x1f\x00H\x01\xc9H\x85\xc9\x0f\x84T\x00\x00\x00\xe9\xef\xff\xff\xff\x0f\x0bffff.\x0f\x1f\x84\x00\x00\x00\x00\x00'
originaddr = 481131760246, 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
---------- Captured stderr setup ----------
[c5867f8e96dd680] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00000 +0  48894D40488945484889555048895D584889756048897D684C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA00000008F45188F45084889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C4B8000000C3 
[c5867f8e96fde00] jit-backend-dump}
[c5867f8e97bff80] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00090 +0  48894D40488945484889555048895D584889756048897D684C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA000000049BB68E6AB0100600000498B1B49C743F80000000049C7030000000048895D288F45188F45084889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C4B8000000C3 
[c5867f8e97de800] jit-backend-dump}
[c5867f8e98f7400] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00130 +0  48894D40488945484889555048895D584889756048897D684C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA0000000F20F1185A8000000F20F118DB0000000F20F1195B8000000F20F119DC0000000F20F11A5C8000000F20F11ADD0000000F20F11B5D8000000F20F11BDE0000000F2440F1185E8000000F2440F118DF0000000F2440F1195F8000000F2440F119D00010000F2440F11A508010000F2440F11AD10010000F2440F11B518010000488B7424104889EF4883EC0849BB68E6AB0100600000498B0B48894D28498B5BF849C743F80000000049C7030000000049BB4002570F0100000041FFD34889C5488B4D2848C745280000000049BB68E6AB010060000049890B49895BF84883C40848C7451800000000488B4D40488B4548488B5550488B5D58488B7560488B7D684C8B45704C8B4D784C8B95800000004C8BA5880000004C8BAD900000004C8BB5980000004C8BBDA0000000F20F1085A8000000F20F108DB0000000F20F1095B8000000F20F109DC0000000F20F10A5C8000000F20F10ADD0000000F20F10B5D8000000F20F10BDE0000000F2440F1085E8000000F2440F108DF0000000F2440F1095F8000000F2440F109D00010000F2440F10A508010000F2440F10AD10010000F2440F10B518010000C3 
[c5867f8e992cf80] jit-backend-dump}
[c5867f8e9977d00] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00330 +0  48894D40488945484889555048895D584889756048897D684C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA0000000F20F1185A8000000F20F118DB0000000F20F1195B8000000F20F119DC0000000F20F11A5C8000000F20F11ADD0000000F20F11B5D8000000F20F11BDE0000000F2440F1185E8000000F2440F118DF0000000F2440F1195F8000000F2440F119D00010000F2440F11A508010000F2440F11AD10010000F2440F11B5180100008F45188F45084889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C4B8000000C3 
[c5867f8e9999f80] jit-backend-dump}
[c5867f8e9a22780] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00440 +0  48894D40488945484889555048895D584889756048897D684C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA0000000F20F1185A8000000F20F118DB0000000F20F1195B8000000F20F119DC0000000F20F11A5C8000000F20F11ADD0000000F20F11B5D8000000F20F11BDE0000000F2440F1185E8000000F2440F118DF0000000F2440F1195F8000000F2440F119D00010000F2440F11A508010000F2440F11AD10010000F2440F11B51801000049BB68E6AB0100600000498B1B49C743F80000000049C7030000000048895D288F45188F45084889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C4B8000000C3 
[c5867f8e9a49680] jit-backend-dump}
[c5867f8e9ab9700] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00560 +0  49BB68E6AB0100600000498B0349C743F80000000049C703000000004889452848C74508000000004889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C4B8000000C3 
[c5867f8e9ad0480] jit-backend-dump}
[c5867f8e9b1b180] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b005c0 +0  48895D584C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA00000004883EC08FFD04883C40848C7451800000000488B4D40488B5550488B5D58488B7560488B7D684C8B45704C8B4D784C8B95800000004C8BA5880000004C8BAD900000004C8BB5980000004C8BBDA0000000C3 
[c5867f8e9b33280] jit-backend-dump}
[c5867f8e9b55180] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00650 +0  4C8945704C894D784C8995800000004883EC08FFD04883C40848C7451800000000488B4D40488B5550488B7560488B7D684C8B45704C8B4D784C8B9580000000C3 
[c5867f8e9b68e00] jit-backend-dump}
[c5867f8e9bc9a80] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b006a0 +0  48895D584C8945704C894D784C8995800000004C89A5880000004C89AD900000004C89B5980000004C89BDA0000000F20F1185A8000000F20F118DB0000000F20F1195B8000000F20F119DC0000000F20F11A5C8000000F20F11ADD0000000F20F11B5D8000000F20F11BDE0000000F2440F1185E8000000F2440F118DF0000000F2440F1195F8000000F2440F119D00010000F2440F11A508010000F2440F11AD10010000F2440F11B5180100004883EC08FFD04883C40848C7451800000000488B4D40488B5550488B5D58488B7560488B7D684C8B45704C8B4D784C8B95800000004C8BA5880000004C8BAD900000004C8BB5980000004C8BBDA0000000F20F1085A8000000F20F108DB0000000F20F1095B8000000F20F109DC0000000F20F10A5C8000000F20F10ADD0000000F20F10B5D8000000F20F10BDE0000000F2440F1085E8000000F2440F108DF0000000F2440F1095F8000000F2440F109D00010000F2440F10A508010000F2440F10AD10010000F2440F10B518010000C3 
[c5867f8e9bf2d00] jit-backend-dump}
[c5867f8e9c4ce00] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00830 +0  4C8945704C894D784C899580000000F20F1185A8000000F20F118DB0000000F20F1195B8000000F20F119DC0000000F20F11A5C8000000F20F11ADD0000000F20F11B5D8000000F20F11BDE0000000F2440F1185E8000000F2440F118DF0000000F2440F1195F8000000F2440F119D00010000F2440F11A508010000F2440F11AD10010000F2440F11B5180100004883EC08FFD04883C40848C7451800000000488B4D40488B5550488B7560488B7D684C8B45704C8B4D784C8B9580000000F20F1085A8000000F20F108DB0000000F20F1095B8000000F20F109DC0000000F20F10A5C8000000F20F10ADD0000000F20F10B5D8000000F20F10BDE0000000F2440F1085E8000000F2440F108DF0000000F2440F1095F8000000F2440F109D00010000F2440F10A508010000F2440F10AD10010000F2440F10B518010000C3 
[c5867f8e9c72400] jit-backend-dump}
---------- Captured stderr call ----------
[c5867f8ea075380] {jit-mem-looptoken-alloc
allocating Loop # -1 
[c5867f8ea08d200] jit-mem-looptoken-alloc}
[c5867f8ea4f1e80] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00a30 +0  000000000000000000000000000000004881ECB800000048896C24604889B424B00000004889FD48895C24684C896424704C896C24784C89B424800000004C89BC2488000000488B8D200100000F1F004801C94885C90F8400000000E9EFFFFFFF0F0B666666662E0F1F840000000000FF358AFFFFFF49BB200AB0057000000041534D8D9BE0F5FFFF41FFE3 
[c5867f8ea766f00] jit-backend-dump}
[c5867f8ea81c780] {jit-backend-addr
Loop -1 () has address 0x7005b00a76 to 0x7005b00aa0 (bootstrap 0x7005b00a40) 
       gc table: 0x7005b00a30 
       function: 0x7005b00a40 
         resops: 0x7005b00a76 
       failures: 0x7005b00aa0 
            end: 0x7005b00abc 
[c5867f8ea82b180] jit-backend-addr}
[c5867f8ea82e880] {jit-regalloc-stats
Loop -1 () has address 0x7005b00a76 to 0x7005b00aa0 (bootstrap 0x7005b00a40) 
assembler size:  112 
number ops:  5 
preamble num moves calls:  0 
preamble num moves jump: 0 
preamble num moves spills: 0 
preamble num moves spills to existing: 0 
preamble num register reloads: 0 
num moves calls:  0 
num moves jump: 0 
num moves spills: 0 
num moves spills to existing: 0 
num moves register reloads: 0 
[c5867f8ea844d80] jit-regalloc-stats}
[c5867f8ea867e80] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00a88 +0  14000000 
[c5867f8ea888980] jit-backend-dump}
[c5867f8ea890300] {jit-mem-looptoken-alloc
allocating Bridge # 1 of Loop # -1 
[c5867f8ea89c680] jit-mem-looptoken-alloc}
[c5867f8eb02fd80] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00ae0 +0  48817D38FFFFFF000F8C1200000049BB800AB0057000000041FFE30F0B0F1F0048C7442408FFFFFF0049BBD00AB005700000004C895D184D8D9B60F6FFFF41FFD3E9C8FFFFFF 
[c5867f8eb6c5a00] jit-backend-dump}
[c5867f8eb76e300] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00ae4 +0  1D000000 
[c5867f8eb78a880] jit-backend-dump}
[c5867f8eb79e080] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00b05 +0  1D000000 
[c5867f8eb7b3300] jit-backend-dump}
[c5867f8eb7b6d80] {jit-backend-addr
bridge out of Guard 0x7f9dd9119d00 has address 0x7005b00ae0 to 0x7005b00b00 
       gc table: 0x7005b00ae0 
    jump target: 0x7005b00ae0 
         resops: 0x7005b00aee 
       failures: 0x7005b00b00 
            end: 0x7005b00b26 
[c5867f8eb7c1780] jit-backend-addr}
[c5867f8eb7c4e00] {jit-regalloc-stats
bridge out of Guard 0x7f9dd9119d00 has address 0x7005b00ae0 to 0x7005b00b00 
assembler size:  70 
number ops:  1 
preamble num moves calls:  0 
preamble num moves jump: 0 
preamble num moves spills: 0 
preamble num moves spills to existing: 0 
preamble num register reloads: 0 
num moves calls:  0 
num moves jump: 0 
num moves spills: 0 
num moves spills to existing: 0 
num moves register reloads: 0 
[c5867f8eb7da200] jit-regalloc-stats}
[c5867f8eb7ee400] {jit-backend-dump
BACKEND x86_64 
SYS_EXECUTABLE ?? 
CODE_DUMP @7005b00a88 +0  54000000 
[c5867f8eb804d80] jit-backend-dump}
builder: rpython-macos-x86-64 build #274
test: jit/backend/x86/test/test_runner/py/TestX86/()/test_compile_asmlen