From nobody Mon Apr 13 20:05:52 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 648B7C43217 for ; Wed, 9 Nov 2022 18:51:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231670AbiKISvf (ORCPT ); Wed, 9 Nov 2022 13:51:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41390 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229900AbiKISvO (ORCPT ); Wed, 9 Nov 2022 13:51:14 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E2C851707F for ; Wed, 9 Nov 2022 10:50:50 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id 204-20020a2510d5000000b006be7970889cso17642028ybq.21 for ; Wed, 09 Nov 2022 10:50:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=XDNhPIt4/z9SJ7uwDwdB3T2uKfBtceScPS7ow3Eeh9c=; b=HALTwabRTeqIzYg2xWUsMszov/CdFvQk0hIIEeL/AcK32EAM9q84QhHnbVz008nHY3 JOKVZebfnNR9iKzyrjIyOcWDlfNPtNhl4ck93W/pIAmNlDnr3NeauapCFXAPYEDzIvtp 0H4H9yacURDsTcSMOOjd+IVyiCH5FIFi6GxSA1GunFz1/EWW/oD+emnblFMWIfcDKNif eyQGXIZIQAinyR0d7O5NP4BLFO7Ygx1i6GPQ1h84SY/oGum8pe/ejkzsYR0anmjaOHVn HjEUyMZ9xHCau0S2yk7K549RVwSJPH5AFBKngVcSeCpRR6GBzMUjqcvascMCSwUyt+Z6 PUag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XDNhPIt4/z9SJ7uwDwdB3T2uKfBtceScPS7ow3Eeh9c=; b=KQCGZZNU94SwqskkyjKqoF78bQmhbVhx/C9GmaHDoIblLWVyHKsC6KhpngCsDRfr8C UlX3DpnRWCrRP0YZG3kreFnVYV18MekSlXhCoNaLs1VIRXJ9HFbm3Dth5kFm/piLqY3j Ni3ji9QjPEffawksnNjoqOSFwXRGLeyW1deRqlNRZdu8c+TYJWRtEaPLUSvn7BGFWfIO uF0tDVKI8RVtjKZJZ4DUz2XZM1/Sutw7HAerMlqHgGlq+u8jUeTQqiXrLVNfiZCnY9MS O0yrThBAfMFqDuWsnBEXmV3kCidGIV2iMTPp7tSuyxR9tEOtMKWhT65TODbymCDLv/BJ i0uQ== X-Gm-Message-State: ACrzQf1ge6yy8Wro7CX+r0iznJUscBoa+6lnAgd8lqgqqXgA0G+BQ/1d NBdEBbtuE0ORW5puNfVZMluIfGkxR2OM X-Google-Smtp-Source: AMsMyM6FTO2X32armDtX3+De/2vmhDy0NZShGOke/PKQ3s72ZThETClUjM776A1o25YdFTpJdeAhrUzm+uBC X-Received: from irogers.svl.corp.google.com ([2620:15c:2d4:203:b06f:a254:5ce9:c442]) (user=irogers job=sendgmr) by 2002:a05:690c:a0c:b0:36e:8228:a127 with SMTP id cg12-20020a05690c0a0c00b0036e8228a127mr1137236ywb.299.1668019850065; Wed, 09 Nov 2022 10:50:50 -0800 (PST) Date: Wed, 9 Nov 2022 10:49:10 -0800 In-Reply-To: <20221109184914.1357295-1-irogers@google.com> Message-Id: <20221109184914.1357295-11-irogers@google.com> Mime-Version: 1.0 References: <20221109184914.1357295-1-irogers@google.com> X-Mailer: git-send-email 2.38.1.431.g37b22c650d-goog Subject: [PATCH v2 10/14] perf build: Install libsymbol locally when building From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Masahiro Yamada , Nicolas Schier , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, bpf@vger.kernel.org, Nick Desaulniers , Andrii Nakryiko Cc: Stephane Eranian , Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The perf build currently has a '-Itools/lib' on the CC command line. This causes issues as the libapi, libsubcmd, libtraceevent, libbpf and libsymbol headers are all found via this path, making it impossible to override include behavior. Change the libsymbol build mirroring the libbpf, libsubcmd, libapi, libperf and libtraceevent build, so that it is installed in a directory along with its headers. A later change will modify the include behavior. Don't build kallsyms.o as part of util as this will lead to duplicate definitions. Add kallsym's directory to the MANIFEST rather than individual files, so that the Build and Makefile are added to a source tar ball. Signed-off-by: Ian Rogers --- tools/perf/.gitignore | 1 + tools/perf/MANIFEST | 3 +-- tools/perf/Makefile.perf | 25 ++++++++++++++++++++++--- tools/perf/util/Build | 5 ----- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore index 65b995159cf1..675c03ec1f1c 100644 --- a/tools/perf/.gitignore +++ b/tools/perf/.gitignore @@ -42,6 +42,7 @@ libapi/ libbpf/ libperf/ libsubcmd/ +libsymbol/ libtraceevent/ libtraceevent_plugins/ fixdep diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST index f5d72f936a6b..c8e8e05b4ff1 100644 --- a/tools/perf/MANIFEST +++ b/tools/perf/MANIFEST @@ -13,8 +13,7 @@ tools/lib/ctype.c tools/lib/hweight.c tools/lib/rbtree.c tools/lib/string.c -tools/lib/symbol/kallsyms.c -tools/lib/symbol/kallsyms.h +tools/lib/symbol tools/lib/find_bit.c tools/lib/bitmap.c tools/lib/list_sort.c diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index 6e5e3f7730b5..6c1a2a3ccc38 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -246,6 +246,7 @@ LIBTRACEEVENT_DIR =3D $(srctree)/tools/lib/traceevent/ LIBTRACEEVENT_PLUGINS_DIR =3D $(LIBTRACEEVENT_DIR)/plugins LIBBPF_DIR =3D $(srctree)/tools/lib/bpf/ LIBSUBCMD_DIR =3D $(srctree)/tools/lib/subcmd/ +LIBSYMBOL_DIR =3D $(srctree)/tools/lib/symbol/ LIBPERF_DIR =3D $(srctree)/tools/lib/perf/ DOC_DIR =3D $(srctree)/tools/perf/Documentation/ =20 @@ -340,6 +341,15 @@ LIBSUBCMD_DESTDIR =3D $(LIBSUBCMD_OUTPUT) LIBSUBCMD_INCLUDE =3D $(LIBSUBCMD_DESTDIR)/include LIBSUBCMD =3D $(LIBSUBCMD_OUTPUT)/libsubcmd.a =20 +ifneq ($(OUTPUT),) + LIBSYMBOL_OUTPUT =3D $(abspath $(OUTPUT))/libsymbol +else + LIBSYMBOL_OUTPUT =3D $(CURDIR)/libsymbol +endif +LIBSYMBOL_DESTDIR =3D $(LIBSYMBOL_OUTPUT) +LIBSYMBOL_INCLUDE =3D $(LIBSYMBOL_DESTDIR)/include +LIBSYMBOL =3D $(LIBSYMBOL_OUTPUT)/libsymbol.a + ifneq ($(OUTPUT),) LIBPERF_OUTPUT =3D $(abspath $(OUTPUT))/libperf else @@ -398,7 +408,7 @@ endif =20 export PERL_PATH =20 -PERFLIBS =3D $(LIBAPI) $(LIBSUBCMD) $(LIBPERF) +PERFLIBS =3D $(LIBAPI) $(LIBPERF) $(LIBSUBCMD) $(LIBSYMBOL) ifndef NO_LIBBPF ifndef LIBBPF_DYNAMIC PERFLIBS +=3D $(LIBBPF) @@ -887,6 +897,15 @@ $(LIBSUBCMD)-clean: $(call QUIET_CLEAN, libsubcmd) $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) =20 +$(LIBSYMBOL): FORCE | $(LIBSYMBOL_OUTPUT) + $(Q)$(MAKE) -C $(LIBSYMBOL_DIR) O=3D$(LIBSYMBOL_OUTPUT) \ + DESTDIR=3D$(LIBSYMBOL_DESTDIR) prefix=3D \ + $@ install_headers + +$(LIBSYMBOL)-clean: + $(call QUIET_CLEAN, libsymbol) + $(Q)$(RM) -r -- $(LIBSYMBOL_OUTPUT) + help: @echo 'Perf make targets:' @echo ' doc - make *all* documentation (see below)' @@ -1071,7 +1090,7 @@ SKELETONS +=3D $(SKEL_OUT)/bperf_cgroup.skel.h $(SKEL= _OUT)/func_latency.skel.h SKELETONS +=3D $(SKEL_OUT)/off_cpu.skel.h $(SKEL_OUT)/lock_contention.skel= .h SKELETONS +=3D $(SKEL_OUT)/kwork_trace.skel.h =20 -$(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBPERF_OUTPUT) $(LIBS= UBCMD_OUTPUT): +$(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBPERF_OUTPUT) $(LIBS= UBCMD_OUTPUT) $(LIBSYMBOL_OUTPUT): $(Q)$(MKDIR) -p $@ =20 ifndef LIBTRACEEVENT_DYNAMIC @@ -1121,7 +1140,7 @@ endif # BUILD_BPF_SKEL bpf-skel-clean: $(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS) =20 -clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD= )-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-skel-clean tests-cor= esight-targets-clean libtraceevent_plugins-clean +clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD= )-clean $(LIBSYMBOL)-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-s= kel-clean tests-coresight-targets-clean libtraceevent_plugins-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive = $(OUTPUT)perf-iostat $(LANG_BINDINGS) $(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete= -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected diff --git a/tools/perf/util/Build b/tools/perf/util/Build index 47a7db3ad0a1..ab37f588ee8b 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build @@ -19,7 +19,6 @@ perf-y +=3D perf_event_attr_fprintf.o perf-y +=3D evswitch.o perf-y +=3D find_bit.o perf-y +=3D get_current_dir_name.o -perf-y +=3D kallsyms.o perf-y +=3D levenshtein.o perf-y +=3D llvm-utils.o perf-y +=3D mmap.o @@ -294,10 +293,6 @@ CFLAGS_expr.o +=3D -Wno-redundant-decls CFLAGS_header.o +=3D -include $(OUTPUT)PERF-VERSION-FILE CFLAGS_arm-spe.o +=3D -I$(srctree)/tools/arch/arm64/include/ =20 -$(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE - $(call rule_mkdir) - $(call if_changed_dep,cc_o_c) - $(OUTPUT)util/argv_split.o: ../lib/argv_split.c FORCE $(call rule_mkdir) $(call if_changed_dep,cc_o_c) --=20 2.38.1.431.g37b22c650d-goog