Index: src/libcfa/bits/defs.h
===================================================================
--- src/libcfa/bits/defs.h	(revision 6b8b7673f28eb55cef2a4e2507115188d1cf4829)
+++ src/libcfa/bits/defs.h	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -28,7 +28,7 @@
 
 #ifdef __cforall
-#define __cfa_anonymous_object
+#define __cfa_anonymous_object(x) inline struct x
 #else
-#define __cfa_anonymous_object __cfa_anonymous_object
+#define __cfa_anonymous_object(x) x __cfa_anonymous_object
 #endif
 
Index: src/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision 6b8b7673f28eb55cef2a4e2507115188d1cf4829)
+++ src/libcfa/concurrency/invoke.h	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -93,5 +93,5 @@
 
 		// list of acceptable functions, null if any
-		__small_array_t(struct __acceptable_t) __cfa_anonymous_object;
+		__cfa_anonymous_object( __small_array_t(struct __acceptable_t) );
 	};
 
@@ -121,5 +121,5 @@
 	struct __monitor_group_t {
 		// currently held monitors
-		__small_array_t(monitor_desc*) __cfa_anonymous_object;
+		__cfa_anonymous_object( __small_array_t(monitor_desc*) );
 
 		// last function that acquired monitors
Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision 6b8b7673f28eb55cef2a4e2507115188d1cf4829)
+++ src/libcfa/concurrency/monitor	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -138,5 +138,5 @@
 
 struct __acceptable_t {
-	__monitor_group_t;
+	inline struct __monitor_group_t;
 	bool is_dtor;
 };
Index: src/libcfa/containers/result
===================================================================
--- src/libcfa/containers/result	(revision 6b8b7673f28eb55cef2a4e2507115188d1cf4829)
+++ src/libcfa/containers/result	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -28,5 +28,5 @@
 struct result {
 	bool has_value;
-	inner_result(T, E);
+	inline union inner_result(T, E);
 };
 
Index: src/libcfa/interpose.c
===================================================================
--- src/libcfa/interpose.c	(revision 6b8b7673f28eb55cef2a4e2507115188d1cf4829)
+++ src/libcfa/interpose.c	(revision 8a3ecb9d480fc4ef7f8aafe585128c501f7a9384)
@@ -33,4 +33,9 @@
 // Interposing helpers
 //=============================================================================================
+
+void preload_libgcc(void) {
+	dlopen( "libgcc_s.so.1", RTLD_NOW );
+	if ( const char * error = dlerror() ) abort( "interpose_symbol : internal error pre-loading libgcc, %s\n", error );
+}
 
 typedef void (* generic_fptr_t)(void);
@@ -92,4 +97,6 @@
 		const char *version = NULL;
 
+		preload_libgcc();
+
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
