1 #if defined(__arm__) && defined(__linux__)
3 #include "sanitizer_common/sanitizer_asm.h"
5 ASM_HIDDEN(COMMON_INTERCEPTOR_SPILL_AREA)
7 .comm _ZN14__interception10real_vforkE,4,4
8 .globl ASM_WRAPPER_NAME(vfork)
9 ASM_TYPE_FUNCTION(ASM_WRAPPER_NAME(vfork))
10 ASM_WRAPPER_NAME(vfork):
11 // Save LR in the off-stack spill area.
13 bl COMMON_INTERCEPTOR_SPILL_AREA
17 // Call real vfork. This may return twice. User code that runs between the first and the second return
18 // may clobber the stack frame of the interceptor; that's why it does not have a frame.
29 // r0 != 0 => parent process. Clear stack shadow.
31 bl COMMON_INTERCEPTOR_HANDLE_VFORK
35 bl COMMON_INTERCEPTOR_SPILL_AREA
42 .long _ZN14__interception10real_vforkE - (.LPC0_0+8)
47 .set vfork, ASM_WRAPPER_NAME(vfork)