Finish internalization of HAVE_INITFINI_ARRAY work

Jeff Law <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
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
0001-Finish-this-commit-by-prefixing-HAVE_INITFINI_ARRAY-.patch (text/plain, 3.3 KB)
From c07283b16752983220c9d655ed6910f25a2d9937 Mon Sep 17 00:00:00 2001
From: Jeff Law <[email protected]>
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 <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.