Cleanup shared-object support mechanics

The former ldso-startup static library (now called ldso_so_support) is
used to spice each shared object/library with local support code for the
dynamic linker (execution of static constructors and ARM-EABI).
Therefore, the library must be statically linked to each dynamic
library.

As a result recipes for dynamic libraries must always depend on the "so"
API, which makes ldso_so_support.mk and so_support.c available
independent of "base". Additionally, ldso_so_support is also provided in
the libc API to cut the dependency early for libc/posix libraries.

Issue #3720
This commit is contained in:
Christian Helmuth
2020-04-02 08:19:34 +02:00
committed by Norman Feske
parent 589b416ca8
commit 42fddf8390
14 changed files with 95 additions and 109 deletions

View File

@@ -7,7 +7,7 @@ include:
mkdir -p include
cp -r $(REP_DIR)/include/* $@/
LIB_MK_FILES := base.mk ld.mk ldso-startup.mk
LIB_MK_FILES := base.mk ld.mk ldso_so_support.mk
lib:
mkdir -p lib/mk lib/symbols
@@ -21,6 +21,11 @@ mk/spec:
mkdir -p $@
cp $(foreach spec,$(SPECS),$(REP_DIR)/mk/spec/$(spec).mk) $@
content: lib/mk/ldso_so_support.mk src/lib/ldso/so_support.c
lib/mk/ldso_so_support.mk src/lib/ldso/so_support.c:
$(mirror_from_rep_dir)
LICENSE:
cp $(GENODE_DIR)/LICENSE $@

View File

@@ -1,6 +1,6 @@
content: lib/mk/ldso-startup.mk LICENSE
content: lib/mk/ldso_so_support.mk src/lib/ldso/so_support.c LICENSE
lib/mk/ldso-startup.mk:
lib/mk/ldso_so_support.mk src/lib/ldso/so_support.c:
$(mirror_from_rep_dir)
LICENSE: