From 5900b71471e45c9e56f942a2d8b20992970a5789 Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Thu, 23 Dec 2021 15:16:46 -0300 Subject: [PATCH] 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. --- gdbserver/linux-aarch64-low.cc | 2 +- gdbserver/linux-low.cc | 16 +++++++++++++--- gdbserver/linux-low.h | 4 +++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc index 8dff539ef69..ec0f40cc840 100644 --- a/gdbserver/linux-aarch64-low.cc +++ b/gdbserver/linux-aarch64-low.cc @@ -845,7 +845,7 @@ static struct regset_info aarch64_regsets[] = { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_MORELLO, 0, 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 56be6e8edc6..58a2a12b332 100644 --- a/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc @@ -5029,9 +5029,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 1f98039e485..e2259ae96c7 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; }; -- 2.47.2