Re: [PATCH v7 00/11] Capstone/llvm improvements + dlopen support
From: Arnaldo Carvalho de Melo
Date: Mon Oct 06 2025 - 14:41:35 EST
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@toolbx 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;