diff options
author | Jerome Forissier <jerome.forissier@linaro.org> | 2018-02-06 16:25:53 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2018-05-04 15:58:52 +0200 |
commit | f8896d1301fc1fbb4eef751c4c9de1d2969c1190 (patch) | |
tree | 35921dfc97ee16e840584da932bee644ab942ca7 /ta/arch | |
parent | ceae7156316bb24975a0eb6a3b62c02848af64eb (diff) |
TA dev kit: add support for creating shared libraries
A new Makefile include (ta/arch/arm/link_shlib.mk) is introduced, it is
quite similar to the file used to generate a TA (ta/arch/arm/link.mk)
except that is produces a shared object: $(SHLIBNAME).so. A signed file
is also produced: $(SHLIBUUID).ta.
Actual support for dynamically linked TAs in the OP-TEE ELF loader will
be added in subsequent patches.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Acked-by: Joakim Bech <joakim.bech@linaro.org>
Diffstat (limited to 'ta/arch')
-rw-r--r-- | ta/arch/arm/link_shlib.mk | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ta/arch/arm/link_shlib.mk b/ta/arch/arm/link_shlib.mk new file mode 100644 index 00000000..717097ad --- /dev/null +++ b/ta/arch/arm/link_shlib.mk @@ -0,0 +1,41 @@ +ifeq (,$(shlibuuid)) +$(error SHLIBUUID not set) +endif +link-out-dir = $(out-dir) + +SIGN = $(TA_DEV_KIT_DIR)/scripts/sign.py +TA_SIGN_KEY ?= $(TA_DEV_KIT_DIR)/keys/default_ta.pem + +all: $(link-out-dir)/$(shlibname).so $(link-out-dir)/$(shlibname).dmp \ + $(link-out-dir)/$(shlibname).stripped.so \ + $(link-out-dir)/$(shlibuuid).ta + +cleanfiles += $(link-out-dir)/$(shlibname).so +cleanfiles += $(link-out-dir)/$(shlibname).dmp +cleanfiles += $(link-out-dir)/$(shlibname).stripped.so +cleanfiles += $(link-out-dir)/$(shlibuuid).ta + +shlink-ldflags = $(LDFLAGS) +shlink-ldflags += -shared + +shlink-ldadd = $(LDADD) +ldargs-$(shlibname).so := $(shlink-ldflags) $(objs) $(shlink-ldadd) + + +$(link-out-dir)/$(shlibname).so: $(objs) $(libdeps) + @$(cmd-echo-silent) ' LD $@' + $(q)$(LD$(sm)) $(ldargs-$(shlibname).so) --soname=$(shlibuuid) -o $@ + +$(link-out-dir)/$(shlibname).dmp: $(link-out-dir)/$(shlibname).so + @$(cmd-echo-silent) ' OBJDUMP $@' + $(q)$(OBJDUMP$(sm)) -l -x -d $< > $@ + +$(link-out-dir)/$(shlibname).stripped.so: $(link-out-dir)/$(shlibname).so + @$(cmd-echo-silent) ' OBJCOPY $@' + $(q)$(OBJCOPY$(sm)) --strip-unneeded $< $@ + +$(link-out-dir)/$(shlibuuid).ta: $(link-out-dir)/$(shlibname).stripped.so \ + $(TA_SIGN_KEY) + @echo ' SIGN $@' + $(q)$(SIGN) --key $(TA_SIGN_KEY) --uuid $(shlibuuid) --version 0 \ + --in $< --out $@ |