.section .text .set noreorder .hidden __tsan_setjmp .comm _ZN14__interception11real_setjmpE,8,8 .globl setjmp .type setjmp, @function setjmp: // save env parameters daddiu $sp,$sp,-40 sd $s0,32($sp) sd $ra,24($sp) sd $fp,16($sp) sd $gp,8($sp) // calculate and save pointer to GOT lui $gp,%hi(%neg(%gp_rel(setjmp))) daddu $gp,$gp,$t9 daddiu $gp,$gp,%lo(%neg(%gp_rel(setjmp))) move $s0,$gp // save jmp_buf sd $a0,0($sp) // obtain $sp dadd $a0,$zero,$sp // call tsan interceptor jal __tsan_setjmp daddiu $a1,$a0,40 // restore jmp_buf ld $a0,0($sp) // restore gp move $gp,$s0 // load pointer of libc setjmp to t9 dla $t9,(_ZN14__interception11real_setjmpE) // restore env parameters ld $gp,8($sp) ld $fp,16($sp) ld $ra,24($sp) ld $s0,32($sp) daddiu $sp,$sp,40 // tail jump to libc setjmp ld $t9,0($t9) jr $t9 nop .size setjmp, .-setjmp .hidden __tsan_setjmp .globl _setjmp .comm _ZN14__interception12real__setjmpE,8,8 .type _setjmp, @function _setjmp: // Save env parameters daddiu $sp,$sp,-40 sd $s0,32($sp) sd $ra,24($sp) sd $fp,16($sp) sd $gp,8($sp) // calculate and save pointer to GOT lui $gp,%hi(%neg(%gp_rel(_setjmp))) daddu $gp,$gp,$t9 daddiu $gp,$gp,%lo(%neg(%gp_rel(_setjmp))) move $s0,$gp // save jmp_buf sd $a0,0($sp) // obtain $sp dadd $a0,$zero,$sp // call tsan interceptor jal __tsan_setjmp daddiu $a1,$a0,40 // restore jmp_buf ld $a0,0($sp) // restore gp move $gp,$s0 // load pointer of libc _setjmp to t9 dla $t9,(_ZN14__interception12real__setjmpE) // restore env parameters ld $gp,8($sp) ld $fp,16($sp) ld $ra,24($sp) ld $s0,32($sp) daddiu $sp,$sp,40 // tail jump to libc _setjmp ld $t9,0($t9) jr $t9 nop .size _setjmp, .-_setjmp .hidden __tsan_setjmp .globl sigsetjmp .comm _ZN14__interception14real_sigsetjmpE,8,8 .type sigsetjmp, @function sigsetjmp: // Save env parameters daddiu $sp,$sp,-48 sd $s0,40($sp) sd $ra,32($sp) sd $fp,24($sp) sd $gp,16($sp) // calculate and save pointer to GOT lui $gp,%hi(%neg(%gp_rel(sigsetjmp))) daddu $gp,$gp,$t9 daddiu $gp,$gp,%lo(%neg(%gp_rel(sigsetjmp))) move $s0,$gp // save jmp_buf and savesig sd $a0,0($sp) sd $a1,8($sp) // obtain $sp dadd $a0,$zero,$sp // call tsan interceptor jal __tsan_setjmp daddiu $a1,$a0,48 // restore jmp_buf and savesig ld $a0,0($sp) ld $a1,8($sp) // restore gp move $gp,$s0 // load pointer of libc sigsetjmp to t9 dla $t9,(_ZN14__interception14real_sigsetjmpE) // restore env parameters ld $gp,16($sp) ld $fp,24($sp) ld $ra,32($sp) ld $s0,40($sp) daddiu $sp,$sp,48 // tail jump to libc sigsetjmp ld $t9,0($t9) jr $t9 nop .size sigsetjmp, .-sigsetjmp .hidden __tsan_setjmp .comm _ZN14__interception16real___sigsetjmpE,8,8 .globl __sigsetjmp .type __sigsetjmp, @function __sigsetjmp: // Save env parameters daddiu $sp,$sp,-48 sd $s0,40($sp) sd $ra,32($sp) sd $fp,24($sp) sd $gp,16($sp) // calculate and save pointer to GOT lui $gp,%hi(%neg(%gp_rel(__sigsetjmp))) daddu $gp,$gp,$t9 daddiu $gp,$gp,%lo(%neg(%gp_rel(__sigsetjmp))) move $s0,$gp // save jmp_buf and savesig sd $a0,0($sp) sd $a1,8($sp) // obtain $sp dadd $a0,$zero,$sp // call tsan interceptor jal __tsan_setjmp daddiu $a1,$a0,48 // restore jmp_buf and savesig ld $a0,0($sp) ld $a1,8($sp) // restore gp move $gp,$s0 // load pointer to libc __sigsetjmp in t9 dla $t9,(_ZN14__interception16real___sigsetjmpE) // restore env parameters ld $gp,16($sp) ld $fp,24($sp) ld $ra,32($sp) ld $s0,40($sp) daddiu $sp,$sp,48 // tail jump to libc __sigsetjmp ld $t9,0($t9) jr $t9 nop .size __sigsetjmp, .-__sigsetjmp