KDAB / hotspot

The Linux perf GUI for performance analysis.
4.16k stars 257 forks source link

BranchDelegate::paint() raises `unexpected jump visualization char: +` #555

Closed GitMensch closed 1 year ago

GitMensch commented 1 year ago

https://github.com/KDAB/hotspot/blob/ed4bbb853a3dac107da1b08d88f9b537aca590e1/src/resultsdisassemblypage.cpp#L112-L156 misses the "+".

Here's example dump output, created by GNU objdump (GNU Binutils for Debian) 2.35.2 objdump.indexed_start_internal.log

Preview (with filenames removed):

   43182:   |  |  |            e8 b0 a3 ff ff           callq  3d537 <bdb_cmpkey>
   43187:   |  |  |            89 45 fc                 mov    %eax,-0x4(%rbp)
   4318a:   |  |  +----------- e9 76 03 00 00           jmpq   43505 <indexed_start_internal+0x632>
   4318f:   |  |  |            83 7d fc 00              cmpl   $0x0,-0x4(%rbp)
   43193:   |  |  |        /-- 74 5b                    je     431f0 <indexed_start_internal+0x31d>
   43195:   |  |  |        |   48 8b 45 f0              mov    -0x10(%rbp),%rax
   43199:   |  |  |        |   48 8b 50 08              mov    0x8(%rax),%rdx
   4319d:   |  |  |        |   8b 45 ec                 mov    -0x14(%rbp),%eax
   431a0:   |  |  |        |   48 98                    cltq   
   431a2:   |  |  |        |   48 c1 e0 03              shl    $0x3,%rax
   431a6:   |  |  |        |   48 01 d0                 add    %rdx,%rax
   431a9:   |  |  |        |   48 8b 00                 mov    (%rax),%rax
   431ac:   |  |  |        |   4c 8b 80 88 01 00 00     mov    0x188(%rax),%r8
   431b3:   |  |  |        |   48 8b 45 f0              mov    -0x10(%rbp),%rax
   431b7:   |  |  |        |   48 8d 90 a0 00 00 00     lea    0xa0(%rax),%rdx
   431be:   |  |  |        |   48 8b 45 f0              mov    -0x10(%rbp),%rax
   431c2:   |  |  |        |   48 8d 70 78              lea    0x78(%rax),%rsi
   431c6:   |  |  |        |   48 8b 45 f0              mov    -0x10(%rbp),%rax
   431ca:   |  |  |        |   48 8b 48 08              mov    0x8(%rax),%rcx
   431ce:   |  |  |        |   8b 45 ec                 mov    -0x14(%rbp),%eax
   431d1:   |  |  |        |   48 98                    cltq   
   431d3:   |  |  |        |   48 c1 e0 03              shl    $0x3,%rax
   431d7:   |  |  |        |   48 01 c8                 add    %rcx,%rax
   431da:   |  |  |        |   48 8b 00                 mov    (%rax),%rax
   431dd:   |  |  |        |   b9 0f 00 00 00           mov    $0xf,%ecx
   431e2:   |  |  |        |   48 89 c7                 mov    %rax,%rdi
   431e5:   |  |  |        |   41 ff d0                 callq  *%r8
   431e8:   |  |  |        |   89 45 fc                 mov    %eax,-0x4(%rbp)
   431eb:   |  +--|--------|-- e9 1c 03 00 00           jmpq   4350c <indexed_start_internal+0x639>
   431f0:   |  |  |        \-> 48 8b 45 f0              mov    -0x10(%rbp),%rax
   431f4:   |  |  |            48 8b 50 08              mov    0x8(%rax),%rdx
   431f8:   |  |  |            8b 45 ec                 mov    -0x14(%rbp),%eax
GitMensch commented 1 year ago

Sadly I currently don't get any output on that Debian system: grafik stderr does not contain any output - do you have an idea what to check next?

milianw commented 1 year ago

strace to see what objdump command is called, then replicate it manually and dump the contents to a file and upload that one here

GitMensch commented 1 year ago

Done as requested, moved out to a separate issue also providing a second testcase.