diff --git a/compiler-rt/lib/crt/crtbegin.c b/compiler-rt/lib/crt/crtbegin.c --- a/compiler-rt/lib/crt/crtbegin.c +++ b/compiler-rt/lib/crt/crtbegin.c @@ -52,6 +52,10 @@ __asm__(".pushsection .init,\"ax\",@progbits\n\t" "call " __USER_LABEL_PREFIX__ "__do_init\n\t" ".popsection"); +#elif defined(__loongarch__) +__asm__(".pushsection .init,\"ax\",@progbits\n\t" + "bl " __USER_LABEL_PREFIX__ "__do_init\n\t" + ".popsection"); #elif defined(__riscv) __asm__(".pushsection .init,\"ax\",%progbits\n\t" "call " __USER_LABEL_PREFIX__ "__do_init\n\t" @@ -109,6 +113,10 @@ __asm__(".pushsection .fini,\"ax\",%progbits\n\t" "bl " __USER_LABEL_PREFIX__ "__do_fini\n\t" ".popsection"); +#elif defined(__loongarch__) +__asm__(".pushsection .fini,\"ax\",@progbits\n\t" + "bl " __USER_LABEL_PREFIX__ "__do_fini\n\t" + ".popsection"); #elif defined(__powerpc__) || defined(__powerpc64__) __asm__(".pushsection .fini,\"ax\",@progbits\n\t" "bl " __USER_LABEL_PREFIX__ "__do_fini\n\t"