summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/cris/libcdtor.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/cris/libcdtor.c')
-rw-r--r--newlib/libc/machine/cris/libcdtor.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/newlib/libc/machine/cris/libcdtor.c b/newlib/libc/machine/cris/libcdtor.c
index d17cdeb37..327347782 100644
--- a/newlib/libc/machine/cris/libcdtor.c
+++ b/newlib/libc/machine/cris/libcdtor.c
@@ -45,10 +45,13 @@ __asm__
extern vfnp * const _Ctors asm(".$global.lib.ctors");
extern vfnp * const _Dtors asm(".$global.lib.dtors");
-/* We better provide weak empty ctor and dtor lists, since they are not
- created if the main program does not have ctor/dtors. */
+/* We better provide weak empty ctor and dtor lists, since they are
+ not created if the main program does not have ctor/dtors. Because
+ it's otherwise not used, GCC trunk "Mon Jul 25 22:33:14 UTC 2005"
+ thinks it can remove defaultors, so we need to artificially mark it
+ as used. FIXME: Perhaps a GCC bug. */
-static vfnp const defaultors[] = {0, 0};
+static vfnp const defaultors[] __attribute__ ((__used__)) = {0, 0};
extern vfnp * __CTOR_LIST__ __attribute__ ((weak, alias ("defaultors")));
extern vfnp * __DTOR_LIST__ __attribute__ ((weak, alias ("defaultors")));