/* Darwin support for GDB, the GNU debugger.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 Free Software Foundation, Inc.
Contributed by Apple Computer, Inc.
i386_darwin_fetch_inferior_registers (struct target_ops *ops,
struct regcache *regcache, int regno)
{
- thread_t current_thread = ptid_get_tid (inferior_ptid);
+ thread_t current_thread = ptid_get_tid (regcache_get_ptid (regcache));
int fetched = 0;
- struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ struct gdbarch *gdbarch = regcache->arch ();
#ifdef BFD64
if (gdbarch_ptr_bit (gdbarch) == 64)
(unsigned long) current_thread);
MACH_CHECK_ERROR (ret);
}
+
+ /* Some kernels don't sanitize the values. */
+ gp_regs.uts.ts64.__fs &= 0xffff;
+ gp_regs.uts.ts64.__gs &= 0xffff;
+
amd64_supply_native_gregset (regcache, &gp_regs.uts, -1);
fetched++;
}
i386_darwin_store_inferior_registers (struct target_ops *ops,
struct regcache *regcache, int regno)
{
- thread_t current_thread = ptid_get_tid (inferior_ptid);
- struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ thread_t current_thread = ptid_get_tid (regcache_get_ptid (regcache));
+ struct gdbarch *gdbarch = regcache->arch ();
#ifdef BFD64
if (gdbarch_ptr_bit (gdbarch) == 64)
amd64_collect_native_gregset (regcache, &gp_regs.uts, regno);
+ /* Some kernels don't sanitize the values. */
+ gp_regs.uts.ts64.__fs &= 0xffff;
+ gp_regs.uts.ts64.__gs &= 0xffff;
+
ret = thread_set_state (current_thread, x86_THREAD_STATE,
(thread_state_t) &gp_regs,
x86_THREAD_STATE_COUNT);