Index: libcfa/src/bits/defs.hfa
===================================================================
--- libcfa/src/bits/defs.hfa	(revision e07187dac365a5bfe1b92d9321504237bf7f714f)
+++ libcfa/src/bits/defs.hfa	(revision 8108ba8a8f4d28b94bec400ffa195c7e3ecb16b5)
@@ -36,4 +36,6 @@
 #define __cfa_dlink(x) struct { struct x * next; struct x * back; } __dlink_substitute
 #endif
+
+#define libcfa_public __attribute__((visibility("default")))
 
 #ifdef __cforall
Index: libcfa/src/concurrency/invoke.c
===================================================================
--- libcfa/src/concurrency/invoke.c	(revision e07187dac365a5bfe1b92d9321504237bf7f714f)
+++ libcfa/src/concurrency/invoke.c	(revision 8108ba8a8f4d28b94bec400ffa195c7e3ecb16b5)
@@ -36,5 +36,5 @@
 extern void enable_interrupts( _Bool poll );
 
-void __cfactx_invoke_coroutine(
+libcfa_public void __cfactx_invoke_coroutine(
 	void (*main)(void *),
 	void *this
@@ -70,5 +70,5 @@
 }
 
-void __cfactx_coroutine_unwind(struct _Unwind_Exception * storage, struct coroutine$ * cor) __attribute__ ((__noreturn__));
+libcfa_public void __cfactx_coroutine_unwind(struct _Unwind_Exception * storage, struct coroutine$ * cor) __attribute__ ((__noreturn__));
 void __cfactx_coroutine_unwind(struct _Unwind_Exception * storage, struct coroutine$ * cor) {
 	_Unwind_Reason_Code ret = _Unwind_ForcedUnwind( storage, __cfactx_coroutine_unwindstop, cor );
@@ -77,5 +77,5 @@
 }
 
-void __cfactx_invoke_thread(
+libcfa_public void __cfactx_invoke_thread(
 	void (*main)(void *),
 	void *this
@@ -98,5 +98,5 @@
 }
 
-void __cfactx_start(
+libcfa_public void __cfactx_start(
 	void (*main)(void *),
 	struct coroutine$ * cor,
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision e07187dac365a5bfe1b92d9321504237bf7f714f)
+++ libcfa/src/exception.c	(revision 8108ba8a8f4d28b94bec400ffa195c7e3ecb16b5)
@@ -27,4 +27,7 @@
 #include "stdhdr/assert.h"
 #include "virtual.h"
+
+#pragma GCC visibility push(default)
+
 #include "lsda.h"
 
@@ -261,5 +264,5 @@
 #else // defined( __ARM_ARCH )
 	// The return code from _Unwind_RaiseException seems to be corrupt on ARM at end of stack.
-	// This workaround tries to keep default exception handling working. 
+	// This workaround tries to keep default exception handling working.
 	if ( ret == _URC_FATAL_PHASE1_ERROR || ret == _URC_FATAL_PHASE2_ERROR ) {
 #endif
Index: libcfa/src/virtual.c
===================================================================
--- libcfa/src/virtual.c	(revision e07187dac365a5bfe1b92d9321504237bf7f714f)
+++ libcfa/src/virtual.c	(revision 8108ba8a8f4d28b94bec400ffa195c7e3ecb16b5)
@@ -16,4 +16,6 @@
 #include "virtual.h"
 #include "assert.h"
+
+#pragma GCC visibility push(default)
 
 int __cfavir_is_parent(
