@@ -39,7 +39,7 @@ ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(setjmp))
39
39
ASM_SYMBOL_INTERCEPTOR(setjmp):
40
40
CFI_STARTPROC
41
41
42
- // save env parameters for function call
42
+ // Save frame/link register
43
43
stp x29, x30, [sp, -32]!
44
44
CFI_DEF_CFA_OFFSET (32 )
45
45
CFI_OFFSET (29 , -32 )
@@ -49,23 +49,24 @@ ASM_SYMBOL_INTERCEPTOR(setjmp):
49
49
add x29, sp, 0
50
50
CFI_DEF_CFA_REGISTER (29 )
51
51
52
- // Save jmp_buf
53
- str x19 , [ sp , 16 ]
54
- CFI_OFFSET ( 19 , - 16 )
55
- mov x19 , x0
52
+ // Save env parameter
53
+ str x0, [sp, 16]
54
+ CFI_OFFSET (0 , -16 )
56
55
57
56
// Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
58
57
add x0, x29, 32
59
58
60
59
// call tsan interceptor
61
60
bl ASM_SYMBOL(__tsan_setjmp)
62
61
63
- // restore env parameter
64
- mov x0 , x19
65
- ldr x19 , [ sp , 16 ]
62
+ // Restore env parameter
63
+ ldr x0, [sp, 16]
64
+ CFI_RESTORE (0 )
65
+
66
+ // Restore frame/link register
66
67
ldp x29, x30, [sp], 32
68
+ CFI_RESTORE (29 )
67
69
CFI_RESTORE (30 )
68
- CFI_RESTORE ( 19 )
69
70
CFI_DEF_CFA (31 , 0 )
70
71
71
72
// tail jump to libc setjmp
@@ -89,7 +90,7 @@ ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(_setjmp))
89
90
ASM_SYMBOL_INTERCEPTOR(_setjmp):
90
91
CFI_STARTPROC
91
92
92
- // save env parameters for function call
93
+ // Save frame/link register
93
94
stp x29, x30, [sp, -32]!
94
95
CFI_DEF_CFA_OFFSET (32 )
95
96
CFI_OFFSET (29 , -32 )
@@ -99,23 +100,24 @@ ASM_SYMBOL_INTERCEPTOR(_setjmp):
99
100
add x29, sp, 0
100
101
CFI_DEF_CFA_REGISTER (29 )
101
102
102
- // Save jmp_buf
103
- str x19 , [ sp , 16 ]
104
- CFI_OFFSET ( 19 , - 16 )
105
- mov x19 , x0
103
+ // Save env parameter
104
+ str x0, [sp, 16]
105
+ CFI_OFFSET (0 , -16 )
106
106
107
107
// Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
108
108
add x0, x29, 32
109
109
110
110
// call tsan interceptor
111
111
bl ASM_SYMBOL(__tsan_setjmp)
112
112
113
- // Restore jmp_buf parameter
114
- mov x0 , x19
115
- ldr x19 , [ sp , 16 ]
113
+ // Restore env parameter
114
+ ldr x0, [sp, 16]
115
+ CFI_RESTORE (0 )
116
+
117
+ // Restore frame/link register
116
118
ldp x29, x30, [sp], 32
119
+ CFI_RESTORE (29 )
117
120
CFI_RESTORE (30 )
118
- CFI_RESTORE ( 19 )
119
121
CFI_DEF_CFA (31 , 0 )
120
122
121
123
// tail jump to libc setjmp
@@ -139,7 +141,7 @@ ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))
139
141
ASM_SYMBOL_INTERCEPTOR(sigsetjmp):
140
142
CFI_STARTPROC
141
143
142
- // save env parameters for function call
144
+ // Save frame/link register
143
145
stp x29, x30, [sp, -32]!
144
146
CFI_DEF_CFA_OFFSET (32 )
145
147
CFI_OFFSET (29 , -32 )
@@ -149,28 +151,26 @@ ASM_SYMBOL_INTERCEPTOR(sigsetjmp):
149
151
add x29, sp, 0
150
152
CFI_DEF_CFA_REGISTER (29 )
151
153
152
- // Save jmp_buf and savesigs
153
- stp x19 , x20 , [ sp , 16 ]
154
- CFI_OFFSET ( 19 , - 16 )
155
- CFI_OFFSET ( 20 , - 8 )
156
- mov w20 , w1
157
- mov x19 , x0
154
+ // Save env and savesigs parameter
155
+ stp x0, x1, [sp, 16]
156
+ CFI_OFFSET (0 , -16 )
157
+ CFI_OFFSET (1 , -8 )
158
158
159
159
// Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
160
160
add x0, x29, 32
161
161
162
162
// call tsan interceptor
163
163
bl ASM_SYMBOL(__tsan_setjmp)
164
164
165
- // restore env parameter
166
- mov w1 , w20
167
- mov x0 , x19
168
- ldp x19 , x20 , [ sp , 16 ]
165
+ // Restore env and savesigs parameter
166
+ ldp x0, x1, [sp, 16]
167
+ CFI_RESTORE (0 )
168
+ CFI_RESTORE (1 )
169
+
170
+ // Restore frame/link register
169
171
ldp x29, x30, [sp], 32
170
- CFI_RESTORE ( 30 )
171
172
CFI_RESTORE (29 )
172
- CFI_RESTORE ( 19 )
173
- CFI_RESTORE ( 20 )
173
+ CFI_RESTORE (30 )
174
174
CFI_DEF_CFA (31 , 0 )
175
175
176
176
// tail jump to libc sigsetjmp
@@ -194,7 +194,7 @@ ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))
194
194
ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):
195
195
CFI_STARTPROC
196
196
197
- // save env parameters for function call
197
+ // Save frame/link register
198
198
stp x29, x30, [sp, -32]!
199
199
CFI_DEF_CFA_OFFSET (32 )
200
200
CFI_OFFSET (29 , -32 )
@@ -204,27 +204,26 @@ ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):
204
204
add x29, sp, 0
205
205
CFI_DEF_CFA_REGISTER (29 )
206
206
207
- // Save jmp_buf and savesigs
208
- stp x19 , x20 , [ sp , 16 ]
209
- CFI_OFFSET ( 19 , - 16 )
210
- CFI_OFFSET ( 20 , - 8 )
211
- mov w20 , w1
212
- mov x19 , x0
207
+ // Save env and savesigs parameter
208
+ stp x0, x1, [sp, 16]
209
+ CFI_OFFSET (0 , -16 )
210
+ CFI_OFFSET (1 , -8 )
213
211
214
212
// Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
215
213
add x0, x29, 32
216
214
217
215
// call tsan interceptor
218
216
bl ASM_SYMBOL(__tsan_setjmp)
219
217
220
- mov w1 , w20
221
- mov x0 , x19
222
- ldp x19 , x20 , [ sp , 16 ]
218
+ // Restore env and savesigs parameter
219
+ ldp x0, x1, [sp, 16]
220
+ CFI_RESTORE (0 )
221
+ CFI_RESTORE (1 )
222
+
223
+ // Restore frame/link register
223
224
ldp x29, x30, [sp], 32
224
- CFI_RESTORE ( 30 )
225
225
CFI_RESTORE (29 )
226
- CFI_RESTORE ( 19 )
227
- CFI_RESTORE ( 20 )
226
+ CFI_RESTORE (30 )
228
227
CFI_DEF_CFA (31 , 0 )
229
228
230
229
// tail jump to libc __sigsetjmp
0 commit comments