Skip to content
  • Arnaldo Carvalho de Melo's avatar
    perf build: Remove libaudit from the default feature checks · a88f70de
    Arnaldo Carvalho de Melo authored
    
    
    Ingo reported that the libaudit was always appearing as OFF:
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                      libaudit: [ OFF ]
    
    And everything seemed to work, i.e. we were checking for a feature that
    we don't use, causing confusion for people building perf, so work to
    remove that nuisance while making sure that it works when an arch
    doesn't provide the alternative method to generate the syscall id/name
    conversion tables.
    
    Longer explanation of the new modus operandi:
    
      $ make -C tools/perf O=/tmp/build/perf NO_SYSCALL_TABLE=1
      <SNIP>
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libcap: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
      ...                        libaio: [ on  ]
      ...                       libzstd: [ on  ]
      ...        disassembler-four-args: [ on  ]
    
      Makefile.config:665: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
        GEN      /tmp/build/perf/common-cmds.h
        MKDIR    /tmp/build/perf/fd/
        MKDIR    /tmp/build/perf/fs/
      <SNIP>
      $
    
    The libaudit test is forced and it fails when audit-libs-devel isn't available:
    
      $ cat /tmp/build/perf/feature/test-libaudit.make.output
      test-libaudit.c:2:10: fatal error: libaudit.h: No such file or directory
          2 | #include <libaudit.h>
            |          ^~~~~~~~~~~~
      compilation terminated.
      $
    
    If we install audit-libs-devel and rebuild it continues not to be shown as OFF
    in the main auto-detection summary, but again gets tested and this time:
    
      $ rpm -q audit-libs-devel
      audit-libs-devel-3.0-0.15.20191104git1c2f876.fc31.x86_64
      $
    
    The make output for the feature detection comes clean:
    
      $ cat /tmp/build/perf/feature/test-libaudit.make.output
    
    And the feature detection binary is successfully built and is dynamicly linked
    with libaudit:
    
      $ ldd /tmp/build/perf/feature/test-libaudit.bin | grep audit
      	libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f5bf5177000)
      $
    
    As well as the resulting perf binary:
    
      $ ldd /tmp/build/perf/perf | grep audit
      	libaudit.so.1 => /lib64/libaudit.so.1 (0x00007fad511c7000)
      $
    
    And 'perf trace' works using the libaudit method:
    
      $ sudo /tmp/build/perf/perf trace -e nanosleep sleep 1
           0.000 (1000.067 ms): sleep/281872 nanosleep(rqtp: 0x7ffedbbe69d0) = 0
      $
    
    If we leave audit-libs-devel installed but don't disable the use of the best
    method, the one using SYSCALL_TABLE, the default for architectures that provide
    the script to build the syscall id/name mapping using the .tbl files copied
    from the kernel sources, we get:
    
      $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf
      $ make -C tools/perf O=/tmp/build/perf
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libcap: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
      ...                        libaio: [ on  ]
      ...                       libzstd: [ on  ]
      ...        disassembler-four-args: [ on  ]
    
        GEN      /tmp/build/perf/common-cmds.h
      <SNIP>
      $
    
    Again, no mention of libaudit being on or OFF and:
    
      $ cat /tmp/build/perf/feature/test-libaudit.make.output
      cat: /tmp/build/perf/feature/test-libaudit.make.output: No such file or directory
      $
    
    We didn't even bother checking for its availability, slightly speeding up the
    build process and:
    
      $ ldd /tmp/build/perf/perf | grep libaudit
      $
    
    We don't link with it, also:
    
      $ sudo /tmp/build/perf/perf trace -e nanosleep sleep 1
           0.000 (1000.053 ms): sleep/299125 nanosleep(rqtp: 0x7ffc24611b50) = 0
      $
    
    And globs become available:
    
      $ sudo /tmp/build/perf/perf trace -e *sleep sleep 1
           0.000 (1000.072 ms): sleep/299136 nanosleep(rqtp: 0x7ffe7a3c4ff0) = 0
      $
    
    Reported-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a88f70de