print_percentage: Use floating point to avoid incorrect results when
[deliverable/binutils-gdb.git] / gdb / i386fbsd-nat.c
index 1c19ac87eb408e7d4ebed050a4824ad0c7a4fc05..efc61b6cbbb8e4b360ee0541e1292fd243464e45 100644 (file)
@@ -1,5 +1,6 @@
 /* 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.
 
@@ -26,6 +27,8 @@
 #include <sys/ptrace.h>
 #include <sys/sysctl.h>
 
+#include "i386-tdep.h"
+
 /* Prevent warning from -Wmissing-prototypes.  */
 void _initialize_i386fbsd_nat (void);
 
@@ -47,7 +50,7 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
 
   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
@@ -59,9 +62,11 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
         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;
     }
@@ -79,7 +84,7 @@ _initialize_i386fbsd_nat (void)
 {
   /* 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.  */
@@ -94,8 +99,8 @@ _initialize_i386fbsd_nat (void)
     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
This page took 0.024646 seconds and 4 git commands to generate.