Allocate space for thread pointer, this allows thread library to access

its pointer from begin, and simplifies _get_curthread() in libthr.
This commit is contained in:
David Xu 2006-03-28 06:09:24 +00:00
parent 20df0de426
commit c0d2338cdd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=157198
5 changed files with 7 additions and 7 deletions

View File

@ -131,7 +131,7 @@ __libc_allocate_tls(void *oldtls, size_t tcbsize, size_t tcbalign __unused)
if (size < tcbsize)
size = tcbsize;
tls = malloc(size);
tls = calloc(1, size);
dtv = malloc(3 * sizeof(Elf_Addr));
*(Elf_Addr **) tls = dtv;
@ -202,7 +202,7 @@ __libc_allocate_tls(void *oldtls, size_t tcbsize, size_t tcbalign)
size = round(tls_static_space, tcbalign);
assert(tcbsize >= 2*sizeof(Elf_Addr));
tls = malloc(size + tcbsize);
tls = calloc(1, size + tcbsize);
dtv = malloc(3 * sizeof(Elf_Addr));
segbase = (Elf_Addr)(tls + size);
@ -309,7 +309,7 @@ _init_tls()
}
}
tls = _rtld_allocate_tls(NULL, 2*sizeof(Elf_Addr),
tls = _rtld_allocate_tls(NULL, 3*sizeof(Elf_Addr),
sizeof(Elf_Addr));
_set_tp(tls);

View File

@ -384,7 +384,7 @@ allocate_initial_tls(Obj_Entry *objs)
*/
tls_static_space = tls_last_offset + RTLD_STATIC_TLS_EXTRA;
amd64_set_fsbase(allocate_tls(objs, 0,
2*sizeof(Elf_Addr), sizeof(Elf_Addr)));
3*sizeof(Elf_Addr), sizeof(Elf_Addr)));
}
void *__tls_get_addr(tls_index *ti)

View File

@ -336,7 +336,7 @@ allocate_initial_tls(Obj_Entry *objs)
* use.
*/
tls_static_space = tls_last_offset + RTLD_STATIC_TLS_EXTRA;
tls = allocate_tls(objs, NULL, 2*sizeof(Elf_Addr), sizeof(Elf_Addr));
tls = allocate_tls(objs, NULL, 3*sizeof(Elf_Addr), sizeof(Elf_Addr));
i386_set_gsbase(tls);
}

View File

@ -2707,7 +2707,7 @@ allocate_tls(Obj_Entry *objs, void *oldtls, size_t tcbsize, size_t tcbalign)
size = tls_static_space;
tls = malloc(size);
tls = calloc(1, size);
dtv = calloc(1, (tls_max_index + 2) * sizeof(Elf_Addr));
*(Elf_Addr**) tls = dtv;

View File

@ -731,7 +731,7 @@ allocate_initial_tls(Obj_Entry *objs)
* use.
*/
tls_static_space = tls_last_offset + RTLD_STATIC_TLS_EXTRA;
tp = allocate_tls(objs, NULL, 2*sizeof(Elf_Addr), sizeof(Elf_Addr));
tp = allocate_tls(objs, NULL, 3*sizeof(Elf_Addr), sizeof(Elf_Addr));
}
void *__tls_get_addr(tls_index *ti)