diff options
author | Rich Felker <dalias@aerifal.cx> | 2016-04-25 19:37:06 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-04-25 19:37:06 -0400 |
commit | be999f7a54e81656ea0409030205177327a7450c (patch) | |
tree | 0468c4862b449a48c28c3b2e3441f65b213a0c76 /crt/arm | |
parent | e7d05c7894aa15ea6decdeca481ffed3f14cb521 (diff) | |
download | musl-be999f7a54e81656ea0409030205177327a7450c.tar.gz |
fix thread structure/dtv-pointer corruption on powerpc
per the powerpc psabi, offset 4 of the stack at call time belongs to
the callee and is used for spilling lr (return address). in addition,
offset 0 on the stack must contain a pointer to the previous stack
frame, or a null pointer for the initial stack frame of a thread.
__clone failed to setup any stack frame on the new thread's stack,
thereby allowing the start function it called to clobber offset 4 of
the new thread's struct __pthread, which contains the dtv pointer.
add code to setup a proper stack frame and align the stack pointer to
a multiple of 16 (also an abi requirement) if it was not already
aligned.
Diffstat (limited to 'crt/arm')
0 files changed, 0 insertions, 0 deletions