mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
libc dl_iterate_phdr(): dlpi_tls_data is wrong
(cherry picked from commit dbd2053026)
This commit is contained in:
parent
4959d4f3ea
commit
17ef58221c
1 changed files with 4 additions and 2 deletions
|
|
@ -196,8 +196,6 @@ dl_init_phdr_info(void)
|
|||
for (i = 0; i < phdr_info.dlpi_phnum; i++) {
|
||||
if (phdr_info.dlpi_phdr[i].p_type == PT_TLS) {
|
||||
phdr_info.dlpi_tls_modid = 1;
|
||||
phdr_info.dlpi_tls_data =
|
||||
(void*)phdr_info.dlpi_phdr[i].p_vaddr;
|
||||
}
|
||||
}
|
||||
phdr_info.dlpi_adds = 1;
|
||||
|
|
@ -210,13 +208,17 @@ dl_iterate_phdr(int (*callback)(struct dl_phdr_info *, size_t, void *) __unused,
|
|||
void *data __unused)
|
||||
{
|
||||
#ifndef IN_LIBDL
|
||||
tls_index ti;
|
||||
int ret;
|
||||
|
||||
__init_elf_aux_vector();
|
||||
if (__elf_aux_vector == NULL)
|
||||
return (1);
|
||||
_once(&dl_phdr_info_once, dl_init_phdr_info);
|
||||
ti.ti_module = 1;
|
||||
ti.ti_offset = 0;
|
||||
mutex_lock(&dl_phdr_info_lock);
|
||||
phdr_info.dlpi_tls_data = __tls_get_addr(&ti);
|
||||
ret = callback(&phdr_info, sizeof(phdr_info), data);
|
||||
mutex_unlock(&dl_phdr_info_lock);
|
||||
return (ret);
|
||||
|
|
|
|||
Loading…
Reference in a new issue