Index: libcfa/src/concurrency/pthread.cfa
===================================================================
--- libcfa/src/concurrency/pthread.cfa	(revision a45e21c53f79653fd83bc2f16041261ec743736a)
+++ libcfa/src/concurrency/pthread.cfa	(revision 9082d7e82d9a7493aed9e548946de1837caa325a)
@@ -152,5 +152,5 @@
 
 //######################### Attr helpers #########################
-struct cfaPthread_attr_t {								// thread attributes
+typedef struct cfaPthread_attr_t {						// thread attributes
 		int contentionscope;
 		int detachstate;
@@ -160,5 +160,5 @@
 		int inheritsched;
 		struct sched_param param;
-} typedef cfaPthread_attr_t;
+} cfaPthread_attr_t;
 
 static const cfaPthread_attr_t default_attrs {
Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision a45e21c53f79653fd83bc2f16041261ec743736a)
+++ libcfa/src/interpose.cfa	(revision 9082d7e82d9a7493aed9e548946de1837caa325a)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 29 16:10:31 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar 13 22:39:12 2023
-// Update Count     : 193
+// Last Modified On : Mon Mar 27 21:09:03 2023
+// Update Count     : 196
 //
 
@@ -40,6 +40,15 @@
 	union { generic_fptr_t fptr; void * ptr; } originalFunc;
 
+	#if defined( _GNU_SOURCE )
+	if ( version ) {
+		originalFunc.ptr = dlvsym( library, symbol, version );
+	} else {
+		originalFunc.ptr = dlsym( library, symbol );
+	} // if
+	#else
 	originalFunc.ptr = dlsym( library, symbol );
-	if ( ! originalFunc.ptr ) {								// == nullptr
+	#endif // _GNU_SOURCE
+
+	if ( ! originalFunc.ptr ) {							// == nullptr
 		abort( "interpose_symbol : internal error, %s\n", dlerror() );
 	} // if
@@ -49,4 +58,5 @@
 static generic_fptr_t interpose_symbol( const char symbol[], const char version[] ) {
 	void * library;
+
 	#if defined( RTLD_NEXT )
 	library = RTLD_NEXT;
Index: libcfa/src/interpose_thread.cfa
===================================================================
--- libcfa/src/interpose_thread.cfa	(revision a45e21c53f79653fd83bc2f16041261ec743736a)
+++ libcfa/src/interpose_thread.cfa	(revision 9082d7e82d9a7493aed9e548946de1837caa325a)
@@ -14,4 +14,5 @@
 //
 
+// BUG in 32-bit gcc with interpose: fixed in >= gcc-9.5, gcc-10.4, gcc-12.2
 #ifdef __i386__											// 32-bit architecture
 #undef _GNU_SOURCE
@@ -33,9 +34,9 @@
 typedef void (* generic_fptr_t)(void);
 
-generic_fptr_t interpose_symbol(
+generic_fptr_t libcfa_public interpose_symbol(
 	generic_fptr_t (*do_interpose_symbol)( void * library, const char symbol[], const char version[] ),
 	const char symbol[],
 	const char version[]
-) libcfa_public {
+) {
 	void * library;
 
