|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 8/8] build: Add *.ld files as source to library
Hi Sharan, this patch looks good.
Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>
On 12.08.19, 16:04, "Minios-devel on behalf of Sharan Santhanam"
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of
Sharan.Santhanam@xxxxxxxxx> wrote:
Instead of adding the linker to special linker variable, we add the
linker script as a source to library and the necessary variables are
automatically populated. This is an extension on the scheme used for
linker script source file.
Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
---
doc/guides/developers-app.rst | 7 +------
lib/ukdebug/Makefile.uk | 2 +-
lib/vfscore/Makefile.uk | 2 +-
support/build/Makefile.rules | 18 +++++++++++++++++-
4 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/doc/guides/developers-app.rst b/doc/guides/developers-app.rst
index 8e1698b1..29db81d7 100644
--- a/doc/guides/developers-app.rst
+++ b/doc/guides/developers-app.rst
@@ -302,12 +302,7 @@ extra.ld
If your library/application needs a section in the final elf, edit
your Makefile.uk to add ::
- EXTRA_LD_SCRIPT-$(CONFIG_LIBYOURAPPNAME) +=
$(LIBYOURAPPNAME_BASE)/extra.ld
-
-If your library is specific to a platform, edit your Makefile.uk to add ::
-
- [PLATFORM]_LD_SCRIPT-$(CONFIG_LIBYOURAPPNAME) +=
$(LIBYOURAPPNAME_BASE)/extra.ld
-
+ LIBYOURAPPNAME_SRCS-$(CONFIG_LIBYOURAPPNAME) +=
$(LIBYOURAPPNAME_BASE)/extra.ld
An example context of extra.ld: ::
diff --git a/lib/ukdebug/Makefile.uk b/lib/ukdebug/Makefile.uk
index 663ac6de..d82cacad 100644
--- a/lib/ukdebug/Makefile.uk
+++ b/lib/ukdebug/Makefile.uk
@@ -9,6 +9,6 @@ LIBUKDEBUG_CXXFLAGS-y += -D__IN_LIBUKDEBUG__
LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/print.c
LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/hexdump.c
LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) +=
$(LIBUKDEBUG_BASE)/trace.c
+LIBUKDEBUG_SRCS-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld
-EXTRA_LD_SCRIPT-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld
STRIP_SECTIONS_FLAGS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += -R
.uk_tracepoints_list -R .uk_trace_keyvals
diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 0166e612..79878f26 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -14,7 +14,7 @@ LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/task.c
LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/lookup.c
LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/fops.c
LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/subr_uio.c
+LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/extra.ld
-EXTRA_LD_SCRIPT-$(CONFIG_LIBVFSCORE) += $(LIBVFSCORE_BASE)/extra.ld
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += writev-3
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index 235b109b..361390b9 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -450,12 +450,28 @@ $(if $(strip $($(call uc,$(1))_PLATS)),\
)
endef
+## Add the linker file to the common variable used for linker script
+define buildrule_ld =
+$(2): | prepare
+
+$(eval $(call vprefix_lib,$(1),LDS-y) += $(2))
+
+$(if $(strip $($(call uc,$(1))_PLATS)),\
+ $(foreach p,$($(call uc,$(1))_PLATS),\
+ $(if $(filter $(UK_PLAT_$(p)_DEF_LDS),$(2)),\
+ $(eval UK_PLAT_$(p)_DEF_LDS := $(2)),\
+ $(call add_lds_to_plat,$(2),$(p)))),\
+ $(call add_lds_to_lib,$(2))\
+ )
+endef
+
# wrapper for buildrule_*,
# selects appropriate buildrule depending on file extension
#
# buildrule $libname,$source,$target,$extraflags(optional)
define buildrule =
$(if $(filter %.lds.S,$(2)),$(call buildrule_lds,$(1),$(2),$(3),$(4)),\
+$(if $(filter %.ld ,$(2)),$(call buildrule_ld ,$(1),$(2),$(3),$(4)),\
$(if $(filter %.S, $(2)),$(call buildrule_S ,$(1),$(2),$(3),$(4)),\
$(if $(filter %.sx, $(2)),$(call buildrule_S ,$(1),$(2),$(3),$(4)),\
$(if $(filter %.s, $(2)),$(call buildrule_s ,$(1),$(2),$(3),$(4)),\
@@ -468,7 +484,7 @@ $(if $(filter %.CPP, $(2)),$(call buildrule_cc
,$(1),$(2),$(3),$(4)),\
$(if $(filter %.c++, $(2)),$(call buildrule_cc ,$(1),$(2),$(3),$(4)),\
$(if $(filter %.C, $(2)),$(call buildrule_cc ,$(1),$(2),$(3),$(4)),\
$(error $(3): missing build rule for source type $(suffix $(2))) \
-))))))))))))
+)))))))))))))
endef
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |