1 #include <dlfcn.h> 2 3 extern int successful_rtld_next_test (void); 4 extern void *failing_rtld_next_use (void); 5 6 int nextmod1_dummy_var; 7 8 int successful_rtld_next_test(void)9successful_rtld_next_test (void) 10 { 11 int (*fp) (void); 12 13 /* Get the next function... */ 14 fp = (int (*) (void)) dlsym (RTLD_NEXT, __FUNCTION__); 15 16 /* ...and simply call it. */ 17 return fp (); 18 } 19 20 21 void * failing_rtld_next_use(void)22failing_rtld_next_use (void) 23 { 24 void *ret = dlsym (RTLD_NEXT, __FUNCTION__); 25 26 /* Ensure we are not tail call optimized, because then RTLD_NEXT 27 might return this function. */ 28 ++nextmod1_dummy_var; 29 return ret; 30 } 31