diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-27 11:11:44 +0300 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-30 11:47:57 +0300 |
commit | 6158b30e3e9b1b582ae60b15d64e775fa1705483 (patch) | |
tree | 1a2d615c1b610996574650fba91d36e263afc57f /newlib/libc/misc | |
parent | 62a5c6b02c4a0353eb024840113a991c357b4c43 (diff) |
RISC-V: Do not use _init/_fini
Introduce new host configuration variable "have_init_fini" which is set
to "yes" by default. Override it for RISC-V to "no".
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Diffstat (limited to 'newlib/libc/misc')
-rw-r--r-- | newlib/libc/misc/fini.c | 4 | ||||
-rw-r--r-- | newlib/libc/misc/init.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/newlib/libc/misc/fini.c b/newlib/libc/misc/fini.c index ab4203bf8..56eed6cb3 100644 --- a/newlib/libc/misc/fini.c +++ b/newlib/libc/misc/fini.c @@ -17,7 +17,9 @@ extern void (*__fini_array_start []) (void) __attribute__((weak)); extern void (*__fini_array_end []) (void) __attribute__((weak)); +#ifdef HAVE_INIT_FINI extern void _fini (void); +#endif /* Run all the cleanup routines. */ void @@ -30,6 +32,8 @@ __libc_fini_array (void) for (i = count; i > 0; i--) __fini_array_start[i-1] (); +#ifdef HAVE_INIT_FINI _fini (); +#endif } #endif diff --git a/newlib/libc/misc/init.c b/newlib/libc/misc/init.c index c85d6020f..95f1a7422 100644 --- a/newlib/libc/misc/init.c +++ b/newlib/libc/misc/init.c @@ -21,7 +21,9 @@ extern void (*__preinit_array_end []) (void) __attribute__((weak)); extern void (*__init_array_start []) (void) __attribute__((weak)); extern void (*__init_array_end []) (void) __attribute__((weak)); +#ifdef HAVE_INIT_FINI extern void _init (void); +#endif /* Iterate over all the init routines. */ void @@ -34,7 +36,9 @@ __libc_init_array (void) for (i = 0; i < count; i++) __preinit_array_start[i] (); +#ifdef HAVE_INIT_FINI _init (); +#endif count = __init_array_end - __init_array_start; for (i = 0; i < count; i++) |