diff options
Diffstat (limited to 'contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_setjmp.S')
-rw-r--r-- | contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_setjmp.S | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_setjmp.S b/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_setjmp.S deleted file mode 100644 index 0c1354331940..000000000000 --- a/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_setjmp.S +++ /dev/null @@ -1,100 +0,0 @@ -//===-- hwasan_setjmp.S --------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file is a part of HWAddressSanitizer. -// -// HWAddressSanitizer runtime. -//===----------------------------------------------------------------------===// - -#include "sanitizer_common/sanitizer_asm.h" - -#if HWASAN_WITH_INTERCEPTORS && defined(__aarch64__) -#include "sanitizer_common/sanitizer_platform.h" - -// We want to save the context of the calling function. -// That requires -// 1) No modification of the link register by this function. -// 2) No modification of the stack pointer by this function. -// 3) (no modification of any other saved register, but that's not really going -// to occur, and hence isn't as much of a worry). -// -// There's essentially no way to ensure that the compiler will not modify the -// stack pointer when compiling a C function. -// Hence we have to write this function in assembly. - -.section .text -.file "hwasan_setjmp.S" - -.global __interceptor_setjmp -ASM_TYPE_FUNCTION(__interceptor_setjmp) -__interceptor_setjmp: - CFI_STARTPROC - mov x1, #0 - b __interceptor_sigsetjmp - CFI_ENDPROC -ASM_SIZE(__interceptor_setjmp) - -#if SANITIZER_ANDROID -// Bionic also defines a function `setjmp` that calls `sigsetjmp` saving the -// current signal. -.global __interceptor_setjmp_bionic -ASM_TYPE_FUNCTION(__interceptor_setjmp_bionic) -__interceptor_setjmp_bionic: - CFI_STARTPROC - mov x1, #1 - b __interceptor_sigsetjmp - CFI_ENDPROC -ASM_SIZE(__interceptor_setjmp_bionic) -#endif - -.global __interceptor_sigsetjmp -ASM_TYPE_FUNCTION(__interceptor_sigsetjmp) -__interceptor_sigsetjmp: - CFI_STARTPROC - stp x19, x20, [x0, #0<<3] - stp x21, x22, [x0, #2<<3] - stp x23, x24, [x0, #4<<3] - stp x25, x26, [x0, #6<<3] - stp x27, x28, [x0, #8<<3] - stp x29, x30, [x0, #10<<3] - stp d8, d9, [x0, #14<<3] - stp d10, d11, [x0, #16<<3] - stp d12, d13, [x0, #18<<3] - stp d14, d15, [x0, #20<<3] - mov x2, sp - str x2, [x0, #13<<3] - // We always have the second argument to __sigjmp_save (savemask) set, since - // the _setjmp function above has set it for us as `false`. - // This function is defined in hwasan_interceptors.cc - b __sigjmp_save - CFI_ENDPROC -ASM_SIZE(__interceptor_sigsetjmp) - - -.macro ALIAS first second - .globl \second - .equ \second\(), \first -.endm - -#if SANITIZER_ANDROID -ALIAS __interceptor_sigsetjmp, sigsetjmp -.weak sigsetjmp - -ALIAS __interceptor_setjmp_bionic, setjmp -.weak setjmp -#else -ALIAS __interceptor_sigsetjmp, __sigsetjmp -.weak __sigsetjmp -#endif - -ALIAS __interceptor_setjmp, _setjmp -.weak _setjmp -#endif - -// We do not need executable stack. -NO_EXEC_STACK_DIRECTIVE |