On MIPS pre-R6, instruction b can only work within 64KiB,
which is not enough now.
We need the help of GOT.
For __mips64, we can get GOT by:
lui $t8, %hi(%neg(%gp_rel(SANITIZER_STRINGIFY(TRAMPOLINE(func))))) daddu $t8, $t8, $t9 daddiu $t8, $t8, %hi(%neg(%gp_rel(SANITIZER_STRINGIFY(TRAMPOLINE(func)))))
And then get the address of __interceptor_func, and jump to it
ld $t9, %got_disp(__interceptor_" SANITIZER_STRINGIFY(func) ")($t8) jr $t9
MIPS/O32 has .cpload, which can help to generate 3 instructions to get GOT.
MIPSr6 has instruction bc, which can jump long enough.
One space not two