b52bbc1bdf
* tls.make.c: USE_TLS support is now default. * csu/Versions: Likewise. * csu/libc-start.c: Likewise. * csu/libc-tls.c: Likewise. * csu/version.c: Likewise. * dlfcn/dlinfo.c: Likewise. * elf/dl-addr.c: Likewise. * elf/dl-cache.c: Likewise. * elf/dl-close.c: Likewise. * elf/dl-iteratephdr.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-sym.c: Likewise. * elf/dl-sysdep.c: Likewise. * elf/dl-tls.c: Likewise. * elf/ldconfig.c: Likewise. * elf/rtld.c: Likewise. * elf/tst-tls-dlinfo.c: Likewise. * elf/tst-tls1.c: Likewise. * elf/tst-tls10.h: Likewise. * elf/tst-tls14.c: Likewise. * elf/tst-tls2.c: Likewise. * elf/tst-tls3.c: Likewise. * elf/tst-tls4.c: Likewise. * elf/tst-tls5.c: Likewise. * elf/tst-tls6.c: Likewise. * elf/tst-tls7.c: Likewise. * elf/tst-tls8.c: Likewise. * elf/tst-tls9.c: Likewise. * elf/tst-tlsmod1.c: Likewise. * elf/tst-tlsmod13.c: Likewise. * elf/tst-tlsmod13a.c: Likewise. * elf/tst-tlsmod14a.c: Likewise. * elf/tst-tlsmod2.c: Likewise. * elf/tst-tlsmod3.c: Likewise. * elf/tst-tlsmod4.c: Likewise. * elf/tst-tlsmod5.c: Likewise. * elf/tst-tlsmod6.c: Likewise. * include/errno.h: Likewise. * include/link.h: Likewise. * include/tls.h: Likewise. * locale/global-locale.c: Likewise. * locale/localeinfo.h: Likewise. * malloc/arena.c: Likewise. * malloc/hooks.c: Likewise. * malloc/malloc.c: Likewise. * resolv/Versions: Likewise. * sysdeps/alpha/dl-machine.h: Likewise. * sysdeps/alpha/libc-tls.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/generic/tls.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/ia64/dl-machine.h: Likewise. * sysdeps/ia64/libc-tls.c: Likewise. * sysdeps/mach/hurd/fork.c: Likewise. * sysdeps/mach/hurd/i386/tls.h: Likewise. * sysdeps/powerpc/powerpc32/dl-machine.c: Likwise. * sysdeps/powerpc/powerpc32/dl-machine.h: Likewise. * sysdeps/powerpc/powerpc64/dl-machine.h: Likewise. * sysdeps/s390/libc-tls.c: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/sh/dl-machine.h: Likewise. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/x86_64/dl-machine.h: Likewise.
65 lines
1.1 KiB
C
65 lines
1.1 KiB
C
#include <stdio.h>
|
|
|
|
#include <tls.h>
|
|
|
|
#include "tls-macros.h"
|
|
|
|
|
|
/* One define int variable, two externs. */
|
|
COMMON_INT_DEF(foo);
|
|
VAR_INT_DEF(bar);
|
|
VAR_INT_DECL(baz);
|
|
|
|
extern int in_dso (void);
|
|
|
|
int
|
|
in_dso (void)
|
|
{
|
|
int result = 0;
|
|
int *ap, *bp, *cp;
|
|
|
|
/* Get variables using initial exec model. */
|
|
fputs ("get sum of foo and bar (IE)", stdout);
|
|
asm ("" ::: "memory");
|
|
ap = TLS_IE (foo);
|
|
bp = TLS_IE (bar);
|
|
printf (" = %d\n", *ap + *bp);
|
|
result |= *ap + *bp != 3;
|
|
if (*ap != 1)
|
|
{
|
|
printf ("foo = %d\n", *ap);
|
|
result = 1;
|
|
}
|
|
if (*bp != 2)
|
|
{
|
|
printf ("bar = %d\n", *bp);
|
|
result = 1;
|
|
}
|
|
|
|
|
|
/* Get variables using generic dynamic model. */
|
|
fputs ("get sum of foo and bar and baz (GD)", stdout);
|
|
ap = TLS_GD (foo);
|
|
bp = TLS_GD (bar);
|
|
cp = TLS_GD (baz);
|
|
printf (" = %d\n", *ap + *bp + *cp);
|
|
result |= *ap + *bp + *cp != 6;
|
|
if (*ap != 1)
|
|
{
|
|
printf ("foo = %d\n", *ap);
|
|
result = 1;
|
|
}
|
|
if (*bp != 2)
|
|
{
|
|
printf ("bar = %d\n", *bp);
|
|
result = 1;
|
|
}
|
|
if (*cp != 3)
|
|
{
|
|
printf ("baz = %d\n", *cp);
|
|
result = 1;
|
|
}
|
|
|
|
return result;
|
|
}
|