#include <elf.h>
#include <limits.h>
+#include <sys/mman.h>
+#include <string.h>
#include "pthread_impl.h"
#include "libc.h"
#include "atomic.h"
td = (pthread_t)mem;
mem += sizeof(struct pthread);
#else
- mem += __libc.tls_size - sizeof(struct pthread);
+ mem += libc.tls_size - sizeof(struct pthread);
mem -= (uintptr_t)mem & (align-1);
td = (pthread_t)mem;
td->dtv = dtv;
void __init_tls(size_t *aux)
{
unsigned char *p, *mem;
- size_t n, d;
+ size_t n;
Phdr *phdr, *tls_phdr=0;
size_t base = 0;
+ libc.tls_size = sizeof(struct pthread);
+
for (p=(void *)aux[AT_PHDR],n=aux[AT_PHNUM]; n; n--,p+=aux[AT_PHENT]) {
phdr = (void *)p;
if (phdr->p_type == PT_PHDR)