Fix stack alignment when loader is invoked directly
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Wed, 12 Nov 2014 14:00:24 +0000 (19:30 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Wed, 12 Nov 2014 14:12:59 +0000 (19:42 +0530)
commit533bb7c2ae156ff2d49b2e0b20b33810ba5e2721
treeaaeb627afb1e90b79e161e4d325b633064163168
parentfffa1cf8a7f95830d488d5fc6bf73cb9599143f4
Fix stack alignment when loader is invoked directly

The s390 ABI requires the stack pointer to be aligned at 8-bytes.
When a program is invoked as an argument to the dynamic linker,
_dl_start_user adjusts the stack to remove the dynamic linker
arguments so that the program sees only its name and arguments.  This
may result in the stack being misaligned since each argument shift is
only a word and not a double-word.

This is now fixed shifting argv and envp down instead of shifting argc
up and reclaiming the stack.  This requires _dl_argv to be adjusted
and hence, is no longer relro.
ChangeLog
sysdeps/s390/s390-32/dl-machine.h
sysdeps/s390/s390-32/dl-sysdep.h [new file with mode: 0644]