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

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 #272
test: tool/jitlogparser/test/test_parser/py/test_parsing_assembler