Don't invoke ptrace in the target read_description method if there is
not an active inferior to query via ptrace. Instead, use the default
register set for the architecture.
---
gdb/aarch64-fbsd-nat.c | 3 +++
gdb/amd64-fbsd-nat.c | 3 +++
gdb/arm-fbsd-nat.c | 3 +++
gdb/i386-fbsd-nat.c | 3 +++
4 files changed, 12 insertions(+)
@@ -120,6 +120,9 @@ aarch64_fbsd_nat_target::store_registers (struct regcache *regcache,
const struct target_desc *
aarch64_fbsd_nat_target::read_description ()
{
+ if (inferior_ptid == null_ptid)
+ return nullptr;
+
aarch64_features features;
features.tls = have_regset (inferior_ptid, NT_ARM_TLS)? 1 : 0;
return aarch64_read_description (features);
@@ -310,6 +310,9 @@ amd64_fbsd_nat_target::read_description ()
struct reg regs;
int is64;
+ if (inferior_ptid == null_ptid)
+ return nullptr;
+
if (ptrace (PT_GETREGS, inferior_ptid.pid (),
(PTRACE_TYPE_ARG3) ®s, 0) == -1)
perror_with_name (_("Couldn't get registers"));
@@ -93,6 +93,9 @@ arm_fbsd_nat_target::read_description ()
const struct target_desc *desc;
bool tls = false;
+ if (inferior_ptid == null_ptid)
+ return this->beneath ()->read_description ();
+
#ifdef PT_GETREGSET
tls = have_regset (inferior_ptid, NT_ARM_TLS) != 0;
#endif
@@ -315,6 +315,9 @@ i386_fbsd_nat_target::read_description ()
#endif
static int xmm_probed;
+ if (inferior_ptid == null_ptid)
+ return nullptr;
+
#ifdef PT_GETXSTATE_INFO
if (!xsave_probed)
{