summaryrefslogtreecommitdiff
path: root/lib/psci
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@xilinx.com>2017-08-23 13:55:21 -0700
committerAlistair Francis <alistair.francis@xilinx.com>2017-08-23 14:04:59 -0700
commit5722b78cdb4a69d08c3c585aae2fb8dd9cbb9bfc (patch)
treebe6c4f892ed4ef045fc3ba2ef8582c3430caf86e /lib/psci
parent5ae4dab2b86351579d85d5f5a8f85252336381b8 (diff)
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>
Diffstat (limited to 'lib/psci')
-rw-r--r--lib/psci/psci_common.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/psci/psci_common.c b/lib/psci/psci_common.c
index f31b3238..4502c24b 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
}
/******************************************************************************