* bsd-kvm.c (bsd_kvm_fetch_registers): Directly return after
authorMark Kettenis <kettenis@gnu.org>
Sun, 27 Jun 2004 15:56:20 +0000 (15:56 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sun, 27 Jun 2004 15:56:20 +0000 (15:56 +0000)
fetching from BSD_KVM_PADDR.  Correctly lookup address for
"_thread0".

gdb/ChangeLog
gdb/bsd-kvm.c

index 1889112..6df260c 100644 (file)
@@ -1,5 +1,9 @@
 2004-06-27  Mark Kettenis  <kettenis@gnu.org>
 
+       * bsd-kvm.c (bsd_kvm_fetch_registers): Directly return after
+       fetching from BSD_KVM_PADDR.  Correctly lookup address for
+       "_thread0".
+
        * amd64fbsd-nat.c: Include <sys/types.h, <machine/pcb.h> and
        "bsd-kvm.h".
        (amd64fbsd_supply_pcb): New funcion.
index 37fc2b4..a037f84 100644 (file)
@@ -128,7 +128,10 @@ bsd_kvm_fetch_registers (int regnum)
   struct nlist nl[2];
 
   if (bsd_kvm_paddr)
-    bsd_kvm_fetch_pcb (bsd_kvm_paddr);
+    {
+      bsd_kvm_fetch_pcb (bsd_kvm_paddr);
+      return;
+    }
 
   /* On dumping core, BSD kernels store the faulting context (PCB)
      in the variable "dumppcb".  */
@@ -185,8 +188,8 @@ bsd_kvm_fetch_registers (int regnum)
       struct pcb *paddr;
 
       /* Found thread0.  */
-      nl[1].n_value += offsetof (struct thread, td_pcb);
-      if (kvm_read (core_kd, nl[1].n_value, &paddr, sizeof paddr) == -1)
+      nl[0].n_value += offsetof (struct thread, td_pcb);
+      if (kvm_read (core_kd, nl[0].n_value, &paddr, sizeof paddr) == -1)
        error ("%s", kvm_geterr (core_kd));
 
       bsd_kvm_fetch_pcb (paddr);