Blame src/thread/tls_align_dlopen.c

nsz 462b4f
#include <stddef.h>
nsz 462b4f
#include <dlfcn.h>
nsz 462b4f
#include "test.h"
nsz 462b4f
nsz 462b4f
int main()
nsz 462b4f
{
nsz 462b4f
	int i;
nsz 462b4f
	void *h;
nsz 462b4f
	struct {
nsz 462b4f
		char *name;
nsz 462b4f
		size_t size;
nsz 462b4f
		size_t align;
nsz 462b4f
		size_t addr;
nsz 462b4f
	} *t;
nsz 462b4f
nsz 462b4f
	h = dlopen("./tls_align_dso.so", RTLD_LAZY);
nsz 462b4f
	if (!h)
nsz 462b4f
		error("dlopen failed\n");
nsz 462b4f
	t = dlsym(h, "t");
nsz 462b4f
	if (!t)
nsz 462b4f
		error("dlsym failed\n");
nsz 462b4f
nsz 462b4f
	for (i = 0; i < 4; i++) {
nsz 462b4f
		if (!t[i].name)
nsz 462b4f
			error("name is not set for t[%d]\n", i);
nsz 462b4f
		if (t[i].addr & (t[i].align-1))
nsz 462b4f
			error("bad alignment: %s, size: %lu, align: %lu, addr: 0x%lx\n",
nsz 462b4f
				t[i].name, (unsigned long)t[i].size, (unsigned long)t[i].align, (unsigned long)t[i].addr);
nsz 462b4f
	}
nsz 462b4f
	return test_status;
nsz 462b4f
}