/* Native-dependent code for FreeBSD/i386.
- Copyright 2001 Free Software Foundation, Inc.
+
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
#include <sys/ptrace.h>
#include <sys/sysctl.h>
+#include "i386-tdep.h"
+
/* Prevent warning from -Wmissing-prototypes. */
void _initialize_i386fbsd_nat (void);
if (!step)
{
- unsigned int eflags;
+ ULONGEST eflags;
/* Workaround for a bug in FreeBSD. Make sure that the trace
flag is off when doing a continue. There is a code path
never goes through the kernel's trap() function which would
normally clear it. */
- eflags = read_register (PS_REGNUM);
+ regcache_cooked_read_unsigned (current_regcache, I386_EFLAGS_REGNUM,
+ &eflags);
if (eflags & 0x0100)
- write_register (PS_REGNUM, eflags & ~0x0100);
+ regcache_cooked_write_unsigned (current_regcache, I386_EFLAGS_REGNUM,
+ eflags & ~0x0100);
request = PT_CONTINUE;
}
{
/* FreeBSD provides a kern.ps_strings sysctl that we can use to
locate the sigtramp. That way we can still recognize a sigtramp
- if it's location is changed in a new kernel. Of course this is
+ if its location is changed in a new kernel. Of course this is
still based on the assumption that the sigtramp is placed
directly under the location where the program arguments and
environment can be found. */
len = sizeof (ps_strings);
if (sysctl (mib, 2, &ps_strings, &len, NULL, 0) == 0)
{
- i386bsd_sigtramp_start = ps_strings - 128;
- i386bsd_sigtramp_end = ps_strings;
+ i386fbsd_sigtramp_start_addr = ps_strings - 128;
+ i386fbsd_sigtramp_end_addr = ps_strings;
}
}
#endif