aarch64_gdb_get_pauth_reg() -- although disabled since commit 5787d17a42 ("target/arm: Don't advertise aarch64-pauth.xml to gdb") is still compiled in. It calls pauth_ptr_mask() which is located in target/arm/tcg/pauth_helper.c, a TCG specific helper.
Restrict aarch64_gdb_get_pauth_reg() to TCG to avoid a linking error when TCG is not enabled: Undefined symbols for architecture arm64: "_pauth_ptr_mask", referenced from: _aarch64_gdb_get_pauth_reg in target_arm_gdbstub64.c.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Fixes: e995d5cce4 ("target/arm: Implement gdbstub pauth extension") Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> --- target/arm/gdbstub.c | 3 ++- target/arm/gdbstub64.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index 3bd86cee97..655369dc74 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -21,6 +21,7 @@ #include "cpu.h" #include "exec/gdbstub.h" #include "gdbstub/helpers.h" +#include "sysemu/tcg.h" #include "internals.h" #include "cpregs.h" @@ -526,7 +527,7 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu) * crash if they see this XML from QEMU; disable it for the 8.0 * release, pending a better solution. */ - if (isar_feature_aa64_pauth(&cpu->isar)) { + if (isar_feature_aa64_pauth(&cpu->isar) && tcg_enabled()) { gdb_register_coprocessor(cs, aarch64_gdb_get_pauth_reg, aarch64_gdb_set_pauth_reg, 4, "aarch64-pauth.xml", 0); diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c index ec1e07f139..3bb0923cbf 100644 --- a/target/arm/gdbstub64.c +++ b/target/arm/gdbstub64.c @@ -210,6 +210,8 @@ int aarch64_gdb_set_sve_reg(CPUARMState *env, uint8_t *buf, int reg) return 0; } +#ifdef CONFIG_TCG + int aarch64_gdb_get_pauth_reg(CPUARMState *env, GByteArray *buf, int reg) { switch (reg) { @@ -244,6 +246,8 @@ int aarch64_gdb_set_pauth_reg(CPUARMState *env, uint8_t *buf, int reg) return 0; } +#endif + static void output_vector_union_type(GString *s, int reg_width, const char *name) { -- 2.38.1