diff options
author | rofl0r <retnyg@gmx.net> | 2017-01-13 10:28:46 +0000 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2017-01-13 10:47:08 +0000 |
commit | 1f53e7d00c375efb32e2e468f91a42668653d5f0 (patch) | |
tree | d349d8718c0819061540cdfd751bb7b7806a30a7 /src | |
parent | 27b3fd68f67b674440d21ea7ca5cf918d2e1559f (diff) | |
download | musl-1f53e7d00c375efb32e2e468f91a42668653d5f0.tar.gz musl-1f53e7d00c375efb32e2e468f91a42668653d5f0.tar.bz2 musl-1f53e7d00c375efb32e2e468f91a42668653d5f0.tar.xz musl-1f53e7d00c375efb32e2e468f91a42668653d5f0.zip |
fix crashes in x32 __tls_get_addr
x32 has another gratuitous difference to all other archs:
it passes an array of 64bit values to __tls_get_addr().
usually it is an array of size_t.
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/pthread_impl.h | 4 | ||||
-rw-r--r-- | src/thread/__tls_get_addr.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 757b86ad..ae0ab1c5 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -97,6 +97,10 @@ struct __timer { #define DTP_OFFSET 0 #endif +#ifndef tls_mod_off_t +#define tls_mod_off_t size_t +#endif + #define SIGTIMER 32 #define SIGCANCEL 33 #define SIGSYNCCALL 34 diff --git a/src/thread/__tls_get_addr.c b/src/thread/__tls_get_addr.c index 6945faa0..3b6c9b1b 100644 --- a/src/thread/__tls_get_addr.c +++ b/src/thread/__tls_get_addr.c @@ -3,9 +3,9 @@ #include "libc.h" __attribute__((__visibility__("hidden"))) -void *__tls_get_new(size_t *); +void *__tls_get_new(tls_mod_off_t *); -void *__tls_get_addr(size_t *v) +void *__tls_get_addr(tls_mod_off_t *v) { pthread_t self = __pthread_self(); if (v[0]<=(size_t)self->dtv[0]) |