aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/amd64-linux-nat.c62
-rw-r--r--gdb/amd64-nat.c7
-rw-r--r--gdb/config.in6
-rwxr-xr-xgdb/configure27
-rw-r--r--gdb/configure.ac7
-rw-r--r--gdbserver/ChangeLog9
-rw-r--r--gdbserver/config.in6
-rwxr-xr-xgdbserver/configure28
-rw-r--r--gdbserver/configure.ac8
-rw-r--r--gdbserver/linux-x86-low.cc29
11 files changed, 22 insertions, 177 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b076a45..78b3ed8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2020-04-27 Simon Marchi <simon.marchi@efficios.com>
+
+ * configure.ac: Remove check for fs_base/gs_base in
+ user_regs_struct.
+ * configure: Re-generate.
+ * config.in: Re-generate.
+ * amd64-nat.c (amd64_native_gregset_reg_offset): Adjust.
+ * amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers,
+ amd64_linux_nat_target::store_registers, ps_get_thread_area, ): Adjust.
+
2020-04-27 Luis Machado <luis.machado@linaro.org>
* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first): Handle
diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
index 63fc84b..d860571 100644
--- a/gdb/amd64-linux-nat.c
+++ b/gdb/amd64-linux-nat.c
@@ -259,30 +259,6 @@ amd64_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum)
amd64_supply_fxsave (regcache, -1, &fpregs);
}
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
- {
- /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
- fs_base and gs_base fields of user_regs_struct can be
- used directly. */
- unsigned long base;
-
- if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
- {
- if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_FS) < 0)
- perror_with_name (_("Couldn't get segment register fs_base"));
-
- regcache->raw_supply (AMD64_FSBASE_REGNUM, &base);
- }
-
- if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
- {
- if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_GS) < 0)
- perror_with_name (_("Couldn't get segment register gs_base"));
-
- regcache->raw_supply (AMD64_GSBASE_REGNUM, &base);
- }
- }
-#endif
}
}
@@ -348,30 +324,6 @@ amd64_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
if (ptrace (PTRACE_SETFPREGS, tid, 0, (long) &fpregs) < 0)
perror_with_name (_("Couldn't write floating point status"));
}
-
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
- {
- /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
- fs_base and gs_base fields of user_regs_struct can be
- used directly. */
- void *base;
-
- if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
- {
- regcache->raw_collect (AMD64_FSBASE_REGNUM, &base);
-
- if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_FS) < 0)
- perror_with_name (_("Couldn't write segment register fs_base"));
- }
- if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
- {
-
- regcache->raw_collect (AMD64_GSBASE_REGNUM, &base);
- if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_GS) < 0)
- perror_with_name (_("Couldn't write segment register gs_base"));
- }
- }
-#endif
}
}
@@ -408,11 +360,7 @@ ps_get_thread_area (struct ps_prochandle *ph,
switch (idx)
{
case FS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
{
- /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
- fs_base and gs_base fields of user_regs_struct can be
- used directly. */
unsigned long fs;
errno = 0;
fs = ptrace (PTRACE_PEEKUSER, lwpid,
@@ -423,12 +371,10 @@ ps_get_thread_area (struct ps_prochandle *ph,
return PS_OK;
}
}
-#endif
- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
- return PS_OK;
+
break;
+
case GS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
{
unsigned long gs;
errno = 0;
@@ -440,10 +386,8 @@ ps_get_thread_area (struct ps_prochandle *ph,
return PS_OK;
}
}
-#endif
- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
- return PS_OK;
break;
+
default: /* Should not happen. */
return PS_BADADDR;
}
diff --git a/gdb/amd64-nat.c b/gdb/amd64-nat.c
index 6d770a1..fb3f522 100644
--- a/gdb/amd64-nat.c
+++ b/gdb/amd64-nat.c
@@ -68,13 +68,6 @@ amd64_native_gregset_reg_offset (struct gdbarch *gdbarch, int regnum)
if (regnum >= num_regs)
return -1;
- /* Kernels that predate Linux 2.6.25 don't provide access to
- these segment registers in user_regs_struct. */
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
- if (regnum == AMD64_FSBASE_REGNUM || regnum == AMD64_GSBASE_REGNUM)
- return -1;
-#endif
-
return reg_offset[regnum];
}
diff --git a/gdb/config.in b/gdb/config.in
index 118e424..d950515 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -469,12 +469,6 @@
/* Define to 1 if `td_pcb' is a member of `struct thread'. */
#undef HAVE_STRUCT_THREAD_TD_PCB
-/* Define to 1 if `fs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-
-/* Define to 1 if `gs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
-
/* Define to 1 if you have the <sys/debugreg.h> header file. */
#undef HAVE_SYS_DEBUGREG_H
diff --git a/gdb/configure b/gdb/configure
index 7e1af58..b6233ad 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -15395,33 +15395,6 @@ _ACEOF
fi
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "fs_base" "ac_cv_member_struct_user_regs_struct_fs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_fs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "gs_base" "ac_cv_member_struct_user_regs_struct_gs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_gs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE 1
-_ACEOF
-
-
-fi
-
-
# See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5
$as_echo_n "checking for PTRACE_GETREGS... " >&6; }
diff --git a/gdb/configure.ac b/gdb/configure.ac
index f405a03..9dac114 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1372,13 +1372,6 @@ AC_CHECK_MEMBERS([struct reg.r_fs, struct reg.r_gs], [], [],
[#include <sys/types.h>
#include <machine/reg.h>])
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base],
- [], [], [#include <sys/types.h>
-#include <sys/user.h>])
-
# See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
AC_MSG_CHECKING(for PTRACE_GETREGS)
AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index f017922..3b5fd99 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,3 +1,12 @@
+2020-04-27 Simon Marchi <simon.marchi@efficios.com>
+
+ * configure.ac: Remove check for fs_base/gs_base in
+ user_regs_struct.
+ * configure: Re-generate.
+ * config.in: Re-generate.
+ * linux-x86-low.cc (x86_64_regmap, x86_fill_gregset,
+ x86_store_gregset): Adjust.
+
2020-04-22 Hannes Domani <ssbssa@yahoo.de>
* server.cc (handle_search_memory_1): Fix gdb_read_memory return value
diff --git a/gdbserver/config.in b/gdbserver/config.in
index 8683ce6..07213aa 100644
--- a/gdbserver/config.in
+++ b/gdbserver/config.in
@@ -303,12 +303,6 @@
/* Define to 1 if `st_blocks' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS
-/* Define to 1 if `fs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-
-/* Define to 1 if `gs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
-
/* Define to 1 if the target supports __sync_*_compare_and_swap */
#undef HAVE_SYNC_BUILTINS
diff --git a/gdbserver/configure b/gdbserver/configure
index 06edb45..5479823 100755
--- a/gdbserver/configure
+++ b/gdbserver/configure
@@ -10043,34 +10043,6 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "fs_base" "ac_cv_member_struct_user_regs_struct_fs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_fs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "gs_base" "ac_cv_member_struct_user_regs_struct_gs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_gs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE 1
-_ACEOF
-
-
-fi
-
-
-
ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
#include <sys/socket.h>
diff --git a/gdbserver/configure.ac b/gdbserver/configure.ac
index 755cc28..090a6dc 100644
--- a/gdbserver/configure.ac
+++ b/gdbserver/configure.ac
@@ -145,14 +145,6 @@ libiberty_INIT
AC_CHECK_DECLS([perror, vasprintf, vsnprintf])
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base],
- [], [], [#include <sys/types.h>
-#include <sys/user.h>])
-
-
AC_CHECK_TYPES(socklen_t, [], [],
[#include <sys/types.h>
#include <sys/socket.h>
diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
index f6a399e..7a65c1d 100644
--- a/gdbserver/linux-x86-low.cc
+++ b/gdbserver/linux-x86-low.cc
@@ -233,11 +233,7 @@ static const int x86_64_regmap[] =
-1,
-1, -1, -1, -1, -1, -1, -1, -1,
ORIG_RAX * 8,
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
21 * 8, 22 * 8,
-#else
- -1, -1,
-#endif
-1, -1, -1, -1, /* MPX registers BND0 ... BND3. */
-1, -1, /* MPX registers BNDCFGU, BNDSTATUS. */
-1, -1, -1, -1, -1, -1, -1, -1, /* xmm16 ... xmm31 (AVX512) */
@@ -413,19 +409,6 @@ x86_fill_gregset (struct regcache *regcache, void *buf)
if (x86_64_regmap[i] != -1)
collect_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
- {
- unsigned long base;
- int lwpid = lwpid_of (current_thread);
-
- collect_register_by_name (regcache, "fs_base", &base);
- ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_SET_FS);
-
- collect_register_by_name (regcache, "gs_base", &base);
- ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_SET_GS);
- }
-#endif
-
return;
}
@@ -468,18 +451,6 @@ x86_store_gregset (struct regcache *regcache, const void *buf)
if (x86_64_regmap[i] != -1)
supply_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
- {
- unsigned long base;
- int lwpid = lwpid_of (current_thread);
-
- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_FS) == 0)
- supply_register_by_name (regcache, "fs_base", &base);
-
- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_GS) == 0)
- supply_register_by_name (regcache, "gs_base", &base);
- }
-#endif
return;
}
#endif