From patchwork Tue Jan 16 11:34:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changbin Du X-Patchwork-Id: 188504 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:42cf:b0:101:a8e8:374 with SMTP id q15csp190454dye; Tue, 16 Jan 2024 03:35:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IEJK0HXI1TzQ4DnO5s7RxRdkqS9P67yOpaNHh/ZiK2emt82FjTQnaaTAfWQGdgdBf+s8+sB X-Received: by 2002:a05:6808:11ce:b0:3bd:265c:7d2d with SMTP id p14-20020a05680811ce00b003bd265c7d2dmr7681126oiv.59.1705404926972; Tue, 16 Jan 2024 03:35:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705404926; cv=none; d=google.com; s=arc-20160816; b=DrmDJbiHHgF2dtunPXXj2UPO9W7y5IA+ndiIVo88sVCZmgEv7JEohKElDq0kXq1+tC R9FuqhNZn7zcJ9sNbY2TKpOQPVgC5qX3WVlgqNZ6TOKs2Q5jG0Z32JvLsC8Zb7MwY+6U iMIt7gmy5R/sFqR8j3R8oAT6A6MhfAO60AKSUheIIaaxvUM68lXe9IswoPOrhFUbQ08O FqefRVEDbPAk9CtI7Gr52fCfdt4p+z4tLTIOsgvg3GQiA062xALAbtdjQmTkpg09kuiU lPI6M9leRNi1oHQLGBNnDTWGnnA0aOB+HEXbN19GOIr8PvMTqQWKhfe84zqXYvqMH0Mb Ajcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=TQzziqeIB3F6tApcFazuxBoNJdAlszNHypKI7JSc8x0=; fh=wjLkt+hbOkIreNMlyAPJ/U4E0ReWqRTqN/ROQ2ik91w=; b=CGlGm8ITK7MFESdmsmR6mYoA39b7Rbmxmzj6fiWd/zGnoqVHsdDfDS352jGzi7ejky tE2PFCgmvWMogDnNMYA17PpZHfISh2XOkC8LIeLyJaJG7qUOf1LfQCd5lpxjjKvqq1QK tm4XcquXwwyVh7jD2dk9dZLO7gpZajdz/nQtyZ5S81XGao7UUEe6vs//kj3fUx7QKrsj d+pXpfPrSLuT3c56EcOAZNKOoRbcRnaAWnnLo9eIH64tyWea3ffdn5ui3rGx7FoFdOJI p4YAgMbcl9gR5Z++7oMZxqLubIu0aAGdU5BME1raQGujoyJTWgqeNPKQsoTDGIx7Scy4 cOcA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-27321-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27321-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id x22-20020a05620a14b600b0078316dbc426si9516289qkj.551.2024.01.16.03.35.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 03:35:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-27321-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-27321-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27321-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id BB5051C22DEF for ; Tue, 16 Jan 2024 11:35:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 84B621B96A; Tue, 16 Jan 2024 11:35:09 +0000 (UTC) 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 X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemd100002.china.huawei.com (7.221.188.184) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788246676650548208 X-GMAIL-MSGID: 1788246676650548208 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 := \ 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 + +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