diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-11-20 18:22:35 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-11-20 18:22:35 +0000 |
commit | 94ab166c673a5e9dab0e2ee666060e291c62d85e (patch) | |
tree | 4154538d5362f3a80fcc810870eabedbeb87f848 /c/src/exec/score/src/threadhandler.c | |
parent | 2001-11-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff) | |
download | rtems-94ab166c673a5e9dab0e2ee666060e291c62d85e.tar.bz2 |
2001-11-20 Joel Sherrill <joel@OARcorp.com>
* src/threadhandler.c: When __USE__MAIN__ is defined by the toolset,
invoke the global constructors via __main. Reported as tested by
Alexandra Kossovsky <sasha@oktet.ru> and Victor V. Vengerov
<vvv@oktet.ru> in conjunction with a new set of tool RPMs
(gcc2.95.3newlib1.9.0-3). This was tracked as GNATS PR tools/84.
Diffstat (limited to 'c/src/exec/score/src/threadhandler.c')
-rw-r--r-- | c/src/exec/score/src/threadhandler.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/c/src/exec/score/src/threadhandler.c b/c/src/exec/score/src/threadhandler.c index 84618751fd..e23667c32f 100644 --- a/c/src/exec/score/src/threadhandler.c +++ b/c/src/exec/score/src/threadhandler.c @@ -58,7 +58,7 @@ void _Thread_Handler( void ) { ISR_Level level; Thread_Control *executing; -#if defined(__USE_INIT_FINI__) +#if defined(__USE_INIT_FINI__) || defined(__USE__MAIN__) static char doneConstructors; char doneCons; #endif @@ -73,7 +73,7 @@ void _Thread_Handler( void ) level = executing->Start.isr_level; _ISR_Set_level(level); -#if defined(__USE_INIT_FINI__) +#if defined(__USE_INIT_FINI__) || defined(__USE__MAIN__) doneCons = doneConstructors; doneConstructors = 1; #endif @@ -95,6 +95,11 @@ void _Thread_Handler( void ) if (!doneCons) _init (); #endif +#if defined(__USE__MAIN__) + if (!doneCons) + __main (); +#endif + switch ( executing->Start.prototype ) { case THREAD_START_NUMERIC: |