[hwasan] Replace j __interceptor_sigsetjmp instead with tail for RISC-V
authorKhem Raj <raj.khem@gmail.com>
Sat, 14 Jan 2023 01:44:38 +0000 (17:44 -0800)
committerFangrui Song <i@maskray.me>
Sat, 14 Jan 2023 01:44:38 +0000 (17:44 -0800)
R_RISCV_JAL referencing a preemptible symbol is disallowed with ld.lld and binutils 2.40 (https://sourceware.org/PR28509)

    riscv64-yoe-linux-ld: relocation R_RISCV_JAL against `__interceptor_sigsetjmp' which may bind externally can not be used when making a shared object; recompile with -fPIC

Reviewed By: kito-cheng, MaskRay

Differential Revision: https://reviews.llvm.org/D141656

compiler-rt/lib/hwasan/hwasan_setjmp_riscv64.S

index f33c491..43f9c3c 100644 (file)
@@ -36,7 +36,7 @@ ASM_TYPE_FUNCTION(__interceptor_setjmp)
 __interceptor_setjmp:
   CFI_STARTPROC
   addi x11, x0, 0
-  j    __interceptor_sigsetjmp
+  tail __interceptor_sigsetjmp
   CFI_ENDPROC
 ASM_SIZE(__interceptor_setjmp)