diff options
Diffstat (limited to 'gnu/usr.bin/binutils/gdb/kvm-fbsd.c')
-rw-r--r-- | gnu/usr.bin/binutils/gdb/kvm-fbsd.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c index 07a1e18..b2238ad 100644 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c +++ b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c @@ -402,6 +402,24 @@ kcore_files_info (t) printf ("\t`%s'\n", core_file); } +static CORE_ADDR +ksym_maxuseraddr() +{ + static CORE_ADDR maxuseraddr; + struct minimal_symbol *sym; + + if (maxuseraddr == 0) + { + sym = lookup_minimal_symbol ("PTmap", NULL, NULL); + if (sym == NULL) { + maxuseraddr = VM_MAXUSER_ADDRESS; + } else { + maxuseraddr = SYMBOL_VALUE_ADDRESS (sym); + } + } + return maxuseraddr; +} + static int kcore_xfer_kmem (memaddr, myaddr, len, write, target) CORE_ADDR memaddr; @@ -413,7 +431,7 @@ kcore_xfer_kmem (memaddr, myaddr, len, write, target) int ns; int nu; - if (memaddr >= (CORE_ADDR)VM_MAXUSER_ADDRESS) + if (memaddr >= ksym_maxuseraddr()) nu = 0; else { @@ -423,7 +441,7 @@ kcore_xfer_kmem (memaddr, myaddr, len, write, target) if (nu == len) return (nu); memaddr += nu; - if (memaddr != (CORE_ADDR)VM_MAXUSER_ADDRESS) + if (memaddr != ksym_maxuseraddr()) return (nu); myaddr += nu; len -= nu; @@ -584,7 +602,7 @@ kvm_open (efile, cfile, sfile, perm, errout) } physrd (cfd, ksym_lookup ("IdlePTD") - KERNOFF, (char*)&sbr, sizeof sbr); - printf ("IdlePTD %lu\n", (unsigned long)sbr); + printf ("IdlePTD at phsyical address 0x%08lx\n", (unsigned long)sbr); curpcb = kvtophys(cfd, pcpu + PCPU_OFFSET (curpcb)); physrd (cfd, curpcb, (char*)&curpcb, sizeof curpcb); @@ -594,7 +612,7 @@ kvm_open (efile, cfile, sfile, perm, errout) else paddr = kvtophys (cfd, curpcb); read_pcb (cfd, paddr); - printf ("initial pcb at %lx\n", (unsigned long)paddr); + printf ("initial pcb at physical address 0x%08lx\n", (unsigned long)paddr); return (cfd); } |