aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdlib')
-rw-r--r--newlib/libc/stdlib/dtoa.c5
-rw-r--r--newlib/libc/stdlib/ecvtbuf.c5
-rw-r--r--newlib/libc/stdlib/l64a.c4
-rw-r--r--newlib/libc/stdlib/lcong48.c8
-rw-r--r--newlib/libc/stdlib/mblen.c4
-rw-r--r--newlib/libc/stdlib/mbrlen.c4
-rw-r--r--newlib/libc/stdlib/mbrtowc.c4
-rw-r--r--newlib/libc/stdlib/mbsnrtowcs.c4
-rw-r--r--newlib/libc/stdlib/mbtowc.c4
-rw-r--r--newlib/libc/stdlib/mprec.c5
-rw-r--r--newlib/libc/stdlib/rand.c4
-rw-r--r--newlib/libc/stdlib/wcrtomb.c4
-rw-r--r--newlib/libc/stdlib/wcsnrtombs.c4
-rw-r--r--newlib/libc/stdlib/wctomb.c4
14 files changed, 63 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/dtoa.c b/newlib/libc/stdlib/dtoa.c
index e47a8bc..198fa66 100644
--- a/newlib/libc/stdlib/dtoa.c
+++ b/newlib/libc/stdlib/dtoa.c
@@ -32,6 +32,11 @@
#include <string.h>
#include "mprec.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local struct _Bigint *_tls_mp_result;
+_Thread_local int _tls_mp_result_k;
+#endif
+
static int
quorem (_Bigint * b, _Bigint * S)
{
diff --git a/newlib/libc/stdlib/ecvtbuf.c b/newlib/libc/stdlib/ecvtbuf.c
index 05f3151..5148966 100644
--- a/newlib/libc/stdlib/ecvtbuf.c
+++ b/newlib/libc/stdlib/ecvtbuf.c
@@ -57,6 +57,11 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
#include "mprec.h"
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local char *_tls_cvtbuf;
+_Thread_local int _tls_cvtlen;
+#endif
+
static void
print_f (struct _reent *ptr,
char *buf,
diff --git a/newlib/libc/stdlib/l64a.c b/newlib/libc/stdlib/l64a.c
index 45282e3..6f12b61 100644
--- a/newlib/libc/stdlib/l64a.c
+++ b/newlib/libc/stdlib/l64a.c
@@ -24,6 +24,10 @@
#include <stdlib.h>
#include <reent.h>
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local char _tls_l64a_buf[8];
+#endif
+
static const char R64_ARRAY[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
char *
diff --git a/newlib/libc/stdlib/lcong48.c b/newlib/libc/stdlib/lcong48.c
index 78e9e57..d1109f0 100644
--- a/newlib/libc/stdlib/lcong48.c
+++ b/newlib/libc/stdlib/lcong48.c
@@ -13,6 +13,14 @@
#include "rand48.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local unsigned short _tls_rand48_seed[3] = {_RAND48_SEED_0, _RAND48_SEED_1,
+ _RAND48_SEED_2};
+_Thread_local unsigned short _tls_rand48_mult[3] = {_RAND48_MULT_0, _RAND48_MULT_1,
+ _RAND48_MULT_2};
+_Thread_local unsigned short _tls_rand48_add = _RAND48_ADD;
+#endif
+
void
_lcong48_r (struct _reent *r,
unsigned short p[7])
diff --git a/newlib/libc/stdlib/mblen.c b/newlib/libc/stdlib/mblen.c
index 3753d36..24df615 100644
--- a/newlib/libc/stdlib/mblen.c
+++ b/newlib/libc/stdlib/mblen.c
@@ -42,6 +42,10 @@ effects vary with the locale.
#include <wchar.h>
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_mblen_state;
+#endif
+
int
mblen (const char *s,
size_t n)
diff --git a/newlib/libc/stdlib/mbrlen.c b/newlib/libc/stdlib/mbrlen.c
index 57a733f..39e175e 100644
--- a/newlib/libc/stdlib/mbrlen.c
+++ b/newlib/libc/stdlib/mbrlen.c
@@ -5,6 +5,10 @@
#include <stdio.h>
#include <errno.h>
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_mbrlen_state;
+#endif
+
size_t
mbrlen(const char *__restrict s, size_t n, mbstate_t *__restrict ps)
{
diff --git a/newlib/libc/stdlib/mbrtowc.c b/newlib/libc/stdlib/mbrtowc.c
index 521b7a5..e641b8c 100644
--- a/newlib/libc/stdlib/mbrtowc.c
+++ b/newlib/libc/stdlib/mbrtowc.c
@@ -7,6 +7,10 @@
#include <string.h>
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_mbrtowc_state;
+#endif
+
size_t
_mbrtowc_r (struct _reent *ptr,
wchar_t *pwc,
diff --git a/newlib/libc/stdlib/mbsnrtowcs.c b/newlib/libc/stdlib/mbsnrtowcs.c
index 8f94b1d..2effc50 100644
--- a/newlib/libc/stdlib/mbsnrtowcs.c
+++ b/newlib/libc/stdlib/mbsnrtowcs.c
@@ -70,6 +70,10 @@ PORTABILITY
#include <stdio.h>
#include <errno.h>
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_mbsrtowcs_state;
+#endif
+
size_t
_mbsnrtowcs_r (struct _reent *r,
wchar_t *dst,
diff --git a/newlib/libc/stdlib/mbtowc.c b/newlib/libc/stdlib/mbtowc.c
index 2dc413f..fbd8df6 100644
--- a/newlib/libc/stdlib/mbtowc.c
+++ b/newlib/libc/stdlib/mbtowc.c
@@ -49,6 +49,10 @@ effects vary with the locale.
#include <wchar.h>
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_mbtowc_state;
+#endif
+
int
mbtowc (wchar_t *__restrict pwc,
const char *__restrict s,
diff --git a/newlib/libc/stdlib/mprec.c b/newlib/libc/stdlib/mprec.c
index 930c984..1f534b0 100644
--- a/newlib/libc/stdlib/mprec.c
+++ b/newlib/libc/stdlib/mprec.c
@@ -86,6 +86,11 @@
#include <reent.h>
#include "mprec.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local struct _Bigint *_tls_mp_p5s;
+_Thread_local struct _Bigint **_tls_mp_freelist;
+#endif
+
/* This is defined in sys/reent.h as (sizeof (size_t) << 3) now, as in NetBSD.
The old value of 15 was wrong and made newlib vulnerable against buffer
overrun attacks (CVE-2009-0689), same as other implementations of gdtoa
diff --git a/newlib/libc/stdlib/rand.c b/newlib/libc/stdlib/rand.c
index 209cb32..ba9cc80 100644
--- a/newlib/libc/stdlib/rand.c
+++ b/newlib/libc/stdlib/rand.c
@@ -58,6 +58,10 @@ on two different systems.
#include <stdlib.h>
#include <reent.h>
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local unsigned long long _tls_rand_next = 1;
+#endif
+
void
srand (unsigned int seed)
{
diff --git a/newlib/libc/stdlib/wcrtomb.c b/newlib/libc/stdlib/wcrtomb.c
index 6d670e2..1b84720 100644
--- a/newlib/libc/stdlib/wcrtomb.c
+++ b/newlib/libc/stdlib/wcrtomb.c
@@ -6,6 +6,10 @@
#include <errno.h>
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_wcrtomb_state;
+#endif
+
size_t
_wcrtomb_r (struct _reent *ptr,
char *s,
diff --git a/newlib/libc/stdlib/wcsnrtombs.c b/newlib/libc/stdlib/wcsnrtombs.c
index dfd974f..abef7ac 100644
--- a/newlib/libc/stdlib/wcsnrtombs.c
+++ b/newlib/libc/stdlib/wcsnrtombs.c
@@ -72,6 +72,10 @@ PORTABILITY
#include "local.h"
#include "../locale/setlocale.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_wcsrtombs_state;
+#endif
+
size_t
_wcsnrtombs_l (struct _reent *r, char *dst, const wchar_t **src, size_t nwc,
size_t len, mbstate_t *ps, struct __locale_t *loc)
diff --git a/newlib/libc/stdlib/wctomb.c b/newlib/libc/stdlib/wctomb.c
index e908d22..f56dccf 100644
--- a/newlib/libc/stdlib/wctomb.c
+++ b/newlib/libc/stdlib/wctomb.c
@@ -45,6 +45,10 @@ effects vary with the locale.
#include <errno.h>
#include "local.h"
+#ifdef _REENT_THREAD_LOCAL
+_Thread_local _mbstate_t _tls_wctomb_state;
+#endif
+
int
wctomb (char *s,
wchar_t wchar)