diff --git a/libgloss/riscv/crt0.S b/libgloss/riscv/crt0.S index 588becfae..160c07853 100644 --- a/libgloss/riscv/crt0.S +++ b/libgloss/riscv/crt0.S @@ -9,6 +9,8 @@ http://www.opensource.org/licenses. */ +#include "newlib.h" + #========================================================================= # crt0.S : Entry point for RISC-V user programs #========================================================================= @@ -30,9 +32,20 @@ _start: sub a2, a2, a0 li a1, 0 call memset +#ifdef _LITE_EXIT + # Make reference to atexit weak to avoid unconditionally pulling in + # support code. Refer to comments in __atexit.c for more details. + .weak atexit + la a0, atexit + beqz a0, .Lweak_atexit + .weak __libc_fini_array +#endif la a0, __libc_fini_array # Register global termination functions call atexit # to be called upon exit +#ifdef _LITE_EXIT +.Lweak_atexit: +#endif call __libc_init_array # Run global initialization functions lw a0, 0(sp) # a0 = argc