From nobody Thu Dec 18 04:42:42 2025 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AA581B94E; Tue, 16 Jan 2024 11:35:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.48]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4TDn2w6523zWmZY; Tue, 16 Jan 2024 19:34:00 +0800 (CST) Received: from kwepemd100002.china.huawei.com (unknown [7.221.188.184]) by mail.maildlp.com (Postfix) with ESMTPS id 2AF8E18006E; Tue, 16 Jan 2024 19:35:01 +0800 (CST) Received: from M910t.huawei.com (10.110.54.157) by kwepemd100002.china.huawei.com (7.221.188.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1258.28; Tue, 16 Jan 2024 19:34:59 +0800 From: Changbin Du To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo CC: Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , , , Changbin Du Subject: [PATCH 1/3] perf: build: introduce the libcapstone Date: Tue, 16 Jan 2024 19:34:35 +0800 Message-ID: <20240116113437.1507537-2-changbin.du@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240116113437.1507537-1-changbin.du@huawei.com> References: <20240116113437.1507537-1-changbin.du@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemd100002.china.huawei.com (7.221.188.184) Content-Type: text/plain; charset="utf-8" Later we will use libcapstone to disassemble instructions of samples. Signed-off-by: Changbin Du --- 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 +++ 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 :=3D \ gtk2-infobar \ hello \ libbabeltrace \ + libcapstone \ libbfd-liberty \ libbfd-liberty-z \ libopencsd \ @@ -133,6 +134,7 @@ FEATURE_DISPLAY ?=3D \ 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=3D \ 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) =20 +$(OUTPUT)test-libcapstone.bin: + $(BUILD) # -lcapstone provided by $(FEATURE_CHECK_LDFLAGS-libcapstone) + $(OUTPUT)test-compile-32.bin: $(CC) -m32 -o $@ test-compile.c =20 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 =20 +#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/t= est-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 + +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 :=3D $(LIBBABELTRACE_CFLAGS) FEATURE_CHECK_LDFLAGS-libbabeltrace :=3D $(LIBBABELTRACE_LDFLAGS) -lbabelt= race-ctf =20 +# for linking with debug library, run like: +# make DEBUG=3D1 LIBCAPSTONE_DIR=3D/opt/capstone/ +ifdef LIBCAPSTONE_DIR + LIBCAPSTONE_CFLAGS :=3D -I$(LIBCAPSTONE_DIR)/include + LIBCAPSTONE_LDFLAGS :=3D -L$(LIBCAPSTONE_DIR)/ +endif +FEATURE_CHECK_CFLAGS-libcapstone :=3D $(LIBCAPSTONE_CFLAGS) +FEATURE_CHECK_LDFLAGS-libcapstone :=3D $(LIBCAPSTONE_LDFLAGS) -lcapstone + ifdef LIBZSTD_DIR LIBZSTD_CFLAGS :=3D -I$(LIBZSTD_DIR)/lib LIBZSTD_LDFLAGS :=3D -L$(LIBZSTD_DIR)/lib @@ -1089,6 +1098,18 @@ ifndef NO_LIBBABELTRACE endif endif =20 +ifndef NO_CAPSTONE + $(call feature_check,libcapstone) + ifeq ($(feature-libcapstone), 1) + CFLAGS +=3D -DHAVE_LIBCAPSTONE_SUPPORT $(LIBCAPSTONE_CFLAGS) + LDFLAGS +=3D $(LICAPSTONE_LDFLAGS) + EXTLIBS +=3D -lcapstone + $(call detected,CONFIG_LIBCAPSTONE) + else + msg :=3D $(warning No libcapstone found, disables disasm engine suppor= t 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 modu= les # # Define NO_AUXTRACE if you do not want AUX area tracing support --=20 2.25.1