#include <dlfcn.h> extern int successful_rtld_next_test (void); extern void *failing_rtld_next_use (void); int nextmod1_dummy_var; int successful_rtld_next_test (void) { int (*fp) (void); /* Get the next function... */ fp = (int (*) (void)) dlsym (RTLD_NEXT, __FUNCTION__); /* ...and simply call it. */ return fp (); } void * failing_rtld_next_use (void) { void *ret = dlsym (RTLD_NEXT, __FUNCTION__); /* Ensure we are not tail call optimized, because then RTLD_NEXT might return this function. */ ++nextmod1_dummy_var; return ret; }