Align libgloss/arm and libc/sys/arm sources: Lite exit support

Applied changes from commit 2404223:

	* arm/crt0.S (_mainCRTStartup): Weak reference to atexit and _fini
		when lite exit is enabled.
This commit is contained in:
Alexander Fedotov 2019-08-02 07:33:45 -05:00 committed by Richard Earnshaw
parent dfffe68303
commit bd5596f4fd
1 changed files with 16 additions and 0 deletions

View File

@ -518,8 +518,17 @@ __change_mode:
for _fini to be called at program exit. */ for _fini to be called at program exit. */
movs r4, r0 movs r4, r0
movs r5, r1 movs r5, r1
#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 FUNCTION(atexit)
ldr r0, .Latexit
cmp r0, #0
beq .Lweak_atexit
#endif
ldr r0, .Lfini ldr r0, .Lfini
bl FUNCTION (atexit) bl FUNCTION (atexit)
.Lweak_atexit:
bl FUNCTION (_init) bl FUNCTION (_init)
movs r0, r4 movs r0, r4
movs r1, r5 movs r1, r5
@ -589,6 +598,13 @@ change_back:
.LC2: .LC2:
.word __bss_end__ .word __bss_end__
#ifdef __USES_INITFINI__ #ifdef __USES_INITFINI__
#ifdef _LITE_EXIT
.Latexit:
.word FUNCTION(atexit)
/* Weak reference _fini in case of lite exit. */
.weak FUNCTION(_fini)
#endif
.Lfini: .Lfini:
.word FUNCTION(_fini) .word FUNCTION(_fini)
#endif #endif