+diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h
+index c33bd8d4a..30262d540 100644
+--- a/include/mbedtls/bn_mul.h
++++ b/include/mbedtls/bn_mul.h
+@@ -56,13 +56,17 @@
+ #if defined(__GNUC__) && \
+ ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
+
++#if defined(__GNUC__) && __GNUC__ < 5 && defined(__PIC__)
++#define MULADDC_CANNOT_USE_EBX
++#endif
++
+ /*
+ * Disable use of the i386 assembly code below if option -O0, to disable all
+ * compiler optimisations, is passed, detected with __OPTIMIZE__
+ * This is done as the number of registers used in the assembly code doesn't
+ * work with the -O0 option.
+ */
+-#if defined(__i386__) && defined(__OPTIMIZE__)
++#if defined(__i386__) && defined(__OPTIMIZE__) && !defined(MULADDC_CANNOT_USE_EBX)
+
+ #define MULADDC_INIT \
+ asm( \
diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h
-index b86e580..ed904fe 100644
+index b86e5807e..ed904fe78 100644
--- a/include/mbedtls/check_config.h
+++ b/include/mbedtls/check_config.h
@@ -250,6 +250,11 @@
( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_ECDSA_C) || \
!defined(MBEDTLS_X509_CRT_PARSE_C) )
diff --git a/include/mbedtls/compat-1.3.h b/include/mbedtls/compat-1.3.h
-index a58b472..2b2203e 100644
+index a58b47243..2b2203edf 100644
--- a/include/mbedtls/compat-1.3.h
+++ b/include/mbedtls/compat-1.3.h
@@ -268,6 +268,9 @@
#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
-index 654f972..f6ef4ec 100644
+index 654f9725e..f6ef4ec18 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
-@@ -962,6 +962,21 @@
+@@ -961,6 +961,21 @@
+ */
#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
- /**
++/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDH_ANON_ENABLED
+ *
+ * Enable the ECDHE-ANON based ciphersuite modes in SSL / TLS.
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ANON_ENABLED
+
+
-+/**
+ /**
* \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
*
- * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
@@ -1566,7 +1581,7 @@
*
* Comment this macro to disable support for SSL session tickets
* PEM_PARSE uses AES for decrypting encrypted keys.
*/
diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
-index d31f6cd..fae852e 100644
+index d31f6cdd5..fae852e81 100644
--- a/include/mbedtls/ssl.h
+++ b/include/mbedtls/ssl.h
@@ -391,7 +391,8 @@ union mbedtls_ssl_premaster_secret
#endif
#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h
-index 71053e5..311fb62 100644
+index 71053e5ba..311fb620d 100644
--- a/include/mbedtls/ssl_ciphersuites.h
+++ b/include/mbedtls/ssl_ciphersuites.h
@@ -165,6 +165,8 @@ extern "C" {
#endif
diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c
-index 518f7dd..3d97b55 100644
+index 518f7dde0..3d97b557c 100644
--- a/library/ssl_ciphersuites.c
+++ b/library/ssl_ciphersuites.c
@@ -108,6 +108,7 @@ static const int ciphersuite_preference[] =
default:
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
-index afced7a..9a49586 100644
+index afced7a99..9a49586a7 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -2023,7 +2023,8 @@ static int ssl_parse_server_dh_params( mbedtls_ssl_context *ssl, unsigned char *
MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate verify" ) );
ssl->state++;
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
-index bc77f80..5665cfd 100644
+index bc77f8020..5665cfd9a 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2696,6 +2696,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl )
{
MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate verify" ) );
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
-index 38690fa..88273a3 100644
+index 38690fa66..88273a349 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -5285,7 +5285,8 @@ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl )
}
}
diff --git a/library/version_features.c b/library/version_features.c
-index 24143d0..88335d3 100644
+index 24143d052..88335d369 100644
--- a/library/version_features.c
+++ b/library/version_features.c
@@ -372,6 +372,9 @@ static const char *features[] = {
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
"MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED",
#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
+--
+2.20.1
+