Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Update.
2003-04-16 Jakub Jelinek <jakub@redhat.com> * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and tst-tls10.h. (tests): Add tst-tls1[0-2]. (modules-names): Add tst-tlsmod{[7-8],1[0-2]}. ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so. ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so. ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so. ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so. ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so. ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so. * elf/tst-tls10.c: New test. * elf/tst-tls11.c: New test. * elf/tst-tls12.c: New test. * elf/tst-tls10.h: New file. * elf/tst-tlsmod7.c: New file. * elf/tst-tlsmod8.c: New file. * elf/tst-tlsmod9.c: New file. * elf/tst-tlsmod10.c: New file. * elf/tst-tlsmod11.c: New file. * elf/tst-tlsmod12.c: New file. 2003-04-15 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ... * sysdeps/powerpc/powerpc32/bits/atomic.h: New file. * sysdeps/powerpc/powerpc64/bits/atomic.h: New file. * posix/regex.h: Include <sys/types.h>.
- Loading branch information
Ulrich Drepper
committed
Apr 17, 2003
1 parent
66cd688
commit 94c2422
Showing
16 changed files
with
696 additions
and
159 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#include "tst-tls10.h" | ||
|
||
#ifdef USE_TLS__THREAD | ||
static __thread int dummy = 12; | ||
__thread struct A local = { 1, 2, 3 }; | ||
#endif | ||
|
||
#define CHECK(N, S) \ | ||
p = f##N##a (); \ | ||
if (p->a != S || p->b != S + 1 || p->c != S + 2) \ | ||
abort () | ||
|
||
int | ||
main (void) | ||
{ | ||
#ifdef USE_TLS__THREAD | ||
struct A *p; | ||
if (local.a != 1 || local.b != 2 || local.c != 3) | ||
abort (); | ||
if (a1.a != 4 || a1.b != 5 || a1.c != 6) | ||
abort (); | ||
if (a2.a != 22 || a2.b != 23 || a2.c != 24) | ||
abort (); | ||
if (a3.a != 10 || a3.b != 11 || a3.c != 12) | ||
abort (); | ||
if (a4.a != 25 || a4.b != 26 || a4.c != 27) | ||
abort (); | ||
check1 (); | ||
check2 (); | ||
if (f1a () != &a1 || f2a () != &a2 || f3a () != &a3 || f4a () != &a4) | ||
abort (); | ||
CHECK (5, 16); | ||
CHECK (6, 19); | ||
if (f7a () != &a2 || f8a () != &a4) | ||
abort (); | ||
CHECK (9, 28); | ||
CHECK (10, 31); | ||
#endif | ||
exit (0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#include <tls.h> | ||
#include <stdlib.h> | ||
|
||
#if defined USE_TLS && defined HAVE___THREAD \ | ||
&& defined HAVE_TLS_MODEL_ATTRIBUTE | ||
# define USE_TLS__THREAD | ||
|
||
struct A | ||
{ | ||
char a; | ||
int b; | ||
long long c; | ||
}; | ||
|
||
extern __thread struct A a1, a2, a3, a4; | ||
extern struct A *f1a (void); | ||
extern struct A *f2a (void); | ||
extern struct A *f3a (void); | ||
extern struct A *f4a (void); | ||
extern struct A *f5a (void); | ||
extern struct A *f6a (void); | ||
extern struct A *f7a (void); | ||
extern struct A *f8a (void); | ||
extern struct A *f9a (void); | ||
extern struct A *f10a (void); | ||
extern int f1b (void); | ||
extern int f2b (void); | ||
extern int f3b (void); | ||
extern int f4b (void); | ||
extern int f5b (void); | ||
extern int f6b (void); | ||
extern int f7b (void); | ||
extern int f8b (void); | ||
extern int f9b (void); | ||
extern int f10b (void); | ||
extern void check1 (void); | ||
extern void check2 (void); | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#include "tst-tls10.h" | ||
|
||
#define CHECK(N, S) \ | ||
p = f##N##a (); \ | ||
if (p->a != S || p->b != S + 1 || p->c != S + 2) \ | ||
abort () | ||
|
||
int | ||
main (void) | ||
{ | ||
#ifdef USE_TLS__THREAD | ||
struct A *p; | ||
check1 (); | ||
check2 (); | ||
CHECK (1, 4); | ||
CHECK (2, 22); | ||
CHECK (3, 10); | ||
CHECK (4, 25); | ||
CHECK (5, 16); | ||
CHECK (6, 19); | ||
CHECK (7, 22); | ||
CHECK (8, 25); | ||
CHECK (9, 28); | ||
CHECK (10, 31); | ||
#endif | ||
exit (0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#include "tst-tls10.h" | ||
|
||
#define CHECK(N, S) \ | ||
p = &a##N; \ | ||
if (p->a != S || p->b != S + 1 || p->c != S + 2) \ | ||
abort () | ||
|
||
int main() | ||
{ | ||
#ifdef USE_TLS__THREAD | ||
struct A *p; | ||
check1 (); | ||
CHECK (1, 4); | ||
CHECK (2, 7); | ||
#endif | ||
exit (0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#include "tst-tlsmod8.c" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#include "tst-tls10.h" | ||
|
||
#ifdef USE_TLS__THREAD | ||
__thread struct A a1 = { 4, 5, 6 }; | ||
__thread struct A a2 = { 7, 8, 9 }; | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#include "tst-tls10.h" | ||
|
||
#ifdef USE_TLS__THREAD | ||
extern __thread struct A a2 __attribute__((tls_model("initial-exec"))); | ||
|
||
void | ||
check1 (void) | ||
{ | ||
if (a1.a != 4 || a1.b != 5 || a1.c != 6) | ||
abort (); | ||
if (a2.a != 7 || a2.b != 8 || a2.c != 9) | ||
abort (); | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
#include "tst-tls10.h" | ||
|
||
#ifdef USE_TLS__THREAD | ||
static __thread int dummy = 12; | ||
__thread struct A a1 = { 4, 5, 6 }; | ||
__thread struct A a2 = { 7, 8, 9 }; | ||
__thread struct A a3 __attribute__((tls_model("initial-exec"))) | ||
= { 10, 11, 12 }; | ||
__thread struct A a4 __attribute__((tls_model("initial-exec"))) | ||
= { 13, 14, 15 }; | ||
static __thread struct A local1 = { 16, 17, 18 }; | ||
static __thread struct A local2 __attribute__((tls_model("initial-exec"))) | ||
= { 19, 20, 21 }; | ||
|
||
void | ||
check1 (void) | ||
{ | ||
if (a1.a != 4 || a1.b != 5 || a1.c != 6) | ||
abort (); | ||
if (a2.a != 22 || a2.b != 23 || a2.c != 24) | ||
abort (); | ||
if (a3.a != 10 || a3.b != 11 || a3.c != 12) | ||
abort (); | ||
if (a4.a != 25 || a4.b != 26 || a4.c != 27) | ||
abort (); | ||
if (local1.a != 16 || local1.b != 17 || local1.c != 18) | ||
abort (); | ||
if (local2.a != 19 || local2.b != 20 || local2.c != 21) | ||
abort (); | ||
} | ||
|
||
struct A * | ||
f1a (void) | ||
{ | ||
return &a1; | ||
} | ||
|
||
struct A * | ||
f2a (void) | ||
{ | ||
return &a2; | ||
} | ||
|
||
struct A * | ||
f3a (void) | ||
{ | ||
return &a3; | ||
} | ||
|
||
struct A * | ||
f4a (void) | ||
{ | ||
return &a4; | ||
} | ||
|
||
struct A * | ||
f5a (void) | ||
{ | ||
return &local1; | ||
} | ||
|
||
struct A * | ||
f6a (void) | ||
{ | ||
return &local2; | ||
} | ||
|
||
int | ||
f1b (void) | ||
{ | ||
return a1.a; | ||
} | ||
|
||
int | ||
f2b (void) | ||
{ | ||
return a2.b; | ||
} | ||
|
||
int | ||
f3b (void) | ||
{ | ||
return a3.c; | ||
} | ||
|
||
int | ||
f4b (void) | ||
{ | ||
return a4.a; | ||
} | ||
|
||
int | ||
f5b (void) | ||
{ | ||
return local1.b; | ||
} | ||
|
||
int | ||
f6b (void) | ||
{ | ||
return local2.c; | ||
} | ||
#endif |
Oops, something went wrong.