X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ffunctional%2Ftls_align_dlopen.c;fp=src%2Ffunctional%2Ftls_align_dlopen.c;h=64517e17517f1a014e7504734ba2bca6fd841b0a;hb=2cf89517c5b25c2524fe0c0c01ed277d7307a852;hp=0000000000000000000000000000000000000000;hpb=e248db1c46f61cf34548e739bc6ff106013b1ba2;p=libc-test diff --git a/src/functional/tls_align_dlopen.c b/src/functional/tls_align_dlopen.c new file mode 100644 index 0000000..64517e1 --- /dev/null +++ b/src/functional/tls_align_dlopen.c @@ -0,0 +1,30 @@ +#include +#include "test.h" + +int main() +{ + int i; + void *h; + struct { + char *name; + unsigned size; + unsigned align; + unsigned long addr; + } *t; + + h = dlopen("./tls_align_dso.so", RTLD_LAZY); + if (!h) + error("dlopen failed\n"); + t = dlsym(h, "t"); + if (!t) + error("dlsym failed\n"); + + for (i = 0; i < 4; i++) { + if (!t[i].name) + error("name is not set for t[%d]\n", i); + if (t[i].addr & (t[i].align-1)) + error("bad alignment: %s, size: %u, align: %u, addr: 0x%lx\n", + t[i].name, t[i].size, t[i].align, t[i].addr); + } + return test_status; +}