]> Chaos Git - corbenik/ctrulib.git/commitdiff
__libc_init_array needs run after stack adjustment, __libc_fini_array before original...
authorDave Murphy <davem@devkitpro.org>
Sun, 4 Jan 2015 14:59:48 +0000 (14:59 +0000)
committerDave Murphy <davem@devkitpro.org>
Sun, 4 Jan 2015 15:00:11 +0000 (15:00 +0000)
libctru/source/system/ctru_exit.c
libctru/source/system/initSystem.c
libctru/source/system/stack_adjust.s

index f4c99f1dc78fbe38d7bcee6cdb3f71e5be9f3766..6cd4a380012155e4b26041fc0451d4a6391160ca 100644 (file)
@@ -15,9 +15,6 @@ void __attribute__((weak)) __attribute__((noreturn)) __libctru_exit(int rc)
 {
        u32 tmp=0;
 
-       // Run the global destructors
-       __libc_fini_array();
-
        __appExit();
 
        // Unmap the linear heap
index 501cfaabe8077c1d12c47749adea90193f162bed..c14c455cbc3a2014948780d5f7134bd5681bcbb2 100644 (file)
@@ -12,9 +12,6 @@ void __system_allocateHeaps();
 void __system_initArgv();
 void __appInit();
 
-// newlib definitions we need
-void __libc_init_array(void);
-
 
 void __ctru_exit(int rc);
 
@@ -32,6 +29,4 @@ void __attribute__((weak)) __libctru_init(void (*retAddr)(void))
 
        __appInit();
 
-       // Run the global constructors
-       __libc_init_array();
 }
index 7c780fb5fabcd58ad947851df55fbe5d072357f8..03513f06882f8a0e92e103a17e3220cca3b38888 100644 (file)
@@ -16,12 +16,14 @@ initSystem:
        ldr     sp, [r2]
 
        ldr     r3, =__stacksize__
-       ldr     r3, [r3]\r
+       ldr     r3, [r3]
        add sp, sp, r3
        add     sp, sp, #7
        bics    sp, sp, #7
        str     sp, [r2]
 
+       bl      __libc_init_array
+
        ldr     r2, =saved_stack
        ldr     lr, [r2,#4]
        bx      lr
@@ -31,6 +33,8 @@ initSystem:
        .type   __ctru_exit,    %function
 
 __ctru_exit:
+       bl      __libc_fini_array
+
        ldr     r2, =saved_stack
        ldr     sp, [r2]
        b       __libctru_exit