aboutsummaryrefslogtreecommitdiffstats
path: root/lang/m3gdb/files/patch-af
blob: 5ab1e1b742e6b8309d21b908b80f7690c68b1e6f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
--- kvm-fbsd.c.orig Sun Feb  7 20:36:10 1999
+++ kvm-fbsd.c  Sat Sep 18 11:23:31 2004
@@ -22,6 +22,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <fcntl.h>
+#include <sys/types.h>
 #include <sys/sysctl.h>
 #include <sys/param.h>
 #include <sys/time.h>
@@ -361,10 +362,19 @@
   struct user *uaddr;
 
   /* find the pcb for the current process */
+#if defined(__FreeBSD__) && __FreeBSD__ >= 5
+  if (cur_proc == NULL || kvread (&cur_proc->p_uarea, &uaddr))
+#else
   if (cur_proc == NULL || kvread (&cur_proc->p_addr, &uaddr))
+#endif
     error ("cannot read u area ptr for proc at %#x", cur_proc);
+#if defined(__FreeBSD__) && __FreeBSD__ >= 5
+  if (read_pcb (core_kd, (CORE_ADDR)&uaddr->u_kproc.ki_pcb) < 0)
+    error ("cannot read pcb at %#x", &uaddr->u_kproc.ki_pcb);
+#else
   if (read_pcb (core_kd, (CORE_ADDR)&uaddr->u_pcb) < 0)
     error ("cannot read pcb at %#x", &uaddr->u_pcb);
+#endif
 }
 
 static void
@@ -450,7 +451,11 @@
       kp = kvm_getprocs(core_kd, KERN_PROC_PID, paddr, &cnt);
       if (!cnt)
         error("invalid pid");
+#if defined(__FreeBSD__) && __FreeBSD__ >= 5
+      if (set_proc_context((CORE_ADDR)kp->ki_paddr))
+#else
       if (set_proc_context((CORE_ADDR)kp->kp_eproc.e_paddr))
+#endif
         error("invalid proc address");
   }
 }
@@ -643,7 +644,11 @@
             return (0);
        if (lp.p_pid != pid)
            continue;
+#if defined(__FreeBSD__) && __FreeBSD__ >= 5
+       kp.ki_paddr = p;
+#else
        kp.kp_eproc.e_paddr = p;
+#endif
        *cnt = 1;
        return (1);
   }
@@ -835,9 +836,8 @@
   supply_register (6, (char *)&pcb.pcb_esi);
   supply_register (7, (char *)&pcb.pcb_edi);
   supply_register (PC_REGNUM, (char *)&pcb.pcb_eip);
-  for (i = 9; i < 13; ++i)     /* eflags, cs, ss, ds, es */
+  for (i = 9; i < 14; ++i)     /* eflags, cs, ss, ds, es, fs */
     supply_register (i, (char *)&noreg);
-  supply_register (14, (char *)&pcb.pcb_fs);
   supply_register (15, (char *)&pcb.pcb_gs);
 
   /* XXX 80387 registers? */
@@ -919,7 +919,7 @@
 #if 0
   kcore_stratum,       /* to_stratum */
 #else
-  NULL,                /* haven't yet found this one... */
+  0,               /* haven't yet found this one... */
 #endif
   NULL,                /* to_next */
   0,               /* to_has_all_memory */