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.
This commit is contained in:
Hans-Peter Nilsson 2017-01-29 21:23:32 +01:00
parent 52a6da816f
commit cd5e7e2d82
2 changed files with 15 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/* Generic simplistic start-up-stub for CRIS/CRISv32. /* 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. All rights reserved.
Redistribution and use in source and binary forms, with or without 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 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */ POSSIBILITY OF SUCH DAMAGE. */
#include "newlib.h"
#undef cris #undef cris
#undef L #undef L
#ifdef __NO_UNDERSCORES__ #ifdef __NO_UNDERSCORES__
@ -34,6 +36,11 @@
#define L(x) _ ## x #define L(x) _ ## x
#endif #endif
#ifdef HAVE_INITFINI_ARRAY
#define _init __libc_init_array
#define _fini __libc_fini_array
#endif
; Rudimentary v0..v32-compatible startup stub. ; Rudimentary v0..v32-compatible startup stub.
#ifdef __ELF__ #ifdef __ELF__

View File

@ -1,5 +1,5 @@
/* Support for cris*-axis-linux-gnu and src/sim/cris simulator. /* 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. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
@ -27,6 +27,12 @@
POSSIBILITY OF SUCH DAMAGE. */ POSSIBILITY OF SUCH DAMAGE. */
#include "linunistd.h" #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__)); extern void exit (int) __attribute ((__noreturn__));