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 1FC963858C83 for ; Mon, 7 Feb 2022 06:42:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1FC963858C83 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 84052342E8C; Mon, 7 Feb 2022 06:42:14 +0000 (UTC) Date: Mon, 7 Feb 2022 01:42:15 -0500 From: Mike Frysinger To: Jeff Johnston Cc: Marian Buschsieweke , Newlib , Joel Sherrill Subject: Re: Compilation for mips-mti-elf fails Message-ID: Mail-Followup-To: Jeff Johnston , Marian Buschsieweke , Newlib , Joel Sherrill References: <20211125220413.35e7869f@faultier2go.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="RMKKD6MaeNLreKmu" Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2022 06:42:17 -0000 --RMKKD6MaeNLreKmu Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 29 Nov 2021 18:27, Jeff Johnston wrote: > Thanks for the patch. That directory has a Makefile.am file so it must be > modified and the Makefile.in generated. > I have included a modified version of your patch. If you have no > objections, I'll check it in. this change doesn't make sense to me. it moves fenv.o out of lib_a_OBJECTS (which is used to create lib.a in this subdir) and into a new LIBADD_OBJS. but LIBADD_OBJS isn't used anywhere that i can see. did you mean to write lib_a_LIBADD instead ? Joel is reporting problems w/RTEMS due to this change. --- a/newlib/libm/machine/mips/Makefile.am +++ b/newlib/libm/machine/mips/Makefile.am @@ -15,7 +15,7 @@ noinst_DATA =3D =20 include $(srcdir)/../../../Makefile.shared =20 -LIBADD_OBJS =3D \ +lib_a_LIBADD =3D \ lib_a-fenv.$(OBJEXT) =20 # fenv.c cannot be compiled as mips16 since it uses the cfc1 instruction --- a/newlib/libm/machine/mips/Makefile.in +++ b/newlib/libm/machine/mips/Makefile.in @@ -115,7 +115,7 @@ am__v_AR_ =3D $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 =3D @echo " AR " $@; am__v_AR_1 =3D=20 lib_a_AR =3D $(AR) $(ARFLAGS) -lib_a_LIBADD =3D +lib_a_DEPENDENCIES =3D lib_a-fenv.$(OBJEXT) am__objects_1 =3D lib_a-feclearexcept.$(OBJEXT) lib_a-fegetenv.$(OBJEXT) \ lib_a-fegetexceptflag.$(OBJEXT) lib_a-fegetround.$(OBJEXT) \ lib_a-feholdexcept.$(OBJEXT) lib_a-feraiseexcept.$(OBJEXT) \ @@ -329,7 +329,7 @@ noinst_LIBRARIES =3D lib.a lib_a_SOURCES =3D $(LIB_SOURCES) lib_a_CFLAGS =3D $(AM_CFLAGS) noinst_DATA =3D=20 -LIBADD_OBJS =3D \ +lib_a_LIBADD =3D \ lib_a-fenv.$(OBJEXT) =20 all: all-am -mike > On Thu, Nov 25, 2021 at 4:04 PM Marian Buschsieweke < > marian.buschsieweke@ovgu.de> wrote: >=20 > > Hi, > > > > compiling for newlib with GCC 11.2.0 for mips-mti-elf with multilib > > now fails with "Error: unrecognized opcode `cfc1 $3,$31'" while compili= ng > > newlib/libm/machine/mips/fenv.c > > > > More precisely, newlib/libc/machine/mips/machine/fenv-fp.h included by > > fenv.c > > contains multiple calls of the function line macro __cfc1() which is > > defined in > > newlib/libc/machine/mips/sys/fenv.h as > > > > #define __cfc1(__fcsr) __asm __volatile("cfc1 %0, $31" : "=3Dr" > > (__fcsr)) > > > > Apparently, this is not compatible with mips16. Adding -mno-mips16 to t= he > > invocation of the compiler fixes the comiplation. (The same was already > > done for > > cma101.c and cygmon.c in libgloss.) > > > > Attached is a potential fix. > > > > Kind regards, > > Marian > > > From f3df3e145d1b2a54a248db3a2a68271664dde86c Mon Sep 17 00:00:00 2001 > From: Jeff Johnston > Date: Mon, 29 Nov 2021 17:33:52 -0500 > Subject: [PATCH] Modifying patch from: marian.buschsieweke@ovgu.de >=20 > The code accessing the floating point control/status register, namely >=20 > #define __cfc1(__fcsr) __asm __volatile("cfc1 %0, $31" : "=3Dr" (__fcsr) >=20 > does not compile with mips16. This changed the makefile to pass -mno-mips= 16 to avoid the following > compiler error: >=20 > mips-mti-elf fails with "Error: unrecognized opcode `cfc1 $3,$31'" > --- > newlib/libm/machine/mips/Makefile.am | 12 ++++++++++-- > newlib/libm/machine/mips/Makefile.in | 21 ++++++++++++--------- > 2 files changed, 22 insertions(+), 11 deletions(-) >=20 > diff --git a/newlib/libm/machine/mips/Makefile.am b/newlib/libm/machine/m= ips/Makefile.am > index bb142a6..cef4957 100644 > --- a/newlib/libm/machine/mips/Makefile.am > +++ b/newlib/libm/machine/mips/Makefile.am > @@ -6,8 +6,7 @@ INCLUDES =3D -I $(newlib_basedir)/../newlib/libm/common $= (NEWLIB_CFLAGS) \ > LIB_SOURCES =3D \ > feclearexcept.c fegetenv.c fegetexceptflag.c \ > fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \ > - fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c \ > - fenv.c > + fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c > =20 > noinst_LIBRARIES =3D lib.a > lib_a_SOURCES =3D $(LIB_SOURCES) > @@ -17,5 +16,14 @@ noinst_DATA =3D > =20 > include $(srcdir)/../../../Makefile.shared > =20 > +LIBADD_OBJS =3D \ > + lib_a-fenv.$(OBJEXT) > + > +lib_a-fenv.o: fenv.c > + $(COMPILE) -mno-mips16 -c -o $@ `test -f 'fenv.c' || echo '$(srcdir)/'`= fenv.c > + > +lib_a-fenv.obj: fenv.c > + $(COMPILE) -mno-mips16 -c -o $@ `if test -f 'fenv.c'; then $(CYGPATH_W)= 'fenv.c'; else $(CYGPATH_W) '$(srcdir)/fenv.c'; fi` > + > ACLOCAL_AMFLAGS =3D -I ../../.. -I ../../../.. > CONFIG_STATUS_DEPENDENCIES =3D $(newlib_basedir)/configure.host > diff --git a/newlib/libm/machine/mips/Makefile.in b/newlib/libm/machine/m= ips/Makefile.in > index 2a42145..cfab717 100644 > --- a/newlib/libm/machine/mips/Makefile.in > +++ b/newlib/libm/machine/mips/Makefile.in > @@ -75,7 +75,7 @@ am__objects_1 =3D lib_a-feclearexcept.$(OBJEXT) lib_a-f= egetenv.$(OBJEXT) \ > lib_a-feholdexcept.$(OBJEXT) lib_a-feraiseexcept.$(OBJEXT) \ > lib_a-fesetenv.$(OBJEXT) lib_a-fesetexceptflag.$(OBJEXT) \ > lib_a-fesetround.$(OBJEXT) lib_a-fetestexcept.$(OBJEXT) \ > - lib_a-feupdateenv.$(OBJEXT) lib_a-fenv.$(OBJEXT) > + lib_a-feupdateenv.$(OBJEXT) > am_lib_a_OBJECTS =3D $(am__objects_1) > lib_a_OBJECTS =3D $(am_lib_a_OBJECTS) > DEFAULT_INCLUDES =3D -I.@am__isrc@ > @@ -189,6 +189,7 @@ prefix =3D @prefix@ > program_transform_name =3D @program_transform_name@ > psdir =3D @psdir@ > sbindir =3D @sbindir@ > +shared_machine_dir =3D @shared_machine_dir@ > sharedstatedir =3D @sharedstatedir@ > srcdir =3D @srcdir@ > sys_dir =3D @sys_dir@ > @@ -203,8 +204,7 @@ INCLUDES =3D -I $(newlib_basedir)/../newlib/libm/comm= on $(NEWLIB_CFLAGS) \ > LIB_SOURCES =3D \ > feclearexcept.c fegetenv.c fegetexceptflag.c \ > fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \ > - fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c \ > - fenv.c > + fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c > =20 > noinst_LIBRARIES =3D lib.a > lib_a_SOURCES =3D $(LIB_SOURCES) > @@ -221,6 +221,9 @@ DOCBOOK_CHEW =3D ${top_srcdir}/../doc/makedocbook.py > DOCBOOK_OUT_FILES =3D $(CHEWOUT_FILES:.def=3D.xml) > DOCBOOK_CHAPTERS =3D $(CHAPTERS:.tex=3D.xml) > CLEANFILES =3D $(CHEWOUT_FILES) $(DOCBOOK_OUT_FILES) > +LIBADD_OBJS =3D \ > + lib_a-fenv.$(OBJEXT) > + > ACLOCAL_AMFLAGS =3D -I ../../.. -I ../../../.. > CONFIG_STATUS_DEPENDENCIES =3D $(newlib_basedir)/configure.host > all: all-am > @@ -348,12 +351,6 @@ lib_a-feupdateenv.o: feupdateenv.c > lib_a-feupdateenv.obj: feupdateenv.c > $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS= ) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.obj `if test -f 'feupda= teenv.c'; then $(CYGPATH_W) 'feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/f= eupdateenv.c'; fi` > =20 > -lib_a-fenv.o: fenv.c > - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS= ) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.o `test -f 'fenv.c' || echo '$= (srcdir)/'`fenv.c > - > -lib_a-fenv.obj: fenv.c > - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS= ) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.obj `if test -f 'fenv.c'; then= $(CYGPATH_W) 'fenv.c'; else $(CYGPATH_W) '$(srcdir)/fenv.c'; fi` > - > ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) > list=3D'$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ > unique=3D`for i in $$list; do \ > @@ -554,6 +551,12 @@ docbook: $(DOCBOOK_OUT_FILES) > ${top_srcdir}/../doc/chapter-texi2docbook.py <$(srcdir)/$${chapter%.x= ml}.tex >../$$chapter ; \ > done > =20 > +lib_a-fenv.o: fenv.c > + $(COMPILE) -mno-mips16 -c -o $@ `test -f 'fenv.c' || echo '$(srcdir)/'`= fenv.c > + > +lib_a-fenv.obj: fenv.c > + $(COMPILE) -mno-mips16 -c -o $@ `if test -f 'fenv.c'; then $(CYGPATH_W)= 'fenv.c'; else $(CYGPATH_W) '$(srcdir)/fenv.c'; fi` > + > # Tell versions [3.59,3.63) of GNU make to not export all variables. > # Otherwise a system limit (for SysV at least) may be exceeded. > .NOEXPORT: > --=20 > 1.8.3.1 >=20 --RMKKD6MaeNLreKmu Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEuQK1JxMl+JKsJRrUQWM7n+g39YEFAmIAv0cACgkQQWM7n+g3 9YHJAw/7BWxBE2ajyW5VlbIZLQMJEJg6O3loGuIBYJx4doxP2EvSRBjTazky59KS Yx0FzV1mVfHvUvC2NGdgfWd45YLxkzCgdE4Aq5TOIOb0avtkGENqcmifpqFaezGW q7iW9/s1CcRBiewRNn4A7zYkXA9rfd7UxTNJpg2GAwZTgwygf+V2bzisGeKy+C4Q zs2sj8k3xoJKLvMDO30YCN3IVlrh7XqcRLzgX4lTvvWbaqqYSQ6papA63yd7FMj9 zRsA/rzY1k8uIMu0KdcAMesLp7LSl7vSjNJmMotBV+vcugyWlZKorNbIX8Wc/3ww LDsyGc/4jRWfclanEkhrwGnFyPrnOnD55vFd3r24Mbi2PK7OOug650GbRLi+mfg/ ESujEHB37+yc6DXEOPtIiWIL+073SuMUJ2DgZMJgafkQd8sXJkPnsxHnoa3LKk7N xgiDVlR4nRlRTpnGjKAvq/c6XyVMyr+/twXbZNR/1KQZZjIxMTsjtPX9mRL/ORk6 24UL051Vn5BCl00yrhUlfj+Xm6HyhsvvHVXoqXgBZSFGX090x1CgrEUQtzUW+gQK vWcfZMABfSC8SHhJ41bgWp2hmDhEjnYcceTknCdv8LzV9rn4VIWoIqW6sgalEXM8 99f133HQyQBVm51f13RzA3stNIJbEhJEMgxKMNxxbddXcPB0WBk= =4roa -----END PGP SIGNATURE----- --RMKKD6MaeNLreKmu--