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.
This commit is contained in:
rofl0r
2017-01-13 10:28:46 +00:00
parent 27b3fd68f6
commit 1f53e7d00c
4 changed files with 13 additions and 7 deletions

View File

@@ -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

View File

@@ -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])