| #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; | 
 | } |