Finish internalization of HAVE_INITFINI_ARRAY work

Jeff Law jeffreyalaw@gmail.com
Sat Jan 29 04:40:26 GMT 2022


Mike's work in this space didn't fix the references to 
HAVE_INITFINI_ARRAY and HAVE_INIT_FINI in libgloss. As a result 
init/fini support was busted for a few targets.  or1k had massive GCC 
testsuite failures due to undefined references. cris failed a few tests 
which depended on global ctors/dtors running properly.  I don't use 
newlib for testing aarch64 or arm, but they clearly need the same 
obvious change.

Given the obviousness, I'm going to go ahead and install the attached patch.



Jeff

-------------- next part --------------
From c07283b16752983220c9d655ed6910f25a2d9937 Mon Sep 17 00:00:00 2001
From: Jeff Law <jeffreyalaw@gmail.com>
Date: Fri, 28 Jan 2022 21:26:18 -0700
Subject: [PATCH] Finish this commit by prefixing HAVE_INITFINI_ARRAY and
 HAVE_INIT_FINI references in libgloss in the same way.

commit 437c5c5085ff30b4a4960b2b53d06728c788361d
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Mon Jan 17 22:20:20 2022 -0500

    newlib: internalize HAVE_INITFINI_ARRAY

    This define is only used by newlib internally, so stop exporting it
    as HAVE_INITFINI_ARRAY since this can conflict with defines packages
    use themselves.

    We don't really need to add _ to HAVE_INIT_FINI too since it isn't
    exported in newlib.h, but might as well be consistent here.

    We can't (easily) add this to newlib_cflags like HAVE_INIT_FINI is
    because this is based on a compile-time test in the top configure,
    not on plain shell code in configure.host.  We'd have to replicate
    the test in every subdir in order to have it passed down.
---
 libgloss/aarch64/crt0.S | 4 ++--
 libgloss/arm/crt0.S     | 2 +-
 libgloss/cris/crt0.S    | 2 +-
 libgloss/cris/lcrt0.c   | 2 +-
 libgloss/or1k/crt0.S    | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libgloss/aarch64/crt0.S b/libgloss/aarch64/crt0.S
index f831be12e..78c5263dc 100644
--- a/libgloss/aarch64/crt0.S
+++ b/libgloss/aarch64/crt0.S
@@ -36,7 +36,7 @@
 #error __USER_LABEL_PREFIX is not defined
 #endif
 
-#ifdef HAVE_INITFINI_ARRAY
+#ifdef _HAVE_INITFINI_ARRAY
 #define _init	__libc_init_array
 #define _fini	__libc_fini_array
 #endif
@@ -309,4 +309,4 @@ CommandLine:	.space	256,0	/*  Maximum length of 255 chars handled.  */
 AngelSVCArgs:
 	GEN_DWORD CommandLine
 	.dword	255
-#endif
\ No newline at end of file
+#endif
diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S
index 8490bde2f..78515180b 100644
--- a/libgloss/arm/crt0.S
+++ b/libgloss/arm/crt0.S
@@ -12,7 +12,7 @@
 #error __USER_LABEL_PREFIX is not defined
 #endif
 
-#ifdef HAVE_INITFINI_ARRAY
+#ifdef _HAVE_INITFINI_ARRAY
 #define _init	__libc_init_array
 #define _fini	__libc_fini_array
 #endif
diff --git a/libgloss/cris/crt0.S b/libgloss/cris/crt0.S
index 30419887e..6edaabf45 100644
--- a/libgloss/cris/crt0.S
+++ b/libgloss/cris/crt0.S
@@ -36,7 +36,7 @@
 #define L(x) _ ## x
 #endif
 
-#ifdef HAVE_INITFINI_ARRAY
+#ifdef _HAVE_INITFINI_ARRAY
 #define _init __libc_init_array
 #define _fini __libc_fini_array
 #endif
diff --git a/libgloss/cris/lcrt0.c b/libgloss/cris/lcrt0.c
index 8b8cc0bb0..48489edd3 100644
--- a/libgloss/cris/lcrt0.c
+++ b/libgloss/cris/lcrt0.c
@@ -29,7 +29,7 @@
 #include "linunistd.h"
 #include "newlib.h"
 
-#ifdef HAVE_INITFINI_ARRAY
+#ifdef _HAVE_INITFINI_ARRAY
 #define _init __libc_init_array
 #define _fini __libc_fini_array
 #endif
diff --git a/libgloss/or1k/crt0.S b/libgloss/or1k/crt0.S
index 03d732355..74a040981 100644
--- a/libgloss/or1k/crt0.S
+++ b/libgloss/or1k/crt0.S
@@ -97,7 +97,7 @@ _or1k_exception_stack_size:	.word EXCEPTION_STACK_SIZE
                                                                               */
 /* -------------------------------------------------------------------------- */
 
-#ifdef HAVE_INITFINI_ARRAY
+#ifdef _HAVE_INITFINI_ARRAY
 #define _init	__libc_init_array
 #define _fini	__libc_fini_array
 #endif
-- 
2.34.1



More information about the Newlib mailing list