1.section .text 2.set noreorder 3 4.hidden __tsan_setjmp 5.comm _ZN14__interception11real_setjmpE,8,8 6.globl setjmp 7.type setjmp, @function 8setjmp: 9 10 // save env parameters 11 daddiu $sp,$sp,-40 12 sd $s0,32($sp) 13 sd $ra,24($sp) 14 sd $fp,16($sp) 15 sd $gp,8($sp) 16 17 // calculate and save pointer to GOT 18 lui $gp,%hi(%neg(%gp_rel(setjmp))) 19 daddu $gp,$gp,$t9 20 daddiu $gp,$gp,%lo(%neg(%gp_rel(setjmp))) 21 move $s0,$gp 22 23 // save jmp_buf 24 sd $a0,0($sp) 25 26 // obtain $sp 27 dadd $a0,$zero,$sp 28 29 // call tsan interceptor 30 jal __tsan_setjmp 31 daddiu $a1,$a0,40 32 33 // restore jmp_buf 34 ld $a0,0($sp) 35 36 // restore gp 37 move $gp,$s0 38 39 // load pointer of libc setjmp to t9 40 dla $t9,(_ZN14__interception11real_setjmpE) 41 42 // restore env parameters 43 ld $gp,8($sp) 44 ld $fp,16($sp) 45 ld $ra,24($sp) 46 ld $s0,32($sp) 47 daddiu $sp,$sp,40 48 49 // tail jump to libc setjmp 50 ld $t9,0($t9) 51 jr $t9 52 nop 53 54.size setjmp, .-setjmp 55 56.hidden __tsan_setjmp 57.globl _setjmp 58.comm _ZN14__interception12real__setjmpE,8,8 59.type _setjmp, @function 60_setjmp: 61 62 // Save env parameters 63 daddiu $sp,$sp,-40 64 sd $s0,32($sp) 65 sd $ra,24($sp) 66 sd $fp,16($sp) 67 sd $gp,8($sp) 68 69 // calculate and save pointer to GOT 70 lui $gp,%hi(%neg(%gp_rel(_setjmp))) 71 daddu $gp,$gp,$t9 72 daddiu $gp,$gp,%lo(%neg(%gp_rel(_setjmp))) 73 move $s0,$gp 74 75 // save jmp_buf 76 sd $a0,0($sp) 77 78 // obtain $sp 79 dadd $a0,$zero,$sp 80 81 // call tsan interceptor 82 jal __tsan_setjmp 83 daddiu $a1,$a0,40 84 85 // restore jmp_buf 86 ld $a0,0($sp) 87 88 // restore gp 89 move $gp,$s0 90 91 // load pointer of libc _setjmp to t9 92 dla $t9,(_ZN14__interception12real__setjmpE) 93 94 // restore env parameters 95 ld $gp,8($sp) 96 ld $fp,16($sp) 97 ld $ra,24($sp) 98 ld $s0,32($sp) 99 daddiu $sp,$sp,40 100 101 // tail jump to libc _setjmp 102 ld $t9,0($t9) 103 jr $t9 104 nop 105 106.size _setjmp, .-_setjmp 107 108.hidden __tsan_setjmp 109.globl sigsetjmp 110.comm _ZN14__interception14real_sigsetjmpE,8,8 111.type sigsetjmp, @function 112sigsetjmp: 113 114 // Save env parameters 115 daddiu $sp,$sp,-48 116 sd $s0,40($sp) 117 sd $ra,32($sp) 118 sd $fp,24($sp) 119 sd $gp,16($sp) 120 121 // calculate and save pointer to GOT 122 lui $gp,%hi(%neg(%gp_rel(sigsetjmp))) 123 daddu $gp,$gp,$t9 124 daddiu $gp,$gp,%lo(%neg(%gp_rel(sigsetjmp))) 125 move $s0,$gp 126 127 // save jmp_buf and savesig 128 sd $a0,0($sp) 129 sd $a1,8($sp) 130 131 // obtain $sp 132 dadd $a0,$zero,$sp 133 134 // call tsan interceptor 135 jal __tsan_setjmp 136 daddiu $a1,$a0,48 137 138 // restore jmp_buf and savesig 139 ld $a0,0($sp) 140 ld $a1,8($sp) 141 142 // restore gp 143 move $gp,$s0 144 145 // load pointer of libc sigsetjmp to t9 146 dla $t9,(_ZN14__interception14real_sigsetjmpE) 147 148 // restore env parameters 149 ld $gp,16($sp) 150 ld $fp,24($sp) 151 ld $ra,32($sp) 152 ld $s0,40($sp) 153 daddiu $sp,$sp,48 154 155 // tail jump to libc sigsetjmp 156 ld $t9,0($t9) 157 jr $t9 158 nop 159 160.size sigsetjmp, .-sigsetjmp 161 162.hidden __tsan_setjmp 163.comm _ZN14__interception16real___sigsetjmpE,8,8 164.globl __sigsetjmp 165.type __sigsetjmp, @function 166__sigsetjmp: 167 168 // Save env parameters 169 daddiu $sp,$sp,-48 170 sd $s0,40($sp) 171 sd $ra,32($sp) 172 sd $fp,24($sp) 173 sd $gp,16($sp) 174 175 // calculate and save pointer to GOT 176 lui $gp,%hi(%neg(%gp_rel(__sigsetjmp))) 177 daddu $gp,$gp,$t9 178 daddiu $gp,$gp,%lo(%neg(%gp_rel(__sigsetjmp))) 179 move $s0,$gp 180 181 // save jmp_buf and savesig 182 sd $a0,0($sp) 183 sd $a1,8($sp) 184 185 // obtain $sp 186 dadd $a0,$zero,$sp 187 188 // call tsan interceptor 189 jal __tsan_setjmp 190 daddiu $a1,$a0,48 191 192 // restore jmp_buf and savesig 193 ld $a0,0($sp) 194 ld $a1,8($sp) 195 196 // restore gp 197 move $gp,$s0 198 199 // load pointer to libc __sigsetjmp in t9 200 dla $t9,(_ZN14__interception16real___sigsetjmpE) 201 202 // restore env parameters 203 ld $gp,16($sp) 204 ld $fp,24($sp) 205 ld $ra,32($sp) 206 ld $s0,40($sp) 207 daddiu $sp,$sp,48 208 209 // tail jump to libc __sigsetjmp 210 ld $t9,0($t9) 211 jr $t9 212 nop 213 214.size __sigsetjmp, .-__sigsetjmp 215