• Kim Phillips's avatar
    perf annotate: Fix parsing aarch64 branch instructions after objdump update · 4e67b2a5
    Kim Phillips authored
    Starting with binutils 2.28, aarch64 objdump adds comments to the
    disassembly output to show the alternative names of a condition code
    [1].
    
    It is assumed that commas in objdump comments could occur in other
    arches now or in the future, so this fix is arch-independent.
    
    The fix could have been done with arm64 specific jump__parse and
    jump__scnprintf functions, but the jump__scnprintf instruction would
    have to have its comment character be a literal, since the scnprintf
    functions cannot receive a struct arch easily.
    
    This inconvenience also applies to the generic jump__scnprintf, which is
    why we add a raw_comment pointer to struct ins_operands, so the __parse
    function assigns it to be re-used by its corresponding __scnprintf
    function.
    
    Example differences in 'perf annotate --stdio2' output on an aarch64
    perf.data file:
    
    BEFORE: → b.cs   ffff200008133d1c <unwind_frame+0x18c>  // b.hs, dffff7ecc47b
    AFTER : ↓ b.cs   18c
    
    BEFORE: → b.cc   ffff200008d8d9cc <get_alloc_profile+0x31c>  // b.lo, b.ul, dffff727295b
    AFTER : ↓ b.cc   31c
    
    The branch target labels 18c and 31c also now appear in the output:
    
    BEFORE:        add    x26, x29, #0x80
    AFTER : 18c:   add    x26, x29, #0x80
    
    BEFORE:        add    x21, x21, #0x8
    AFTER : 31c:   add    x21, x21, #0x8
    
    The Fixes: tag below is added so stable branches will get the update; it
    doesn't necessarily mean that commit was broken at the time, rather it
    didn't withstand the aarch64 objdump update.
    
    Tested no difference in output for sample x86_64, power arch perf.data files.
    
    [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=bb7eff5206e4795ac79c177a80fe9f4630aaf730Signed-off-by: default avatarKim Phillips <kim.phillips@arm.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Anton Blanchard <anton@samba.org>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Taeung Song <treeze.taeung@gmail.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Fixes: b13bbeee ("perf annotate: Fix branch instruction with multiple operands")
    Link: http://lkml.kernel.org/r/20180827125340.a2f7e291901d17cea05daba4@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4e67b2a5
annotate.h 10.8 KB