new test framework (one main per test)
[libc-test] / src / thread / tls_align_dlopen.c
1 #include <stddef.h>
2 #include <dlfcn.h>
3 #include "test.h"
4
5 int main()
6 {
7         int i;
8         void *h;
9         struct {
10                 char *name;
11                 size_t size;
12                 size_t align;
13                 size_t addr;
14         } *t;
15
16         h = dlopen("./tls_align_dso.so", RTLD_LAZY);
17         if (!h)
18                 error("dlopen failed\n");
19         t = dlsym(h, "t");
20         if (!t)
21                 error("dlsym failed\n");
22
23         for (i = 0; i < 4; i++) {
24                 if (!t[i].name)
25                         error("name is not set for t[%d]\n", i);
26                 if (t[i].addr & (t[i].align-1))
27                         error("bad alignment: %s, size: %lu, align: %lu, addr: 0x%lx\n",
28                                 t[i].name, (unsigned long)t[i].size, (unsigned long)t[i].align, (unsigned long)t[i].addr);
29         }
30         return test_status;
31 }