From e2607681a68c8d9382b6a805777b9e22a5815180 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Fri, 13 Sep 2019 22:01:44 +0200 Subject: [PATCH] NuttX: use ELF_FILE_LDSCRIPT for ldscript for loadable ELF applications and modules. Signed-off-by: Pavel Pisa --- snippets/nuttx-bin.omk | 5 ++++- snippets/nuttx-compile.omk | 6 ++++-- snippets/nuttx-kernel.omk | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/snippets/nuttx-bin.omk b/snippets/nuttx-bin.omk index ca8d1c2..f77234c 100644 --- a/snippets/nuttx-bin.omk +++ b/snippets/nuttx-bin.omk @@ -45,9 +45,12 @@ check-dir:: $(foreach prog,$(bin_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_BIN_DIR)))) $(foreach prog,$(test_PROGRAMS),$(eval $(call ELF_template,$(prog),$(USER_TESTS_DIR)))) +ifneq ($(ELF_FILE_LDSCRIPT),) binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%.elf) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%.elf) +binary-pass-local: $(kernel_MODULES:%=$(KERN_MODULES_DIR)/%$(KERN_LINK_SUFFIX)) +endif -binary-pass-local: $(kernel_MODULES:%=$(KERN_MODULES_DIR)/%$(KERN_LINK_SUFFIX)) $(kernel_MODULES:%=$(KERN_MODULES_DIR)/lib%.ka) +binary-pass-local: $(kernel_MODULES:%=$(KERN_MODULES_DIR)/lib%.ka) $(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGBUILTIN_template,$(prog),$(USER_REGISTRY_DIR),$(USER_REGISTRY_DIR)))) diff --git a/snippets/nuttx-compile.omk b/snippets/nuttx-compile.omk index 2f223a8..cf830a0 100644 --- a/snippets/nuttx-compile.omk +++ b/snippets/nuttx-compile.omk @@ -59,6 +59,8 @@ CFLAGS += -Wall CFLAGS += -I$(SOURCES_DIR) CFLAGS += -I$(INCLUDE_DIR) +ELF_FILE_LDSCRIPT?=$(wildcard $(NUTTX_EXPORT)/build/gnu-elf.ld) + LOADLIBES += -L$(LIB_DIR) LOADLIBES += $(lib_LOADLIBES:%=-l%) @@ -227,12 +229,12 @@ define ELF_template $(2)/$(1).elf: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " ELF $$@" $(Q) $(LINK) \ - -r -e main -T $(NUTTX_EXPORT)/build/gnu-elf.ld \ + -r -e main -T $(ELF_FILE_LDSCRIPT) \ -Map $(1).elf.map \ $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \ -o $$@ @echo "$(2)/$(1).elf: \\" >$(OBJS_DIR)/$(1).elf.d - @echo " $(NUTTX_EXPORT)/build/gnu-elf.ld \\" >>$(OBJS_DIR)/$(1).elf.d + @echo " $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1).elf.d @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1).elf.map|tr '&' '\134' >>$(OBJS_DIR)/$(1).elf.d @echo >>$(OBJS_DIR)/$(1).elf.d endef diff --git a/snippets/nuttx-kernel.omk b/snippets/nuttx-kernel.omk index 07b3eec..ed2370f 100644 --- a/snippets/nuttx-kernel.omk +++ b/snippets/nuttx-kernel.omk @@ -70,12 +70,12 @@ KERN_SOURCES += $$($(1)_SOURCES) $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " LD [K] $$@" $(Q) $(LINK) \ - -r -e module_initialize -T $(NUTTX_EXPORT)/build/gnu-elf.ld \ + -r -e module_initialize -T $(ELF_FILE_LDSCRIPT) \ -Map $(1)$(KERN_LINK_SUFFIX).map \ $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \ -o $$@ @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d - @echo " $(NUTTX_EXPORT)/build/gnu-elf.ld \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d + @echo " $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d -- 2.39.2