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.
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". */
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);