1link-script$(sm) = ldelf/ldelf.ld.S 2link-script-pp$(sm) = $(link-out-dir$(sm))/ldelf.lds 3link-script-dep$(sm) = $(link-out-dir$(sm))/.ldelf.ld.d 4 5.PHONY: ldelf 6ldelf: $(link-out-dir$(sm))/ldelf.dmp 7ldelf: $(link-out-dir$(sm))/ldelf.elf 8all: ldelf 9 10cleanfiles += $(link-out-dir$(sm))/ldelf.dmp 11cleanfiles += $(link-out-dir$(sm))/ldelf.map 12cleanfiles += $(link-out-dir$(sm))/ldelf.elf 13cleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm)) 14 15link-ldflags = -pie -static --gc-sections 16link-ldflags += -T $(link-script-pp$(sm)) 17link-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map 18link-ldflags += --sort-section=alignment 19link-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment 20ifeq ($(CFG_CORE_BTI),y) 21link-ldflags += $(call ld-option,-z force-bti) --fatal-warnings 22endif 23link-ldflags += $(link-ldflags$(sm)) 24 25link-ldadd = $(addprefix -L,$(libdirs)) 26link-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 27ldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) $(libgcc$(sm)) 28 29link-script-cppflags-$(sm) := \ 30 $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \ 31 $(nostdinc$(sm)) $(CPPFLAGS) \ 32 $(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \ 33 $(cppflags$(sm))) 34 35-include $(link-script-dep$(sm)) 36 37link-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST)) 38 39define gen-link-t 40$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \ 41 $(link-script-pp-makefiles$(sm)) 42 @$(cmd-echo-silent) ' CPP $$@' 43 $(q)mkdir -p $$(dir $$@) 44 $(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \ 45 $(link-script-cppflags-$(sm)) $$< -o $$@ 46 47$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm)) 48 @$(cmd-echo-silent) ' LD $$@' 49 $(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@ 50 51$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf 52 @$(cmd-echo-silent) ' OBJDUMP $$@' 53 $(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@ 54endef 55 56$(eval $(call gen-link-t)) 57