Turn posix lib into shared library

By building the posix library as shared object with an ABI, we
effectively decouple posix-using programs from the library
implementation (which happens to depend on several os-level APIs such as
the VFS).
This commit is contained in:
Norman Feske 2017-05-14 21:55:57 +02:00 committed by Christian Helmuth
parent 1828f70037
commit 03d7208386
73 changed files with 75 additions and 58 deletions

View File

@ -100,7 +100,7 @@ install_config $config
# generic modules
set boot_modules {
core ld.lib.so init timer
core ld.lib.so init timer posix.lib.so
libc.lib.so libm.lib.so lxip.lib.so test-lxip_http_srv libc_resolv.lib.so
}

View File

@ -94,7 +94,7 @@ install_config $config
# generic modules
set boot_modules {
core ld.lib.so init timer usb_drv
libc.lib.so lwip.lib.so test-lwip_httpsrv
libc.lib.so lwip.lib.so posix.lib.so test-lwip_httpsrv
}
append_platform_drv_boot_modules

View File

@ -90,7 +90,7 @@ install_config $config
append boot_modules {
core init timer } [nic_drv_binary] {
ld.lib.so libc.lib.so libc_lock_pipe.lib.so
ld.lib.so libc.lib.so libc_lock_pipe.lib.so posix.lib.so
libm.lib.so
vfs_lxip.lib.so lxip.lib.so
tcp_terminal

View File

@ -136,7 +136,7 @@ set firmware_modules {
# generic modules
set boot_modules {
core ld.lib.so init timer rtc_drv report_rom dynamic_rom
vfs_jitterentropy.lib.so
vfs_jitterentropy.lib.so posix.lib.so
libc.lib.so libm.lib.so libcrypto.lib.so libssl.lib.so
wpa_driver_nl80211.lib.so wpa_supplicant.lib.so
wifi.lib.so

View File

@ -232,7 +232,7 @@ proc binary_name_cpu_sampler_platform_lib_so { } {
# generic modules
set boot_modules {
core ld.lib.so init timer noux terminal ram_fs log_terminal
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so posix.lib.so
bash.tar coreutils.tar diffutils.tar vim.tar
fs_log cpu_sampler cpu_sampler_platform.lib.so test-cpu_sampler
}

View File

@ -180,7 +180,7 @@ catch { exec dd if=/dev/zero of=bin/index.bin bs=512 count=400 }
# generic modules
set boot_modules {
core ld.lib.so init timer
libc.lib.so libm.lib.so
libc.lib.so libm.lib.so posix.lib.so
lwip.lib.so zlib.lib.so
lighttpd nic_bridge http_blk index.bin test-rom_blk
}

View File

@ -221,7 +221,7 @@ exec tar chf bin/qt5_fs_mixer_gui_qt.tar -C bin/qt5_fs/mixer_gui_qt .
set boot_modules {
core ld.lib.so init timer
libc.lib.so
libc.lib.so posix.lib.so
report_rom dynamic_rom ram_fs
fs_rom

View File

@ -156,7 +156,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal_mux terminal_log
test-signal cli_monitor test-resource_yield
test-signal cli_monitor test-resource_yield posix.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so libc_terminal.lib.so ncurses.lib.so
vim.tar
}

View File

@ -2,4 +2,6 @@ SRC_CC = construct.cc
LIBS += libc
SHARED_LIB = yes
vpath construct.cc $(REP_DIR)/src/lib/posix

View File

@ -0,0 +1 @@
_ZN4Libc9Component9constructERNS_3EnvE T

View File

@ -118,7 +118,7 @@ append boot_modules {
core init timer } [audio_drv_binary] { avplay
ld.lib.so libc.lib.so libm.lib.so pthread.lib.so zlib.lib.so sdl.lib.so
avfilter.lib.so avutil.lib.so avcodec.lib.so avformat.lib.so swscale.lib.so
avresample.lib.so
avresample.lib.so posix.lib.so
mediafile
}

View File

@ -120,7 +120,7 @@ install_config $config
set boot_modules {
core init ld.lib.so timer nitpicker nit_fb
launchpad eglgears pointer
gallium.lib.so libc.lib.so libm.lib.so pthread.lib.so
gallium.lib.so libc.lib.so libm.lib.so pthread.lib.so posix.lib.so
}
lappend_if [have_spec linux] boot_modules fb_sdl

View File

@ -57,7 +57,7 @@ install_config {
build_boot_image {
core init timer
ld.lib.so libc.lib.so expat.lib.so
ld.lib.so libc.lib.so expat.lib.so posix.lib.so
test-expat
}

View File

@ -31,7 +31,7 @@ install_config {
build_boot_image {
core init test-libc
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
append qemu_args " -nographic -m 64 "

View File

@ -108,7 +108,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
test-libc_block
}

View File

@ -86,7 +86,7 @@ install_config $config
set boot_modules {
core init timer terminal_crosslink
test-libc_counter-source test-libc_component
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -68,7 +68,7 @@ install_config $config
set boot_modules {
core init timer terminal_crosslink
test-libc_counter-source test-libc_counter-sink
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -112,7 +112,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ffat_fs
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
test-libc_vfs
}

View File

@ -137,7 +137,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
append boot_modules test-libc_$filesystem

View File

@ -37,7 +37,7 @@ install_config {
build_boot_image {
core init timer test-libc_getenv
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
append qemu_args " -nographic -m 64 "

View File

@ -30,7 +30,7 @@ install_config {
}
build_boot_image {
core init test-libc_pipe
core init test-libc_pipe posix.lib.so
ld.lib.so libc.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so
}

View File

@ -70,7 +70,7 @@ set boot_modules {
core init timer terminal_crosslink
test-libc_counter-source test-libc_select
ld.lib.so libc.lib.so libm.lib.so stdcxx.lib.so pthread.lib.so
libc_pipe.lib.so
libc_pipe.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -74,7 +74,7 @@ install_config $config
build_boot_image {
core init
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
ram_blk test-libc_vfs_block
}

View File

@ -97,7 +97,7 @@ install_config $config
set boot_modules {
core init timer terminal_crosslink vfs
test-libc_counter-source test-libc_component
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -80,7 +80,7 @@ install_config $config
set boot_modules {
core init timer terminal_crosslink vfs
test-libc_counter-source test-libc_counter-sink
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -62,7 +62,7 @@ install_config $config
build_boot_image {
core init vfs
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
test-libc_vfs
}

View File

@ -79,7 +79,7 @@ set boot_modules {
core init timer terminal_crosslink vfs
test-libc_counter-source test-libc_select
ld.lib.so libc.lib.so libm.lib.so stdcxx.lib.so pthread.lib.so
libc_pipe.lib.so
libc_pipe.lib.so posix.lib.so
}
build_boot_image $boot_modules

View File

@ -123,7 +123,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so lwip.lib.so test-lwip_httpsrv
ld.lib.so libc.lib.so libm.lib.so lwip.lib.so test-lwip_httpsrv posix.lib.so
}
# platform-specific modules

View File

@ -58,7 +58,7 @@ install_config $config
set boot_modules {
core init timer linux_nic_drv
ld.lib.so libc.lib.so libm.lib.so lwip.lib.so test-lwip_httpsrv
ld.lib.so libc.lib.so libm.lib.so posix.lib.so lwip.lib.so test-lwip_httpsrv
}
build_boot_image $boot_modules

View File

@ -60,7 +60,7 @@ append config {
append boot_modules {
core init timer } [nic_drv_binary] { ram_fs vfs
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
libc_resolv.lib.so stdcxx.lib.so libc_pipe.lib.so
vfs_lxip.lib.so lxip.lib.so
}

View File

@ -101,6 +101,7 @@ append boot_modules {
nic_bridge
ld.lib.so
libc.lib.so
posix.lib.so
libm.lib.so
lwip.lib.so
test-http_clnt

View File

@ -140,6 +140,7 @@ append boot_modules {
nic_bridge
ld.lib.so
libc.lib.so
posix.lib.so
lwip.lib.so
test-http_clnt
libm.lib.so

View File

@ -252,7 +252,7 @@ install_config $config
build_boot_image "
core init timer nic_router nic_bridge ld.lib.so libc.lib.so libm.lib.so
libc_resolv.lib.so lwip.lib.so lxip.lib.so test-http_clnt
posix.lib.so libc_resolv.lib.so lwip.lib.so lxip.lib.so test-http_clnt
test-lwip_httpsrv_static nic_dump test-lxip_udp_echo test-lxip_udp_client
[nic_drv_binary] [gpio_drv] [platform_drv_boot_modules]"

View File

@ -274,7 +274,7 @@ install_config $config
build_boot_image "
core init timer nic_router nic_bridge ld.lib.so libc.lib.so libm.lib.so
libc_resolv.lib.so lwip.lib.so lxip.lib.so test-http_clnt
libc_resolv.lib.so lwip.lib.so lxip.lib.so posix.lib.so test-http_clnt
test-lwip_httpsrv_static test-lxip_udp_echo test-lxip_udp_client
[nic_drv_binary] [gpio_drv] [platform_drv_boot_modules]"

View File

@ -31,7 +31,7 @@ install_config {
build_boot_image {
core init test-pthread
ld.lib.so libc.lib.so libm.lib.so pthread.lib.so
ld.lib.so libc.lib.so libm.lib.so pthread.lib.so posix.lib.so
}
append qemu_args " -nographic -m 128 "

View File

@ -70,7 +70,7 @@ install_config $config
# generic modules
set boot_modules {
core init
ld.lib.so libc.lib.so libm.lib.so python.lib.so
ld.lib.so libc.lib.so libm.lib.so python.lib.so posix.lib.so
test-python
}

View File

@ -87,6 +87,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -79,6 +79,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -66,6 +66,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -65,6 +65,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -65,6 +65,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -85,6 +85,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libcrypto.lib.so
libm.lib.so

View File

@ -69,6 +69,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libcrypto.lib.so
libm.lib.so

View File

@ -69,6 +69,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libcrypto.lib.so
libm.lib.so

View File

@ -65,6 +65,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -127,6 +127,7 @@ append boot_modules {
icu.lib.so
ld.lib.so
libc.lib.so
posix.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so

View File

@ -20,7 +20,7 @@ install_config {
</config>
}
build_boot_image "core init test-rust ld.lib.so libc.lib.so libm.lib.so"
build_boot_image "core init test-rust ld.lib.so libc.lib.so libm.lib.so posix.lib.so"
append qemu_args "-nographic -m 64"

View File

@ -112,7 +112,7 @@ install_config $config
set boot_modules {
core init timer usb_drv test-smartcard
ld.lib.so pcsc-lite.lib.so ccid.lib.so libusb.lib.so
libc.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so
libc.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so posix.lib.so
Info.plist
}

View File

@ -28,7 +28,7 @@ install_config {
build_boot_image {
core init test-stdcxx
ld.lib.so libc.lib.so libm.lib.so stdcxx.lib.so
ld.lib.so libc.lib.so libm.lib.so stdcxx.lib.so posix.lib.so
}
append qemu_args " -nographic -m 64 "

View File

@ -131,7 +131,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so lwip.lib.so
ld.lib.so libc.lib.so lwip.lib.so posix.lib.so
test-ping_client_libc_lwip
}

View File

@ -105,7 +105,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so lwip.lib.so
ld.lib.so libc.lib.so lwip.lib.so posix.lib.so
test-ping_server_libc_lwip
}

View File

@ -118,7 +118,7 @@ append boot_modules {
testnit
arora
ld.lib.so
libc.lib.so libm.lib.so lwip.lib.so
libc.lib.so libm.lib.so lwip.lib.so posix.lib.so
zlib.lib.so libpng.lib.so jpeg.lib.so libssl.lib.so libcrypto.lib.so
freetype.lib.so
libc_pipe.lib.so

View File

@ -121,7 +121,7 @@ if {![file exists bin/dosbox.tar]} {
append boot_modules {
core init timer } [audio_drv_binary] {
ld.lib.so
libc.lib.so
libc.lib.so posix.lib.so
libm.lib.so lwip.lib.so libpng.lib.so
stdcxx.lib.so sdl.lib.so sdl_net.lib.so pthread.lib.so zlib.lib.so
dosbox dosbox.tar

View File

@ -100,7 +100,7 @@ proc binary_name_gdbserver_platform_lib_so { } {
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so libc_pipe.lib.so libc_terminal.lib.so
uart_drv
uart_drv posix.lib.so
gdb_monitor gdbserver_platform.lib.so test-gdb_monitor
}

View File

@ -86,7 +86,8 @@ proc binary_name_gdbserver_platform_lib_so { } {
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so libc_pipe.lib.so libc_terminal.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
libc_pipe.lib.so libc_terminal.lib.so
uart_drv
gdb_monitor gdbserver_platform.lib.so test-gdb_monitor
}

View File

@ -160,7 +160,7 @@ exec tar cfv bin/genode_org.tar -h -C bin/genode_org .
# generic modules
set boot_modules {
core init timer ld.lib.so
libc.lib.so libm.lib.so
libc.lib.so libm.lib.so posix.lib.so
lwip.lib.so zlib.lib.so
lighttpd genode_org.tar
}

View File

@ -74,7 +74,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer uart_drv ram_fs noux
ld.lib.so libc.lib.so libc_noux.lib.so
ld.lib.so libc.lib.so libc_noux.lib.so posix.lib.so
libc_noux.tar
}

View File

@ -108,7 +108,7 @@ install_config $config
# generic modules
append boot_modules {
core init timer ld.lib.so } [nic_drv_binary] {
libc.lib.so libm.lib.so
libc.lib.so libm.lib.so posix.lib.so
lwip.lib.so zlib.lib.so
lighttpd
}

View File

@ -267,7 +267,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer
ld.lib.so libc.lib.so libm.lib.so
ld.lib.so libc.lib.so libm.lib.so posix.lib.so
}
append boot_modules " $netperf_app "

View File

@ -44,7 +44,7 @@ install_config {
build_boot_image {
core init timer log_terminal ld.lib.so noux libc.lib.so libm.lib.so
libc_noux.lib.so coreutils.tar
libc_noux.lib.so coreutils.tar posix.lib.so
}
append qemu_args " -nographic -serial mon:stdio "

View File

@ -202,7 +202,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so posix.lib.so
bash.tar coreutils.tar diffutils.tar less.tar vim.tar
}

View File

@ -44,7 +44,7 @@ install_config {
build_boot_image {
core init timer log_terminal noux ld.lib.so libc.lib.so libm.lib.so
libc_noux.lib.so test-noux_fork
libc_noux.lib.so posix.lib.so test-noux_fork
}
append qemu_args " -nographic "

View File

@ -62,6 +62,7 @@ set gdb_target_binaries {
ld.lib.so
libc.lib.so
libm.lib.so
posix.lib.so
}
lappend gdb_target_binaries ${gdb_target_binary_name}

View File

@ -204,7 +204,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux_net nic_drv terminal ram_fs
libc.lib.so libm.lib.so libc_noux.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so posix.lib.so
lwip.lib.so ncurses.lib.so
readline.lib.so zlib.lib.so libcrypto.lib.so libssl.lib.so
lighttpd.tar

View File

@ -165,7 +165,7 @@ install_config $config
set boot_modules {
core init timer tcp_terminal nic_bridge
ld.lib.so noux_net libc.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so
libc_resolv.lib.so libc_noux.lib.so lwip.lib.so noux_netcat.tar
libc_resolv.lib.so libc_noux.lib.so lwip.lib.so noux_netcat.tar posix.lib.so
}
# platform-specific modules

View File

@ -156,7 +156,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs
core init timer ld.lib.so noux terminal ram_fs posix.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so }
foreach pkg $noux_pkgs {

View File

@ -51,7 +51,7 @@ append config {
install_config $config
set boot_modules {
core init timer ld.lib.so noux libc.lib.so
core init timer ld.lib.so noux libc.lib.so posix.lib.so
uart_drv libc_noux.lib.so noux_signals.tar
}

View File

@ -191,7 +191,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs nitpicker nit_fb pointer
libc.lib.so libm.lib.so libc_noux.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so posix.lib.so
bash.tar coreutils.tar
}

View File

@ -254,7 +254,7 @@ install_config $config
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so stdcxx.lib.so
pcre.lib.so zlib.lib.so readline.lib.so
pcre.lib.so zlib.lib.so readline.lib.so posix.lib.so
}
append boot_modules { gmp.lib.so mpfr.lib.so mpc.lib.so }

View File

@ -207,7 +207,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs
libc.lib.so libm.lib.so libc_noux.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so posix.lib.so
ncurses.lib.so pcre.lib.so zlib.lib.so readline.lib.so
trace_fs

View File

@ -228,7 +228,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal ram_fs nitpicker nit_fb pointer
libc.lib.so libm.lib.so libc_noux.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so posix.lib.so
bash.tar coreutils.tar
}

View File

@ -58,7 +58,7 @@ install_config {
}
build_boot_image {
core init timer ld.lib.so noux libc.lib.so libm.lib.so
core init timer ld.lib.so noux libc.lib.so libm.lib.so posix.lib.so
libc_noux.lib.so coreutils.tar
}

View File

@ -116,7 +116,7 @@ install_config $config
# generic modules
set boot_modules {
core init timer ld.lib.so noux terminal
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so posix.lib.so
vim.tar
}