History log of /netbsd-current/sys/rump/Makefile.rump
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.138 20-May-2024 christos

Handle versions > 100


# 1.137 19-May-2024 christos

version dup3


# 1.136 04-Feb-2024 andvar

fix tripple/quadruple "r" letter typos in comments and log messages.


Revision tags: thorpej-ifq-base thorpej-altq-separation-base
# 1.135 28-Jul-2023 christos

Add epoll(2) from Theodore Preduta as part of GSoC 2023


Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
# 1.134 03-May-2022 hannken

Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
# 1.133 07-Jul-2021 martin

Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.132 25-Apr-2021 christos

branches: 1.132.2;
use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.136 04-Feb-2024 andvar

fix tripple/quadruple "r" letter typos in comments and log messages.


Revision tags: thorpej-ifq-base thorpej-altq-separation-base
# 1.135 28-Jul-2023 christos

Add epoll(2) from Theodore Preduta as part of GSoC 2023


Revision tags: netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
# 1.134 03-May-2022 hannken

Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
# 1.133 07-Jul-2021 martin

Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.132 25-Apr-2021 christos

branches: 1.132.2;
use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.135 28-Jul-2023 christos

Add epoll(2) from Theodore Preduta as part of GSoC 2023


Revision tags: netbsd-10-base bouyer-sunxi-drm-base
# 1.134 03-May-2022 hannken

Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
# 1.133 07-Jul-2021 martin

Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.132 25-Apr-2021 christos

branches: 1.132.2;
use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.134 03-May-2022 hannken

Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
# 1.133 07-Jul-2021 martin

Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.132 25-Apr-2021 christos

branches: 1.132.2;
use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.133 07-Jul-2021 martin

Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base
# 1.132 25-Apr-2021 christos

use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


Revision tags: thorpej-i2c-spi-conf-base
# 1.132 25-Apr-2021 christos

use MACHINE_MIPS64


Revision tags: thorpej-cfargs-base
# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-futex-base
# 1.130 14-Mar-2021 rin

branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.131 13-Apr-2021 christos

Pass -isystem and -imacro ccp flags to lint


Revision tags: thorpej-cfargs-base thorpej-futex-base
# 1.130 14-Mar-2021 rin

Build rump for PPC_OEA64 on evbppc64.


# 1.129 12-Jun-2020 roy

branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.130 14-Mar-2021 rin

Build rump for PPC_OEA64 on evbppc64.


Revision tags: thorpej-futex-base
# 1.129 12-Jun-2020 roy

Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.129 12-Jun-2020 roy

Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.128 29-May-2020 kamil

Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: is-mlppp-base ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.127 09-Mar-2020 kamil

Revert previous

Requested by <riastradh>


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.126 09-Mar-2020 kamil

Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.


Revision tags: ad-namecache-base3
# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

branches: 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.125 20-Feb-2020 joerg

The global offset table is spelled .TOC. on PPC64, so preserve that symbol.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.124 03-Mar-2018 christos

Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.123 18-Jan-2018 mrg

implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.


Revision tags: tls-maxphys-base-20171202
# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


# 1.122 08-Oct-2017 joerg

Honor REPROFLAGS for rump components.


Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.


Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
# 1.121 09-Jul-2016 matt

Pass down ${CPUFLAGS}


Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.120 15-Nov-2015 pooka

describe => rumpdescribe


# 1.119 19-Oct-2015 pooka

Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users


Revision tags: nick-nhusb-base-20150921
# 1.118 24-Aug-2015 pooka

Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h


# 1.117 24-Aug-2015 pooka

remove librump/rumpnet/opt, consolidate in rump/include/opt


# 1.116 24-Aug-2015 pooka

Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.


# 1.115 24-Aug-2015 pooka

Use BUILDRUMP_IMACROS if specified.


# 1.114 21-Aug-2015 pooka

Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)


Revision tags: nick-nhusb-base-20150606
# 1.113 03-Jun-2015 pooka

Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.


# 1.112 03-Jun-2015 pooka

Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.


# 1.111 24-Apr-2015 pooka

There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson


# 1.110 23-Apr-2015 pooka

Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.


# 1.109 23-Apr-2015 pooka

For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.


# 1.108 23-Apr-2015 pooka

Default compat to 60 70, now that it hopefully generates no fallout.


# 1.107 22-Apr-2015 pooka

Put 50 back to compat list for a while (some fallout)


# 1.106 22-Apr-2015 pooka

Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.


# 1.105 22-Apr-2015 pooka

default compat to 60 & 70


# 1.104 22-Apr-2015 pooka

Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT


Revision tags: nick-nhusb-base-20150406
# 1.103 02-Dec-2014 pooka

Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)


# 1.102 01-Dec-2014 pooka

need -Wno-unused-parameter with -Wextra


# 1.101 01-Dec-2014 pooka

define the warnings used for hypercall components once


# 1.100 01-Dec-2014 pooka

RUMPCOMP_USER has been deprecated for long enough, remove it.


Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.99 22-Jul-2014 alnsn

branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.


# 1.98 20-Jun-2014 pooka

Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.97 25-Apr-2014 pooka

Remove old HAVE_SUN_LD compat handling, it was there long enough.


# 1.96 23-Apr-2014 pooka

Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).


# 1.95 15-Apr-2014 pooka

add multi-inclusion protection


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.94 16-Mar-2014 pooka

branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".


# 1.93 16-Mar-2014 pooka

Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.


# 1.92 15-Mar-2014 pooka

Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.


# 1.91 13-Mar-2014 pooka

Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.


# 1.90 10-Mar-2014 pooka

Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.


# 1.89 09-Dec-2013 pooka

Make ktrace a compile-time option


# 1.88 09-Dec-2013 pooka

Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.


# 1.87 03-Sep-2013 pooka

RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.


# 1.86 30-Aug-2013 pooka

Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.


# 1.85 05-Aug-2013 joerg

The linker script is the argument of -T, so keep them together.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.84 16-Jul-2013 pooka

COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)


# 1.83 09-Jul-2013 pooka

Fix pasto: BUILDRUMP_CPPFLAGS was used twice.


# 1.82 04-Jul-2013 pooka

Apparently warning flags are not kept in CWARNFLAGS. Compensate.


# 1.81 28-Apr-2013 pooka

branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls


# 1.80 28-Apr-2013 pooka

Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)


# 1.79 27-Apr-2013 pooka

Allow to completely skip the ldscript, useful for linkers that don't need one.


Revision tags: agc-symver-base
# 1.78 17-Mar-2013 christos

fix typo


# 1.77 16-Mar-2013 christos

order too


# 1.76 16-Mar-2013 christos

uniquefy, really should fix this so there are no dup rules.


# 1.75 16-Mar-2013 christos

Fix the build w/o DESTDIR


# 1.74 15-Mar-2013 pooka

one more typofix


# 1.73 15-Mar-2013 pooka

On second thought, let's use make syntax in makefiles ...


# 1.72 15-Mar-2013 pooka

Use correct ldscript etc. for Sun ld.


# 1.71 15-Mar-2013 pooka

Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.


# 1.70 01-Mar-2013 pooka

Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.


# 1.69 01-Mar-2013 pooka

Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.68 22-Nov-2012 pooka

Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.


# 1.67 21-Nov-2012 pooka

Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.


# 1.66 21-Nov-2012 pooka

Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.


# 1.65 21-Nov-2012 pooka

Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.


# 1.64 13-Nov-2012 pooka

add some -U's for linux builds


Revision tags: yamt-pagecache-base6
# 1.63 10-Aug-2012 joerg

branches: 1.63.2;
Deal with optional HAVE_GCC.


# 1.62 05-Aug-2012 pooka

Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.61 10-May-2011 matt

branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.60 01-Feb-2011 matt

Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h


Revision tags: jruoho-x86intr-base
# 1.59 06-Jan-2011 pooka

branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)


Revision tags: matt-mips64-premerge-20101231
# 1.58 06-Dec-2010 pooka

use -isystem where appropriate


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.57 11-May-2010 pooka

Limit visibility of _RUMPKERNEL to prevent abuse.


Revision tags: uebayasi-xip-base1
# 1.56 26-Apr-2010 pooka

Give a cpp hint if the native kernel abi is supported.


# 1.55 28-Mar-2010 mrg

apply a patch from dennis fergusson:

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.


# 1.54 22-Mar-2010 mrg

add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.


# 1.53 21-Mar-2010 pooka

Move make snippets for use with config(1) ioconf functionality from
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.


Revision tags: yamt-nfs-mp-base9
# 1.52 01-Mar-2010 pooka

branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.


# 1.51 17-Feb-2010 pooka

Invert inverted comment and verbosify it.


# 1.50 16-Feb-2010 pooka

Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.


# 1.49 09-Feb-2010 pooka

IOCONFIG comes from .CURDIR


Revision tags: uebayasi-xip-base
# 1.48 03-Feb-2010 pooka

branches: 1.48.2;
add a rule for locators.h too


# 1.47 03-Feb-2010 pooka

If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.


# 1.46 31-Jan-2010 pooka

Make (no pun intended) it possible to perform component symbol
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).


Revision tags: matt-premerge-20091211
# 1.45 12-Dec-2009 pooka

Use linker script to make __start/stop_link_set_modules be present
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).


# 1.44 27-Nov-2009 pooka

Include arch/include/Makefile.inc for some compiler flags.


# 1.43 20-Nov-2009 pooka

Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
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.


# 1.42 17-Nov-2009 pooka

Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.


Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
# 1.41 13-Sep-2009 pooka

binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
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.40 08-Sep-2009 pooka

kernel code needs -Wno-format-zero-length


# 1.39 07-Sep-2009 pooka

Always define __NetBSD__ (for builds on non-NetBSD)


Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
# 1.38 03-May-2009 pooka

define DEBUGPRINT


Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
# 1.37 26-Apr-2009 pooka

prettyprint long line, no functional change


# 1.36 01-Apr-2009 perry

More reproducible build fixes:

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.)


# 1.35 21-Mar-2009 pooka

remove RANLIB too. pointed out by perry.


# 1.34 19-Mar-2009 pooka

Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.


Revision tags: nick-hppapmap-base2
# 1.33 12-Feb-2009 lukem

Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet


# 1.32 23-Jan-2009 pooka

branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment


# 1.31 18-Jan-2009 he

Change the use of formally undocumented features, which have now been
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")?!?).


Revision tags: mjf-devfs2-base
# 1.30 14-Jan-2009 pooka

Do rump kernel symbol protection for vax. All archs support it now.


# 1.29 12-Jan-2009 pooka

* Add adapted version of the userspace atomic_cas ops for platforms
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.


# 1.28 11-Jan-2009 pooka

Treat all of ^__ as compiler namespace and do not rename those
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.


# 1.27 10-Jan-2009 pooka

* sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename


# 1.26 10-Jan-2009 pooka

Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.


# 1.25 08-Jan-2009 pooka

Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.


# 1.24 08-Jan-2009 pooka

Rename symbols in rump kernel libraries to always belong to a "rump"
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.


# 1.23 02-Jan-2009 pooka

Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1


# 1.22 01-Jan-2009 pooka

disable strict aliasing to mirror kernel build flags


# 1.21 01-Jan-2009 pooka

Purge multiple kernel opt files.


# 1.20 30-Dec-2008 pooka

Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.


# 1.19 30-Dec-2008 pooka

Switch amd64 rumps to the kernel ABI.


# 1.18 29-Dec-2008 pooka

Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.


# 1.17 29-Dec-2008 pooka

We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.


# 1.16 16-Dec-2008 pooka

Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)


# 1.15 16-Dec-2008 pooka

liberate trailing whitespace


# 1.14 16-Dec-2008 pooka

-Isys/arch is used in kernel builds


Revision tags: haad-dm-base2 haad-nbase2 haad-dm-base
# 1.13 08-Dec-2008 pooka

Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
# 1.12 09-Oct-2008 pooka

branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
# 1.11 29-Jul-2008 pooka

Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...


# 1.10 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.9 18-Jul-2008 pooka

enable DIAGNOSTIC


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.8 31-May-2008 ad

branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.


Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.7 03-May-2008 lukem

branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
# 1.6 24-Jan-2008 pooka

branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().


Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase reinoud-bufcleanup-base vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base
# 1.5 25-Aug-2007 pooka

branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.


# 1.4 15-Aug-2007 pooka

branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.


# 1.3 07-Aug-2007 pooka

branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.


# 1.2 07-Aug-2007 pooka

-I${NETBSDSRCDIR}/common/include


Revision tags: matt-mips64-base
# 1.1 05-Aug-2007 pooka

branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.