This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 1/2] powerpc: Initialize rtld_global_ro for static dlopen [BZ #20802]
- From: Tulio Magno Quites Machado Filho <tuliom at linux dot ibm dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>, law at redhat dot com, Florian Weimer <fweimer at redhat dot com>, libc-alpha at sourceware dot org
- Date: Fri, 10 Jan 2020 19:27:42 -0300
- Subject: [PATCH 1/2] powerpc: Initialize rtld_global_ro for static dlopen [BZ #20802]
- References: <1c5c49e4-55b1-a525-44a4-e2929ff1001a@linaro.org>
Notice this patch is required in order to let the static dlopen test
from the next patch to work.
----8<----
Initialize dl_auxv, dl_hwcap and dl_hwcap2 in rtld_global_ro for DSOs
that have been statically dlopen'ed.
---
sysdeps/unix/sysv/linux/powerpc/dl-static.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-static.c b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
index 48fec16dca..59ce4e8972 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-static.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
@@ -26,17 +26,26 @@ _dl_var_init (void *array[])
/* It has to match "variables" below. */
enum
{
- DL_PAGESIZE = 0
+ DL_PAGESIZE = 0,
+ DL_AUXV = 1,
+ DL_HWCAP = 2,
+ DL_HWCAP2 = 3,
};
GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]);
+ GLRO(dl_auxv) = (ElfW(auxv_t) *) *((size_t *) array[DL_AUXV]);
+ GLRO(dl_hwcap) = *((unsigned long int *) array[DL_HWCAP]);
+ GLRO(dl_hwcap2) = *((unsigned long int *) array[DL_HWCAP2]);
}
#else
static void *variables[] =
{
- &GLRO(dl_pagesize)
+ &GLRO(dl_pagesize),
+ &GLRO(dl_auxv),
+ &GLRO(dl_hwcap),
+ &GLRO(dl_hwcap2),
};
static void
--
2.24.1