about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2016-04-10 23:58:43 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-04-10 23:58:43 +0200
commit0cdc5e930a95ca2ec3f2fd9327da93a2fbaf8e97 (patch)
tree9c79540ab9ed15bd7ff9c1276ee0390de25656b6
parent5057feffccb8970585e63b336e13fc878803af02 (diff)
downloadglibc-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--ChangeLog7
-rw-r--r--misc/getauxval.c2
-rw-r--r--sysdeps/generic/ldsodefs.h2
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