diff --git a/libc/startup/linux/riscv64/start.cpp b/libc/startup/linux/riscv64/start.cpp --- a/libc/startup/linux/riscv64/start.cpp +++ b/libc/startup/linux/riscv64/start.cpp @@ -123,6 +123,10 @@ }; __attribute__((noinline)) static void do_start() { + LIBC_INLINE_ASM(".option push\n\t" + ".option norelax\n\t" + "lla gp, __global_pointer$\n\t" + ".option pop\n\t"); auto tid = __llvm_libc::syscall_impl(SYS_gettid); if (tid <= 0) __llvm_libc::syscall_impl(SYS_exit, 1);