Clear the return address register in __bionic_clone.
The unwinder will end up on the parent thread's stack if the return address register is not cleared. Bug: 14270816 Bug: 15195760 Change-Id: Iebcdf5cc881cad245643bb193760de35eb7f8b19
This commit is contained in:
parent
1c4d83012f
commit
e7dccdf683
@ -54,6 +54,9 @@ ENTRY(__bionic_clone)
|
||||
j ra
|
||||
|
||||
.L__thread_start_bc:
|
||||
# Clear return address in child so we don't unwind further.
|
||||
li ra,0
|
||||
|
||||
lw a0,0(sp) # fn
|
||||
lw a1,4(sp) # arg
|
||||
|
||||
|
@ -75,6 +75,9 @@ LEAF(__bionic_clone, FRAMESZ)
|
||||
j ra
|
||||
|
||||
.L__thread_start_bc:
|
||||
# Clear return address in child so we don't unwind further.
|
||||
li ra,0
|
||||
|
||||
# void __bionic_clone_entry(int (*func)(void*), void *arg)
|
||||
PTR_L a0,FRAME_FN(sp) # fn
|
||||
PTR_L a1,FRAME_ARG(sp) # arg
|
||||
|
Loading…
x
Reference in New Issue
Block a user