From: Luis Machado Date: Thu, 23 Dec 2021 18:16:46 +0000 (-0300) Subject: Improve GDBserver ptrace error message X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d59d79fd57801624624ec659c936a30037a46aa;p=thirdparty%2Fbinutils-gdb.git Improve GDBserver ptrace error message Issue: https://git.morello-project.org/morello/binutils-gdb/-/issues/9 Improve error message when setting capability registers fails. Mention the name of the set (capability) explicitly so it is clear what register set we are talking about. --- diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc index b2c631ae4b0..9c2a8349e86 100644 --- a/gdbserver/linux-aarch64-low.cc +++ b/gdbserver/linux-aarch64-low.cc @@ -751,7 +751,7 @@ static struct regset_info aarch64_regsets[] = { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_MORELLO, AARCH64_LINUX_CREGS_SIZE, OPTIONAL_REGS, aarch64_fill_cregset, aarch64_store_cregset, nullptr, - "cheri.ptrace_forge_cap" + "cheri.ptrace_forge_cap", "capability" }, NULL_REGSET }; @@ -786,7 +786,7 @@ static struct regset_info aarch64_sve_regsets[] = { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_MORELLO, AARCH64_LINUX_CREGS_SIZE, OPTIONAL_REGS, aarch64_fill_cregset, aarch64_store_cregset, nullptr, - "cheri.ptrace_forge_cap" + "cheri.ptrace_forge_cap", "capability" }, NULL_REGSET }; diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc index 7fe0be3f065..0ba60881f11 100644 --- a/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc @@ -5246,9 +5246,19 @@ regsets_store_inferior_registers (struct regsets_info *regsets_info, { if (regset->sysctl_write_should_warn) { - warning ("Unable to store registers.\n" - "Please run \"sysctl %s=1\".", - regset->sysctl_write_permission); + if (regset->register_set_name == nullptr) + { + warning ("Unable to store registers.\n" + "Please run \"sysctl %s=1\".", + regset->sysctl_write_permission); + } + else + { + warning ("Unable to store %s registers.\n" + "Please run \"sysctl %s=1\".", + regset->register_set_name, + regset->sysctl_write_permission); + } regset->sysctl_write_should_warn = false; } } diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index 503f23d3702..b2b3e74612e 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -48,7 +48,8 @@ enum regset_type { /* The arch's regsets array initializer must be terminated with a NULL regset. */ #define NULL_REGSET \ - { 0, 0, 0, -1, (enum regset_type) -1, nullptr, nullptr, nullptr, nullptr } + { 0, 0, 0, -1, (enum regset_type) -1, nullptr, nullptr, nullptr, nullptr, \ + nullptr } struct regset_info { @@ -65,6 +66,7 @@ struct regset_info switch. */ const char *sysctl_read_permission = nullptr; const char *sysctl_write_permission = nullptr; + const char *register_set_name = nullptr; bool sysctl_read_should_warn = true; bool sysctl_write_should_warn = true; };