Skip to content

Commit 8a1b171

Browse files
liu-song-6acmel
authored andcommitted
perf build: Check what binutils's 'disassembler()' signature to use
Commit 003ca0fd2286 ("Refactor disassembler selection") in the binutils repo, which changed the disassembler() function signature, so we must use the feature test introduced in fb98266 ("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>
1 parent 3ca3877 commit 8a1b171

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

tools/build/Makefile.feature

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ FEATURE_TESTS_BASIC := \
6666
sched_getcpu \
6767
sdt \
6868
setns \
69-
libaio
69+
libaio \
70+
disassembler-four-args
7071

7172
# FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
7273
# of all feature tests
@@ -118,7 +119,8 @@ FEATURE_DISPLAY ?= \
118119
lzma \
119120
get_cpuid \
120121
bpf \
121-
libaio
122+
libaio \
123+
disassembler-four-args
122124

123125
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
124126
# If in the future we need per-feature checks/flags for features not

tools/build/feature/test-all.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@
178178
# include "test-reallocarray.c"
179179
#undef main
180180

181+
#define main main_test_disassembler_four_args
182+
# include "test-disassembler-four-args.c"
183+
#undef main
184+
181185
int main(int argc, char *argv[])
182186
{
183187
main_test_libpython();
@@ -219,6 +223,7 @@ int main(int argc, char *argv[])
219223
main_test_setns();
220224
main_test_libaio();
221225
main_test_reallocarray();
226+
main_test_disassembler_four_args();
222227

223228
return 0;
224229
}

tools/perf/Makefile.config

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ FEATURE_CHECK_LDFLAGS-libpython-version := $(PYTHON_EMBED_LDOPTS)
227227

228228
FEATURE_CHECK_LDFLAGS-libaio = -lrt
229229

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

726728
ifeq ($(feature-libbfd-liberty), 1)
727729
EXTLIBS += -lbfd -lopcodes -liberty
730+
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
728731
else
729732
ifeq ($(feature-libbfd-liberty-z), 1)
730733
EXTLIBS += -lbfd -lopcodes -liberty -lz
734+
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
731735
endif
732736
endif
737+
$(call feature_check,disassembler-four-args)
733738
endif
734739

735740
ifdef NO_DEMANGLE
@@ -808,6 +813,10 @@ ifdef HAVE_KVM_STAT_SUPPORT
808813
CFLAGS += -DHAVE_KVM_STAT_SUPPORT
809814
endif
810815

816+
ifeq ($(feature-disassembler-four-args), 1)
817+
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
818+
endif
819+
811820
ifeq (${IS_64_BIT}, 1)
812821
ifndef NO_PERF_READ_VDSO32
813822
$(call feature_check,compile-32)

0 commit comments

Comments
 (0)