• Arnaldo Carvalho de Melo's avatar
    perf annotate: Add "_local" to jump/offset validation routines · 2eff0611
    Arnaldo Carvalho de Melo authored
    Because they all really check if we can access data structures/visual
    constructs where a "jump" instruction targets code in the same function,
    i.e. things like:
    
      __pthread_mutex_lock  /usr/lib64/libpthread-2.26.so
      1.95 │       mov    __pthread_force_elision,%ecx
           │    ┌──test   %ecx,%ecx
      0.07 │    ├──je     60
           │    │  test   $0x300,%esi
           │    │↓ jne    60
           │    │  or     $0x100,%esi
           │    │  mov    %esi,0x10(%rdi)
           │ 42:│  mov    %esi,%edx
           │    │  lea    0x16(%r8),%rsi
           │    │  mov    %r8,%rdi
           │    │  and    $0x80,%edx
           │    │  add    $0x8,%rsp
           │    │→ jmpq   __lll_lock_elision
           │    │  nop
      0.29 │ 60:└─→and    $0x80,%esi
      0.07 │       mov    $0x1,%edi
      0.29 │       xor    %eax,%eax
      2.53 │       lock   cmpxchg %edi,(%r8)
    
    And not things like that "jmpq __lll_lock_elision", that instead should behave
    like a "call" instruction and "jump" to the disassembly of "___lll_lock_elision".
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-3cwx39u3h66dfw9xjrlt7ca2@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    2eff0611
annotate.h 8.91 KB