aboutsummaryrefslogtreecommitdiff
path: root/gdb/nat
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2024-03-26 18:52:44 +0000
committerAndrew Burgess <aburgess@redhat.com>2024-03-26 18:52:44 +0000
commit49a7660fb50cc3c68e7830eb098905d068a3ccbf (patch)
tree8471a0dcc41846551322f58510aa9aea098356c5 /gdb/nat
parent0991b56074af7e6b106015c67925fdcfe039f077 (diff)
downloadgdb-49a7660fb50cc3c68e7830eb098905d068a3ccbf.zip
gdb-49a7660fb50cc3c68e7830eb098905d068a3ccbf.tar.gz
gdb-49a7660fb50cc3c68e7830eb098905d068a3ccbf.tar.bz2
Revert "gdb/gdbserver: share some code relating to target description creation"
This reverts commit cd9b374ffe372dcaf7e4c15548cf53a301d8dcdd.
Diffstat (limited to 'gdb/nat')
-rw-r--r--gdb/nat/x86-linux-tdesc.c124
-rw-r--r--gdb/nat/x86-linux-tdesc.h75
2 files changed, 0 insertions, 199 deletions
diff --git a/gdb/nat/x86-linux-tdesc.c b/gdb/nat/x86-linux-tdesc.c
deleted file mode 100644
index be7014d..0000000
--- a/gdb/nat/x86-linux-tdesc.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Target description related code for GNU/Linux x86 (i386 and x86-64).
-
- Copyright (C) 2024 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "gdbsupport/common-defs.h"
-#include "nat/x86-linux-tdesc.h"
-#ifdef __x86_64__
-#include "arch/amd64.h"
-#endif
-#include "arch/i386.h"
-
-#include "gdbsupport/common-defs.h"
-#include "nat/x86-linux.h"
-#include "nat/x86-linux-dregs.h"
-#include "nat/gdb_ptrace.h"
-#include "nat/x86-xstate.h"
-#include "nat/x86-linux-tdesc.h"
-
-#include <cstdint>
-#include <cstdlib>
-#include <linux/uio.h>
-#include <elf.h>
-#include <sys/user.h>
-#include <sys/user.h>
-
-/* See nat/x86-linux-tdesc.h. */
-
-const target_desc *
-x86_linux_tdesc_for_tid (int tid, enum tribool *have_ptrace_getregset,
- gdb::function_view<void (uint64_t)> xcr0_init_cb,
- const char *error_msg, uint64_t *xcr0_storage)
-{
-#ifdef __x86_64__
-
- x86_linux_arch_size arch_size = x86_linux_ptrace_get_arch_size (tid);
- bool is_64bit = arch_size.is_64bit ();
- bool is_x32 = arch_size.is_x32 ();
-
- if (sizeof (void *) == 4 && is_64bit && !is_x32)
- error ("%s", error_msg);
-
-#elif HAVE_PTRACE_GETFPXREGS
- if (have_ptrace_getfpxregs == -1)
- {
- elf_fpxregset_t fpxregs;
-
- if (ptrace (PTRACE_GETFPXREGS, tid, 0, (int) &fpxregs) < 0)
- {
- have_ptrace_getfpxregs = 0;
- *have_ptrace_getregset = TRIBOOL_FALSE;
- return i386_linux_read_description (X86_XSTATE_X87_MASK);
- }
- }
-#endif
-
- if (*have_ptrace_getregset == TRIBOOL_UNKNOWN)
- {
- uint64_t xstateregs[(X86_XSTATE_SSE_SIZE / sizeof (uint64_t))];
- struct iovec iov;
-
- iov.iov_base = xstateregs;
- iov.iov_len = sizeof (xstateregs);
-
- /* Check if PTRACE_GETREGSET works. */
- if (ptrace (PTRACE_GETREGSET, tid,
- (unsigned int) NT_X86_XSTATE, &iov) < 0)
- {
- *have_ptrace_getregset = TRIBOOL_FALSE;
- *xcr0_storage = 0;
- }
- else
- {
- *have_ptrace_getregset = TRIBOOL_TRUE;
-
- /* Get XCR0 from XSAVE extended state. */
- *xcr0_storage = xstateregs[(I386_LINUX_XSAVE_XCR0_OFFSET
- / sizeof (uint64_t))];
-
-#ifdef __x86_64__
- /* No MPX on x32. */
- if (is_64bit && is_x32)
- *xcr0_storage &= ~X86_XSTATE_MPX;
-#endif /* __x86_64__ */
-
- xcr0_init_cb (*xcr0_storage);
- }
- }
-
- /* Check the native XCR0 only if PTRACE_GETREGSET is available. If
- PTRACE_GETREGSET is not available then set xcr0_features_bits to
- zero so that the "no-features" descriptions are returned by the
- switches below. */
- uint64_t xcr0_features_bits;
- if (*have_ptrace_getregset == TRIBOOL_TRUE)
- xcr0_features_bits = *xcr0_storage & X86_XSTATE_ALL_MASK;
- else
- xcr0_features_bits = 0;
-
-#ifdef __x86_64__
- if (is_64bit)
- {
- return amd64_linux_read_description (xcr0_features_bits, is_x32);
- }
- else
-#endif
- return i386_linux_read_description (xcr0_features_bits);
-
- gdb_assert_not_reached ("failed to return tdesc");
-}
diff --git a/gdb/nat/x86-linux-tdesc.h b/gdb/nat/x86-linux-tdesc.h
deleted file mode 100644
index 3727a8b..0000000
--- a/gdb/nat/x86-linux-tdesc.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Target description related code for GNU/Linux x86 (i386 and x86-64).
-
- Copyright (C) 2024 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef NAT_X86_LINUX_TDESC_H
-#define NAT_X86_LINUX_TDESC_H
-
-#include "gdbsupport/function-view.h"
-
-struct target_desc;
-
-/* Return the target description for Linux thread TID.
-
- When *HAVE_PTRACE_GETREGSET is TRIBOOL_UNKNOWN then the current value of
- xcr0 is read using ptrace calls and stored into *XCR0_STORAGE. Then
- XCR0_INIT_CB is called with the value of *XCR0_STORAGE and
- *HAVE_PTRACE_GETREGSET is set to TRIBOOL_TRUE.
-
- If the attempt to read xcr0 using ptrace fails then *XCR0_STORAGE is set
- to zero and *HAVE_PTRACE_GETREGSET is set to TRIBOOL_FALSE.
-
- The storage pointed to by XCR0_STORAGE must exist until the program
- terminates, this storage is used to cache the xcr0 value. As such
- XCR0_INIT_CB will only be called once if xcr0 is successfully read using
- ptrace, or not at all if the ptrace call fails.
-
- This function returns a target description based on the extracted xcr0
- value along with other characteristics of the thread identified by TID.
-
- This function can return nullptr if we encounter a machine configuration
- for which a target_desc cannot be created. Ideally this would not be
- the case, we should be able to create a target description for every
- possible machine configuration. See amd64_linux_read_description and
- i386_linux_read_description for cases when nullptr might be
- returned.
-
- ERROR_MSG is using in an error() call if we try to create a target
- description for a 64-bit process but this is a 32-bit build of GDB. */
-
-extern const target_desc *
-x86_linux_tdesc_for_tid (int tid, enum tribool *have_ptrace_getregset,
- gdb::function_view<void (uint64_t)> xcr0_init_cb,
- const char *error_msg, uint64_t *xcr0_storage);
-
-#ifdef __x86_64__
-
-/* Return the right amd64-linux target descriptions according to
- XCR0_FEATURES_BIT and IS_X32. This is implemented separately in both
- GDB and gdbserver. */
-
-extern const target_desc *amd64_linux_read_description
- (uint64_t xcr0_features_bit, bool is_x32);
-
-#endif
-
-/* Return the target description according to XCR0. This is implemented
- separately in both GDB and gdbserver. */
-extern const struct target_desc *i386_linux_read_description (uint64_t xcr0);
-
-#endif /* NAT_X86_LINUX_TDESC_H */