Work around a compiler bug on OS X.
diff --git a/ChangeLog b/ChangeLog
index a2505aa..e6f1679 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,6 +14,8 @@
* entropy_add_source(), entropy_update_manual() and entropy_gather()
now thread-safe if POLARSSL_THREADING_C defined
* Improvements to the CMake build system, contributed by Julian Ospald.
+ * Work around a bug of the version of Clang shipped by Apple with Mavericks
+ that prevented bignum.c from compiling. (Reported by Rafael Baptista.)
Security
* Forbid change of server certificate during renegotiation to prevent
diff --git a/library/bignum.c b/library/bignum.c
index a73bf76..d9a22c1 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -1232,7 +1232,14 @@
Z.p[i - t - 1] = ~0;
else
{
-#if defined(POLARSSL_HAVE_UDBL)
+ /*
+ * The version of Clang shipped by Apple with Mavericks can't
+ * handle 128-bit division properly. Disable 128-bits division
+ * for Clang on Apple for now, while waiting for more input on the
+ * exact version(s) affected and their identification macros.
+ */
+#if defined(POLARSSL_HAVE_UDBL) && \
+ ! ( defined(__x86_64__) && defined(__clang__) && defined(__APPLE__) )
t_udbl r;
r = (t_udbl) X.p[i] << biL;