17509ff7cSJens Wiklanderlink-script$(sm) = ldelf/ldelf.ld.S 27509ff7cSJens Wiklanderlink-script-pp$(sm) = $(link-out-dir$(sm))/ldelf.lds 37509ff7cSJens Wiklanderlink-script-dep$(sm) = $(link-out-dir$(sm))/.ldelf.ld.d 47509ff7cSJens Wiklander 57509ff7cSJens Wiklander.PHONY: ldelf 67509ff7cSJens Wiklanderldelf: $(link-out-dir$(sm))/ldelf.dmp 77509ff7cSJens Wiklanderldelf: $(link-out-dir$(sm))/ldelf.elf 87509ff7cSJens Wiklanderall: ldelf 97509ff7cSJens Wiklander 107509ff7cSJens Wiklandercleanfiles += $(link-out-dir$(sm))/ldelf.dmp 112d8d7e28SJerome Forissiercleanfiles += $(link-out-dir$(sm))/ldelf.map 127509ff7cSJens Wiklandercleanfiles += $(link-out-dir$(sm))/ldelf.elf 137509ff7cSJens Wiklandercleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm)) 147509ff7cSJens Wiklander 157509ff7cSJens Wiklanderlink-ldflags = -pie -static --gc-sections 167509ff7cSJens Wiklanderlink-ldflags += -T $(link-script-pp$(sm)) 177509ff7cSJens Wiklanderlink-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map 187509ff7cSJens Wiklanderlink-ldflags += --sort-section=alignment 197509ff7cSJens Wiklanderlink-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment 2048685b6cSJerome Forissierifeq ($(CFG_CORE_BTI),y) 2148685b6cSJerome Forissierlink-ldflags += $(call ld-option,-z force-bti) --fatal-warnings 2248685b6cSJerome Forissierendif 23*2f4d97e7SJerome Forissierifeq ($(CFG_ARM32_$(sm)), y) 24*2f4d97e7SJerome Forissierlink-ldflags += $(call ld-option,--no-warn-execstack) 25*2f4d97e7SJerome Forissierendif 267509ff7cSJens Wiklanderlink-ldflags += $(link-ldflags$(sm)) 277509ff7cSJens Wiklander 287509ff7cSJens Wiklanderlink-ldadd = $(addprefix -L,$(libdirs)) 297509ff7cSJens Wiklanderlink-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 30a03cdefbSVictor Chongldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) $(libgcc$(sm)) 317509ff7cSJens Wiklander 32df7712baSJens Wiklanderlink-script-cppflags-$(sm) := \ 337509ff7cSJens Wiklander $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \ 347509ff7cSJens Wiklander $(nostdinc$(sm)) $(CPPFLAGS) \ 357509ff7cSJens Wiklander $(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \ 367509ff7cSJens Wiklander $(cppflags$(sm))) 377509ff7cSJens Wiklander 387509ff7cSJens Wiklander-include $(link-script-dep$(sm)) 397509ff7cSJens Wiklander 407509ff7cSJens Wiklanderlink-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST)) 417509ff7cSJens Wiklander 427509ff7cSJens Wiklanderdefine gen-link-t 437509ff7cSJens Wiklander$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \ 447509ff7cSJens Wiklander $(link-script-pp-makefiles$(sm)) 457509ff7cSJens Wiklander @$(cmd-echo-silent) ' CPP $$@' 467509ff7cSJens Wiklander $(q)mkdir -p $$(dir $$@) 472f6dffbdSJerome Forissier $(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \ 482f6dffbdSJerome Forissier $(link-script-cppflags-$(sm)) $$< -o $$@ 497509ff7cSJens Wiklander 507509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm)) 517509ff7cSJens Wiklander @$(cmd-echo-silent) ' LD $$@' 527509ff7cSJens Wiklander $(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@ 537509ff7cSJens Wiklander 547509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf 557509ff7cSJens Wiklander @$(cmd-echo-silent) ' OBJDUMP $$@' 567509ff7cSJens Wiklander $(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@ 577509ff7cSJens Wiklanderendef 587509ff7cSJens Wiklander 597509ff7cSJens Wiklander$(eval $(call gen-link-t)) 60