In case anyone else runs into this clang and bdb don't get along.  Seeing as
we're somewhat stuck in the past now that bdb's licensing has changed, it's
unlikely that this will be fixed in newer versions.

Specifically clang fails because bdb reimplements builtins.

This post on the FreeBSD list has the details and a patch:
http://lists.freebsd.org/pipermail/freebsd-current/2012-May/033615.html

I've attached the patch to this email since the version that's on that mail is
a patch against the packaging system at FreeBSD.
--- ../src/dbinc/atomic.h.orig  2012-02-29 19:48:38.000000000 +0100
+++ ../src/dbinc/atomic.h       2012-05-04 22:39:32.000000000 +0200
@@ -144,7 +144,7 @@ typedef LONG volatile *interlocked_val;
 #define        atomic_inc(env, p)      __atomic_inc(p)
 #define        atomic_dec(env, p)      __atomic_dec(p)
 #define        atomic_compare_exchange(env, p, o, n)   \
-       __atomic_compare_exchange((p), (o), (n))
+       __atomic_compare_exchange_db((p), (o), (n))
 static inline int __atomic_inc(db_atomic_t *p)
 {
        int     temp;
@@ -176,7 +176,7 @@ static inline int __atomic_dec(db_atomic
  * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
  * which configure could be changed to use.
  */
-static inline int __atomic_compare_exchange(
+static inline int __atomic_compare_exchange_db(
        db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
 {
        atomic_value_t was;

Reply via email to