@@ -31,19 +31,6 @@ This library provides single precision (SP) integer math functions.
3131
3232#if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)
3333
34- #if (!defined(WOLFSSL_SMALL_STACK) && !defined(SP_ALLOC)) || \
35- defined(WOLFSSL_SP_NO_MALLOC)
36- #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
37- !defined(WOLFSSL_SP_NO_DYN_STACK)
38- PRAGMA_GCC_DIAG_PUSH
39- /* We are statically declaring a variable smaller than sp_int.
40- * We track available memory in the 'size' field.
41- * Disable warnings of sp_int being partly outside array bounds of variable.
42- */
43- PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
44- #endif
45- #endif
46-
4734#ifdef NO_INLINE
4835 #include <wolfssl/wolfcrypt/misc.h>
4936#else
@@ -112,6 +99,15 @@ PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
11299
113100#include <wolfssl/wolfcrypt/sp_int.h>
114101
102+ #ifdef WOLFSSL_SP_DYN_STACK
103+ /* We are statically declaring a variable smaller than sp_int.
104+ * We track available memory in the 'size' field.
105+ * Disable warnings of sp_int being partly outside array bounds of variable.
106+ */
107+ PRAGMA_GCC_DIAG_PUSH
108+ PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
109+ #endif
110+
115111#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM)
116112 /* force off unneeded vector register save/restore. */
117113 #undef SAVE_VECTOR_REGISTERS
@@ -127,8 +123,7 @@ PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
127123 #define DECL_SP_INT(n, s) \
128124 sp_int* n = NULL
129125#else
130- #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
131- !defined(WOLFSSL_SP_NO_DYN_STACK)
126+ #ifdef WOLFSSL_SP_DYN_STACK
132127 /* Declare a variable on the stack with the required data size. */
133128 #define DECL_SP_INT(n, s) \
134129 sp_int_digit n##d[MP_INT_SIZEOF_DIGITS(s)]; \
@@ -218,8 +213,7 @@ PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
218213 /* Declare a variable that will be assigned a value on XMALLOC. */
219214 #define DECL_SP_INT_ARRAY(n, s, c) \
220215 DECL_DYN_SP_INT_ARRAY(n, s, c)
221- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
222- !defined(WOLFSSL_SP_NO_DYN_STACK)
216+ #elif defined(WOLFSSL_SP_DYN_STACK)
223217 /* Declare a variable on the stack with the required data size. */
224218 #define DECL_SP_INT_ARRAY(n, s, c) \
225219 sp_int_digit n##d[MP_INT_SIZEOF_DIGITS(s) * (c)]; \
@@ -264,8 +258,7 @@ while (0)
264258 !defined(WOLFSSL_SP_NO_MALLOC)
265259 #define ALLOC_SP_INT_ARRAY(n, s, c, err, h) \
266260 ALLOC_DYN_SP_INT_ARRAY(n, s, c, err, h)
267- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
268- !defined(WOLFSSL_SP_NO_DYN_STACK)
261+ #elif defined(WOLFSSL_SP_DYN_STACK)
269262 /* Data declared on stack that supports multiple sp_ints of the
270263 * required size. Use pointers into data to make up array and set sizes.
271264 */
@@ -9175,8 +9168,7 @@ static int _sp_mul_nxn(const sp_int* a, const sp_int* b, sp_int* r)
91759168 unsigned int k;
91769169#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
91779170 sp_int_digit* t = NULL;
9178- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
9179- !defined(WOLFSSL_SP_NO_DYN_STACK)
9171+ #elif defined(WOLFSSL_SP_DYN_STACK)
91809172 sp_int_digit t[a->used];
91819173#else
91829174 sp_int_digit t[SP_INT_DIGITS / 2];
@@ -9252,8 +9244,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r)
92529244 sp_size_t k;
92539245#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
92549246 sp_int_digit* t = NULL;
9255- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
9256- !defined(WOLFSSL_SP_NO_DYN_STACK)
9247+ #elif defined(WOLFSSL_SP_DYN_STACK)
92579248 sp_int_digit t[a->used + b->used];
92589249#else
92599250 sp_int_digit t[SP_INT_DIGITS];
@@ -9329,8 +9320,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r)
93299320 sp_size_t k;
93309321#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
93319322 sp_int_digit* t = NULL;
9332- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
9333- !defined(WOLFSSL_SP_NO_DYN_STACK)
9323+ #elif defined(WOLFSSL_SP_DYN_STACK)
93349324 sp_int_digit t[a->used + b->used];
93359325#else
93369326 sp_int_digit t[SP_INT_DIGITS];
@@ -14879,8 +14869,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r)
1487914869 sp_size_t k;
1488014870#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
1488114871 sp_int_digit* t = NULL;
14882- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
14883- !defined(WOLFSSL_SP_NO_DYN_STACK)
14872+ #elif defined(WOLFSSL_SP_DYN_STACK)
1488414873 sp_int_digit t[((a->used + 1) / 2) * 2 + 1];
1488514874#else
1488614875 sp_int_digit t[(SP_INT_DIGITS + 1) / 2];
@@ -14994,8 +14983,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r)
1499414983 sp_size_t k;
1499514984#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
1499614985 sp_int_digit* t = NULL;
14997- #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
14998- !defined(WOLFSSL_SP_NO_DYN_STACK)
14986+ #elif defined(WOLFSSL_SP_DYN_STACK)
1499914987 sp_int_digit t[a->used * 2];
1500014988#else
1500114989 sp_int_digit t[SP_INT_DIGITS];
@@ -19891,12 +19879,8 @@ void sp_memzero_check(sp_int* sp)
1989119879}
1989219880#endif /* WOLFSSL_CHECK_MEM_ZERO */
1989319881
19894- #if (!defined(WOLFSSL_SMALL_STACK) && !defined(SP_ALLOC)) || \
19895- defined(WOLFSSL_SP_NO_MALLOC)
19896- #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
19897- !defined(WOLFSSL_SP_NO_DYN_STACK)
19898- PRAGMA_GCC_DIAG_POP
19899- #endif
19882+ #ifdef WOLFSSL_SP_DYN_STACK
19883+ PRAGMA_GCC_DIAG_POP
1990019884#endif
1990119885
1990219886#endif /* WOLFSSL_SP_MATH || WOLFSSL_SP_MATH_ALL */
0 commit comments