__thread char c1 = 1;
__thread char xchar = 2;
__thread char c2 = 3;
__thread short xshort = 4;
__thread char c3 = 5;
__thread int xint = 6;
__thread char c4 = 7;
__thread long long xllong = 8;
struct {
char *name;
unsigned size;
unsigned align;
unsigned long addr;
} t[4];
#define entry(i,x) \
t[i].name = #x; \
t[i].size = sizeof x; \
t[i].align = __alignof__(x); \
t[i].addr = (unsigned long)&x;
__attribute__((constructor)) static void init(void)
{
entry(0, xchar)
entry(1, xshort)
entry(2, xint)
entry(3, xllong)
}