[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAP-5=fU6U7SBx7tWq-Pemxh3RACS8gxX8oM6p9+M8PMAtB_6FQ@mail.gmail.com>
Date: Mon, 6 Oct 2025 11:44:00 -0700
From: Ian Rogers <irogers@...gle.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
Namhyung Kim <namhyung@...nel.org>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>,
Adrian Hunter <adrian.hunter@...el.com>, Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <nick.desaulniers+lkml@...il.com>, Bill Wendling <morbo@...gle.com>,
Justin Stitt <justinstitt@...gle.com>, Charlie Jenkins <charlie@...osinc.com>,
Eric Biggers <ebiggers@...nel.org>, "Masami Hiramatsu (Google)" <mhiramat@...nel.org>,
James Clark <james.clark@...aro.org>, Collin Funk <collin.funk1@...il.com>,
"Dr. David Alan Gilbert" <linux@...blig.org>, Li Huafei <lihuafei1@...wei.com>,
Athira Rajeev <atrajeev@...ux.ibm.com>, Stephen Brennan <stephen.s.brennan@...cle.com>,
Dmitry Vyukov <dvyukov@...gle.com>, Alexandre Ghiti <alexghiti@...osinc.com>,
Haibo Xu <haibo1.xu@...el.com>, Andi Kleen <ak@...ux.intel.com>, linux-kernel@...r.kernel.org,
linux-perf-users@...r.kernel.org, bpf@...r.kernel.org, llvm@...ts.linux.dev,
Song Liu <song@...nel.org>
Subject: Re: [PATCH v7 00/11] Capstone/llvm improvements + dlopen support
On Mon, Oct 6, 2025 at 11:41 AM Arnaldo Carvalho de Melo
<acme@...nel.org> wrote:
>
> On Mon, Oct 06, 2025 at 03:39:13PM -0300, Arnaldo Carvalho de Melo wrote:
> > On Sun, Oct 05, 2025 at 02:22:01PM -0700, Ian Rogers wrote:
> > > v7: Refactor now the first 5 patches, that largely moved code around,
> > > have landed. Move the dlopen code to the end of the series so that
> > > the first 8 patches can be picked improving capstone/LLVM support
>
> > So I tentatively picked the first 8 patches, will test it now, hopefully
> > we can go with it to have BPF annotation...
>
> > Wait, will try to fix this one:
>
> > ⬢ [acme@...lbx perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test
> > make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j32 DESTDIR=/tmp/tmp.w26bDGykTM
> > cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j32 DESTDIR=/tmp/tmp.w26bDGykTM
> > BUILD: Doing 'make -j32' parallel build
> > <SNIP>
> > Auto-detecting system features:
> > ... libdw: [ OFF ]
> > ... glibc: [ on ]
> > ... libelf: [ OFF ]
> > ... libnuma: [ OFF ]
> > ... numa_num_possible_cpus: [ OFF ]
> > ... libpython: [ OFF ]
> > ... libcapstone: [ OFF ]
> > ... llvm-perf: [ OFF ]
> > ... zlib: [ OFF ]
> > ... lzma: [ OFF ]
> > ... get_cpuid: [ on ]
> > ... bpf: [ on ]
> > ... libaio: [ on ]
> > ... libzstd: [ OFF ]
> > <SNIP>
> > CC tests/api-io.o
> > CC util/sha1.o
> > CC util/smt.o
> > LD util/intel-pt-decoder/perf-util-in.o
> > CC tests/demangle-java-test.o
> > CC util/strbuf.o
> > CC util/string.o
> > CC tests/demangle-ocaml-test.o
> > CC util/strlist.o
> > CC tests/demangle-rust-v0-test.o
> > CC tests/pfm.o
> > CC tests/parse-metric.o
> > CC util/strfilter.o
> > CC tests/pe-file-parsing.o
> > util/llvm.c: In function ‘init_llvm’:
> > util/llvm.c:78:17: error: implicit declaration of function ‘LLVMInitializeAllTargetInfos’ [-Wimplicit-function-declaration]
> > 78 | LLVMInitializeAllTargetInfos();
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > util/llvm.c:79:17: error: implicit declaration of function ‘LLVMInitializeAllTargetMCs’ [-Wimplicit-function-declaration]
> > 79 | LLVMInitializeAllTargetMCs();
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~
> > util/llvm.c:80:17: error: implicit declaration of function ‘LLVMInitializeAllDisassemblers’ [-Wimplicit-function-declaration]
> > 80 | LLVMInitializeAllDisassemblers();
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > util/llvm.c: At top level:
> > util/llvm.c:73:13: error: ‘init_llvm’ defined but not used [-Werror=unused-function]
> > 73 | static void init_llvm(void)
> > | ^~~~~~~~~
> > cc1: all warnings being treated as errors
> > CC tests/expand-cgroup.o
> > CC util/top.o
> > CC tests/perf-time-to-tsc.o
> > CC util/usage.o
> > make[6]: *** [/home/acme/git/perf-tools-next/tools/build/Makefile.build:86: util/llvm.o] Error 1
> > make[6]: *** Waiting for unfinished jobs....
> > CC tests/dlfilter-test.o
> > CC tests/sigtrap.o
> > CC tests/event_groups.o
>
> Guess this will be enough:
>
> diff --git a/tools/perf/util/llvm.c b/tools/perf/util/llvm.c
> index 565cad1969e5e51f..2ebf1f5f65bf77c7 100644
> --- a/tools/perf/util/llvm.c
> +++ b/tools/perf/util/llvm.c
> @@ -70,6 +70,7 @@ int llvm__addr2line(const char *dso_name __maybe_unused, u64 addr __maybe_unused
> #endif
> }
>
> +#ifdef HAVE_LIBLLVM_SUPPORT
> static void init_llvm(void)
> {
> static bool init;
> @@ -90,7 +91,6 @@ static void init_llvm(void)
> * should add some textual annotation for after the instruction. The caller
> * will use this information to add the actual annotation.
> */
> -#ifdef HAVE_LIBLLVM_SUPPORT
> struct symbol_lookup_storage {
> u64 branch_addr;
> u64 pcrel_load_addr;
Ah crap. Yeah, it's a PITA trying to keep LLVM and not LLVM builds
happy. perf_LLVM* fixes this by possibly always punting to the
dlopen/dlsym version when HAVE_LIBLLVM_SUPPORT isn't there - hence a
lot of the comments I've been making. I forgot to rebuild without
libLLVM and so missed needing the extra #ifdefs. I agree with the fix
but the fix can be removed in the (now) later patches that use
dlopen/dlsym.
Thanks,
Ian
Powered by blists - more mailing lists