#include "sanitizer_common/sanitizer_asm.h" .section .text .comm _ZN14__interception11real_setjmpE,8,8 .globl ASM_SYMBOL_INTERCEPTOR(setjmp) ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(setjmp)) ASM_SYMBOL_INTERCEPTOR(setjmp): CFI_STARTPROC // Save frame pointer and return address register addi sp, sp, -32 sd ra, 24(sp) sd s0, 16(sp) CFI_DEF_CFA_OFFSET (32) CFI_OFFSET (1, -8) CFI_OFFSET (8, -16) // Adjust the SP for previous frame addi s0, sp, 32 CFI_DEF_CFA_REGISTER (8) // Save env parameter sd a0, 8(sp) CFI_OFFSET (10, -24) // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)` addi a0, s0, 0 // call tsan interceptor call ASM_SYMBOL(__tsan_setjmp) // Restore env parameter ld a0, 8(sp) CFI_RESTORE (10) // Restore frame/link register ld s0, 16(sp) ld ra, 24(sp) addi sp, sp, 32 CFI_RESTORE (8) CFI_RESTORE (1) CFI_DEF_CFA (2, 0) // tail jump to libc setjmp la t1, _ZN14__interception11real_setjmpE ld t1, 0(t1) jr t1 CFI_ENDPROC ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(setjmp)) .comm _ZN14__interception12real__setjmpE,8,8 .globl ASM_SYMBOL_INTERCEPTOR(_setjmp) ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(_setjmp)) ASM_SYMBOL_INTERCEPTOR(_setjmp): CFI_STARTPROC // Save frame pointer and return address register addi sp, sp, -32 sd ra, 24(sp) sd s0, 16(sp) CFI_DEF_CFA_OFFSET (32) CFI_OFFSET (1, -8) CFI_OFFSET (8, -16) // Adjust the SP for previous frame addi s0, sp, 32 CFI_DEF_CFA_REGISTER (8) // Save env parameter sd a0, 8(sp) CFI_OFFSET (10, -24) // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)` addi a0, s0, 0 // call tsan interceptor call ASM_SYMBOL(__tsan_setjmp) // Restore env parameter ld a0, 8(sp) CFI_RESTORE (10) // Restore frame/link register ld s0, 16(sp) ld ra, 24(sp) addi sp, sp, 32 CFI_RESTORE (8) CFI_RESTORE (1) CFI_DEF_CFA (2, 0) // tail jump to libc setjmp la t1, _ZN14__interception12real__setjmpE ld t1, 0(t1) jr t1 CFI_ENDPROC ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(_setjmp)) .comm _ZN14__interception14real_sigsetjmpE,8,8 .globl ASM_SYMBOL_INTERCEPTOR(sigsetjmp) ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(sigsetjmp)) ASM_SYMBOL_INTERCEPTOR(sigsetjmp): CFI_STARTPROC // Save frame pointer and return address register addi sp, sp, -32 sd ra, 24(sp) sd s0, 16(sp) CFI_DEF_CFA_OFFSET (32) CFI_OFFSET (1, -8) CFI_OFFSET (8, -16) // Adjust the SP for previous frame addi s0, sp, 32 CFI_DEF_CFA_REGISTER (8) // Save env parameter sd a0, 8(sp) sd a1, 0(sp) CFI_OFFSET (10, -24) CFI_OFFSET (11, -32) // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)` addi a0, s0, 0 // call tsan interceptor call ASM_SYMBOL(__tsan_setjmp) // Restore env parameter ld a0, 8(sp) ld a1, 0(sp) CFI_RESTORE (10) CFI_RESTORE (11) // Restore frame/link register ld s0, 16(sp) ld ra, 24(sp) addi sp, sp, 32 CFI_RESTORE (8) CFI_RESTORE (1) CFI_DEF_CFA (2, 0) // tail jump to libc setjmp la t1, _ZN14__interception14real_sigsetjmpE ld t1, 0(t1) jr t1 CFI_ENDPROC ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(sigsetjmp)) .comm _ZN14__interception16real___sigsetjmpE,8,8 .globl ASM_SYMBOL_INTERCEPTOR(__sigsetjmp) ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp)) ASM_SYMBOL_INTERCEPTOR(__sigsetjmp): CFI_STARTPROC // Save frame pointer and return address register addi sp, sp, -32 sd ra, 24(sp) sd s0, 16(sp) CFI_DEF_CFA_OFFSET (32) CFI_OFFSET (1, -8) CFI_OFFSET (8, -16) // Adjust the SP for previous frame addi s0, sp, 32 CFI_DEF_CFA_REGISTER (8) // Save env parameter sd a0, 8(sp) sd a1, 0(sp) CFI_OFFSET (10, -24) CFI_OFFSET (11, -32) // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)` addi a0, s0, 0 // call tsan interceptor call ASM_SYMBOL(__tsan_setjmp) // Restore env parameter ld a0, 8(sp) ld a1, 0(sp) CFI_RESTORE (10) CFI_RESTORE (11) // Restore frame/link register ld s0, 16(sp) ld ra, 24(sp) addi sp, sp, 32 CFI_RESTORE (8) CFI_RESTORE (1) CFI_DEF_CFA (2, 0) // tail jump to libc setjmp la t1, _ZN14__interception16real___sigsetjmpE ld t1, 0(t1) jr t1 CFI_ENDPROC ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))