jtag: xds110: fix clang error core.StackAddressEscape
commit3ea1bfce4faf656d0506c194084807f1e498abff
authorAntonio Borneo <borneo.antonio@gmail.com>
Wed, 16 Nov 2022 22:06:12 +0000 (16 23:06 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 3 Dec 2022 09:25:27 +0000 (3 09:25 +0000)
treec01612d7d95dddb021dc7fc52712c5883331039b
parent0f034868f2c90741e57c5e27121e292b1774c080
jtag: xds110: fix clang error core.StackAddressEscape

Clang ignores that xds110_swd_write_reg() is always called with
bit SWD_CMD_RNW in 'cmd' set to zero.
It then complains that the local variable 'value' gets passed by
address to xds110_swd_queue_cmd() and in case of 'read request'
such stack address get stored for later use:
src/jtag/drivers/xds110.c:1363:1: warning: Address of
 stack memory associated with local variable 'value' is
 still referred to by the global variable 'xds110' upon
 returning to the caller. This will be a dangling
 reference [core.StackAddressEscape]

To both xds110_swd_write_reg() and xds110_swd_read_reg(), add an
assert() to inform Clang about the state of bit SWD_CMD_RNW.

Change-Id: I7687c055ec71424b642e152f478723a930966e3a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7380
Tested-by: jenkins
src/jtag/drivers/xds110.c