+2021-05-23 Tom de Vries <tdevries@suse.de>
+
+ PR tdep/27822
+ * target.h (struct target_ops): Mention target_thread_architecture in
+ read_description comment.
+ * x86-linux-nat.c (x86_linux_nat_target::read_description): Use
+ pid to determine if process is 64-bit or 32-bit.
+ * aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
+ Same.
+ * ppc-linux-nat.c (ppc_linux_nat_target::read_description): Same.
+ * riscv-linux-nat.c (riscv_linux_nat_target::read_description): Same.
+ * s390-linux-nat.c (s390_linux_nat_target::read_description): Same.
+ * arm-linux-nat.c (arm_linux_nat_target::read_description): Same.
+ Likewise, use pid to determine if kernel supports reading VFP
+ registers.
+
2021-05-22 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* main.c (enum cmdarg_kind): Fix option type comments for
gdb_byte regbuf[ARM_VFP3_REGS_SIZE];
struct iovec iovec;
- tid = inferior_ptid.lwp ();
+ tid = inferior_ptid.pid ();
iovec.iov_base = regbuf;
iovec.iov_len = ARM_VFP3_REGS_SIZE;
{
elf_gregset_t gpregs;
struct iovec iov;
- int tid = inferior_ptid.lwp ();
+ int tid = inferior_ptid.pid ();
iov.iov_base = &gpregs;
iov.iov_len = sizeof (gpregs);
{
/* Make sure that the kernel supports reading VFP registers. Support was
added in 2.6.30. */
- int pid = inferior_ptid.lwp ();
+ int pid = inferior_ptid.pid ();
errno = 0;
char *buf = (char *) alloca (ARM_VFP3_REGS_SIZE);
if (ptrace (PTRACE_GETVFPREGS, pid, 0, buf) < 0 && errno == EIO)
const struct target_desc *
ppc_linux_nat_target::read_description ()
{
- int tid = inferior_ptid.lwp ();
- if (tid == 0)
- tid = inferior_ptid.pid ();
+ int tid = inferior_ptid.pid ();
if (have_ptrace_getsetevrregs)
{
riscv_linux_nat_target::read_description ()
{
const struct riscv_gdbarch_features features
- = riscv_linux_read_features (inferior_ptid.lwp ());
+ = riscv_linux_read_features (inferior_ptid.pid ());
return riscv_lookup_target_description (features);
}
const struct target_desc *
s390_linux_nat_target::read_description ()
{
- int tid = s390_inferior_tid ();
+ int tid = inferior_ptid.pid ();
have_regset_last_break
= check_regset (tid, NT_S390_LAST_BREAK, 8);
virtual void flash_done ()
TARGET_DEFAULT_NORETURN (tcomplain ());
- /* Describe the architecture-specific features of this target. If
- OPS doesn't have a description, this should delegate to the
- "beneath" target. Returns the description found, or NULL if no
- description was available. */
+ /* Describe the architecture-specific features of the current
+ inferior.
+
+ Returns the description found, or nullptr if no description was
+ available.
+
+ If some target features differ between threads, the description
+ returned by read_description (and the resulting gdbarch) won't
+ accurately describe all threads. In this case, the
+ thread_architecture method can be used to obtain gdbarches that
+ accurately describe each thread. */
virtual const struct target_desc *read_description ()
TARGET_DEFAULT_RETURN (NULL);
static uint64_t xcr0;
uint64_t xcr0_features_bits;
- /* GNU/Linux LWP ID's are process ID's. */
- tid = inferior_ptid.lwp ();
- if (tid == 0)
- tid = inferior_ptid.pid (); /* Not a threaded program. */
+ tid = inferior_ptid.pid ();
#ifdef __x86_64__
{