Index: src/libcfa/bits/locks.h
===================================================================
--- src/libcfa/bits/locks.h	(revision a5da6a3ce5bad2c4aab5be70a702c92c32f63734)
+++ src/libcfa/bits/locks.h	(revision bd56b079ae6133b449e06f41325f6401f7852df9)
@@ -64,4 +64,10 @@
 		extern void disable_interrupts();
 		extern void enable_interrupts_noPoll();
+
+		#ifdef __CFA_DEBUG__
+			void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name);
+		#else
+			#define __cfaabi_dbg_record(x, y)
+		#endif
 	}
 
@@ -71,11 +77,4 @@
 		this.lock = 0;
 	}
-
-
-	#ifdef __CFA_DEBUG__
-		void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name);
-	#else
-		#define __cfaabi_dbg_record(x, y)
-	#endif
 
 	// Lock the spinlock, return false if already acquired
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision a5da6a3ce5bad2c4aab5be70a702c92c32f63734)
+++ src/libcfa/concurrency/kernel.c	(revision bd56b079ae6133b449e06f41325f6401f7852df9)
@@ -833,7 +833,9 @@
 // Debug
 __cfaabi_dbg_debug_do(
-	void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name) {
-		this.prev_name = prev_name;
-		this.prev_thrd = kernelTLS.this_thread;
+	extern "C" {
+		void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name) {
+			this.prev_name = prev_name;
+			this.prev_thrd = kernelTLS.this_thread;
+		}
 	}
 )
Index: src/libcfa/startup.c
===================================================================
--- src/libcfa/startup.c	(revision a5da6a3ce5bad2c4aab5be70a702c92c32f63734)
+++ src/libcfa/startup.c	(revision bd56b079ae6133b449e06f41325f6401f7852df9)
@@ -40,5 +40,7 @@
 
 struct __spinlock_t;
-void __cfaabi_dbg_record(struct __spinlock_t & this, const char * prev_name) __attribute__(( weak )) {}
+extern "C" {
+	void __cfaabi_dbg_record(struct __spinlock_t & this, const char * prev_name) __attribute__(( weak )) {}
+}
 
 // Local Variables: //
