Messages in this thread | | | Date | Sat, 20 Jan 2024 15:23:40 +0800 | From | Changbin Du <> | Subject | Re: [PATCH v4 1/5] perf: build: introduce the libcapstone |
| |
On Fri, Jan 19, 2024 at 08:38:40PM +0200, Adrian Hunter wrote: > On 19/01/24 12:48, Changbin Du wrote: > > Later we will use libcapstone to disassemble instructions of samples. > > > > Signed-off-by: Changbin Du <changbin.du@huawei.com> > > --- > > tools/build/Makefile.feature | 2 ++ > > tools/build/feature/Makefile | 4 ++++ > > tools/build/feature/test-all.c | 4 ++++ > > tools/build/feature/test-libcapstone.c | 11 +++++++++++ > > tools/perf/Makefile.config | 21 +++++++++++++++++++++ > > tools/perf/Makefile.perf | 3 +++ > > tools/perf/tests/make needs updating also done. Added make_no_libcapstone target.
> > > 6 files changed, 45 insertions(+) > > create mode 100644 tools/build/feature/test-libcapstone.c > > > > diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature > > index 934e2777a2db..23bee50aeb0f 100644 > > --- a/tools/build/Makefile.feature > > +++ b/tools/build/Makefile.feature > > @@ -86,6 +86,7 @@ FEATURE_TESTS_EXTRA := \ > > gtk2-infobar \ > > hello \ > > libbabeltrace \ > > + libcapstone \ > > libbfd-liberty \ > > libbfd-liberty-z \ > > libopencsd \ > > @@ -133,6 +134,7 @@ FEATURE_DISPLAY ?= \ > > libcrypto \ > > libunwind \ > > libdw-dwarf-unwind \ > > + libcapstone \ > > zlib \ > > lzma \ > > get_cpuid \ > > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile > > index dad79ede4e0a..d6eaade09694 100644 > > --- a/tools/build/feature/Makefile > > +++ b/tools/build/feature/Makefile > > @@ -53,6 +53,7 @@ FILES= \ > > test-timerfd.bin \ > > test-libdw-dwarf-unwind.bin \ > > test-libbabeltrace.bin \ > > + test-libcapstone.bin \ > > test-compile-32.bin \ > > test-compile-x32.bin \ > > test-zlib.bin \ > > @@ -282,6 +283,9 @@ $(OUTPUT)test-libdw-dwarf-unwind.bin: > > $(OUTPUT)test-libbabeltrace.bin: > > $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) > > > > +$(OUTPUT)test-libcapstone.bin: > > + $(BUILD) # -lcapstone provided by $(FEATURE_CHECK_LDFLAGS-libcapstone) > > + > > $(OUTPUT)test-compile-32.bin: > > $(CC) -m32 -o $@ test-compile.c > > > > diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c > > index 6f4bf386a3b5..dd0a18c2ef8f 100644 > > --- a/tools/build/feature/test-all.c > > +++ b/tools/build/feature/test-all.c > > @@ -134,6 +134,10 @@ > > #undef main > > #endif > > > > +#define main main_test_libcapstone > > +# include "test-libcapstone.c" > > +#undef main > > + > > #define main main_test_lzma > > # include "test-lzma.c" > > #undef main > > diff --git a/tools/build/feature/test-libcapstone.c b/tools/build/feature/test-libcapstone.c > > new file mode 100644 > > index 000000000000..fbe8dba189e9 > > --- /dev/null > > +++ b/tools/build/feature/test-libcapstone.c > > @@ -0,0 +1,11 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > + > > +#include <capstone/capstone.h> > > + > > +int main(void) > > +{ > > + csh handle; > > + > > + cs_open(CS_ARCH_X86, CS_MODE_64, &handle); > > + return 0; > > +} > > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config > > index b3e6ed10f40c..7589725ad178 100644 > > --- a/tools/perf/Makefile.config > > +++ b/tools/perf/Makefile.config > > @@ -191,6 +191,15 @@ endif > > FEATURE_CHECK_CFLAGS-libbabeltrace := $(LIBBABELTRACE_CFLAGS) > > FEATURE_CHECK_LDFLAGS-libbabeltrace := $(LIBBABELTRACE_LDFLAGS) -lbabeltrace-ctf > > > > +# for linking with debug library, run like: > > +# make DEBUG=1 LIBCAPSTONE_DIR=/opt/capstone/ > > +ifdef LIBCAPSTONE_DIR > > + LIBCAPSTONE_CFLAGS := -I$(LIBCAPSTONE_DIR)/include > > + LIBCAPSTONE_LDFLAGS := -L$(LIBCAPSTONE_DIR)/ > > +endif > > +FEATURE_CHECK_CFLAGS-libcapstone := $(LIBCAPSTONE_CFLAGS) > > +FEATURE_CHECK_LDFLAGS-libcapstone := $(LIBCAPSTONE_LDFLAGS) -lcapstone > > + > > ifdef LIBZSTD_DIR > > LIBZSTD_CFLAGS := -I$(LIBZSTD_DIR)/lib > > LIBZSTD_LDFLAGS := -L$(LIBZSTD_DIR)/lib > > @@ -1089,6 +1098,18 @@ ifndef NO_LIBBABELTRACE > > endif > > endif > > > > +ifndef NO_CAPSTONE > > + $(call feature_check,libcapstone) > > + ifeq ($(feature-libcapstone), 1) > > + CFLAGS += -DHAVE_LIBCAPSTONE_SUPPORT $(LIBCAPSTONE_CFLAGS) > > + LDFLAGS += $(LICAPSTONE_LDFLAGS) > > + EXTLIBS += -lcapstone > > + $(call detected,CONFIG_LIBCAPSTONE) > > + else > > + msg := $(warning No libcapstone found, disables disasm engine support for 'perf script', please install libcapstone-dev/capstone-devel); > > + endif > > +endif > > + > > ifndef NO_AUXTRACE > > ifeq ($(SRCARCH),x86) > > ifeq ($(feature-get_cpuid), 0) > > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > > index 058c9aecf608..236da4f39a63 100644 > > --- a/tools/perf/Makefile.perf > > +++ b/tools/perf/Makefile.perf > > @@ -84,6 +84,9 @@ include ../scripts/utilities.mak > > # Define NO_LIBBABELTRACE if you do not want libbabeltrace support > > # for CTF data format. > > # > > +# Define NO_CAPSTONE if you do not want libcapstone support > > +# for disasm engine. > > +# > > # Define NO_LZMA if you do not want to support compressed (xz) kernel modules > > # > > # Define NO_AUXTRACE if you do not want AUX area tracing support >
-- Cheers, Changbin Du
| |