Index: kthr.c =================================================================== --- kthr.c (revision 203430) +++ kthr.c (working copy) @@ -44,25 +44,25 @@ #include "kgdb.h" #include -static uintptr_t dumppcb; +static CORE_ADDR dumppcb; static int dumptid; -static uintptr_t stoppcbs; +static CORE_ADDR stoppcbs; static __cpumask_t stopped_cpus; static struct kthr *first; struct kthr *curkthr; -uintptr_t +CORE_ADDR kgdb_lookup(const char *sym) { - struct nlist nl[2]; + CORE_ADDR addr; + char *name; - nl[0].n_name = (char *)(uintptr_t)sym; - nl[1].n_name = NULL; - if (kvm_nlist(kvm, nl) != 0) - return (0); - return (nl[0].n_value); + asprintf(&name, "&%s", sym); + addr = kgdb_parse(name); + free(name); + return (addr); } struct kthr * @@ -77,7 +77,8 @@ struct proc p; struct thread td; struct kthr *kt; - uintptr_t addr, paddr; + CORE_ADDR addr; + uintptr_t paddr; while (first != NULL) { kt = first; @@ -85,32 +86,28 @@ free(kt); } - addr = kgdb_lookup("_allproc"); - if (addr == 0) { - warnx("kvm_nlist(_allproc): %s", kvm_geterr(kvm)); + addr = kgdb_lookup("allproc"); + if (addr == 0) return (NULL); - } kvm_read(kvm, addr, &paddr, sizeof(paddr)); - dumppcb = kgdb_lookup("_dumppcb"); - if (dumppcb == 0) { - warnx("kvm_nlist(_dumppcb): %s", kvm_geterr(kvm)); + dumppcb = kgdb_lookup("dumppcb"); + if (dumppcb == 0) return (NULL); - } - addr = kgdb_lookup("_dumptid"); + addr = kgdb_lookup("dumptid"); if (addr != 0) kvm_read(kvm, addr, &dumptid, sizeof(dumptid)); else dumptid = -1; - addr = kgdb_lookup("_stopped_cpus"); + addr = kgdb_lookup("stopped_cpus"); if (addr != 0) kvm_read(kvm, addr, &stopped_cpus, sizeof(stopped_cpus)); else stopped_cpus = 0; - stoppcbs = kgdb_lookup("_stoppcbs"); + stoppcbs = kgdb_lookup("stoppcbs"); while (paddr != 0) { if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) { Index: trgt_i386.c =================================================================== --- trgt_i386.c (revision 203430) +++ trgt_i386.c (working copy) @@ -136,7 +136,7 @@ if (kt == NULL || kt->cpu == NOCPU) return (0); - addr = kgdb_lookup("_gdt"); + addr = kgdb_lookup("gdt"); if (addr == 0) return (0); addr += (kt->cpu * NGDT + GPROC0_SEL) * sizeof(sd); @@ -159,11 +159,9 @@ * change it to be relative to cpu0prvpage instead. */ if (trunc_page(tss) == 0xffc00000) { - addr = kgdb_lookup("_cpu0prvpage"); - if (addr == 0) { - warnx("kvm_nlist(_cpu0prvpage): %s", kvm_geterr(kvm)); + addr = kgdb_lookup("cpu0prvpage"); + if (addr == 0) return (0); - } if (kvm_read(kvm, addr, &cpu0prvpage, sizeof(cpu0prvpage)) != sizeof(cpu0prvpage)) { warnx("kvm_read: %s", kvm_geterr(kvm)); Index: kgdb.h =================================================================== --- kgdb.h (revision 203430) +++ kgdb.h (working copy) @@ -67,7 +67,7 @@ struct kthr *kgdb_thr_select(struct kthr *); char *kgdb_thr_extra_thread_info(int); -uintptr_t kgdb_lookup(const char *sym); +CORE_ADDR kgdb_lookup(const char *sym); CORE_ADDR kgdb_parse_1(const char *, int); #define kgdb_parse(exp) kgdb_parse_1((exp), 0)