From 3ffa14b043225b9766132b1979db7ddb8d91ba5e Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Wed, 16 Sep 2020 15:26:40 +0200 Subject: [PATCH] target/aarch64: fix use of 'target->private_config' The function adiv5_jim_configure() casts the void pointer 'target->private_config' to a struct adiv5_private_config pointer. This is tricky in case of aarch64, where the private data are in a struct aarch64_private_config that has as first element the struct adiv5_private_config. While the current solution is working fine, it's not clean and requires special attention for any further code development. Override 'target->private_config' to the correct pointer while calling adiv5_jim_configure(). Change-Id: Ic2fc047dd1e57013943d96e6d5879a919d1eb7b3 Signed-off-by: Antonio Borneo Reviewed-on: http://openocd.zylin.com/5847 Tested-by: jenkins Reviewed-by: Tarek BOCHKATI --- src/target/aarch64.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/target/aarch64.c b/src/target/aarch64.c index 8d23bcabc6..d111a05687 100644 --- a/src/target/aarch64.c +++ b/src/target/aarch64.c @@ -2504,8 +2504,13 @@ static int aarch64_jim_configure(struct target *target, Jim_GetOptInfo *goi) * options, JIM_OK if it correctly parsed the topmost option * and JIM_ERR if an error occurred during parameter evaluation. * For JIM_CONTINUE, we check our own params. + * + * adiv5_jim_configure() assumes 'private_config' to point to + * 'struct adiv5_private_config'. Override 'private_config'! */ + target->private_config = &pc->adiv5_config; e = adiv5_jim_configure(target, goi); + target->private_config = pc; if (e != JIM_CONTINUE) return e; -- 2.30.2