[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v5 1/4] build: Introduce symbols exporting for each library
Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> On 09/03/2018 02:17 PM, Simon Kuenzer wrote: In order to avoid symbol conflicts and relaxing on namespacing of library-internal symbols, each library should provide an `exportsyms.uk` file in its base directory. This file lists the name of all symbols that should be exported by the library, the rest is treated as internal symbol which cannot be linked by another library. A warning is thrown by `make` whenever this symbols file is absent. The scope of each symbol for such a library stays unchanged. This way, this patch won't break existing Unikraft projects and libraries. The location of this file can be overwritten by defining the path with the [LIBNAME]_EXPORTS variable within the appropriate `Makefile.uk`. Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> --- support/build/Makefile.rules | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules index e317e3d..35e2921 100644 --- a/support/build/Makefile.rules +++ b/support/build/Makefile.rules @@ -121,8 +121,9 @@ endef define addlib = $(call mk_sub_build_dir,$(1)) UK_LIBS += $(1) -$(eval $(call uc,$(1))_BASE := $(_IMPORT_BASE)) -$(eval $(call uc,$(1))_BUILD := $(BUILD_DIR)/$(1)) +$(eval $(call uc,$(1))_BASE := $(_IMPORT_BASE)) +$(eval $(call uc,$(1))_BUILD := $(BUILD_DIR)/$(1)) +$(eval $(call uc,$(1))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk) endef# addlib_s $libname,$switch@@ -136,9 +137,10 @@ endef # addplatlib $platname,$libname define addplatlib = $(call mk_sub_build_dir,$(2)) -$(eval $(call uc,$(1))_LIBS += $(2)) -$(eval $(call uc,$(2))_BASE := $(_IMPORT_BASE)) -$(eval $(call uc,$(2))_BUILD := $(BUILD_DIR)/$(2)) +$(eval $(call uc,$(1))_LIBS += $(2)) +$(eval $(call uc,$(2))_BASE := $(_IMPORT_BASE)) +$(eval $(call uc,$(2))_BUILD := $(BUILD_DIR)/$(2)) +$(eval $(call uc,$(2))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk) endef# addplatlib_s $platname,$libname,$switch@@ -412,6 +414,10 @@ endef# buildrule_olib $libnamedefine buildrule_olib = +$(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),,\ + $(warning Warning: Definition of exported symbols for $(1) missing: $($(call vprefix_lib,$(1),EXPORTS))) \ +) + $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) $($(call vprefix_lib,$(1),OBJS-y)) $(call build_cmd,LD,,$(call libname2preolib,$(1)),\ $(LD) $(LIBLDFLAGS) $(LIBLDFLAGS-y) \ @@ -419,9 +425,10 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) $($(call vprefix_ $($(call vprefix_lib,$(1),OBJS)) $($(call vprefix_lib,$(1),OBJS-y)) \ -o $(call libname2preolib,$(1)))-$(call libname2olib,$(1)): $(call libname2preolib,$(1))+$(call libname2olib,$(1)): $(call libname2preolib,$(1)) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),$($(call vprefix_lib,$(1),EXPORTS)),) $(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\ - $(OBJCOPY) $(OBJCFLAGS) $(OBJCFLAGS-y) \ + $(OBJCOPY) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),--keep-global-symbols=$($(call vprefix_lib,$(1),EXPORTS)),) \ + $(OBJCFLAGS) $(OBJCFLAGS-y) \ $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \ $(call libname2preolib,$(1)) $(call libname2olib,$(1))) -- Dr. Florian Schmidt フローリアン・シュミット Research Scientist, Systems and Machine Learning Group NEC Laboratories Europe Kurfürsten-Anlage 36, D-69115 Heidelberg Tel. +49 (0)6221 4342-265 Fax: +49 (0)6221 4342-155 e-mail: florian.schmidt@xxxxxxxxx ============================================================ Registered at Amtsgericht Mannheim, Germany, HRB728558 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |