lkml.org 
[lkml]   [2019]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 39/44] perf build: Check what binutils's 'disassembler()' signature to use
    Date
    From: Song Liu <songliubraving@fb.com>

    Commit 003ca0fd2286 ("Refactor disassembler selection") in the binutils
    repo, which changed the disassembler() function signature, so we must
    use the feature test introduced in fb982666e380 ("tools/bpftool: fix
    bpftool build with bintutils >= 2.9") to deal with that.

    Committer testing:

    After adding the missing function call to test-all.c, and:

    FEATURE_CHECK_LDFLAGS-disassembler-four-args = -bfd -lopcodes

    And the fallbacks for cases where we need -liberty and sometimes -lz to
    tools/perf/Makefile.config, we get:

    $ make -C tools/perf O=/tmp/build/perf install-bin
    make: Entering directory '/home/acme/git/perf/tools/perf'
    BUILD: Doing 'make -j8' parallel build

    Auto-detecting system features:
    ... dwarf: [ on ]
    ... dwarf_getlocations: [ on ]
    ... glibc: [ on ]
    ... gtk2: [ on ]
    ... libaudit: [ on ]
    ... libbfd: [ on ]
    ... libelf: [ on ]
    ... libnuma: [ on ]
    ... numa_num_possible_cpus: [ on ]
    ... libperl: [ on ]
    ... libpython: [ on ]
    ... libslang: [ on ]
    ... libcrypto: [ on ]
    ... libunwind: [ on ]
    ... libdw-dwarf-unwind: [ on ]
    ... zlib: [ on ]
    ... lzma: [ on ]
    ... get_cpuid: [ on ]
    ... bpf: [ on ]
    ... libaio: [ on ]
    ... disassembler-four-args: [ on ]
    CC /tmp/build/perf/jvmti/libjvmti.o
    CC /tmp/build/perf/builtin-bench.o
    <SNIP>
    $
    $

    The feature detection test-all.bin gets successfully built and linked:

    $ ls -la /tmp/build/perf/feature/test-all.bin
    -rwxrwxr-x. 1 acme acme 2680352 Mar 19 11:07 /tmp/build/perf/feature/test-all.bin
    $ nm /tmp/build/perf/feature/test-all.bin | grep -w disassembler
    0000000000061f90 T disassembler
    $

    Time to move on to the patches that make use of this disassembler()
    routine in binutils's libopcodes.

    Signed-off-by: Song Liu <songliubraving@fb.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Stanislav Fomichev <sdf@google.com>
    Link: http://lkml.kernel.org/r/20190312053051.2690567-13-songliubraving@fb.com
    [ split from a larger patch, added missing FEATURE_CHECK_LDFLAGS-disassembler-four-args ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/build/Makefile.feature | 6 ++++--
    tools/build/feature/test-all.c | 5 +++++
    tools/perf/Makefile.config | 9 +++++++++
    3 files changed, 18 insertions(+), 2 deletions(-)

    diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
    index 61e46d54a67c..8d3864b061f3 100644
    --- a/tools/build/Makefile.feature
    +++ b/tools/build/Makefile.feature
    @@ -66,7 +66,8 @@ FEATURE_TESTS_BASIC := \
    sched_getcpu \
    sdt \
    setns \
    - libaio
    + libaio \
    + disassembler-four-args

    # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
    # of all feature tests
    @@ -118,7 +119,8 @@ FEATURE_DISPLAY ?= \
    lzma \
    get_cpuid \
    bpf \
    - libaio
    + libaio \
    + disassembler-four-args

    # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
    # If in the future we need per-feature checks/flags for features not
    diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
    index e903b86b742f..7853e6d91090 100644
    --- a/tools/build/feature/test-all.c
    +++ b/tools/build/feature/test-all.c
    @@ -178,6 +178,10 @@
    # include "test-reallocarray.c"
    #undef main

    +#define main main_test_disassembler_four_args
    +# include "test-disassembler-four-args.c"
    +#undef main
    +
    int main(int argc, char *argv[])
    {
    main_test_libpython();
    @@ -219,6 +223,7 @@ int main(int argc, char *argv[])
    main_test_setns();
    main_test_libaio();
    main_test_reallocarray();
    + main_test_disassembler_four_args();

    return 0;
    }
    diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
    index df4ad45599ca..fe3f97e342fa 100644
    --- a/tools/perf/Makefile.config
    +++ b/tools/perf/Makefile.config
    @@ -227,6 +227,8 @@ FEATURE_CHECK_LDFLAGS-libpython-version := $(PYTHON_EMBED_LDOPTS)

    FEATURE_CHECK_LDFLAGS-libaio = -lrt

    +FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes
    +
    CFLAGS += -fno-omit-frame-pointer
    CFLAGS += -ggdb3
    CFLAGS += -funwind-tables
    @@ -725,11 +727,14 @@ else

    ifeq ($(feature-libbfd-liberty), 1)
    EXTLIBS += -lbfd -lopcodes -liberty
    + FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
    else
    ifeq ($(feature-libbfd-liberty-z), 1)
    EXTLIBS += -lbfd -lopcodes -liberty -lz
    + FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
    endif
    endif
    + $(call feature_check,disassembler-four-args)
    endif

    ifdef NO_DEMANGLE
    @@ -808,6 +813,10 @@ ifdef HAVE_KVM_STAT_SUPPORT
    CFLAGS += -DHAVE_KVM_STAT_SUPPORT
    endif

    +ifeq ($(feature-disassembler-four-args), 1)
    + CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
    +endif
    +
    ifeq (${IS_64_BIT}, 1)
    ifndef NO_PERF_READ_VDSO32
    $(call feature_check,compile-32)
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-03-21 19:56    [W:4.081 / U:0.376 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site