• Wang Nan's avatar
    perf llvm: Pass LINUX_VERSION_CODE to BPF program when compiling · 4a4f66a1
    Wang Nan authored
    Arnaldo suggests to make LINUX_VERSION_CODE works like __func__ and
    __FILE__ so user don't need to care setting right linux version too
    much. In this patch, perf llvm transfers LINUX_VERSION_CODE macro
    through clang cmdline.
    
    [1] http://lkml.kernel.org/r/20151029223744.GK2923@kernel.org
    
    Committer notes:
    
    Before, forgetting to update the version:
    
      # uname -r
      4.3.0-rc1+
      # cat bpf.c
      __attribute__((section("fork=_do_fork"), used))
      int fork(void *ctx)
      {
              return 1;
      }
    
      char _license[] __attribute__((section("license"), used)) = "GPL";
      int _version __attribute__((section("version"), used)) = 0x40200;
      #
      # perf record -e bpf.c sleep 1
      event syntax error: 'bpf.c'
                           \___ Invalid argument: Are you root and runing a CONFIG_BPF_SYSCALL kernel?
    
      (add -v to see detail)
      Run 'perf list' for a list of valid events
    
       Usage: perf record [<options>] [<command>]
          or: perf record [<options>] -- <command> [<options>]
    
          -e, --event <event>   event selector. use 'perf list' to list available events
     #
    
    After:
    
      # grep version bpf.c
      int _version __attribute__((section("version"), used)) = LINUX_VERSION_CODE;
      # perf record -e bpf.c sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.017 MB perf.data ]
      # perf evlist -v
      perf_bpf_probe:fork: type: 2, size: 112, config: 0x5ee, { sample_period,
      sample_freq }: 1, sample_type: IP|TID|TIME|CPU|PERIOD|RAW, disabled: 1,
      inherit: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all:
      1, exclude_guest: 1, mmap2: 1, comm_exec: 1
      #
    Suggested-and-Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1446636007-239722-3-git-send-email-wangnan0@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4a4f66a1
llvm-utils.c 10.6 KB