Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision a0a949cd34e487961a36e0f43a427ab33455a9bb)
+++ libcfa/src/interpose.cfa	(revision 089a0d7788e243d9ef9cf712557a1b5057056687)
@@ -10,13 +10,10 @@
 // Created On       : Wed Mar 29 16:10:31 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  2 13:56:26 2023
-// Update Count     : 191
-//
-
-#include <stdarg.h>										// va_start, va_end
+// Last Modified On : Mon Mar 13 22:39:12 2023
+// Update Count     : 193
+//
+
 #include <stdio.h>
-#include <string.h>										// strlen
 #include <unistd.h>										// _exit, getpid
-#include <signal.h>
 extern "C" {
 #include <dlfcn.h>										// dlopen, dlsym
@@ -24,5 +21,4 @@
 }
 
-#include "bits/debug.hfa"
 #include "bits/defs.hfa"
 #include "bits/signal.hfa"								// sigHandler_?
@@ -40,13 +36,12 @@
 
 typedef void (* generic_fptr_t)(void);
+
 static generic_fptr_t do_interpose_symbol( void * library, const char symbol[], const char version[] ) {
-	const char * error;
-
 	union { generic_fptr_t fptr; void * ptr; } originalFunc;
 
 	originalFunc.ptr = dlsym( library, symbol );
-	error = dlerror();
-	if ( error ) abort( "interpose_symbol : internal error, %s\n", error );
-
+	if ( ! originalFunc.ptr ) {								// == nullptr
+		abort( "interpose_symbol : internal error, %s\n", dlerror() );
+	} // if
 	return originalFunc.fptr;
 }
@@ -57,14 +52,12 @@
 	library = RTLD_NEXT;
 	#else
+	// missing RTLD_NEXT => must hard-code library name, assuming libstdc++
 	library = dlopen( "libc.so.6", RTLD_LAZY );
-	if ( ! library ) {
-		const char * error = dlerror();
-		if ( error ) {
-			abort( "interpose_symbol : failed to open libc, %s\n", error );
-		} // if
+	if ( ! library ) {									// == nullptr
+		abort( "interpose_symbol : failed to open libc, %s\n", dlerror() );
 	} // if
-	#endif
-
-	return do_interpose_symbol(library, symbol, version);
+	#endif // RTLD_NEXT
+
+	return do_interpose_symbol( library, symbol, version );
 }
 
Index: libcfa/src/interpose_thread.cfa
===================================================================
--- libcfa/src/interpose_thread.cfa	(revision a0a949cd34e487961a36e0f43a427ab33455a9bb)
+++ libcfa/src/interpose_thread.cfa	(revision 089a0d7788e243d9ef9cf712557a1b5057056687)
@@ -14,17 +14,16 @@
 //
 
-#include <stdarg.h>										// va_start, va_end
-#include <stdio.h>
-#include <string.h>										// strlen
+#ifdef __i386__											// 32-bit architecture
+#undef _GNU_SOURCE
+#endif // __i386__
+
 #include <signal.h>
 #include <pthread.h>
+#include <signal.h>
 extern "C" {
 #include <dlfcn.h>										// dlopen, dlsym
-#include <execinfo.h>									// backtrace, messages
 }
 
-#include "bits/debug.hfa"
 #include "bits/defs.hfa"
-#include <assert.h>
 
 //=============================================================================================
@@ -40,18 +39,16 @@
 ) libcfa_public {
 	void * library;
+
 	#if defined( RTLD_NEXT )
 	library = RTLD_NEXT;
 	#else
 	// missing RTLD_NEXT => must hard-code library name, assuming libstdc++
-	library = dlopen( "libthread_db.so", RTLD_LAZY );
-	if ( ! library ) {
-		const char * error = dlerror();
-		if ( error ) {
-			abort( "interpose_symbol : failed to open libpthread, %s\n", error );
-		}
+	library = dlopen( "libpthread.so", RTLD_LAZY );
+	if ( ! library ) {									// == nullptr
+		abort( "interpose_symbol : failed to open libpthread, %s\n", dlerror() );
 	} // if
 	#endif // RTLD_NEXT
 
-	return do_interpose_symbol(library, symbol, version);
+	return do_interpose_symbol( library, symbol, version );
 }
 
@@ -81,14 +78,14 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
-		INTERPOSE( pthread_create , version );
-		INTERPOSE( pthread_join , version );
-		INTERPOSE( pthread_self , version );
-		INTERPOSE( pthread_attr_init , version );
-		INTERPOSE( pthread_attr_destroy , version );
-		INTERPOSE( pthread_attr_setstack , version );
-		INTERPOSE( pthread_attr_getstacksize , version );
-		INTERPOSE( pthread_sigmask , version );
-		INTERPOSE( pthread_sigqueue , version );
-		INTERPOSE( pthread_once , version );
+		INTERPOSE( pthread_create, version );
+		INTERPOSE( pthread_join, version );
+		INTERPOSE( pthread_self, version );
+		INTERPOSE( pthread_attr_init, version );
+		INTERPOSE( pthread_attr_destroy, version );
+		INTERPOSE( pthread_attr_setstack, version );
+		INTERPOSE( pthread_attr_getstacksize, version );
+		INTERPOSE( pthread_sigmask, version );
+		INTERPOSE( pthread_sigqueue, version );
+		INTERPOSE( pthread_once, version );
 #pragma GCC diagnostic pop
 	}
