#include <stdio.h> extern int successful_rtld_next_test (void); extern void *failing_rtld_next_use (void); static int do_test (void) { int result; void *addr; /* First try call a function which uses RTLD_NEXT and calls that function. */ result = successful_rtld_next_test (); if (result == 42) { puts ("RTLD_NEXT seems to work for existing functions"); result = 0; } else { printf ("Heh? `successful_rtld_next_test' returned %d\n", result); result = 1; } /* Next try a function which tries to get a function with RTLD_NEXT but that fails. This dlsym() call should return a NULL pointer and do nothing else. */ addr = failing_rtld_next_use (); if (addr == NULL) puts ("dlsym returned NULL for non-existing function. Good"); else { puts ("dlsym found something !?"); result = 1; } return result; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"