diff options
Diffstat (limited to 'devel/gdb/files/patch-gdb-amd64-bsd-nat.c')
-rw-r--r-- | devel/gdb/files/patch-gdb-amd64-bsd-nat.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/devel/gdb/files/patch-gdb-amd64-bsd-nat.c b/devel/gdb/files/patch-gdb-amd64-bsd-nat.c new file mode 100644 index 000000000000..3741d942a985 --- /dev/null +++ b/devel/gdb/files/patch-gdb-amd64-bsd-nat.c @@ -0,0 +1,32 @@ +diff --git gdb/amd64-bsd-nat.c gdb/amd64-bsd-nat.c +index ca61a3551b..0f875f8296 100644 +--- gdb/amd64-bsd-nat.c ++++ gdb/amd64-bsd-nat.c +@@ -28,6 +28,7 @@ + #include <sys/types.h> + #include <sys/ptrace.h> + #include <machine/reg.h> ++#include <machine/psl.h> + + #include "amd64-tdep.h" + #include "amd64-nat.h" +@@ -95,12 +96,19 @@ amd64bsd_store_inferior_registers (struct target_ops *ops, + if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) + { + struct reg regs; ++ register_t old_rflags; + + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't get registers")); + ++ old_rflags = regs.r_rflags; + amd64_collect_native_gregset (regcache, ®s, regnum); + ++ /* This is a workaround about the PSL_USERCHANGE posix limitation. */ ++ if ((regs.r_rflags ^ old_rflags ) & ~PSL_USERCHANGE) ++ { ++ regs.r_rflags ^= (regs.r_rflags ^ old_rflags ) & ~PSL_USERCHANGE; ++ } + if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't write registers")); + |