Error for '-' as filename of a precompiled header (PR pch/78970)
authorMartin Liska <mliska@suse.cz>
Thu, 5 Jan 2017 14:17:07 +0000 (15:17 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 5 Jan 2017 14:17:07 +0000 (14:17 +0000)
2017-01-05  Martin Liska  <mliska@suse.cz>

PR pch/78970
* c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
header.
2017-01-05  Martin Liska  <mliska@suse.cz>

PR pch/78970
* gcc.c (lookup_compiler): Reject '-' filename for a precompiled
header.

From-SVN: r244103

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/gcc.c

index cccfd7d49f5237332a4fc75f658f547fb0f3ffbd..28b46e49db02a9bd7b3ed564647c6f2f93e498c5 100644 (file)
@@ -1,3 +1,9 @@
+2017-01-05  Martin Liska  <mliska@suse.cz>
+
+       PR pch/78970
+       * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
+       header.
+
 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
index b9bb5fe59a3d8bce0863200a585b06b85e4e8691..7ec36dcbb7d8ffa7cc4fe1524625b23a8cc4ca09 100644 (file)
@@ -1,3 +1,9 @@
+2017-01-05  Martin Liska  <mliska@suse.cz>
+
+       PR pch/78970
+       * c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
+       header.
+
 2017-01-04  Marek Polacek  <polacek@redhat.com>
 
        PR c++/64767
index 14e038c02b3b3bd3bed3299f99d1bea35fd1dfc7..7dea1657409fa1896e970270409c4551eb9bbcb9 100644 (file)
@@ -744,7 +744,12 @@ c_common_post_options (const char **pfilename)
       in_fnames[0] = "";
     }
   else if (strcmp (in_fnames[0], "-") == 0)
-    in_fnames[0] = "";
+    {
+      if (pch_file)
+       error ("cannot use %<-%> as input filename for a precompiled header");
+
+      in_fnames[0] = "";
+    }
 
   if (out_fname == NULL || !strcmp (out_fname, "-"))
     out_fname = "";
index 8154953eb1d86edab9ae3268b677a9ddead0f9b8..1d2ed99ef5f496ed1c09b47245b398d79ba8df26 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -8325,7 +8325,16 @@ lookup_compiler (const char *name, size_t length, const char *language)
     {
       for (cp = compilers + n_compilers - 1; cp >= compilers; cp--)
        if (cp->suffix[0] == '@' && !strcmp (cp->suffix + 1, language))
-         return cp;
+         {
+           if (name != NULL && strcmp (name, "-") == 0
+               && (strcmp (cp->suffix, "@c-header") == 0
+                   || strcmp (cp->suffix, "@c++-header") == 0))
+             fatal_error (input_location,
+                          "cannot use %<-%> as input filename for a "
+                          "precompiled header");
+
+           return cp;
+         }
 
       error ("language %s not recognized", language);
       return 0;