1#include <string.h> 2#include <dlfcn.h> 3#include "test.h" 4 5int main(int argc, char *argv[]) 6{ 7 void *h; 8 char *(*f)(void); 9 char *s; 10 char buf[512]; 11 12 t_pathrel(buf, sizeof buf, argv[0], "libtls_init_dso.so"); 13 h = dlopen(buf, RTLD_NOW|RTLD_GLOBAL); 14 if (!h) 15 t_error("dlopen failed: %s\n", dlerror()); 16 f = dlsym(h, "gettls"); 17 if (!f) 18 t_error("dlsym failed: %s\n", dlerror()); 19 s = f(); 20 if (!s) 21 t_error("tls was not initialized at dlopen\n"); 22 if (strcmp(s, "foobar")!=0) 23 t_error("tls was not initialized correctly at dlopen (got \"%s\", want \"foobar\"\n", s); 24 25 return t_status; 26} 27