From 4fa60ba90198174426d362afa299189f82ba0a42 Mon Sep 17 00:00:00 2001 From: Mark Salter Date: Tue, 5 Feb 2002 18:09:18 +0000 Subject: Add init/fini support. --- libgloss/arm/redboot-crt0.S | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libgloss/arm/redboot-crt0.S b/libgloss/arm/redboot-crt0.S index e715334..e14559a 100644 --- a/libgloss/arm/redboot-crt0.S +++ b/libgloss/arm/redboot-crt0.S @@ -49,18 +49,33 @@ __change_mode: sub r0, r0, #32 mov sp, r0 +#ifdef __USES_INITFINI__ + /* Some arm/elf targets use the .init and .fini sections + to create constructors and destructors, and for these + targets we need to call the _init function and arrange + for _fini to be called at program exit. */ + ldr r0, .Lfini + bl SYM_NAME (atexit) + bl SYM_NAME (_init) +#endif + mov a1, #0 ldr a2, .LC3 mov a3, a2 bl SYM_NAME(main) 1: bl SYM_NAME(exit) b 1b + .align 2 .LC1: .word __bss_start__ .LC2: .word __bss_end__ .LC3: .word 0 +#ifdef __USES_INITFINI__ +.Lfini: + .word SYM_NAME(_fini) +#endif #if 0 #ifdef __thumb__ -- cgit v1.1