* bsd-kvm.c (bsd_kvm_fetch_registers): Directly return after

fetching from BSD_KVM_PADDR.  Correctly lookup address for
"_thread0".
This commit is contained in:
Mark Kettenis 2004-06-27 15:56:20 +00:00
parent 315c4276b1
commit efe1d7b9b0
2 changed files with 10 additions and 3 deletions

View 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.

View 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);