[PATCH 3/3] perf script: Provide weak stubs for instruction decoding
Li Guan
guanli.oerv at isrc.iscas.ac.cn
Wed May 13 08:48:51 PDT 2026
When cross-compiling perf for architectures that do not yet implement
hardware-specific instruction decoding (such as RISC-V and ARM64),
the linker fails with undefined references to `dump_insn` and
`arch_is_uncond_branch` in builtin-script.c.
Provide global __weak stubs for these functions to ensure successful
linking across all architectures. Architectures that support these
features will automatically override these weak symbols.
Signed-off-by: Li Guan <guanli.oerv at isrc.iscas.ac.cn>
---
tools/perf/builtin-script.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index c8ac9f01a3..80a8f0e80b 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -4608,3 +4608,25 @@ int cmd_script(int argc, const char **argv)
out:
return err;
}
+
+/*
+ * Provide weak stubs for architectures that have not yet implemented
+ * instruction decoding. This prevents linker errors (undefined
+ * references) on non-x86 architectures (like ARM64, RISC-V) when
+ * building perf script.
+ */
+const char * __weak dump_insn(struct perf_insn *x __maybe_unused,
+ u64 ip __maybe_unused,
+ u8 *inbuf __maybe_unused,
+ int inlen __maybe_unused,
+ int *lenp __maybe_unused)
+{
+ return NULL;
+}
+
+int __weak arch_is_uncond_branch(const unsigned char *buf __maybe_unused,
+ size_t len __maybe_unused,
+ int x86_64 __maybe_unused)
+{
+ return 0;
+}
--
2.54.0
More information about the linux-riscv
mailing list