|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v2 4/7] lib/uklibparam: Add linker script for parameter
Hi Sharan, this patch looks good.
-- Felipe
Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>
On 13.08.19, 14:38, "Minios-devel on behalf of Sharan Santhanam"
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of
Sharan.Santhanam@xxxxxxxxx> wrote:
This patch introduces a linker script to create linker
section to place the library arguments meta-data.
Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
---
lib/uklibparam/Makefile.rules | 15 +++++++++++++++
lib/uklibparam/libparam.lds.S | 32 ++++++++++++++++++++++++++++++++
support/build/Makefile.rules | 2 +-
3 files changed, 48 insertions(+), 1 deletion(-)
create mode 100644 lib/uklibparam/Makefile.rules
create mode 100644 lib/uklibparam/libparam.lds.S
diff --git a/lib/uklibparam/Makefile.rules b/lib/uklibparam/Makefile.rules
new file mode 100644
index 00000000..3f7af4a2
--- /dev/null
+++ b/lib/uklibparam/Makefile.rules
@@ -0,0 +1,15 @@
+# add_paramprefix $name $libname
+define _add_paramprefix =
+$(eval $(call uc,$(2))_CFLAGS += -DUK_LIBPARAM_PREFIX=$(1))
+$(eval $(call uc,$(2))_CXXFLAGS += -DUK_LIBPARAM_PREFIX=$(1))
+$(eval $(call uc,$(2))_ASFLAGS += -DUK_LIBPARAM_PREFIX=$(1))
+$(eval $(call uc,$(2))_SRCS-$(CONFIG_LIBUKLIBPARAM) +=
$$(LIBUKLIBPARAM_BASE)/libparam.lds.S)
+endef
+
+# addlib_paramprefix $libname,$paramname(optional)
+define addlib_paramprefix =
+$(if $(2),\
+$(eval name := $(2)),\
+$(eval name := $(1)))
+$(eval $(call _add_paramprefix,$(name),$(1),$(call uc,$(1))))
+endef
diff --git a/lib/uklibparam/libparam.lds.S b/lib/uklibparam/libparam.lds.S
new file mode 100644
index 00000000..bec69789
--- /dev/null
+++ b/lib/uklibparam/libparam.lds.S
@@ -0,0 +1,32 @@
+#include <uk/config.h>
+#include <uk/libparam.h>
+
+#define create_var(x,y) __STRINGCONCAT(x,y)
+#ifdef UK_LIBPARAM_PREFIX
+SECTIONS
+{
+ /**
+ * creates a variable name = LOADADDR(section_name);
+ */
+ _SECTION_START(
+ _LIB_PARAM_SECTION_NAME(UK_LIBPARAM_PREFIX,
+ PARAM_SECTION_SUFFIX)
+ ) = LOADADDR(
+ create_var(UK_LIBPARAM_PREFIX,__param_arg));
+
+ create_var(UK_LIBPARAM_PREFIX,__param_arg) : {
+ KEEP (*(create_var(UK_LIBPARAM_PREFIX,PARAM_SECTION_SUFFIX)))
+ }
+ /**
+ * creates a variable name = LOADADDR(section_name);
+ */
+ _SECTION_STOP(
+ _LIB_PARAM_SECTION_NAME(UK_LIBPARAM_PREFIX,
+ PARAM_SECTION_SUFFIX)
+ ) = LOADADDR(
+ create_var(UK_LIBPARAM_PREFIX,__param_arg)) +
+ SIZEOF(
+ create_var(UK_LIBPARAM_PREFIX,__param_arg));
+}
+INSERT AFTER .rodata
+#endif /* UK_LIBPARAM_PREFIX */
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index 361390b9..2a1d20a6 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -165,7 +165,6 @@ $(call addlib,$(1))
endif
endef
-
# addplatlib $platname,$libname
define addplatlib =
$(call mk_sub_build_dir,$(2))
@@ -437,6 +436,7 @@ $(3): $(2) | prepare
)
UK_SRCS-y += $(2)
+UK_LDS-y += $(3)
UK_DEPS-y += $(call out2dep,$(3))
$(eval $(call vprefix_lib,$(1),LDS-y) += $(3))
$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3)) $(call
out2dep,$(3)))
--
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 |