mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-24 17:12:35 +08:00
2010-11-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/src/newlibc_exit.c, score/src/threadhandler.c: Revert previous commit due to too many broken linker command files. The HAVE_INITFINI_ARRAY is defined for nearly all targets by Newlib, but only few linker command files respect this.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2010-11-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* libcsupport/src/newlibc_exit.c, score/src/threadhandler.c: Revert
|
||||
previous commit due to too many broken linker command files. The
|
||||
HAVE_INITFINI_ARRAY is defined for nearly all targets by Newlib, but
|
||||
only few linker command files respect this.
|
||||
|
||||
2010-11-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* libcsupport/src/newlibc_exit.c, score/src/threadhandler.c: Added
|
||||
|
||||
@@ -118,13 +118,10 @@ void libc_wrapup(void)
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <newlib.h>
|
||||
|
||||
#if defined(HAVE_INITFINI_ARRAY)
|
||||
extern void __libc_fini_array(void);
|
||||
#endif
|
||||
|
||||
/* FIXME: These defines are a blatant hack */
|
||||
#define EXIT_SYMBOL _exit
|
||||
|
||||
#if defined(__AVR__)
|
||||
#undef __USE_INIT_FINI__
|
||||
#endif
|
||||
@@ -138,22 +135,8 @@ void libc_wrapup(void)
|
||||
extern void FINI_SYMBOL( void );
|
||||
#endif
|
||||
|
||||
void _exit(int status)
|
||||
void EXIT_SYMBOL(int status)
|
||||
{
|
||||
#if defined(HAVE_INITFINI_ARRAY)
|
||||
/*
|
||||
* According to
|
||||
*
|
||||
* System V Application Binary Interface
|
||||
* Chapter 5
|
||||
* Initialization and Termination Functions
|
||||
*
|
||||
* we have to call the functions referenced by the .fini_array before the
|
||||
* one referenced by the .fini section.
|
||||
*/
|
||||
__libc_fini_array();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If the toolset uses init/fini sections, then we need to
|
||||
* run the global destructors now.
|
||||
|
||||
@@ -30,14 +30,6 @@
|
||||
#include <rtems/score/userext.h>
|
||||
#include <rtems/score/wkspace.h>
|
||||
|
||||
#if defined(RTEMS_NEWLIB)
|
||||
#include <newlib.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_INITFINI_ARRAY)
|
||||
extern void __libc_init_array(void);
|
||||
#endif
|
||||
|
||||
#if defined(__AVR__)
|
||||
#undef __USE_INIT_FINI__
|
||||
#endif
|
||||
@@ -146,20 +138,6 @@ void _Thread_Handler( void )
|
||||
*/
|
||||
if (!doneCons) /* && (volatile void *)_init) */ {
|
||||
INIT_NAME ();
|
||||
|
||||
#if defined(HAVE_INITFINI_ARRAY)
|
||||
/*
|
||||
* According to
|
||||
*
|
||||
* System V Application Binary Interface
|
||||
* Chapter 5
|
||||
* Initialization and Termination Functions
|
||||
*
|
||||
* we have to call the functions referenced by the .init_array after
|
||||
* the one referenced by the .init section.
|
||||
*/
|
||||
__libc_init_array();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user