| e34f6cde | 12-Apr-2019 |
Sumit Garg <sumit.garg@linaro.org> |
gprof: define original mcount APIs inserted by compiler
Simplify gprof implementation via defining original mcount APIs: _mcount (for aarch64) and __gnu_mcount_nc (for arm) inserted by compiler inst
gprof: define original mcount APIs inserted by compiler
Simplify gprof implementation via defining original mcount APIs: _mcount (for aarch64) and __gnu_mcount_nc (for arm) inserted by compiler instead of providing them via __utee_mcount API.
Also remove weak definitions of mcount API that were earlier mandated by linker script via PROVIDE().
Signed-off-by: Sumit Garg <sumit.garg@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 64718c93 | 29-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
Allow building libutils etc. as shared libraries
When CFG_ULIBS_SHARED=y (default n), build libutils, libmpa/libmbedtls and libutee as shared libraries (.so). The static archives (.a) are still prod
Allow building libutils etc. as shared libraries
When CFG_ULIBS_SHARED=y (default n), build libutils, libmpa/libmbedtls and libutee as shared libraries (.so). The static archives (.a) are still produced. The linker uses shared libraries by default when present so TAs just need to be re-built to use the shared libraries.
For the time being, in-tree TAs are always linked statically for practical reasons. Indeed, in-tree TAs (such as ta/avb) are likely to be used as "early TAs". If such a TA was linked against shared libraries, then those libraries would need to be installed in the "early TA" area, too. While this works fine technically, it requires some more steps in the Makefiles to make sure the proper dependencies are installed and also it would mean that those libraries take precedence over the ones potentially installed in the REE FS etc. In other words, it would raise questions that we do not want nor need to address now.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 9b294376 | 30-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
User TA: add --as-needed to link flags
Add link flag '--as-needed' to avoid adding dependencies onto shared libraries that are not actually used. This becomes particularly useful when we build the b
User TA: add --as-needed to link flags
Add link flag '--as-needed' to avoid adding dependencies onto shared libraries that are not actually used. This becomes particularly useful when we build the base user libraries (libutils, libmpa and libmbedtls) as shared objects. Without the flag, and because all libraries are passed to the linker by default, all TAs would need to map all the libraries at runtime resulting in a waste of memory.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| ce0bad55 | 07-Feb-2019 |
Jerome Forissier <jerome.forissier@linaro.org> |
ta: link.mk: set linker max-page-size to 4K
TA binaries contain a lot of zero padding (almost 64 KiB) between sections .ta_head and .text. This value can be reduced to 4 KiB by reducing the linker's
ta: link.mk: set linker max-page-size to 4K
TA binaries contain a lot of zero padding (almost 64 KiB) between sections .ta_head and .text. This value can be reduced to 4 KiB by reducing the linker's max-page-size parameter. Since the OP-TEE ELF loader always aligns on small page boundaries, it does not make sense to request a larger alignment.
This patch adds "-z max-page-size=4096" to the linker flags so that the alignment constraints are relaxed from 64 KiB (the default for our 32 and 64 targets as it seems) to what OP-TEE is actually expecting (4 KiB). The TA file size is reduced by 60 KiB. It changes nothing to the layout of the TA in memory.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 275d9d31 | 12-Dec-2018 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
ta: avb: add support for named persistent values
Introduce support for named persistent values [1], that are mainly used to store persistent digests.
Link: [1] https://android.googlesource.com/plat
ta: avb: add support for named persistent values
Introduce support for named persistent values [1], that are mainly used to store persistent digests.
Link: [1] https://android.googlesource.com/platform/external/avb/+/master/README.md#Named-Persistent-Values
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 062e3d01 | 13-Nov-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: switch to to mbedtls for bignum
Adds tee_api_arith_mpi.c wrapper providing the TEE Arithmetical API around the big (mpi) routines from mbedtls.
CFG_TA_MBEDTLS_MPI=y (default y) enables the usag
ta: switch to to mbedtls for bignum
Adds tee_api_arith_mpi.c wrapper providing the TEE Arithmetical API around the big (mpi) routines from mbedtls.
CFG_TA_MBEDTLS_MPI=y (default y) enables the usage of the bignum routines in libutee.
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 412dcda1 | 29-Nov-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
TA: export CFG_TEE_TA_LOG_LEVEL to dev-kit
Exports CFG_TEE_TA_LOG_LEVEL to TA dev-kit. It can still be overridden when compiling the TA, but it makes sense to default to the value used when compilin
TA: export CFG_TEE_TA_LOG_LEVEL to dev-kit
Exports CFG_TEE_TA_LOG_LEVEL to TA dev-kit. It can still be overridden when compiling the TA, but it makes sense to default to the value used when compiling the dev-kit.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c48dbbc1 | 12-Sep-2018 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
ta: link.mk: evaluate $(sm) values in targets
$(sm) var isn't properly evalutated as the link.mk is included (final evaluation is done when the rule is triggered). Add dynamic target generation base
ta: link.mk: evaluate $(sm) values in targets
$(sm) var isn't properly evalutated as the link.mk is included (final evaluation is done when the rule is triggered). Add dynamic target generation based on the current value of $(sm)
Fixes: https://github.com/OP-TEE/optee_os/issues/2537 Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| e07aecdb | 24-Aug-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
ta: link.mk: filter out dependency and command files from $(MAKEFILE_LIST)
Prevents ta.lds from being needlessly re-generated, such as in the following test case:
$ make -s out/arm-plat-vexpress/t
ta: link.mk: filter out dependency and command files from $(MAKEFILE_LIST)
Prevents ta.lds from being needlessly re-generated, such as in the following test case:
$ make -s out/arm-plat-vexpress/ta/avb/ta.lds $ make -s out/arm-plat-vexpress/core/kernel/console.o $ make out/arm-plat-vexpress/ta/avb/ta.lds CHK out/arm-plat-vexpress/conf.mk CHK out/arm-plat-vexpress/include/generated/conf.h CPP out/arm-plat-vexpress/ta/avb/ta.lds
The last line should not hapen because ta.lds exists already, and building the unrelated console.o should not trigger a re-build.
The cause of the re-build is the dependency on $(MAKEFILE_LIST) which contains *all* the files that record previous build command and dependencies such as out/arm-plat-vexpress/core/kernel/.console.o.{d,cmd}.
Filter out those files, thus keeping only the static Makefiles (*.mk). This is still more than needed since all the core *.mk are present, but listing only the TA-related makefiles seems tricky (has to work both inside and outside the OP-TEE build environment), and removing $(MAKEFILE_LIST) altogether presents a risk that TA developers using the TA dev kit will complain that their TA doesn't get re-built after a flag is changed in a Makefile.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 8452bf4e | 13-Aug-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
Do not make in-tree TAs depend on a phony target
Commit cf903a62bc12 ("Add dependency on ta-dev-kit when building in-tree TA") introduces a dependency of the in-tree TA object files on the phony tar
Do not make in-tree TAs depend on a phony target
Commit cf903a62bc12 ("Add dependency on ta-dev-kit when building in-tree TA") introduces a dependency of the in-tree TA object files on the phony target 'ta_dev_kit'. The purpose was to make sure the dev kit files are available when make starts building the TA. Unfortunately, this introduces useless recompilation (the lines marked with >):
$ make -s && make CHK out/arm-plat-vexpress/conf.mk CHK out/arm-plat-vexpress/include/generated/conf.h CHK out/arm-plat-vexpress/conf.cmake CHK out/arm-plat-vexpress/export-ta_arm32/mk/conf.mk > CC out/arm-plat-vexpress/ta/avb/entry.o > CC out/arm-plat-vexpress/ta/avb/user_ta_header.o > CPP out/arm-plat-vexpress/ta/avb/ta.lds > LD out/arm-plat-vexpress/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.elf > OBJDUMP out/arm-plat-vexpress/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.dmp > OBJCOPY out/arm-plat-vexpress/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.stripped.elf > SIGN out/arm-plat-vexpress/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.ta
This happens because phony targets are always considered new by the make program, so they'd rather not be used as dependencies. Instead, replace 'ta-dev-kit' by the actual list of all the files in the TA dev kit. Then, the second make invocation will not rebuild anything:
$ make -s && make CHK out/arm-plat-vexpress/conf.mk CHK out/arm-plat-vexpress/include/generated/conf.h CHK out/arm-plat-vexpress/conf.cmake CHK out/arm-plat-vexpress/export-ta_arm32/mk/conf.mk
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| cf903a62 | 10-Aug-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
Add dependency on ta-dev-kit when building in-tree TA
Fixes the following errors which may reportedly be triggered by plain "make" too [1]:
$ make -s clean && make -s out/arm-plat-vexpress/ta/avb/
Add dependency on ta-dev-kit when building in-tree TA
Fixes the following errors which may reportedly be triggered by plain "make" too [1]:
$ make -s clean && make -s out/arm-plat-vexpress/ta/avb/entry.o cc1: warning: out/arm-plat-vexpress/export-ta_arm32/include: No such file or directory [-Wmissing-include-dirs] ta/avb/entry.c:5:30: fatal error: tee_internal_api.h: No such file or directory compilation terminated. mk/compile.mk:146: recipe for target 'out/arm-plat-vexpress/ta/avb/entry.o' failed make: *** [out/arm-plat-vexpress/ta/avb/entry.o] Error 1
$ make -s clean && make -s out/arm-plat-vexpress/ta/avb/user_ta_header.o cc1: warning: out/arm-plat-vexpress/export-ta_arm32/include: No such file or directory [-Wmissing-include-dirs] out/arm-plat-vexpress/export-ta_arm32/src/user_ta_header.c:5:22: fatal error: compiler.h: No such file or directory compilation terminated. mk/compile.mk:154: recipe for target 'out/arm-plat-vexpress/ta/avb/user_ta_header.o' failed make: *** [out/arm-plat-vexpress/ta/avb/user_ta_header.o] Error 1
Link: [1] https://github.com/OP-TEE/build/issues/285 Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| fefbee97 | 03-Aug-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
Replace 'echo' commands with '$(cmd-echo-silent)'
Since commit b29b419506fa ("ta: add AVB TA"), "make -s" is not totally silent anymore. The following line is always printed:
SIGN out/ta/avb/0
Replace 'echo' commands with '$(cmd-echo-silent)'
Since commit b29b419506fa ("ta: add AVB TA"), "make -s" is not totally silent anymore. The following line is always printed:
SIGN out/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.ta
The AVB commit just revealed a simple mistake in the TA makefile. Fix it.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| ca7065cb | 03-Aug-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
In-tree TAs: prevent double slash in object paths
When processing the source files for an in-tree user TA (ta/*/user_ta.mk), make sure not to insert a double slash in the object file path.
Fixes th
In-tree TAs: prevent double slash in object paths
When processing the source files for an in-tree user TA (ta/*/user_ta.mk), make sure not to insert a double slash in the object file path.
Fixes the following error:
$ make -s $ make clean CLEAN out/arm-plat-vexpress rmdir: failed to remove 'out/arm-plat-vexpress/ta/avb': No such file or directory Makefile:98: recipe for target 'clean' failed make: *** [clean] Error 1
The error results from the fact that we have two kinds of object files in the in-tree TAs: - The object files built from ta/*/user_ta.mk. For AVB, we have out/arm-plat-vexpress/ta/avb//entry.o (notice the repeated slash). - The object files that correspond to "specified source files", i.e., constructed from $(spec-out-dir) and $(spec-srcs). For AVB we have out/arm-plat-vexpress/ta/avb/user_ta_header.o. When "make clean" creates the list of directories to be removed, it strips the /filename part and keeps only the directory part, resulting in:
rmdir ... out/arm-plat-vexpress/ta/avb/ out/arm-plat-vexpress/ta/avb
Trying to remove the same directory twice: "No such file or directory".
Fixes: https://github.com/OP-TEE/optee_os/issues/2484 Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| ff6684bd | 30-Jul-2018 |
Pengguang Zhu <zpghao@163.com> |
ta: mk: make sign tool configurable
Since custom load and verification methods for user TA is supported, the sign tool also should be configurable.
Signed-off-by: Pengguang Zhu <zpghao@163.com> Ack
ta: mk: make sign tool configurable
Since custom load and verification methods for user TA is supported, the sign tool also should be configurable.
Signed-off-by: Pengguang Zhu <zpghao@163.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| b29b4195 | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: add AVB TA
Adds an AVB TA to be used to provide required services for AVB in U-boot.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linar
ta: add AVB TA
Adds an AVB TA to be used to provide required services for AVB in U-boot.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| cfa34d9a | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
Add support for compiling in-tree TAs
Adds support for compiling in-tree TAs. Unless specified via CFG_USER_TA_TARGET_<ta-name> the TA will be built with the first TA target (aka TA dev kit, when de
Add support for compiling in-tree TAs
Adds support for compiling in-tree TAs. Unless specified via CFG_USER_TA_TARGET_<ta-name> the TA will be built with the first TA target (aka TA dev kit, when delivered) specified in the variable ta-targets which is initialized in core/arch/arm/plat-*/conf.mk.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| d58d79ec | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: support variables user-ta-{uuid,ldadd}
Replaces the old variables "binary" and "ldadd" with "user-ta-uuid" and "user-ta-ldadd" respectively.
Reviewed-by: Jerome Forissier <jerome.forissier@lina
ta: support variables user-ta-{uuid,ldadd}
Replaces the old variables "binary" and "ldadd" with "user-ta-uuid" and "user-ta-ldadd" respectively.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 35b4ef75 | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: prepare for in-tree ta building
Prepare for in-tree TA building by adding $(sm) to all TA dev-kit variables that may cause conflicts either with the core linking or when linking multiple TAs.
R
ta: prepare for in-tree ta building
Prepare for in-tree TA building by adding $(sm) to all TA dev-kit variables that may cause conflicts either with the core linking or when linking multiple TAs.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b6ca4bb2 | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: link.mk: drop support for variable LDFLAGS
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> |
| 20bfbd89 | 17-Jul-2018 |
Jens Wiklander <jens.wiklander@linaro.org> |
ta: link.mk: discard library ordering
All the static user TA libraries supplied in $(libnames) are linked in the same group using --start-group and --end-group so the order of the libraries doesn't
ta: link.mk: discard library ordering
All the static user TA libraries supplied in $(libnames) are linked in the same group using --start-group and --end-group so the order of the libraries doesn't matter any more. Remove the complexity of reordering the libraries.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 7adc6862 | 30-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
TA dev kit: shared library: strip directory part
The symbolic link and its target are in the same directory, so we need to make sure that there is no relative path before the target filename. The pr
TA dev kit: shared library: strip directory part
The symbolic link and its target are in the same directory, so we need to make sure that there is no relative path before the target filename. The proper Make variable to use is therefore not $< but $(<F).
Fixes: 01b8b5ce011d ("TA dev kit: when building a shared library, create symlink with UUID") Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 0095d8b4 | 31-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
ta/ta.mk: export CFG_TA_DYNLINK
Allows a TA to determine at build time if the targeted OP-TEE supports run time dynamic linking.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Review
ta/ta.mk: export CFG_TA_DYNLINK
Allows a TA to determine at build time if the targeted OP-TEE supports run time dynamic linking.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 4a8734ef | 30-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
TA dev kit: shared library: add -f argument to ln
When creating a symbolic link <uuid>.elf -> libname.so, use the -f (force) argument so that the command won't fail if the link already exists. It is
TA dev kit: shared library: add -f argument to ln
When creating a symbolic link <uuid>.elf -> libname.so, use the -f (force) argument so that the command won't fail if the link already exists. It is a very common case: the first time the library is built and the link is created. Then whenever some source file is modified, the .so is re-linked but the symbolic link is there already.
Fixes: 01b8b5ce011d ("TA dev kit: when building a shared library, create symlink with UUID") Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 4bca302a | 22-May-2018 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
pta: add system pTA
Add system pTA, which provides misc. auxiliary services, extending existing GlobalPlatform Core API. Add a call for seeding entropy to the default RNG pool.
Reviewed-by: Jens Wi
pta: add system pTA
Add system pTA, which provides misc. auxiliary services, extending existing GlobalPlatform Core API. Add a call for seeding entropy to the default RNG pool.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 01b8b5ce | 24-May-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
TA dev kit: when building a shared library, create symlink with UUID
For convenience for use by tools such as scripts/symbolize.py, create a symbolic link <uuid>.elf -> libfoo.so.
Signed-off-by: Je
TA dev kit: when building a shared library, create symlink with UUID
For convenience for use by tools such as scripts/symbolize.py, create a symbolic link <uuid>.elf -> libfoo.so.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|