Enable 64-bit compilation with ARM Compiler 6
This patch fixes the conditional preprocessor directives in include/mbedtls/bignum.h to enable 64-bit compilation with ARM Compiler 6.
This commit is contained in:
parent
a95d630197
commit
aa27dfeecc
2 changed files with 43 additions and 27 deletions
|
@ -27,6 +27,8 @@ Bugfix
|
||||||
Found by redplait #590
|
Found by redplait #590
|
||||||
* Add MBEDTLS_MPI_CHK to check for error value of mbedtls_mpi_fill_random.
|
* Add MBEDTLS_MPI_CHK to check for error value of mbedtls_mpi_fill_random.
|
||||||
Reported and fix suggested by guidovranken in #740
|
Reported and fix suggested by guidovranken in #740
|
||||||
|
* Fix conditional preprocessor directives in bignum.h to enable 64-bit
|
||||||
|
compilation when using ARM Compiler 6.
|
||||||
|
|
||||||
Security
|
Security
|
||||||
* Fix authentication bypass in SSL/TLS: when auth_mode is set to optional,
|
* Fix authentication bypass in SSL/TLS: when auth_mode is set to optional,
|
||||||
|
|
|
@ -106,33 +106,47 @@
|
||||||
* 32-bit integers can be forced on 64-bit arches (eg. for testing purposes)
|
* 32-bit integers can be forced on 64-bit arches (eg. for testing purposes)
|
||||||
* by defining MBEDTLS_HAVE_INT32 and undefining MBEDTLS_HAVE_ASM
|
* by defining MBEDTLS_HAVE_INT32 and undefining MBEDTLS_HAVE_ASM
|
||||||
*/
|
*/
|
||||||
#if ( ! defined(MBEDTLS_HAVE_INT32) && \
|
#if !defined(MBEDTLS_HAVE_INT32)
|
||||||
defined(_MSC_VER) && defined(_M_AMD64) )
|
#if defined(_MSC_VER) && defined(_M_AMD64)
|
||||||
|
/* Always choose 64-bit when using MSC */
|
||||||
#define MBEDTLS_HAVE_INT64
|
#define MBEDTLS_HAVE_INT64
|
||||||
typedef int64_t mbedtls_mpi_sint;
|
typedef int64_t mbedtls_mpi_sint;
|
||||||
typedef uint64_t mbedtls_mpi_uint;
|
typedef uint64_t mbedtls_mpi_uint;
|
||||||
#else
|
#elif defined(__GNUC__) && ( \
|
||||||
#if ( ! defined(MBEDTLS_HAVE_INT32) && \
|
|
||||||
defined(__GNUC__) && ( \
|
|
||||||
defined(__amd64__) || defined(__x86_64__) || \
|
defined(__amd64__) || defined(__x86_64__) || \
|
||||||
defined(__ppc64__) || defined(__powerpc64__) || \
|
defined(__ppc64__) || defined(__powerpc64__) || \
|
||||||
defined(__ia64__) || defined(__alpha__) || \
|
defined(__ia64__) || defined(__alpha__) || \
|
||||||
( defined(__sparc__) && defined(__arch64__) ) || \
|
( defined(__sparc__) && defined(__arch64__) ) || \
|
||||||
defined(__s390x__) || defined(__mips64) ) )
|
defined(__s390x__) || defined(__mips64) )
|
||||||
#define MBEDTLS_HAVE_INT64
|
#define MBEDTLS_HAVE_INT64
|
||||||
typedef int64_t mbedtls_mpi_sint;
|
typedef int64_t mbedtls_mpi_sint;
|
||||||
typedef uint64_t mbedtls_mpi_uint;
|
typedef uint64_t mbedtls_mpi_uint;
|
||||||
/* mbedtls_t_udbl defined as 128-bit unsigned int */
|
/* mbedtls_t_udbl defined as 128-bit unsigned int */
|
||||||
typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI)));
|
typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI)));
|
||||||
#define MBEDTLS_HAVE_UDBL
|
#define MBEDTLS_HAVE_UDBL
|
||||||
#else
|
#elif defined(__ARMCC_VERSION) && defined(__aarch64__)
|
||||||
|
/* __ARMCC_VERSION is defined for both armcc and armclang and
|
||||||
|
* __aarch64__ is only defined by armclang when compiling 64-bit code
|
||||||
|
*/
|
||||||
|
#define MBEDTLS_HAVE_INT64
|
||||||
|
typedef int64_t mbedtls_mpi_sint;
|
||||||
|
typedef uint64_t mbedtls_mpi_uint;
|
||||||
|
/* mbedtls_t_udbl defined as 128-bit unsigned int */
|
||||||
|
typedef __uint128_t mbedtls_t_udbl;
|
||||||
|
#define MBEDTLS_HAVE_UDBL
|
||||||
|
#endif
|
||||||
|
#endif /* !MBEDTLS_HAVE_INT32 */
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_HAVE_INT64)
|
||||||
|
/* Default to 32-bit compilation */
|
||||||
|
#if !defined(MBEDTLS_HAVE_INT32)
|
||||||
#define MBEDTLS_HAVE_INT32
|
#define MBEDTLS_HAVE_INT32
|
||||||
|
#endif /* !MBEDTLS_HAVE_INT32 */
|
||||||
typedef int32_t mbedtls_mpi_sint;
|
typedef int32_t mbedtls_mpi_sint;
|
||||||
typedef uint32_t mbedtls_mpi_uint;
|
typedef uint32_t mbedtls_mpi_uint;
|
||||||
typedef uint64_t mbedtls_t_udbl;
|
typedef uint64_t mbedtls_t_udbl;
|
||||||
#define MBEDTLS_HAVE_UDBL
|
#define MBEDTLS_HAVE_UDBL
|
||||||
#endif /* !MBEDTLS_HAVE_INT32 && __GNUC__ && 64-bit platform */
|
#endif /* !MBEDTLS_HAVE_INT64 */
|
||||||
#endif /* !MBEDTLS_HAVE_INT32 && _MSC_VER && _M_AMD64 */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
Loading…
Reference in a new issue