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;