34d743be7a
Add two patches over current optee-client 3.4.0 to fix build issues reported by some toolchains with traces like: /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c: In function 'TEEC_InitializeContext': /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c:149:28: error: 'gen_caps' may be used uninitialized in this function [-Werror=maybe-uninitialized] ctx->reg_mem = gen_caps & TEE_GEN_CAP_REG_MEM; ^ /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c: In function ‘TEEC_OpenSession’: /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c:507:8: error: cast increases required alignment of target type [-Werror=cast-align] arg = (struct tee_ioctl_open_session_arg *)buf; ^ /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c: In function ‘TEEC_InvokeCommand’: /path/to/build/optee-client-3.4.0/libteec/src/tee_client_api.c:581:8: error: cast increases required alignment of target type [-Werror=cast-align] arg = (struct tee_ioctl_invoke_arg *)buf; The optee-client patches have been in the OP-TEE project [1] & [2] and will be available in the OP-TEE next release planned 3.5.0. Fixes [3], [4], [5] and other failing builds reported by autobuild tests. [1]9dbc61b376
[2]16c8f54878
[3] http://autobuild.buildroot.net/results/80e78cb0bb955e912d6cbe5b30c9b024e7efc802 [4] http://autobuild.buildroot.net/results/a42c19897d03beb02fde2e7e6da25532be27d5ca [5] http://autobuild.buildroot.net/results/827087f91b7481d1c3effd615172bbee86317962 Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
65 lines
2.7 KiB
Diff
65 lines
2.7 KiB
Diff
From d6f79741803dd31b34960dbc59999eb2482df9c1 Mon Sep 17 00:00:00 2001
|
|
From: Victor Chong <victor.chong@linaro.org>
|
|
Date: Fri, 22 Mar 2019 06:37:13 +0000
|
|
Subject: [PATCH] libteec: fix clang build errors
|
|
|
|
external/optee_client/libteec/src/tee_client_api.c:488:11: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
|
|
uint8_t data[sizeof(struct tee_ioctl_open_session_arg) + p_sz];
|
|
^
|
|
external/optee_client/libteec/src/tee_client_api.c:566:11: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
|
|
uint8_t data[sizeof(struct tee_ioctl_invoke_arg) + p_sz];
|
|
^
|
|
|
|
Fixes: 9dbc61b3 ("libteec: fix build warnings")
|
|
Fixes: https://github.com/OP-TEE/optee_client/issues/152
|
|
|
|
Signed-off-by: Victor Chong <victor.chong@linaro.org>
|
|
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
|
|
|
|
Upstream: https://github.com/OP-TEE/optee_client/commit/16c8f548786c70df04d3a1e61bf89abce9b92389
|
|
[fix conflict]
|
|
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
|
|
---
|
|
libteec/src/tee_client_api.c | 14 ++++++++------
|
|
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/libteec/src/tee_client_api.c b/libteec/src/tee_client_api.c
|
|
index cf0b1f7..4d7b134 100644
|
|
--- a/libteec/src/tee_client_api.c
|
|
+++ b/libteec/src/tee_client_api.c
|
|
@@ -481,11 +481,12 @@ TEEC_Result TEEC_OpenSession(TEEC_Context *ctx, TEEC_Session *session,
|
|
uint32_t connection_method, const void *connection_data,
|
|
TEEC_Operation *operation, uint32_t *ret_origin)
|
|
{
|
|
- size_t p_sz = TEEC_CONFIG_PAYLOAD_REF_COUNT *
|
|
- sizeof(struct tee_ioctl_param);
|
|
+ const size_t arg_size = sizeof(struct tee_ioctl_open_session_arg) +
|
|
+ TEEC_CONFIG_PAYLOAD_REF_COUNT *
|
|
+ sizeof(struct tee_ioctl_param);
|
|
union {
|
|
struct tee_ioctl_open_session_arg arg;
|
|
- uint8_t data[sizeof(struct tee_ioctl_open_session_arg) + p_sz];
|
|
+ uint8_t data[arg_size];
|
|
} buf;
|
|
struct tee_ioctl_buf_data buf_data;
|
|
struct tee_ioctl_open_session_arg *arg;
|
|
@@ -559,11 +560,12 @@ void TEEC_CloseSession(TEEC_Session *session)
|
|
TEEC_Result TEEC_InvokeCommand(TEEC_Session *session, uint32_t cmd_id,
|
|
TEEC_Operation *operation, uint32_t *error_origin)
|
|
{
|
|
- size_t p_sz = TEEC_CONFIG_PAYLOAD_REF_COUNT *
|
|
- sizeof(struct tee_ioctl_param);
|
|
+ const size_t arg_size = sizeof(struct tee_ioctl_invoke_arg) +
|
|
+ TEEC_CONFIG_PAYLOAD_REF_COUNT *
|
|
+ sizeof(struct tee_ioctl_param);
|
|
union {
|
|
struct tee_ioctl_invoke_arg arg;
|
|
- uint8_t data[sizeof(struct tee_ioctl_invoke_arg) + p_sz];
|
|
+ uint8_t data[arg_size];
|
|
} buf;
|
|
struct tee_ioctl_buf_data buf_data;
|
|
struct tee_ioctl_invoke_arg *arg;
|
|
--
|
|
2.17.1
|
|
|