GREAT! Congratulations, I know it was not easy ;-)
I only tested it lightly, but so far it work smoothly... even while
trying strange things like using a text symbol as data :-)
There is something which is surprising me however, it is the use of the
shlib number of NetBSD (i.e. /lib/libc.so.12.175).
We are incompatible with NetBSD on two fundamental issues:
- some constants are different (SIGVTALRM, ELOOP)
- some typedefs are different (off_t, time_t)
I see those issues as fundamental because it impedes the exchange of
binaries between the two operating systems; OTOH, the lack of some
system calls in MINIX is not no serious: a NetBSD binary which is
calling setpgid() won't be loaded on MINIX since there is no shared
objects which provides this symbol: this clearly prevents bad things to
occur; but if lseek(2) is called with the wrong size, chaos will result.
Of course, this was not an issue at all with static linking, but shared
libraries also bring in their own problems :-) (this is known, in a
slightly different form, in the Windows world as "DLL hell".)
Now, such issues are dealt with upgrades of the standard C library;
NetBSD did it in the past, particularly for typedefs: this is why there
are all those _time50 "renamed" symbols (which is the 32-bit time_t
variant, present up to NetBSD 5.)
The easiest counterpart of such changes, as I understand it, is that the
major number (.12) is bumped, to avoid possible mismatches: the ELF
standard prevents the dynamic linker to successfully bind to a shared
object is the asked-for major number differ. Obviously, this easy scheme
will not work with the shared libraries, because of the use of NetBSD
numbers... unless we change it to some lesser number NOW, before any
package are distributed in the wild!
Then, assuming we want to be able to use directly NetBSD binaries (which
seem to me a welcome idea, why would you recompile Gcc or Firefox if you
can use the i386 NetBSD binary directly?), we should amend all the
incompatible 'fundamental' constants and typedefs to match those of
NetBSD. Of course each of these changes will mean a difficult upgrade to
do: which is why I advocate to start sooner! Perhaps it will resolve as
a "big bang switch" for the vast majority of people, such as what was
the switch to the new libc, where the compatibility period (when the new
libc was compilable with the non-ELF gcc), or the new boot loader, came
to an end very quickly because it was not sustainable to maintain both
lines.
I do not want here to paint in black the work done, while I am really
impressed! But I thought the problem I forecast is real, and will only
cause griefs in the future if not handled now. Please consider it.
Antoine