public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Alexandre Oliva <oliva@adacore.com>
To: hainque@adacore.com
Cc: gcc-patches@gcc.gnu.org
Subject: robustify vxworks glimits.h overriding
Date: Tue, 05 Jan 2021 04:51:09 -0300	[thread overview]
Message-ID: <or7dor7rf6.fsf@lxoliva.fsfla.org> (raw)


The glimits.h overriding used in gcc/config/t-vxworks was fragile: the
intermediate file would already be there in a rebuild, and so the
adjustments would not be made, so the generated limits.h would miss
them, causing limits-width-[12] tests to fail on that target.

While changing it, I also replaced the modern $(cmd) shell syntax with
the more portable `cmd` construct.

Regstrapped on x86_64-linux-gnu, also tested on x-arm-wrs-vxworks7r2.
I'm checking it in unless there are objections in the next 24 hours.


for  gcc/ChangeLog

	* Makefile.in (T_GLIMITS_H): New.
	(stmp-int-hdrs): Depend on it, use it.
	* config/t-vxworks (T_GLIMITS_H): Override it.
	(vxw-glimits.h): New.
---
 gcc/Makefile.in      |    9 ++++++---
 gcc/config/t-vxworks |   33 ++++++++++-----------------------
 2 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6847022f1082e..310b556c3fe38 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -449,6 +449,9 @@ USER_H = $(srcdir)/ginclude/float.h \
 USER_H_INC_NEXT_PRE = @user_headers_inc_next_pre@
 USER_H_INC_NEXT_POST = @user_headers_inc_next_post@
 
+# Enable target overriding of this fragment, as in config/t-vxworks.
+T_GLIMITS_H = $(srcdir)/glimits.h
+
 # The GCC to use for compiling crt*.o.
 # Usually the one we just built.
 # Don't use this as a dependency--use $(GCC_PASSES).
@@ -3075,7 +3078,7 @@ gcov-tool$(exeext): $(GCOV_TOOL_OBJS) $(LIBDEPS)
 # be rebuilt.
 
 # Build the include directories.
-stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) fixinc_list
+stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
 # Copy in the headers provided with gcc.
 #
 # The sed command gets just the last file name component;
@@ -3129,9 +3132,9 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) fixinc_list
 	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
 	  fix_dir=include-fixed$${multi_dir}; \
 	  if $(LIMITS_H_TEST) ; then \
-	    cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
+	    cat $(srcdir)/limitx.h $(T_GLIMITS_H) $(srcdir)/limity.h > tmp-xlimits.h; \
 	  else \
-	    cat $(srcdir)/glimits.h > tmp-xlimits.h; \
+	    cat $(T_GLIMITS_H) > tmp-xlimits.h; \
 	  fi; \
 	  $(mkinstalldirs) $${fix_dir}; \
 	  chmod a+rx $${fix_dir} || true; \
diff --git a/gcc/config/t-vxworks b/gcc/config/t-vxworks
index 221f53ce3112a..e60fd31bf0943 100644
--- a/gcc/config/t-vxworks
+++ b/gcc/config/t-vxworks
@@ -43,29 +43,16 @@ $(INSTALL_HEADERS_DIR): install-stdint.h
 LIMITS_H_TEST = true
 STMP_FIXINC = stmp-fixinc
 
-# VxWorks system environments have been GCC based for a long time and we need
-# to make sure that our files and the system ones use distinct macro names to
-# protect against recursive inclusions.  We achieve this by temporarily
-# substituting the headers used by stmp-int-headers with alternative versions
-# where we add some version indication in the inclusion-protection macro
+# VxWorks system environments have been GCC based for a long time and
+# we need to make sure that our files and the system ones use distinct
+# macro names to protect against recursive inclusions.  We achieve
+# this by modifying the GLIMITS_H fragment that goes into limits.h
+# with some version indication in the inclusion-protection macro
 # names.
 
-# Before the standard stmp-int-headers operations take place, arrange to
-# copy the current version of the relevant header files locally, generate
-# the alternate version and replace the original version with ours:
+T_GLIMITS_H = vxw-glimits.h
 
-stmp-int-hdrs: subst-glimits.h
-
-subst-%.h:
-	cp -p $(srcdir)/$*.h orig-$*.h
-	ID=$$(echo $(BASEVER_c) | sed -e 's/\./_/g'); \
-	sed -e "s/_LIMITS_H__/_LIMITS_H__$${ID}_/" < $(srcdir)/$*.h > $@
-	cp $@ $(srcdir)/$*.h
-
-# Then arrange to restore the original versions after the standard
-# operations have taken place:
-
-INSTALL_HEADERS += restore-glimits.h
-
-restore-glimits.h: stmp-int-hdrs
-	cp -p orig-glimits.h $(srcdir)/glimits.h
+vxw-glimits.h: $(srcdir)/glimits.h
+	ID=`echo $(BASEVER_c) | sed -e 's/\./_/g'` && \
+	sed -e "s/_LIMITS_H__/_LIMITS_H__$${ID}_/" < $(srcdir)/glimits.h > $@T
+	mv $@T $@

-- 
Alexandre Oliva, happy hacker  https://FSFLA.org/blogs/lxo/
   Free Software Activist         GNU Toolchain Engineer
        Vim, Vi, Voltei pro Emacs -- GNUlius Caesar

             reply	other threads:[~2021-01-05  7:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05  7:51 Alexandre Oliva [this message]
2021-01-05  8:22 ` Olivier Hainque

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=or7dor7rf6.fsf@lxoliva.fsfla.org \
    --to=oliva@adacore.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hainque@adacore.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).