X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Famd64-linux-nat.c;h=d860571c37d809799ae750ca50d666895094ba1a;hb=a350efd4fb368a35ada608f6bc26ccd3bed0ae6b;hp=63fc84b0b1431eab0fa6ed797c2cd2493b2d5472;hpb=6c2659886f7018fcca26ee0fc813bc9748fb8513;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c index 63fc84b0b1..d860571c37 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; }