d6454414fd
__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, ...).
106 lines
2.9 KiB
Plaintext
106 lines
2.9 KiB
Plaintext
$NetBSD: README.compileopts,v 1.4 2014/04/23 23:25:45 pooka Exp $
|
|
|
|
This file describes compile-time options for rump kernels. Additionally,
|
|
NetBSD build options will have an effect. See src/share/mk/bsd.README
|
|
for a desciption of NetBSD build options.
|
|
|
|
Note: after changing an option, do a clean build.
|
|
|
|
|
|
RUMP_DIAGNOSTIC
|
|
|
|
values: yes|no
|
|
defval: yes
|
|
effect: Iff "yes", build with -DDIAGNOSTIC.
|
|
|
|
|
|
RUMP_DEBUG
|
|
|
|
values: defined / not defined
|
|
effect: Iff defined, build with -DDEBUG.
|
|
|
|
|
|
RUMP_LOCKDEBUG
|
|
|
|
values: defined / not defined
|
|
effect: Iff defined, build with -DLOCKDEBUG.
|
|
|
|
|
|
RUMP_KTRACE
|
|
|
|
values: yes|no
|
|
defval: yes
|
|
effect: Iff "yes", build with -DKTRACE.
|
|
|
|
|
|
RUMP_LOCKS_UP
|
|
|
|
values: yes|no
|
|
defval: no
|
|
effect: If "yes", build rump kernel with uniprocess-optimized locking.
|
|
An implication of this is that RUMP_NCPU==1 is required at
|
|
runtime. If "no", build with multiprocessor-capable locking.
|
|
|
|
|
|
RUMP_UNREAL_ALLOCATORS
|
|
|
|
values: yes|no
|
|
defval: no
|
|
effect: If "yes", build version of kmem_alloc, pool and pool_cache
|
|
that directly relegate allocation to a hypercall. If "no",
|
|
build the regular NetBSD memory allocators which use
|
|
page-sized memory allocation hypercalls.
|
|
|
|
|
|
RUMP_VIRTIF
|
|
|
|
values: yes|no
|
|
defval: yes
|
|
effect: Iff "yes", build the virt(4) network interface. Turning this
|
|
off may be necessary on systems that lack the necessary headers,
|
|
e.g. musl libc based Linux.
|
|
|
|
|
|
RUMP_CURLWP
|
|
|
|
values: hypercall/__thread/register or <undefined>
|
|
defval: <undefined>
|
|
effect: Control how curlwp is obtained in a rump kernel. This is
|
|
a very frequently accessed thread-local variable, and optimizing
|
|
access has a significant performance impact. Note that all
|
|
options are not available on hosts/machine architectures.
|
|
<undefined> - use default implementation (currently "hypercall")
|
|
hypercall - use a hypercall to fetch the value
|
|
__thread - use the __thread feature to fetch value via TLS
|
|
register - use a dedicated register (implies -ffixed)
|
|
|
|
|
|
================================================================================
|
|
|
|
|
|
The rest of the options described in this file are not intended to be
|
|
set by users, but by the package building rump kernels.
|
|
|
|
|
|
RUMP_KERNEL_IS_LIBC
|
|
|
|
values: defined / not defined
|
|
effect: Iff defined, export normal system call symbols from libc.
|
|
For example, without this option rump_sys_open() is exported.
|
|
With this option, both open() and rump_sys_open() are exported.
|
|
This option is meant for building systems where a rump kernel
|
|
is the only operating system like component.
|
|
|
|
|
|
RUMP_LDSCRIPT
|
|
|
|
values: no/GNU/sun/ctor
|
|
defval: GNU
|
|
effect: Select the linker script to be used for linking rump kernel shared
|
|
library components.
|
|
no - do not use a linker script
|
|
GNU - use a linker script for GNU ld 2.18 and later
|
|
sun - use a linker script for the Solaris linker
|
|
ctor - do not use a linker script, make the code
|
|
generate __attribute__((constructor))
|