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