From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) by sourceware.org (Postfix) with ESMTP id DAA413858CDA for ; Wed, 11 Jan 2023 06:01:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DAA413858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org Received: by smtp.gentoo.org (Postfix, from userid 559) id 32C8A340E22; Wed, 11 Jan 2023 06:01:43 +0000 (UTC) From: Mike Frysinger To: newlib@sourceware.org Subject: [PATCH v3] libgloss: arm: break newlib dependency Date: Wed, 11 Jan 2023 01:01:40 -0500 Message-Id: <20230111060140.24696-1-vapier@gentoo.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20221214091304.25170-1-vapier@gentoo.org> References: <20221214091304.25170-1-vapier@gentoo.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The libgloss port has been reaching back into newlib internals for a single header whose contents have been frozen for almost a decade. To break this backwards libgloss->newlib dependency, move the acle header to the srcroot include/ so everyone can use the same copy. --- v3 - use -idirafter with srcroot .../arm-acle-compat.h | 0 libgloss/Makefile.am | 3 + libgloss/Makefile.in | 2 + libgloss/arm/Makefile.in | 2 - libgloss/arm/arm.h | 2 +- libgloss/config/default.mh | 2 +- newlib/Makefile.am | 3 +- newlib/Makefile.in | 4 +- newlib/libc/machine/arm/aeabi_memcpy-armv7a.S | 2 +- newlib/libc/machine/arm/aeabi_memmove-thumb.S | 2 +- newlib/libc/machine/arm/aeabi_memset-thumb.S | 2 +- newlib/libc/machine/arm/arm_asm.h | 2 +- newlib/libc/machine/arm/machine/acle-compat.h | 182 ------------------ newlib/libc/machine/arm/memchr-stub.c | 2 +- newlib/libc/machine/arm/memchr.S | 2 +- newlib/libc/machine/arm/memcpy-stub.c | 2 +- newlib/libc/machine/arm/memcpy.S | 2 +- newlib/libc/machine/arm/setjmp.S | 2 +- newlib/libc/machine/arm/strcmp.S | 2 +- newlib/libc/machine/arm/strlen-armv7.S | 2 +- newlib/libc/machine/arm/strlen-thumb2-Os.S | 2 +- newlib/libc/machine/arm/strlen.S | 2 +- newlib/libc/sys/arm/arm.h | 2 +- 23 files changed, 25 insertions(+), 203 deletions(-) rename newlib/libc/machine/arm/acle-compat.h => include/arm-acle-compat.h (100%) delete mode 100644 newlib/libc/machine/arm/machine/acle-compat.h diff --git a/newlib/libc/machine/arm/acle-compat.h b/include/arm-acle-compat.h similarity index 100% rename from newlib/libc/machine/arm/acle-compat.h rename to include/arm-acle-compat.h diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 5b5f0fd541ae..18b32fad2b7a 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -11,6 +11,7 @@ PHONY = SUBDIRS = @subdirs@ . +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) @@ -23,6 +24,8 @@ includetool_DATA = includesystooldir = $(tooldir)/include/sys includesystool_DATA = +AM_CPPFLAGS = -idirafter $(srcroot)/include + # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index cd60857d1fe1..77bb9b027bbd 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -657,6 +657,7 @@ info_TEXINFOS = $(am__append_1) CLEANFILES = $(am__append_4) PHONY = SUBDIRS = @subdirs@ . +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_7) $(am__append_9) \ @@ -669,6 +670,7 @@ includetooldir = $(tooldir)/include includetool_DATA = $(am__append_10) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_11) +AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in index 06fae10c1fca..d0d5ea89d62e 100644 --- a/libgloss/arm/Makefile.in +++ b/libgloss/arm/Makefile.in @@ -97,8 +97,6 @@ IQ80310_INSTALL = install-iq80310 # Host specific makefile fragment comes in here. @host_makefile_frag@ -INCLUDES += `if [ -d ${objroot}/newlib ]; then echo -I$(srcroot)/newlib/libc/machine/arm; fi` - # # build a test program for each target board. Just trying to get # it to link is a good test, so we ignore all the errors for now. diff --git a/libgloss/arm/arm.h b/libgloss/arm/arm.h index 10e5b0509cf8..f3cd49308f77 100644 --- a/libgloss/arm/arm.h +++ b/libgloss/arm/arm.h @@ -29,7 +29,7 @@ #ifndef _LIBGLOSS_ARM_H #define _LIBGLOSS_ARM_H -#include "acle-compat.h" +#include "arm-acle-compat.h" /* Checking for targets supporting only Thumb instructions (eg. ARMv6-M) or supporting Thumb-2 instructions, whether ARM instructions are available or diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh index 4e7f106f9366..81f0920f97a8 100644 --- a/libgloss/config/default.mh +++ b/libgloss/config/default.mh @@ -1,7 +1,7 @@ NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` -INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. +INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include # Note that when building the library, ${MULTILIB} is not the way multilib # options are passed; they're passed in $(CFLAGS). CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 0108d8576b88..3bebf27ebd3b 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -63,13 +63,14 @@ AM_MAKEFLAGS = \ FLAGS_TO_PASS=$(AM_MAKEFLAGS) +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(host_alias) toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(= 7 && defined (__ARM_ARCH_ISA_ARM) # define _ISA_ARM_7 diff --git a/newlib/libc/machine/arm/machine/acle-compat.h b/newlib/libc/machine/arm/machine/acle-compat.h deleted file mode 100644 index 888ae2ea8afb..000000000000 --- a/newlib/libc/machine/arm/machine/acle-compat.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2014 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __ARM_ARCH - -/* ACLE standardises a set of pre-defines that describe the ARM architecture. - These were mostly implemented in GCC around GCC-4.8; older versions - have no, or only partial support. To provide a level of backwards - compatibility we try to work out what the definitions should be, given - the older pre-defines that GCC did produce. This isn't complete, but - it should be enough for use by routines that depend on this header. */ - -/* No need to handle ARMv8, GCC had ACLE support before that. */ - -# ifdef __ARM_ARCH_7__ -/* The common subset of ARMv7 in all profiles. */ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# endif - -# if defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 15 -# define __ARM_FEATURE_UNALIGNED -# ifdef __ARM_ARCH_7A__ -# define __ARM_ARCH_PROFILE 'A' -# else -# define __ARM_ARCH_PROFILE 'R' -# endif -# endif - -# ifdef __ARM_ARCH_7EM__ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# define __ARM_ARCH_PROFILE 'M' -# endif - -# ifdef __ARM_ARCH_7M__ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# define __ARM_ARCH_PROFILE 'M' -# endif - -# ifdef __ARM_ARCH_6T2__ -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 4 -# define __ARM_FEATURE_UNALIGNED -# endif - -# ifdef __ARM_ARCH_6M__ -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 1 -# define __ARM_ARCH_PROFILE 'M' -# endif - -# if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) \ - || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6Z__) \ - || defined (__ARM_ARCH_6ZK__) -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 1 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_UNALIGNED -# ifndef __thumb__ -# if defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__) -# define __ARM_FEATURE_LDREX 15 -# else -# define __ARM_FEATURE_LDREX 4 -# endif -# endif -# endif - -# if defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5E__) -# define __ARM_ARCH 5 -# define __ARM_ARCH_ISA_ARM -# ifdef __ARM_ARCH_5TE__ -# define __ARM_ARCH_ISA_THUMB 1 -# endif -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_DSP -# endif - -# if defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5__) -# define __ARM_ARCH 5 -# define __ARM_ARCH_ISA_ARM -# ifdef __ARM_ARCH_5TE__ -# define __ARM_ARCH_ISA_THUMB 1 -# endif -# define __ARM_FEATURE_CLZ -# endif - -# ifdef __ARM_ARCH_4T__ -# define __ARM_ARCH 4 -# define __ARM_ARCH_ISA_ARM -# define __ARM_ARCH_ISA_THUMB 1 -# endif - -# ifdef __ARM_ARCH_4__ -# define __ARM_ARCH 4 -# define __ARM_ARCH_ISA_ARM -# endif - -# if defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__) -# define __ARM_ARCH 3 -# define __ARM_ARCH_ISA_ARM -# endif - -# ifdef __ARM_ARCH_2__ -# define __ARM_ARCH 2 -# define __ARM_ARCH_ISA_ARM -# endif - -# ifdef __ARMEB__ -# define __ARM_BIG_ENDIAN -# endif - -/* If we still don't know what the target architecture is, then we're - probably not using GCC. */ -# ifndef __ARM_ARCH -# error Unable to determine architecture version. -# endif - -#endif /* __ARM_ARCH */ - diff --git a/newlib/libc/machine/arm/memchr-stub.c b/newlib/libc/machine/arm/memchr-stub.c index 5c7881b9c82d..48451a136c9c 100644 --- a/newlib/libc/machine/arm/memchr-stub.c +++ b/newlib/libc/machine/arm/memchr-stub.c @@ -27,7 +27,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memchr.S. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined (__ARM_NEON__) || defined (__ARM_NEON) /* Defined in memchr.S. */ diff --git a/newlib/libc/machine/arm/memchr.S b/newlib/libc/machine/arm/memchr.S index 3c11addada96..d13ef8d65454 100644 --- a/newlib/libc/machine/arm/memchr.S +++ b/newlib/libc/machine/arm/memchr.S @@ -75,7 +75,7 @@ .syntax unified -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" @ NOTE: This ifdef MUST match the one in memchr-stub.c diff --git a/newlib/libc/machine/arm/memcpy-stub.c b/newlib/libc/machine/arm/memcpy-stub.c index 6cd0e3b1d4d5..6f41a85e01b5 100644 --- a/newlib/libc/machine/arm/memcpy-stub.c +++ b/newlib/libc/machine/arm/memcpy-stub.c @@ -27,7 +27,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy.S. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) # include "../../string/memcpy.c" diff --git a/newlib/libc/machine/arm/memcpy.S b/newlib/libc/machine/arm/memcpy.S index 77bd2a606e4b..8416232ec8c9 100644 --- a/newlib/libc/machine/arm/memcpy.S +++ b/newlib/libc/machine/arm/memcpy.S @@ -29,7 +29,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy-stub.c. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) /* Defined in memcpy-stub.c. */ diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 5213c063bddc..c615f2428a72 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -2,7 +2,7 @@ Nick Clifton, Cygnus Solutions, 13 June 1997. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" /* ANSI concatenation macros. */ #define CONCAT(a, b) CONCAT2(a, b) diff --git a/newlib/libc/machine/arm/strcmp.S b/newlib/libc/machine/arm/strcmp.S index 137f44969257..ae308cfc7433 100644 --- a/newlib/libc/machine/arm/strcmp.S +++ b/newlib/libc/machine/arm/strcmp.S @@ -28,7 +28,7 @@ /* Wrapper for the various implementations of strcmp. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #ifdef __ARM_BIG_ENDIAN #define S2LO lsl diff --git a/newlib/libc/machine/arm/strlen-armv7.S b/newlib/libc/machine/arm/strlen-armv7.S index 27094040c748..6aa122c075bb 100644 --- a/newlib/libc/machine/arm/strlen-armv7.S +++ b/newlib/libc/machine/arm/strlen-armv7.S @@ -58,7 +58,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" .macro def_fn f p2align=0 diff --git a/newlib/libc/machine/arm/strlen-thumb2-Os.S b/newlib/libc/machine/arm/strlen-thumb2-Os.S index a46db573c639..4adbc61d2e03 100644 --- a/newlib/libc/machine/arm/strlen-thumb2-Os.S +++ b/newlib/libc/machine/arm/strlen-thumb2-Os.S @@ -24,7 +24,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" .macro def_fn f p2align=0 diff --git a/newlib/libc/machine/arm/strlen.S b/newlib/libc/machine/arm/strlen.S index 0435fb2de848..d85a7eeb5bd9 100644 --- a/newlib/libc/machine/arm/strlen.S +++ b/newlib/libc/machine/arm/strlen.S @@ -24,7 +24,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED #if __ARM_ARCH_ISA_THUMB == 2 diff --git a/newlib/libc/sys/arm/arm.h b/newlib/libc/sys/arm/arm.h index 10e5b0509cf8..f3cd49308f77 100644 --- a/newlib/libc/sys/arm/arm.h +++ b/newlib/libc/sys/arm/arm.h @@ -29,7 +29,7 @@ #ifndef _LIBGLOSS_ARM_H #define _LIBGLOSS_ARM_H -#include "acle-compat.h" +#include "arm-acle-compat.h" /* Checking for targets supporting only Thumb instructions (eg. ARMv6-M) or supporting Thumb-2 instructions, whether ARM instructions are available or -- 2.39.0