describes more about what failed. now errors tell you which actual
variable was being requested instead of simply saying "not yours".
tested on amd64 as working. written for arm64 testing.
In the prototype of the gzclose() function of changed from:
typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
to:
typedef voidp gzFile;
This caused type mismatch when calling funopen(3) as:
'int (*)(void *)' != 'int (*)(struct gzFile_s *)'
Cast gzclose to (int (*)(void *)) when used in funopen(3).
default, build a handful of tools as n64 so they work properly.
unfortunately, they're also static as dynamic n64 has a problem.
of these tools pstat is probably the lowest hanging fruit to convert
to sysctl. systat would be close were it not for the netstat screen,
which includes netstat itself.
the rest are difficult to perhaps foolish.
the upside is that netstat, pmap and fstat all work properly now.
ddb running on crash dumps, but with two notable changes:
- Breakpoints, watches, etc are obviously never going to work so they
are not handled.
- You can pipe output to the shell, e.g. ps | grep foo
Items remaining to be done:
- Port it to architectures other than i386. This isn't difficult, just
a case of making db_disasm.c/db_trace.c or their equivalent compile
and work.
- Make more of the "show" commands work, e.g "show uvmexp".
by extracting ksyms state from the dump, so we have symbols for modules
loaded at the time of the crash. If ksyms extraction fails, this falls
back to the current behaviour of copying /netbsd.
- Leave it disabled for the moment: (1) we are about to branch (2) most
tools understand the artificial kernel but gdb has trouble with it for
some reason.
more than 2GB of RAM.
"dumpsize" in the on-disk core header is in pages, but, unfortunately,
c.size in our kcore format is an unsigned 32-bit int, gross.
We sleaze it, using a 64-bit int internally here and handing it to
libkvm as a *signed* 32-bit int. Won't always work, but shouldn't be
broken any worse than it is now, and sometimes work better.
We must fix the kcore format and libkvm.