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.
Previously the native target could report an error from a failed
ptrace operation when fetching a tdesc without an attached process.
For example on FreeBSD/amd64:
(gdb) target native
Done. Use the "run" command to start a process.
(gdb) unset tdesc filename
Couldn't get registers: Operation not permitted.
const struct target_desc *
aarch64_fbsd_nat_target::read_description ()
{
+ if (inferior_ptid == null_ptid)
+ return this->beneath ()->read_description ();
+
aarch64_features features;
features.tls = have_regset (inferior_ptid, NT_ARM_TLS)? 1 : 0;
return aarch64_read_description (features);
struct reg regs;
int is64;
+ if (inferior_ptid == null_ptid)
+ return this->beneath ()->read_description ();
+
if (ptrace (PT_GETREGS, inferior_ptid.pid (),
(PTRACE_TYPE_ARG3) ®s, 0) == -1)
perror_with_name (_("Couldn't get registers"));
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
#endif
static int xmm_probed;
+ if (inferior_ptid == null_ptid)
+ return this->beneath ()->read_description ();
+
#ifdef PT_GETXSTATE_INFO
if (!xsave_probed)
{