summaryrefslogtreecommitdiff
path: root/libc/malloc_hooks/malloc_hooks.cpp
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2018-02-08 18:37:26 -0800
committerRyan Prichard <rprichard@google.com>2018-02-08 20:55:57 -0800
commita0d177d0105a4ca8ea15901843357817c64e777e (patch)
tree632e35a408cbeca24173ea0ca7fc9fbefd586a44 /libc/malloc_hooks/malloc_hooks.cpp
parent12d96ed7f59d1e463df581ad6ec7ccfc87d9ef5d (diff)
crtbegin: Correctly align ESP to 16 for __i386__
The (lowest) address of the argument area (aka ESP immediately prior to the call instruction) must be aligned to 0 mod 16. Here, it is aligned to 12 mod 16. From the SysV ABI doc (2.2.2 The Stack Frame) """The end of the input argument area shall be aligned on a 16 (32, if __m256 is passed on stack) byte boundary. In other words, the value (%esp + 4) is always a multiple of 16 (32) when control is transferred to the function entry point.""" Test: extract code into a separate C file and verify stack alignment in a "start_main" function Test: use the upcoming NDK r17-beta1 (with new Bionic crtbegin*.o files) with an M-23 x86 system image, check alignment in main (compiled with Clang not GCC, compiled w/o -mstackrealign) Bug: b/73140672 Change-Id: Ia8d93fe5668d0a514a9fd22c40bf8362805111e6
Diffstat (limited to 'libc/malloc_hooks/malloc_hooks.cpp')
0 files changed, 0 insertions, 0 deletions