Greg Troxel gdt@lexort.com writes:
This may be a NetBSD bug and I am investigating that in parallel.
The problem on NetBSD is including time.h with one set of visibility defines, and then stdlib with another. This seems likely to include some other headers (e.g. sys/types.h) with restricted visbility, and then because sys/types.h include guard is set, stdlib doesn't re-include it and thus doesn't get the definitions with the changed visibility macros.
While I can see the intent, it seems that code should define visibilty macros before including any headers and then not change them, so this doesn't feel like a NetBSD bug. But perhaps I am wrong on that.
My minimized reproduction for this:
#define _XOPEN_SOURCE 600
#include <time.h>
#undef _XOPEN_SOURCE
#include <stdlib.h>
int main(int argc, char **argv) { return 0; }
which fails exactly as unpatched db_ut.c.