Qt Creator: Disassembler failed



  • Hi,

    I've configured a Bare Metal device with OpenOCD in Qt Creator.
    If I right-click in the stack view and select "Open Disassembler at 0x..." i get a message "Disassembler failed:" in the Debugger log.
    The addresses shown are 64-bit with the first 32 bits set to 0xffffffff. But the target is a 32 bit mips.
    If i choose "Open Dissassembler at Address", and enter a 32-bit address it works.

    I think the error is because 64-bit addresses are passed to the disassemble command, but the addresses in the dump are 32-bit and Qt Creator can't match them.

    Is there some configuration that needs to be done to avoid this?

    thanks,
    Cedric

    Below is the Debugger log output:

    53set disassembly-flavor att
    <254-interpreter-exec console "disassemble /rm 0xffffffff80345360"
    >&"set disassembly-flavor att\n"
    >&"No symbol \"disassembly\" in current context.\n"
    >253^error,msg="No symbol \"disassembly\" in current context."
    
    >~"Dump of assembler code for function Cyg_Thread::check_this(cyg_assert_class_zeal) const:\n"
    >~"295\tCyg_Thread::check_this( cyg_assert_class_zeal zeal) const\n"
    >~"\n"
    >~"296\t{\n"
    >~"297\t//    CYG_REPORT_FUNCTION();\n"
    >~"298\t\n"
    >~"299\t    // check that we have a non-NULL pointer first\n"
    >~"300\t    if( this == NULL ) return false;\n"
    >~"   0x80345344 <+0>:\t54 9d 02 8e\tlw\tv0,-25260(s0)\n"
    >~"   0x80345348 <+4>:\t01 00 42 24\taddiu\tv0,v0,1\n"
    >~"\n"
    >~"301\t    \n"
    >~"302\t    switch( zeal )\n"
    >~"   0x8034534c <+8>:\t54 9d 02 ae\tsw\tv0,-25260(s0)\n"
    >~"   0x80345350 <+12>:\t54 9d 04 8e\tlw\ta0,-25260(s0)\n"
    >~"   0x80345354 <+16>:\t04 f5 0c 0c\tjal\t0x8033d410 <ramfs_fo_read+348>\n"
    >~"   0x80345358 <+20>:\t00 00 00 00\tnop\n"
    >~"   0x8034535c <+24>:\t18 b7 22 8e\tlw\tv0,-18664(s1)\n"
    >~"=> 0x80345360 <+28>:\tf8 ff 40 10\tbeqz\tv0,0x80345344 <Cyg_Thread::check_this(cyg_assert_class_zeal) const>\n"
    >~"   0x80345364 <+32>:\t54 80 12 3c\tlui\ts2,0x8054\n"
    >~"   0x80345368 <+36>:\t54 80 10 3c\tlui\ts0,0x8054\n"
    >~"   0x8034536c <+40>:\t54 80 11 3c\tlui\ts1,0x8054\n"
    >~"   0x80345370 <+44>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345374 <+48>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x80345378 <+52>:\td0 04 06 24\tli\ta2,1232\n"
    >~"\n"
    >~"303\t    {\n"
    >~"304\t    case cyg_system_test:\n"
    >~"305\t    case cyg_extreme:\n"
    >~"306\t    case cyg_thorough:\n"
    >~"307\t        if( (state & SUSPENDED) && (suspend_count == 0) ) return false;\n"
    >~"   0x8034537c <+56>:\t4c 08 0d 0c\tjal\t0x80342130 <diag_snprintf(char*, size_t, char const*, ...)+8>\n"
    >~"   0x80345380 <+60>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345384 <+64>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345388 <+68>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x8034538c <+72>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345390 <+76>:\t9d dd 07 0c\tjal\t0x801f7674 <dump_buffer_save_exeption+8>\n"
    >~"   0x80345394 <+80>:\td0 04 06 24\tli\ta2,1232\n"
    >~"\n"
    >~"308\t    case cyg_quick:\n"
    >~"309\t        // Check that the stackpointer is within its limits.\n"
    >~"310\t        // Note: This does not check the current stackpointer value\n"
    >~"311\t        // of the executing thread.\n"
    >~"312\t        if( (stack_ptr > (stack_base + stack_size)) ||\n"
    >~"   0x803453a0 <+92>:\t03 00 64 10\tbeq\tv1,a0,0x803453b0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+108>\n"
    >~"   0x803453a4 <+96>:\t00 00 00 00\tnop\n"
    >~"   0x803453a8 <+100>:\t08 00 e0 03\tjr\tra\n"
    >~"   0x803453ac <+104>:\t00 00 00 00\tnop\n"
    >~"   0x803453b0 <+108>:\t62 81 04 3c\tlui\ta0,0x8162\n"
    >~"   0x803453b4 <+112>:\ted 1c 0d 08\tj\t0x803473b4 <Cyg_IdleThread::Cyg_IdleThread()+112>\n"
    >~"   0x803453b8 <+116>:\t68 a6 84 24\taddiu\ta0,a0,-22936\n"
    >~"   0x803453bc <+120>:\te8 ff bd 27\taddiu\tsp,sp,-24\n"
    >~"   0x803453c0 <+124>:\t10 00 b4 af\tsw\ts4,16(sp)\n"
    >~"   0x803453c4 <+128>:\t62 81 14 3c\tlui\ts4,0x8162\n"
    >~"   0x803453c8 <+132>:\t0c 00 b3 af\tsw\ts3,12(sp)\n"
    >~"   0x803453cc <+136>:\t80 a6 93 8e\tlw\ts3,-22912(s4)\n"
    >~"   0x803453d0 <+140>:\t08 00 b2 af\tsw\ts2,8(sp)\n"
    >~"   0x803453d4 <+144>:\t04 00 b1 af\tsw\ts1,4(sp)\n"
    >~"\n"
    >~"313\t            (stack_ptr < stack_base) ) return false;\n"
    >~"314\t#ifdef CYGFUN_KERNEL_THREADS_STACK_LIMIT\n"
    >~"315\t        if( stack_ptr < stack_limit ) return false;\n"
    >~"316\t#endif\n"
    >~"317\t    case cyg_trivial:\n"
    >~"318\t    case cyg_none:\n"
    >~"319\t    default:\n"
    >~"320\t        break;\n"
    >~"321\t    };\n"
    >~"322\t\n"
    >~"323\t    return true;\n"
    >~"324\t}\n"
    >~"   0x80345398 <+84>:\t62 81 02 3c\tlui\tv0,0x8162\n"
    >~"   0x8034539c <+88>:\t80 a6 43 8c\tlw\tv1,-22912(v0)\n"
    >~"\n"
    >~"End of assembler dump.\n"
    >254^done
    <255-interpreter-exec console "disassemble /rm 0xffffffff8034534c,0xffffffff803453c4"
    
    >~"Dump of assembler code from 0x8034534c to 0x803453c4:\n"
    >~"302\t    switch( zeal )\n"
    >~"   0x8034534c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+8>:\t54 9d 02 ae\tsw\tv0,-25260(s0)\n"
    >~"   0x80345350 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+12>:\t54 9d 04 8e\tlw\ta0,-25260(s0)\n"
    >~"   0x80345354 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+16>:\t04 f5 0c 0c\tjal\t0x8033d410 <ramfs_fo_read+348>\n"
    >~"   0x80345358 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+20>:\t00 00 00 00\tnop\n"
    >~"   0x8034535c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+24>:\t18 b7 22 8e\tlw\tv0,-18664(s1)\n"
    >~"=> 0x80345360 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+28>:\tf8 ff 40 10\tbeqz\tv0,0x80345344 <Cyg_Thread::check_this(cyg_assert_class_zeal) const>\n"
    >~"   0x80345364 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+32>:\t54 80 12 3c\tlui\ts2,0x8054\n"
    >~"   0x80345368 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+36>:\t54 80 10 3c\tlui\ts0,0x8054\n"
    >~"   0x8034536c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+40>:\t54 80 11 3c\tlui\ts1,0x8054\n"
    >~"   0x80345370 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+44>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345374 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+48>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x80345378 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+52>:\td0 04 06 24\tli\ta2,1232\n"
    >~"\n"
    >~"303\t    {\n"
    >~"304\t    case cyg_system_test:\n"
    >~"305\t    case cyg_extreme:\n"
    >~"306\t    case cyg_thorough:\n"
    >~"307\t        if( (state & SUSPENDED) && (suspend_count == 0) ) return false;\n"
    >~"   0x8034537c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+56>:\t4c 08 0d 0c\tjal\t0x80342130 <diag_snprintf(char*, size_t, char const*, ...)+8>\n"
    >~"   0x80345380 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+60>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345384 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+64>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345388 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+68>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x8034538c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+72>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345390 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+76>:\t9d dd 07 0c\tjal\t0x801f7674 <dump_buffer_save_exeption+8>\n"
    >~"   0x80345394 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+80>:\td0 04 06 24\tli\ta2,1232\n"
    >~"\n"
    >~"308\t    case cyg_quick:\n"
    >~"309\t        // Check that the stackpointer is within its limits.\n"
    >~"310\t        // Note: This does not check the current stackpointer value\n"
    >~"311\t        // of the executing thread.\n"
    >~"312\t        if( (stack_ptr > (stack_base + stack_size)) ||\n"
    >~"   0x803453a0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+92>:\t03 00 64 10\tbeq\tv1,a0,0x803453b0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+108>\n"
    >~"   0x803453a4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+96>:\t00 00 00 00\tnop\n"
    >~"   0x803453a8 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+100>:\t08 00 e0 03\tjr\tra\n"
    >~"   0x803453ac <Cyg_Thread::check_this(cyg_assert_class_zeal) const+104>:\t00 00 00 00\tnop\n"
    >~"   0x803453b0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+108>:\t62 81 04 3c\tlui\ta0,0x8162\n"
    >~"   0x803453b4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+112>:\ted 1c 0d 08\tj\t0x803473b4 <Cyg_IdleThread::Cyg_IdleThread()+112>\n"
    >~"   0x803453b8 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+116>:\t68 a6 84 24\taddiu\ta0,a0,-22936\n"
    >~"   0x803453bc <Cyg_Thread::check_this(cyg_assert_class_zeal) const+120>:\te8 ff bd 27\taddiu\tsp,sp,-24\n"
    >~"   0x803453c0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+124>:\t10 00 b4 af\tsw\ts4,16(sp)\n"
    >~"   0x803453c4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+128>:\t62 81 14 3c\tlui\ts4,0x8162\n"
    >~"   0x803453c8 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+132>:\t0c 00 b3 af\tsw\ts3,12(sp)\n"
    >~"   0x803453cc <Cyg_Thread::check_this(cyg_assert_class_zeal) const+136>:\t80 a6 93 8e\tlw\ts3,-22912(s4)\n"
    >~"   0x803453d0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+140>:\t08 00 b2 af\tsw\ts2,8(sp)\n"
    >~"   0x803453d4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+144>:\t04 00 b1 af\tsw\ts1,4(sp)\n"
    >~"\n"
    >~"313\t            (stack_ptr < stack_base) ) return false;\n"
    >~"314\t#ifdef CYGFUN_KERNEL_THREADS_STACK_LIMIT\n"
    >~"315\t        if( stack_ptr < stack_limit ) return false;\n"
    >~"316\t#endif\n"
    >~"317\t    case cyg_trivial:\n"
    >~"318\t    case cyg_none:\n"
    >~"319\t    default:\n"
    >~"320\t        break;\n"
    >~"321\t    };\n"
    >~"322\t\n"
    >~"323\t    return true;\n"
    >~"324\t}\n"
    >~"   0x80345398 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+84>:\t62 81 02 3c\tlui\tv0,0x8162\n"
    >~"   0x8034539c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+88>:\t80 a6 43 8c\tlw\tv1,-22912(v0)\n"
    >~"\n"
    >~"End of assembler dump.\n"
    >255^done
    <256disassemble /r 0xffffffff8034534c,0xffffffff803453c4
    
    >&"disassemble /r 0xffffffff8034534c,0xffffffff803453c4\n"
    >~"Dump of assembler code from 0x8034534c to 0x803453c4:\n"
    >~"   0x8034534c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+8>:\t54 9d 02 ae\tsw\tv0,-25260(s0)\n"
    >~"   0x80345350 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+12>:\t54 9d 04 8e\tlw\ta0,-25260(s0)\n"
    >~"   0x80345354 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+16>:\t04 f5 0c 0c\tjal\t0x8033d410 <ramfs_fo_read+348>\n"
    >~"   0x80345358 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+20>:\t00 00 00 00\tnop\n"
    >~"   0x8034535c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+24>:\t18 b7 22 8e\tlw\tv0,-18664(s1)\n"
    >~"=> 0x80345360 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+28>:\tf8 ff 40 10\tbeqz\tv0,0x80345344 <Cyg_Thread::check_this(cyg_assert_class_zeal) const>\n"
    >~"   0x80345364 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+32>:\t54 80 12 3c\tlui\ts2,0x8054\n"
    >~"   0x80345368 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+36>:\t54 80 10 3c\tlui\ts0,0x8054\n"
    >~"   0x8034536c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+40>:\t54 80 11 3c\tlui\ts1,0x8054\n"
    >~"   0x80345370 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+44>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345374 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+48>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x80345378 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+52>:\td0 04 06 24\tli\ta2,1232\n"
    >~"   0x8034537c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+56>:\t4c 08 0d 0c\tjal\t0x80342130 <diag_snprintf(char*, size_t, char const*, ...)+8>\n"
    >~"   0x80345380 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+60>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345384 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+64>:\tdc 7a 04 26\taddiu\ta0,s0,31452\n"
    >~"   0x80345388 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+68>:\t18 78 25 26\taddiu\ta1,s1,30744\n"
    >~"   0x8034538c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+72>:\t74 78 47 26\taddiu\ta3,s2,30836\n"
    >~"   0x80345390 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+76>:\t9d dd 07 0c\tjal\t0x801f7674 <dump_buffer_save_exeption+8>\n"
    >~"   0x80345394 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+80>:\td0 04 06 24\tli\ta2,1232\n"
    >~"   0x80345398 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+84>:\t62 81 02 3c\tlui\tv0,0x8162\n"
    >~"   0x8034539c <Cyg_Thread::check_this(cyg_assert_class_zeal) const+88>:\t80 a6 43 8c\tlw\tv1,-22912(v0)\n"
    >~"   0x803453a0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+92>:\t03 00 64 10\tbeq\tv1,a0,0x803453b0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+108>\n"
    >~"   0x803453a4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+96>:\t00 00 00 00\tnop\n"
    >~"   0x803453a8 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+100>:\t08 00 e0 03\tjr\tra\n"
    >~"   0x803453ac <Cyg_Thread::check_this(cyg_assert_class_zeal) const+104>:\t00 00 00 00\tnop\n"
    >~"   0x803453b0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+108>:\t62 81 04 3c\tlui\ta0,0x8162\n"
    >~"   0x803453b4 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+112>:\ted 1c 0d 08\tj\t0x803473b4 <Cyg_IdleThread::Cyg_IdleThread()+112>\n"
    >~"   0x803453b8 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+116>:\t68 a6 84 24\taddiu\ta0,a0,-22936\n"
    >~"   0x803453bc <Cyg_Thread::check_this(cyg_assert_class_zeal) const+120>:\te8 ff bd 27\taddiu\tsp,sp,-24\n"
    >~"   0x803453c0 <Cyg_Thread::check_this(cyg_assert_class_zeal) const+124>:\t10 00 b4 af\tsw\ts4,16(sp)\n"
    >~"End of assembler dump.\n"
    >256^done
    Disassembler failed: 
    

  • Qt Champions 2016

    I'm not aware of such an option, but you should really ask this on the mailing list where QtCreator's developers are likely to see it.



  • thanks
    It was very good tips


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.