From 5722b78cdb4a69d08c3c585aae2fb8dd9cbb9bfc Mon Sep 17 00:00:00 2001 From: Alistair Francis <alistair.francis@xilinx.com> Date: Wed, 23 Aug 2017 13:55:21 -0700 Subject: [PATCH] psci_common: Resolve GCC static analysis false positive Previously commit 555ebb34db8f3424c1b394df2f10ecf9c1f70901 attmpted to fix this GCC issue: services/std_svc/psci/psci_common.c: In function 'psci_do_state_coordination': services/std_svc/psci/psci_common.c:220:27: error: array subscript is above array bounds [-Werror=array-bounds] psci_req_local_pwr_states[pwrlvl - 1][cpu_idx] = req_pwr_state; This fix doesn't work as asserts aren't built in non-debug build flows. Let's use GCCs #pragma option (documented here: https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html) to avoid this false positive instead. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> --- lib/psci/psci_common.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/psci/psci_common.c b/lib/psci/psci_common.c index f31b32386..4502c24b5 100644 --- a/lib/psci/psci_common.c +++ b/lib/psci/psci_common.c @@ -194,8 +194,15 @@ static void psci_set_req_local_pwr_state(unsigned int pwrlvl, unsigned int cpu_idx, plat_local_state_t req_pwr_state) { + /* + * This should never happen, we have this here to avoid + * "array subscript is above array bounds" errors in GCC. + */ assert(pwrlvl > PSCI_CPU_PWR_LVL); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Warray-bounds" psci_req_local_pwr_states[pwrlvl - 1][cpu_idx] = req_pwr_state; +#pragma GCC diagnostic pop } /****************************************************************************** -- GitLab