|  | #include <dlfcn.h> | 
|  | #include <stdio.h> | 
|  |  | 
|  |  | 
|  | int call_puts; | 
|  |  | 
|  | static int | 
|  | do_test (void) | 
|  | { | 
|  | call_puts = 1; | 
|  |  | 
|  | void *h1 = dlopen ("$ORIGIN/order2mod1.so", RTLD_LAZY | RTLD_GLOBAL); | 
|  | if (h1 == NULL) | 
|  | { | 
|  | puts ("cannot load order2mod1"); | 
|  | return 1; | 
|  | } | 
|  | void *h2 = dlopen ("$ORIGIN/order2mod2.so", RTLD_LAZY); | 
|  | if (h2 == NULL) | 
|  | { | 
|  | puts ("cannot load order2mod2"); | 
|  | return 1; | 
|  | } | 
|  | if (dlclose (h1) != 0) | 
|  | { | 
|  | puts ("dlclose order2mod1 failed"); | 
|  | return 1; | 
|  | } | 
|  | if (dlclose (h2) != 0) | 
|  | { | 
|  | puts ("dlclose order2mod2 failed"); | 
|  | return 1; | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #define TEST_FUNCTION do_test () | 
|  | #include "../test-skeleton.c" | 
|  |  | 
|  | static void | 
|  | __attribute__ ((destructor)) | 
|  | fini (void) | 
|  | { | 
|  | if (call_puts) | 
|  | puts ("5"); | 
|  | } |