204 lines · plain
1#include "sanitizer_common/sanitizer_asm.h"2 3.section .text4 5.comm _ZN14__interception11real_setjmpE,8,86.globl ASM_SYMBOL_INTERCEPTOR(setjmp)7ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(setjmp))8ASM_SYMBOL_INTERCEPTOR(setjmp):9 CFI_STARTPROC10 11 // Save frame pointer and return address register12 addi sp, sp, -3213 sd ra, 24(sp)14 sd s0, 16(sp)15 CFI_DEF_CFA_OFFSET (32)16 CFI_OFFSET (1, -8)17 CFI_OFFSET (8, -16)18 19 // Adjust the SP for previous frame20 addi s0, sp, 3221 CFI_DEF_CFA_REGISTER (8)22 23 // Save env parameter24 sd a0, 8(sp)25 CFI_OFFSET (10, -24)26 27 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`28 addi a0, s0, 029 30 // call tsan interceptor31 call ASM_SYMBOL(__tsan_setjmp)32 33 // Restore env parameter34 ld a0, 8(sp)35 CFI_RESTORE (10)36 37 // Restore frame/link register38 ld s0, 16(sp)39 ld ra, 24(sp)40 addi sp, sp, 3241 CFI_RESTORE (8)42 CFI_RESTORE (1)43 CFI_DEF_CFA (2, 0)44 45 // tail jump to libc setjmp46 la t1, _ZN14__interception11real_setjmpE47 ld t1, 0(t1)48 jr t149 50 CFI_ENDPROC51ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(setjmp))52 53.comm _ZN14__interception12real__setjmpE,8,854.globl ASM_SYMBOL_INTERCEPTOR(_setjmp)55ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(_setjmp))56ASM_SYMBOL_INTERCEPTOR(_setjmp):57 CFI_STARTPROC58 59 // Save frame pointer and return address register60 addi sp, sp, -3261 sd ra, 24(sp)62 sd s0, 16(sp)63 CFI_DEF_CFA_OFFSET (32)64 CFI_OFFSET (1, -8)65 CFI_OFFSET (8, -16)66 67 // Adjust the SP for previous frame68 addi s0, sp, 3269 CFI_DEF_CFA_REGISTER (8)70 71 // Save env parameter72 sd a0, 8(sp)73 CFI_OFFSET (10, -24)74 75 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`76 addi a0, s0, 077 78 // call tsan interceptor79 call ASM_SYMBOL(__tsan_setjmp)80 81 // Restore env parameter82 ld a0, 8(sp)83 CFI_RESTORE (10)84 85 // Restore frame/link register86 ld s0, 16(sp)87 ld ra, 24(sp)88 addi sp, sp, 3289 CFI_RESTORE (8)90 CFI_RESTORE (1)91 CFI_DEF_CFA (2, 0)92 93 // tail jump to libc setjmp94 la t1, _ZN14__interception12real__setjmpE95 ld t1, 0(t1)96 jr t197 98 CFI_ENDPROC99ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(_setjmp))100 101.comm _ZN14__interception14real_sigsetjmpE,8,8102.globl ASM_SYMBOL_INTERCEPTOR(sigsetjmp)103ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))104ASM_SYMBOL_INTERCEPTOR(sigsetjmp):105 CFI_STARTPROC106 107 // Save frame pointer and return address register108 addi sp, sp, -32109 sd ra, 24(sp)110 sd s0, 16(sp)111 CFI_DEF_CFA_OFFSET (32)112 CFI_OFFSET (1, -8)113 CFI_OFFSET (8, -16)114 115 // Adjust the SP for previous frame116 addi s0, sp, 32117 CFI_DEF_CFA_REGISTER (8)118 119 // Save env parameter120 sd a0, 8(sp)121 sd a1, 0(sp)122 CFI_OFFSET (10, -24)123 CFI_OFFSET (11, -32)124 125 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`126 addi a0, s0, 0127 128 // call tsan interceptor129 call ASM_SYMBOL(__tsan_setjmp)130 131 // Restore env parameter132 ld a0, 8(sp)133 ld a1, 0(sp)134 CFI_RESTORE (10)135 CFI_RESTORE (11)136 137 // Restore frame/link register138 ld s0, 16(sp)139 ld ra, 24(sp)140 addi sp, sp, 32141 CFI_RESTORE (8)142 CFI_RESTORE (1)143 CFI_DEF_CFA (2, 0)144 145 // tail jump to libc setjmp146 la t1, _ZN14__interception14real_sigsetjmpE147 ld t1, 0(t1)148 jr t1149 150 CFI_ENDPROC151ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))152 153.comm _ZN14__interception16real___sigsetjmpE,8,8154.globl ASM_SYMBOL_INTERCEPTOR(__sigsetjmp)155ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))156ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):157 CFI_STARTPROC158 159 // Save frame pointer and return address register160 addi sp, sp, -32161 sd ra, 24(sp)162 sd s0, 16(sp)163 CFI_DEF_CFA_OFFSET (32)164 CFI_OFFSET (1, -8)165 CFI_OFFSET (8, -16)166 167 // Adjust the SP for previous frame168 addi s0, sp, 32169 CFI_DEF_CFA_REGISTER (8)170 171 // Save env parameter172 sd a0, 8(sp)173 sd a1, 0(sp)174 CFI_OFFSET (10, -24)175 CFI_OFFSET (11, -32)176 177 // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`178 addi a0, s0, 0179 180 // call tsan interceptor181 call ASM_SYMBOL(__tsan_setjmp)182 183 // Restore env parameter184 ld a0, 8(sp)185 ld a1, 0(sp)186 CFI_RESTORE (10)187 CFI_RESTORE (11)188 189 // Restore frame/link register190 ld s0, 16(sp)191 ld ra, 24(sp)192 addi sp, sp, 32193 CFI_RESTORE (8)194 CFI_RESTORE (1)195 CFI_DEF_CFA (2, 0)196 197 // tail jump to libc setjmp198 la t1, _ZN14__interception16real___sigsetjmpE199 ld t1, 0(t1)200 jr t1201 202 CFI_ENDPROC203ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))204