You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
8.3 KiB
Diff
196 lines
8.3 KiB
Diff
commit 2db637f21b83701d21aa66295cd35c737649ecdc
|
|
Author: Emery Hemingway <ehmry@posteo.net>
|
|
Date: Tue May 5 21:39:21 2020 +0530
|
|
|
|
Produce libraries with conventional names
|
|
|
|
diff --git a/repos/base/mk/dep_lib.mk b/repos/base/mk/dep_lib.mk
|
|
index 21fcb77e58..533aebffa3 100644
|
|
--- a/repos/base/mk/dep_lib.mk
|
|
+++ b/repos/base/mk/dep_lib.mk
|
|
@@ -142,8 +142,8 @@ endif
|
|
echo " DEBUG_DIR=\$$(DEBUG_DIR)"; \
|
|
echo "") >> $(LIB_DEP_FILE)
|
|
ifdef SHARED_LIB
|
|
- @(echo "SO_NAME($(LIB)) := $(LIB).lib.so"; \
|
|
- echo "") >> $(LIB_DEP_FILE)
|
|
+ @(echo "SO_NAME($(LIB)) := lib$(LIB).so"; \
|
|
+ echo "") | sed -e 's/libld.so/ld.lib.so/' -e 's/liblib/lib/' >> $(LIB_DEP_FILE)
|
|
else
|
|
@(echo "ARCHIVE_NAME($(LIB)) := $(LIB).lib.a"; \
|
|
echo "") >> $(LIB_DEP_FILE)
|
|
diff --git a/repos/base/mk/dep_prg.mk b/repos/base/mk/dep_prg.mk
|
|
index 190dd92aa1..6611d05d2a 100644
|
|
--- a/repos/base/mk/dep_prg.mk
|
|
+++ b/repos/base/mk/dep_prg.mk
|
|
@@ -93,7 +93,7 @@ endif
|
|
# if the target does not depend on any library with unsatisfied build
|
|
# requirements. In such a case, the target cannot be linked anyway.
|
|
#
|
|
- @(echo "ifeq (\$$(filter \$$(DEP_A_$(TARGET).prg:.lib.a=) \$$(DEP_SO_$(TARGET).prg:.lib.so=) $(LIBS),\$$(INVALID_DEPS)),)"; \
|
|
+ @(echo "ifeq (\$$(filter \$$(DEP_A_$(TARGET).prg:.lib.a=) \$$(patsubst lib%.lib.so,%,$(DEP_SO_$(TARGET).prg)) $(LIBS),\$$(INVALID_DEPS)),)"; \
|
|
echo "all: $(TARGET).prg"; \
|
|
echo "endif") >> $(LIB_DEP_FILE)
|
|
#
|
|
diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk
|
|
index d551ac205b..e23fade62f 100644
|
|
--- a/repos/base/mk/generic.mk
|
|
+++ b/repos/base/mk/generic.mk
|
|
@@ -129,7 +129,7 @@ binary_%.o: %
|
|
# This is a problem in situations where the undefined symbol is resolved by an
|
|
# archive rather than the target. I.e., when linking posix.lib.a (which
|
|
# provides 'Libc::Component::construct'), the 'construct' function is merely
|
|
-# referenced by the libc.lib.so's 'Component::construct' function. But this
|
|
+# referenced by the libc.so's 'Component::construct' function. But this
|
|
# reference apparently does not suffice to keep the posix.lib.a's symbol. By
|
|
# adding a hard dependency, we force the linker to resolve the symbol and don't
|
|
# drop posix.lib.a.
|
|
@@ -164,12 +164,17 @@ endif
|
|
# time a user of the library is linked, the ABI stub should be used instead of
|
|
# the library.
|
|
#
|
|
-select_so = $(firstword $(wildcard $(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).abi.so \
|
|
- $(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).lib.so))
|
|
+select_so = $(firstword $(wildcard \
|
|
+ $(LIB_CACHE_DIR)/$(patsubst lib%.so,%,$1)/$(patsubst lib%.so,%,$1).abi.so \
|
|
+ $(LIB_CACHE_DIR)/$(patsubst lib%.so,%,$1)/$(1) \
|
|
+ $(LIB_CACHE_DIR)/$(patsubst %.so,%,$1)/$(1) \
|
|
+ $(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).abi.so \
|
|
+ $(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).lib.so \
|
|
+ $(LIB_CACHE_DIR)/$(1:.so=)/$(1:.so=).abi.so ))
|
|
|
|
ifneq ($(filter-out $(foreach s,$(SHARED_LIBS),$(realpath $s)), \
|
|
$(foreach s,$(SHARED_LIBS),$(call select_so,$s))),)
|
|
.PHONY: $(SHARED_LIBS)
|
|
endif
|
|
$(SHARED_LIBS):
|
|
- $(VERBOSE)ln -sf $(call select_so,$@) $@
|
|
+ $(VERBOSE)ln -sf $(call select_so,$@) $(patsubst liblib%,lib%,$@)
|
|
diff --git a/repos/base/mk/lib.mk b/repos/base/mk/lib.mk
|
|
index bfee2c7420..fac49c7298 100644
|
|
--- a/repos/base/mk/lib.mk
|
|
+++ b/repos/base/mk/lib.mk
|
|
@@ -123,14 +123,20 @@ message:
|
|
include $(BASE_DIR)/mk/generic.mk
|
|
|
|
#
|
|
-# Name of <libname>.lib.a or <libname>.lib.so file to create
|
|
+# Name of <libname>.lib.a or lib<libname>.so file to create
|
|
#
|
|
# Skip the creation and installation of an .so file if there are no
|
|
# ingredients. This is the case if the library is present as ABI only.
|
|
#
|
|
ifdef SHARED_LIB
|
|
ifneq ($(sort $(OBJECTS) $(LIBS)),)
|
|
- LIB_SO := $(addsuffix .lib.so,$(LIB))
|
|
+ ifeq ($(LIB),ld)
|
|
+ LIB_SO := ld.lib.so
|
|
+ else ifeq ($(patsubst ld-%,ld-,$(LIB)),ld-)
|
|
+ LIB_SO := $(LIB).lib.so
|
|
+ else
|
|
+ LIB_SO := $(patsubst liblib%,lib%,$(patsubst %,lib%.so,$(LIB)))
|
|
+ endif
|
|
INSTALL_SO := $(INSTALL_DIR)/$(LIB_SO)
|
|
DEBUG_SO := $(DEBUG_DIR)/$(LIB_SO)
|
|
endif
|
|
@@ -150,7 +156,7 @@ ifneq ($(LIB_SO),)
|
|
endif
|
|
|
|
#
|
|
-# Trigger the creation of the <libname>.lib.a or <libname>.lib.so file
|
|
+# Trigger the creation of the <libname>.lib.a or lib<libname>.so file
|
|
#
|
|
LIB_TAG := $(addsuffix .lib.tag,$(LIB))
|
|
all: $(LIB_TAG)
|
|
@@ -203,7 +209,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/
|
|
STATIC_LIBS_BRIEF := $(subst $(LIB_CACHE_DIR),$$libs,$(STATIC_LIBS))
|
|
|
|
#
|
|
-# Rule to build the <libname>.lib.so file
|
|
+# Rule to build the lib<libname>.so file
|
|
#
|
|
# When linking the shared library, we have to link all shared sub libraries
|
|
# (LIB_SO_DEPS) to the library to store the library-dependency information in
|
|
diff --git a/repos/base/mk/prg.mk b/repos/base/mk/prg.mk
|
|
index 04caae01b2..8d64b0d34e 100644
|
|
--- a/repos/base/mk/prg.mk
|
|
+++ b/repos/base/mk/prg.mk
|
|
@@ -235,6 +235,6 @@ endif
|
|
clean_prg_objects:
|
|
$(MSG_CLEAN)$(PRG_REL_DIR)
|
|
$(VERBOSE)$(RM) -f $(OBJECTS) $(OBJECTS:.o=.d) $(TARGET) $(TARGET).stripped $(BINDER_SRC)
|
|
- $(VERBOSE)$(RM) -f *.d *.i *.ii *.s *.ali *.lib.so
|
|
+ $(VERBOSE)$(RM) -f *.d *.i *.ii *.s *.ali *.lib.so lib*.so
|
|
|
|
clean: clean_prg_objects
|
|
diff --git a/repos/base/src/lib/ldso/include/file.h b/repos/base/src/lib/ldso/include/file.h
|
|
index 1c9ce53ca3..a8875a781e 100644
|
|
--- a/repos/base/src/lib/ldso/include/file.h
|
|
+++ b/repos/base/src/lib/ldso/include/file.h
|
|
@@ -132,10 +132,10 @@ struct Linker::Elf_file : File
|
|
* the end of the linker area to ensure that the newly loaded
|
|
* binary has enough room within the linker area.
|
|
*/
|
|
- bool const resident = (name == "libc.lib.so")
|
|
- || (name == "libm.lib.so")
|
|
- || (name == "posix.lib.so")
|
|
- || (strcmp(name.string(), "vfs", 3) == 0);
|
|
+ bool const resident = (name == "libc.so")
|
|
+ || (name == "libm.so")
|
|
+ || (name == "libposix.so")
|
|
+ || (strcmp(name.string(), "libvfs", 6) == 0);
|
|
|
|
reloc_base = resident ? Region_map::r()->alloc_region_at_end(size)
|
|
: Region_map::r()->alloc_region(size);
|
|
diff --git a/repos/libports/src/lib/libc/execve.cc b/repos/libports/src/lib/libc/execve.cc
|
|
index 73fd407db7..554d943763 100644
|
|
--- a/repos/libports/src/lib/libc/execve.cc
|
|
+++ b/repos/libports/src/lib/libc/execve.cc
|
|
@@ -325,10 +325,10 @@ void Libc::init_execve(Env &env, Genode::Allocator &alloc, void *user_stack_ptr,
|
|
_binary_name_ptr = &binary_name;
|
|
_fd_alloc_ptr = &fd_alloc;
|
|
|
|
- Dynamic_linker::keep(env, "libc.lib.so");
|
|
- Dynamic_linker::keep(env, "libm.lib.so");
|
|
- Dynamic_linker::keep(env, "posix.lib.so");
|
|
- Dynamic_linker::keep(env, "vfs.lib.so");
|
|
+ Dynamic_linker::keep(env, "libc.so");
|
|
+ Dynamic_linker::keep(env, "libm.so");
|
|
+ Dynamic_linker::keep(env, "libposix.so");
|
|
+ Dynamic_linker::keep(env, "libvfs.so");
|
|
}
|
|
|
|
|
|
diff --git a/repos/libports/src/lib/libc/kernel.cc b/repos/libports/src/lib/libc/kernel.cc
|
|
index 5dd4b2a2d6..430295e7d5 100644
|
|
--- a/repos/libports/src/lib/libc/kernel.cc
|
|
+++ b/repos/libports/src/lib/libc/kernel.cc
|
|
@@ -308,10 +308,10 @@ void Libc::Kernel::_clone_state_from_parent()
|
|
* regular startup of the child.
|
|
*/
|
|
bool const blacklisted = (name == "ld.lib.so")
|
|
- || (name == "libc.lib.so")
|
|
- || (name == "libm.lib.so")
|
|
- || (name == "posix.lib.so")
|
|
- || (strcmp(name.string(), "vfs", 3) == 0);
|
|
+ || (name == "libc.so")
|
|
+ || (name == "libm.so")
|
|
+ || (name == "libposix.so")
|
|
+ || (strcmp(name.string(), "libvfs", 6) == 0);
|
|
if (!blacklisted)
|
|
copy_from_parent(range_attr(node));
|
|
}
|
|
diff --git a/repos/os/src/lib/vfs/file_system_factory.cc b/repos/os/src/lib/vfs/file_system_factory.cc
|
|
index 48069d3fb8..53e8678757 100644
|
|
--- a/repos/os/src/lib/vfs/file_system_factory.cc
|
|
+++ b/repos/os/src/lib/vfs/file_system_factory.cc
|
|
@@ -117,7 +117,7 @@ Vfs::Global_file_system_factory::_try_create(Vfs::Env &env,
|
|
Library_name Vfs::Global_file_system_factory::_library_name(Node_name const &node_name)
|
|
{
|
|
char lib_name [Library_name::capacity()];
|
|
- Genode::snprintf(lib_name, sizeof(lib_name), "vfs_%s.lib.so",
|
|
+ Genode::snprintf(lib_name, sizeof(lib_name), "libvfs_%s.so",
|
|
node_name.string());
|
|
|
|
return Library_name(lib_name);
|