fix the powerpc64 quirk handling by introducing a prefix quirk and
using it as appropriate. fix the (postfix) quirk.
now rump and powerpc64 get along nicely.
rump into share/mk. This is to make it useful for all kernel
builders.
Note: we have waaay too many weird and wonderful ways of making
kernel code (monolithic kernel, modules, rump). There should be
only one way to build kernel code instead of a maze of twisty little
.mk files, all not quite alike. When that is fixed, this snippet can go
into the more generic .mk file.
protection from a shell prompt with the command line:
make -f /sys/rump/Makefile RUMP_SYMREN=module.kobj
This is benefitial especially on i386, where rump ABI matches the
kernel ABI (sans the renaming isolation). In the above example
module.kobj can then be loaded in a rump kernel either statically
at link-time simply by giving module.kobj as an object to the
linker, or dynamically at runtime by calling rump_sys_modctl(MODCTL_LOAD).
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
libgcc, and causes problems on some platforms. Currently there is
no easy way to say "link against libgcc but not against libc", so
just comment out -nostdlibs until a better way is invented.
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
1) invoke objcopy with --preserve-dates or it will update all the
dates in the .a file to the present date.
2) add an invocation of ar-as-ranlib or the object file index ends up
with the date in it. (it might also end up with an incorrect
index.)
made to fail. Specifically, change
.ifdef(SYMBOL) -> .ifdef SYMBOL or .if defined(SYMBOL),
and corresponding for .ifndef.
Also correct one error in lib/libm/Makefile (.ifdef (${MKCOMPLEX} != "no")?!?).
lacking special instructions. We always use the spinlocked version
(could use RAS on UP NetBSD host, but it's not portable).
* Add platform-based symbol quirk tables for selectively not renaming
toolchain symbols for some platforms. Although, this should really
depend on the (toolchain,platform)-tuple and not just the platform.
This allows arm, hppa, mips and sh3 to build succesfully with an
isolated rump kernel namespace. ... now, one arch remains: vax.
you must compile vax. then, only then will you MI be.
symbols. This fixes e.g. fortify and sh3 millicode issues. This
is still not perfect, however, since e.g. the MIPS _gp_disp is not
in ^__.
XXX: we provide a few ^__ symbols in the kernel, but those can be
easily renamed. The harder problem is how to keep the kernel clean
of those afterwards.
symbol namespace. This has several implications:
* no symbols are accidentally linked against host platform libraries
* all host platform access is done via rumpuser, and hence the
portability of rump is now well defined
* functionality such as proplib can now exist within the rump virtual
kernel and the application using it
Thanks to uwe for originally suggesting the bulk renaming approach
over a pint of what I believe was very crisp, curious and untypical
stout. It had an almost acidic characteristic with fruity notes
and lacking dark and roasted flavours.
And thanks to lukem for pointing me in the right direction with make.