diff options
author | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-11-17 09:34:35 +0000 |
---|---|---|
committer | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-11-17 09:34:35 +0000 |
commit | cf8c7b558c1c33cafe557ced361554461485af6c (patch) | |
tree | ef57b5f4d9f86d3f51df12e34008f24773006e93 /test/tls/tst-tls16.c | |
parent | 4d5e60d5a4fce9be60a6a1477bc3fe07fa689bf6 (diff) | |
download | uClibc-alpine-cf8c7b558c1c33cafe557ced361554461485af6c.tar.bz2 uClibc-alpine-cf8c7b558c1c33cafe557ced361554461485af6c.tar.xz |
ldso: Initialize fully dtv before calling the constructors.
If a shared object has a constructor that accesses a TLS variable
using the localor global synamic access model (that is by calling
the __tls_get_addr function), all the filed of each dtv entry must be
already initialized to point to the right address in the TLS static block
Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Diffstat (limited to 'test/tls/tst-tls16.c')
-rw-r--r-- | test/tls/tst-tls16.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/tls/tst-tls16.c b/test/tls/tst-tls16.c new file mode 100644 index 000000000..53aece181 --- /dev/null +++ b/test/tls/tst-tls16.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <stdlib.h> +#include <tls.h> + +#define TLS_VAR_INIT_VALUE 99 + +#ifdef USE_TLS +extern __thread int tls_var; +#endif + +int main(void) +{ + int ret = EXIT_SUCCESS; +#ifdef USE_TLS + if (tls_var != TLS_VAR_INIT_VALUE) { + printf("tls_var = %d - Expected value = %d\n", tls_var, TLS_VAR_INIT_VALUE); + ret = EXIT_FAILURE; + } +#endif + return ret; +} |