1 #include "sanitizer_common/sanitizer_asm.h"
5 .comm _ZN14__interception11real_setjmpE,8,8
6 .type setjmp, @function
10 // save env parameters for function call
11 stp x29, x30, [sp, -32]!
12 CFI_DEF_CFA_OFFSET (32)
16 // Adjust the SP for previous frame
18 CFI_DEF_CFA_REGISTER (29)
25 // SP pointer mangling (see glibc setjmp)
26 adrp x2, :got:__pointer_chk_guard
27 ldr x2, [x2, #:got_lo12:__pointer_chk_guard]
32 // call tsan interceptor
35 // restore env parameter
38 ldp x29, x30, [sp], 32
43 // tail jump to libc setjmp
44 adrp x1, :got:_ZN14__interception11real_setjmpE
45 ldr x1, [x1, #:got_lo12:_ZN14__interception11real_setjmpE]
50 .size setjmp, .-setjmp
52 .comm _ZN14__interception12real__setjmpE,8,8
54 .type _setjmp, @function
58 // save env parameters for function call
59 stp x29, x30, [sp, -32]!
60 CFI_DEF_CFA_OFFSET (32)
64 // Adjust the SP for previous frame
66 CFI_DEF_CFA_REGISTER (29)
73 // SP pointer mangling (see glibc setjmp)
74 adrp x2, :got:__pointer_chk_guard
75 ldr x2, [x2, #:got_lo12:__pointer_chk_guard]
80 // call tsan interceptor
83 // Restore jmp_buf parameter
86 ldp x29, x30, [sp], 32
91 // tail jump to libc setjmp
92 adrp x1, :got:_ZN14__interception12real__setjmpE
93 ldr x1, [x1, #:got_lo12:_ZN14__interception12real__setjmpE]
98 .size _setjmp, .-_setjmp
100 .comm _ZN14__interception14real_sigsetjmpE,8,8
102 .type sigsetjmp, @function
106 // save env parameters for function call
107 stp x29, x30, [sp, -32]!
108 CFI_DEF_CFA_OFFSET (32)
112 // Adjust the SP for previous frame
114 CFI_DEF_CFA_REGISTER (29)
116 // Save jmp_buf and savesigs
117 stp x19, x20, [sp, 16]
123 // SP pointer mangling (see glibc setjmp)
124 adrp x2, :got:__pointer_chk_guard
125 ldr x2, [x2, #:got_lo12:__pointer_chk_guard]
130 // call tsan interceptor
133 // restore env parameter
136 ldp x19, x20, [sp, 16]
137 ldp x29, x30, [sp], 32
144 // tail jump to libc sigsetjmp
145 adrp x2, :got:_ZN14__interception14real_sigsetjmpE
146 ldr x2, [x2, #:got_lo12:_ZN14__interception14real_sigsetjmpE]
150 .size sigsetjmp, .-sigsetjmp
152 .comm _ZN14__interception16real___sigsetjmpE,8,8
154 .type __sigsetjmp, @function
158 // save env parameters for function call
159 stp x29, x30, [sp, -32]!
160 CFI_DEF_CFA_OFFSET (32)
164 // Adjust the SP for previous frame
166 CFI_DEF_CFA_REGISTER (29)
168 // Save jmp_buf and savesigs
169 stp x19, x20, [sp, 16]
175 // SP pointer mangling (see glibc setjmp)
176 adrp x2, :got:__pointer_chk_guard
177 ldr x2, [x2, #:got_lo12:__pointer_chk_guard]
182 // call tsan interceptor
187 ldp x19, x20, [sp, 16]
188 ldp x29, x30, [sp], 32
195 // tail jump to libc __sigsetjmp
196 adrp x2, :got:_ZN14__interception16real___sigsetjmpE
197 ldr x2, [x2, #:got_lo12:_ZN14__interception16real___sigsetjmpE]
201 .size __sigsetjmp, .-__sigsetjmp
203 #if defined(__linux__)
204 /* We do not need executable stack. */
205 .section .note.GNU-stack,"",@progbits