diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-04-10 23:58:43 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-04-10 23:58:43 +0200 |
commit | 0cdc5e930a95ca2ec3f2fd9327da93a2fbaf8e97 (patch) | |
tree | 9c79540ab9ed15bd7ff9c1276ee0390de25656b6 | |
parent | 5057feffccb8970585e63b336e13fc878803af02 (diff) | |
download | glibc-0cdc5e930a95ca2ec3f2fd9327da93a2fbaf8e97.tar.gz glibc-0cdc5e930a95ca2ec3f2fd9327da93a2fbaf8e97.tar.xz glibc-0cdc5e930a95ca2ec3f2fd9327da93a2fbaf8e97.zip |
Fix crash on getauxval call without HAVE_AUX_VECTOR
* sysdeps/generic/ldsodefs.h (struct rtld_global_ro) [!HAVE_AUX_VECTOR]: Do not define _dl_auxv field. * misc/getauxval.c (__getauxval) [!HAVE_AUX_VECTOR]: Do not go through GLRO(dl_auxv) list.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | misc/getauxval.c | 2 | ||||
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 2 |
3 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 7a20eb3e51..fc5ffd832d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2016-04-10 Samuel Thibault <samuel.thibault@ens-lyon.org> + + * sysdeps/generic/ldsodefs.h (struct rtld_global_ro) + [!HAVE_AUX_VECTOR]: Do not define _dl_auxv field. + * misc/getauxval.c (__getauxval) [!HAVE_AUX_VECTOR]: Do not go through + GLRO(dl_auxv) list. + 2016-04-09 Nick Alcock <nick.alcock@oracle.com> * elf/rtld-Rules (rtld-compile-command.c): Add $(rtld-CFLAGS). diff --git a/misc/getauxval.c b/misc/getauxval.c index e48f40f66d..61113766da 100644 --- a/misc/getauxval.c +++ b/misc/getauxval.c @@ -30,9 +30,11 @@ __getauxval (unsigned long int type) else if (type == AT_HWCAP2) return GLRO(dl_hwcap2); +#ifdef HAVE_AUX_VECTOR for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++) if (p->a_type == type) return p->a_un.a_val; +#endif __set_errno (ENOENT); return 0; diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 2733ac8268..ddec0be12c 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -509,8 +509,10 @@ struct rtld_global_ro /* Mask for important hardware capabilities we honour. */ EXTERN uint64_t _dl_hwcap_mask; +#ifdef HAVE_AUX_VECTOR /* Pointer to the auxv list supplied to the program at startup. */ EXTERN ElfW(auxv_t) *_dl_auxv; +#endif /* Get architecture specific definitions. */ #define PROCINFO_DECL |