197 lines · plain
1#include "sanitizer_common/sanitizer_asm.h"2 3.section .text4 5ASM_HIDDEN(__tsan_setjmp)6.comm _ZN14__interception11real_setjmpE,8,87.globl ASM_SYMBOL_INTERCEPTOR(setjmp)8ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(setjmp))9ASM_SYMBOL_INTERCEPTOR(setjmp):10 CFI_STARTPROC11 12 // Save frame pointer and return address register13 addi.d $sp, $sp, -3214 st.d $ra, $sp, 2415 st.d $fp, $sp, 1616 CFI_DEF_CFA_OFFSET (32)17 CFI_OFFSET (1, -8)18 CFI_OFFSET (22, -16)19 20 // Adjust the SP for previous frame21 addi.d $fp, $sp, 3222 CFI_DEF_CFA_REGISTER (22)23 24 // Save env parameter25 st.d $a0, $sp, 826 CFI_OFFSET (4, -24)27 28 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`29 addi.d $a0, $fp, 030 31 // call tsan interceptor32 bl ASM_SYMBOL(__tsan_setjmp)33 34 // Restore env parameter35 ld.d $a0, $sp, 836 CFI_RESTORE (4)37 38 // Restore frame/link register39 ld.d $fp, $sp, 1640 ld.d $ra, $sp, 2441 addi.d $sp, $sp, 3242 CFI_RESTORE (22)43 CFI_RESTORE (1)44 CFI_DEF_CFA (3, 0)45 46 // tail jump to libc setjmp47 la.local $a1, _ZN14__interception11real_setjmpE48 ld.d $a1, $a1, 049 jr $a150 51 CFI_ENDPROC52ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(setjmp))53 54.comm _ZN14__interception12real__setjmpE,8,855.globl ASM_SYMBOL_INTERCEPTOR(_setjmp)56ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(_setjmp))57ASM_SYMBOL_INTERCEPTOR(_setjmp):58 CFI_STARTPROC59 60 // Save frame pointer and return address register61 addi.d $sp, $sp, -3262 st.d $ra, $sp, 2463 st.d $fp, $sp, 1664 CFI_DEF_CFA_OFFSET (32)65 CFI_OFFSET (1, -8)66 CFI_OFFSET (22, -16)67 68 // Adjust the SP for previous frame69 addi.d $fp, $sp, 3270 CFI_DEF_CFA_REGISTER (22)71 72 // Save env parameter73 st.d $a0, $sp, 874 CFI_OFFSET (4, -24)75 76 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`77 addi.d $a0, $fp, 078 79 // call tsan interceptor80 bl ASM_SYMBOL(__tsan_setjmp)81 82 // Restore env parameter83 ld.d $a0, $sp, 884 CFI_RESTORE (4)85 86 // Restore frame/link register87 ld.d $fp, $sp, 1688 ld.d $ra, $sp, 2489 addi.d $sp, $sp, 3290 CFI_RESTORE (22)91 CFI_RESTORE (1)92 CFI_DEF_CFA (3, 0)93 94 // tail jump to libc setjmp95 la.local $a1, _ZN14__interception12real__setjmpE96 ld.d $a1, $a1, 097 jr $a198 99 CFI_ENDPROC100ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(_setjmp))101 102.comm _ZN14__interception14real_sigsetjmpE,8,8103.globl ASM_SYMBOL_INTERCEPTOR(sigsetjmp)104ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))105ASM_SYMBOL_INTERCEPTOR(sigsetjmp):106 CFI_STARTPROC107 108 // Save frame pointer and return address register109 addi.d $sp, $sp, -32110 st.d $ra, $sp, 24111 st.d $fp, $sp, 16112 CFI_DEF_CFA_OFFSET (32)113 CFI_OFFSET (1, -8)114 CFI_OFFSET (22, -16)115 116 // Adjust the SP for previous frame117 addi.d $fp, $sp, 32118 CFI_DEF_CFA_REGISTER (22)119 120 // Save env parameter121 st.d $a0, $sp, 8122 CFI_OFFSET (4, -24)123 124 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`125 addi.d $a0, $fp, 0126 127 // call tsan interceptor128 bl ASM_SYMBOL(__tsan_setjmp)129 130 // Restore env parameter131 ld.d $a0, $sp, 8132 CFI_RESTORE (4)133 134 // Restore frame/link register135 ld.d $fp, $sp, 16136 ld.d $ra, $sp, 24137 addi.d $sp, $sp, 32138 CFI_RESTORE (22)139 CFI_RESTORE (1)140 CFI_DEF_CFA (3, 0)141 142 // tail jump to libc setjmp143 la.local $a1, _ZN14__interception14real_sigsetjmpE144 ld.d $a1, $a1, 0145 jr $a1146 147 CFI_ENDPROC148ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))149 150.comm _ZN14__interception16real___sigsetjmpE,8,8151.globl ASM_SYMBOL_INTERCEPTOR(__sigsetjmp)152ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))153ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):154 CFI_STARTPROC155 156 // Save frame pointer and return address register157 addi.d $sp, $sp, -32158 st.d $ra, $sp, 24159 st.d $fp, $sp, 16160 CFI_DEF_CFA_OFFSET (32)161 CFI_OFFSET (1, -8)162 CFI_OFFSET (22, -16)163 164 // Adjust the SP for previous frame165 addi.d $fp, $sp, 32166 CFI_DEF_CFA_REGISTER (22)167 168 // Save env parameter169 st.d $a0, $sp, 8170 CFI_OFFSET (4, -24)171 172 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`173 addi.d $a0, $fp, 0174 175 // call tsan interceptor176 bl ASM_SYMBOL(__tsan_setjmp)177 178 // Restore env parameter179 ld.d $a0, $sp, 8180 CFI_RESTORE (4)181 182 // Restore frame/link register183 ld.d $fp, $sp, 16184 ld.d $ra, $sp, 24185 addi.d $sp, $sp, 32186 CFI_RESTORE (22)187 CFI_RESTORE (1)188 CFI_DEF_CFA (3, 0)189 190 // tail jump to libc setjmp191 la.local $a1, _ZN14__interception16real___sigsetjmpE192 ld.d $a1, $a1, 0193 jr $a1194 195 CFI_ENDPROC196ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))197