diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/amd64-linux-nat.c | 62 | ||||
-rw-r--r-- | gdb/amd64-nat.c | 7 | ||||
-rw-r--r-- | gdb/config.in | 6 | ||||
-rwxr-xr-x | gdb/configure | 27 | ||||
-rw-r--r-- | gdb/configure.ac | 7 | ||||
-rw-r--r-- | gdbserver/ChangeLog | 9 | ||||
-rw-r--r-- | gdbserver/config.in | 6 | ||||
-rwxr-xr-x | gdbserver/configure | 28 | ||||
-rw-r--r-- | gdbserver/configure.ac | 8 | ||||
-rw-r--r-- | gdbserver/linux-x86-low.cc | 29 |
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 |