mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
* elf/Makefile: Add rules to build and run tst-tls17.
* elf/tst-tls17.c: New test. * elf/tst-tlsmod17a.c: New file. * elf/tst-tlsmod17b.c: Likewise.
This commit is contained in:
parent
292eb8177e
commit
60a23f5a72
@ -1,3 +1,10 @@
|
|||||||
|
2008-10-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* elf/Makefile: Add rules to build and run tst-tls17.
|
||||||
|
* elf/tst-tls17.c: New test.
|
||||||
|
* elf/tst-tlsmod17a.c: New file.
|
||||||
|
* elf/tst-tlsmod17b.c: Likewise.
|
||||||
|
|
||||||
2008-10-17 Ulrich Drepper <drepper@redhat.com>
|
2008-10-17 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* stdlib/divmod_1.c: Use correct type for dummy variable.
|
* stdlib/divmod_1.c: Use correct type for dummy variable.
|
||||||
|
12
elf/Makefile
12
elf/Makefile
@ -166,7 +166,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
|
|||||||
restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
|
restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
|
||||||
circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
|
circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
|
||||||
tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \
|
tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \
|
||||||
tst-tls16 tst-tls-dlinfo \
|
tst-tls16 tst-tls17 tst-tls-dlinfo \
|
||||||
tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
|
tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
|
||||||
tst-dlmodcount tst-dlopenrpath tst-deep1 \
|
tst-dlmodcount tst-dlopenrpath tst-deep1 \
|
||||||
tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
|
tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
|
||||||
@ -181,6 +181,7 @@ ifeq (yesyes,$(have-fpie)$(build-shared))
|
|||||||
tests: $(objpfx)tst-pie1.out
|
tests: $(objpfx)tst-pie1.out
|
||||||
endif
|
endif
|
||||||
tests: $(objpfx)tst-leaks1-mem
|
tests: $(objpfx)tst-leaks1-mem
|
||||||
|
tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
||||||
modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
|
modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
|
||||||
testobj1_1 failobj constload2 constload3 unloadmod \
|
testobj1_1 failobj constload2 constload3 unloadmod \
|
||||||
dep1 dep2 dep3 dep4 vismod1 vismod2 vismod3 \
|
dep1 dep2 dep3 dep4 vismod1 vismod2 vismod3 \
|
||||||
@ -200,6 +201,8 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
|
|||||||
tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \
|
tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \
|
||||||
tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \
|
tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \
|
||||||
tst-tlsmod15a tst-tlsmod15b tst-tlsmod16a tst-tlsmod16b \
|
tst-tlsmod15a tst-tlsmod15b tst-tlsmod16a tst-tlsmod16b \
|
||||||
|
$(patsubst %,tst-tlsmod17a%,$(tlsmod17a-suffixes)) \
|
||||||
|
tst-tlsmod17b \
|
||||||
circlemod1 circlemod1a circlemod2 circlemod2a \
|
circlemod1 circlemod1a circlemod2 circlemod2a \
|
||||||
circlemod3 circlemod3a \
|
circlemod3 circlemod3a \
|
||||||
reldep8mod1 reldep8mod2 reldep8mod3 \
|
reldep8mod1 reldep8mod2 reldep8mod3 \
|
||||||
@ -714,6 +717,13 @@ $(objpfx)tst-tls-dlinfo.out: $(objpfx)tst-tlsmod2.so
|
|||||||
$(objpfx)tst-tls16: $(libdl)
|
$(objpfx)tst-tls16: $(libdl)
|
||||||
$(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so
|
$(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so
|
||||||
|
|
||||||
|
$(objpfx)tst-tls17: $(libdl)
|
||||||
|
$(objpfx)tst-tls17.out: $(objpfx)tst-tlsmod17b.so
|
||||||
|
$(patsubst %,$(objpfx)tst-tlsmod17a%.os,$(tlsmod17a-suffixes)): $(objpfx)tst-tlsmod17a%.os : tst-tlsmod17a.c
|
||||||
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ -DN=$* -DNOT_IN_libc=1 $<
|
||||||
|
$(patsubst %,$(objpfx)tst-tlsmod17a%.so,$(tlsmod17a-suffixes)): $(objpfx)tst-tlsmod17a%.so: $(objpfx)ld.so
|
||||||
|
$(objpfx)tst-tlsmod17b.so: $(patsubst %,$(objpfx)tst-tlsmod17a%.so,$(tlsmod17a-suffixes))
|
||||||
|
|
||||||
CFLAGS-tst-align.c = $(stack-align-test-flags)
|
CFLAGS-tst-align.c = $(stack-align-test-flags)
|
||||||
CFLAGS-tst-align2.c = $(stack-align-test-flags)
|
CFLAGS-tst-align2.c = $(stack-align-test-flags)
|
||||||
CFLAGS-tst-alignmod.c = $(stack-align-test-flags)
|
CFLAGS-tst-alignmod.c = $(stack-align-test-flags)
|
||||||
|
28
elf/tst-tls17.c
Normal file
28
elf/tst-tls17.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include <dlfcn.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
void *h = dlopen ("tst-tlsmod17b.so", RTLD_LAZY);
|
||||||
|
if (h == NULL)
|
||||||
|
{
|
||||||
|
puts ("unexpectedly failed to open tst-tlsmod17b.so");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int (*fp) (void) = (int (*) (void)) dlsym (h, "tlsmod17b");
|
||||||
|
if (fp == NULL)
|
||||||
|
{
|
||||||
|
puts ("cannot find tlsmod17b");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fp ())
|
||||||
|
exit (1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include "../test-skeleton.c"
|
23
elf/tst-tlsmod17a.c
Normal file
23
elf/tst-tlsmod17a.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef N
|
||||||
|
#define N 0
|
||||||
|
#endif
|
||||||
|
#define CONCAT1(s, n) s##n
|
||||||
|
#define CONCAT(s, n) CONCAT1(s, n)
|
||||||
|
|
||||||
|
__thread int CONCAT (v, N) = 4;
|
||||||
|
|
||||||
|
int
|
||||||
|
CONCAT (tlsmod17a, N) (void)
|
||||||
|
{
|
||||||
|
int *p = &CONCAT (v, N);
|
||||||
|
/* GCC assumes &var is never NULL, add optimization barrier. */
|
||||||
|
asm volatile ("" : "+r" (p));
|
||||||
|
if (p == NULL || *p != 4)
|
||||||
|
{
|
||||||
|
printf ("fail %d %p\n", N, p);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
15
elf/tst-tlsmod17b.c
Normal file
15
elf/tst-tlsmod17b.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#define P(N) extern int tlsmod17a##N (void);
|
||||||
|
#define PS P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) P(8) P(9) \
|
||||||
|
P(10) P(12) P(13) P(14) P(15) P(16) P(17) P(18) P(19)
|
||||||
|
PS
|
||||||
|
#undef P
|
||||||
|
|
||||||
|
int
|
||||||
|
tlsmod17b (void)
|
||||||
|
{
|
||||||
|
int res = 0;
|
||||||
|
#define P(N) res |= tlsmod17a##N ();
|
||||||
|
PS
|
||||||
|
#undef P
|
||||||
|
return res;
|
||||||
|
}
|
@ -1824,11 +1824,13 @@ main_loop_poll (void)
|
|||||||
if (have_paccept >= 0)
|
if (have_paccept >= 0)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL,
|
fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL,
|
||||||
SOCK_NONBLOCK));
|
SOCK_NONBLOCK));
|
||||||
#ifndef __ASSUME_PACCEPT
|
#ifndef __ASSUME_PACCEPT
|
||||||
if (have_paccept == 0)
|
if (have_paccept == 0)
|
||||||
have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1;
|
have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifndef __ASSUME_PACCEPT
|
#ifndef __ASSUME_PACCEPT
|
||||||
|
Loading…
Reference in New Issue
Block a user