]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Improve GDBserver ptrace error message
authorLuis Machado <luis.machado@linaro.org>
Thu, 23 Dec 2021 18:16:46 +0000 (15:16 -0300)
committerLuis Machado <luis.machado@linaro.org>
Fri, 14 Jan 2022 14:29:59 +0000 (11:29 -0300)
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
gdbserver/linux-low.cc
gdbserver/linux-low.h

index b2c631ae4b083d2ede0ea0afcb698f17f647ea9c..9c2a8349e866add9a210c850a5a4094a14174fbe 100644 (file)
@@ -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
 };
index 7fe0be3f065c8102ec6468bd552c54e59da702b8..0ba60881f1119037bb2df317327483939eee8e63 100644 (file)
@@ -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;
                }
            }
index 503f23d3702881ccd7171739cab342aa4451b008..b2b3e74612e42d4d3aa0b30c728b87f5a26cf2cc 100644 (file)
@@ -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;
 };