summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2011-04-17 20:41:45 -0400
committerUlrich Drepper <drepper@gmail.com>2011-04-17 20:41:45 -0400
commit1044270502f31134c6a252dfe71ce8f586bc0d00 (patch)
tree5a5330d763f1de55731db320fce62e0022efb0d5
parent7b57bfe5988e476ea40934457dfd1c8a231e2391 (diff)
Skip extra zeroes when searching auxv on s390
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/s390/s390-32/elf/start.S12
2 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 468799ce6b..99f4b64c4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * sysdeps/s390/s390-32/elf/start.S (_start): Skip extra zeroes
+ between environment variables and auxiliary vector.
+
2011-04-16 Ulrich Drepper <drepper@gmail.com>
* Makefile: Add rules to build linkobj/libc.so.
diff --git a/sysdeps/s390/s390-32/elf/start.S b/sysdeps/s390/s390-32/elf/start.S
index 8e48abbcc3..c568f824ff 100644
--- a/sysdeps/s390/s390-32/elf/start.S
+++ b/sysdeps/s390/s390-32/elf/start.S
@@ -75,6 +75,18 @@ _start:
ltr %r5,%r5
jne .L12
+ /* Usually the auxiliary vector can be expected directly after
+ the environment variables. But we have to skip extra zeros
+ because the loader might have removed unsecure variables for
+ setuid programs. */
+
+.L26: l %r5,0(%r6)
+ la %r6,4(%r6)
+ ltr %r5,%r5
+ jz .L26
+
+ ahi %r6,-4
+
/* Obtain the needed values from the auxiliary vector. */
lhi %r7,16 /* AT_HWCAP */