Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2017-01-29 23:23:32 +0300
committerHans-Peter Nilsson <hp@bitrange.com>2017-01-29 23:23:32 +0300
commitcd5e7e2d8271d8d4b976eaa42c69770d94c67a74 (patch)
tree9981dde5eee25408d0f41807e2e37f4ca0c32083 /libgloss/cris
parent52a6da816f72e50aa79f0b941a003b94510fb1ad (diff)
Committed, libgloss: hook up cris-elf to the initfini-array support.
After a binutils change "a while ago" (2015-12) to default to --enable-initfini-array, i.e. to merge .ctors and .dtors into .init_array and .fini_array, this is needed for cdtors to run at all. Based on what goes on in arm/ and aarch64/. Tested for cris-elf by running the gcc testsuite. By the way, the configure test doesn't detect this change, so the HAVE_INITFINI_ARRAY ifdeffery is somewhat redundant. Still, the change is tested to be safe with older binutils too. libgloss/ * cris/crt0.S, cris/lcrt0.c: Include newlib.h. [HAVE_INITFINI_ARRAY] (_init): Define to __libc_init_array. [HAVE_INITFINI_ARRAY] (_fini): Ditto __libc_fini_array.
Diffstat (limited to 'libgloss/cris')
-rw-r--r--libgloss/cris/crt0.S9
-rw-r--r--libgloss/cris/lcrt0.c8
2 files changed, 15 insertions, 2 deletions
diff --git a/libgloss/cris/crt0.S b/libgloss/cris/crt0.S
index 74c159415..30419887e 100644
--- a/libgloss/cris/crt0.S
+++ b/libgloss/cris/crt0.S
@@ -1,5 +1,5 @@
/* Generic simplistic start-up-stub for CRIS/CRISv32.
- Copyright (C) 1993-2005, 2007 Axis Communications.
+ Copyright (C) 1993-2005, 2007, 2017 Axis Communications.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,8 @@
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */
+#include "newlib.h"
+
#undef cris
#undef L
#ifdef __NO_UNDERSCORES__
@@ -34,6 +36,11 @@
#define L(x) _ ## x
#endif
+#ifdef HAVE_INITFINI_ARRAY
+#define _init __libc_init_array
+#define _fini __libc_fini_array
+#endif
+
; Rudimentary v0..v32-compatible startup stub.
#ifdef __ELF__
diff --git a/libgloss/cris/lcrt0.c b/libgloss/cris/lcrt0.c
index ee5074634..8b8cc0bb0 100644
--- a/libgloss/cris/lcrt0.c
+++ b/libgloss/cris/lcrt0.c
@@ -1,5 +1,5 @@
/* Support for cris*-axis-linux-gnu and src/sim/cris simulator.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Axis Communications.
+ Copyright (C) 2000-2005, 2017 Axis Communications.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -27,6 +27,12 @@
POSSIBILITY OF SUCH DAMAGE. */
#include "linunistd.h"
+#include "newlib.h"
+
+#ifdef HAVE_INITFINI_ARRAY
+#define _init __libc_init_array
+#define _fini __libc_fini_array
+#endif
extern void exit (int) __attribute ((__noreturn__));