Make asm_out_file a text write-only file again

Message ID
State New
Headers show

Commit Message

Steven Bosscher July 13, 2012, 7:30 p.m.

Geoff had to make asm_out_file read-write for PCH [1], because at the
time it was necessary to read back anything written to asm_out_file
and store it in the PCH. This didn't work on mingw32 so Danny Smith
made the file binary [2] with the b modifier (but according to 'man
fopen', only for non-POSIX).

This is not necessary anymore. The attached patch changes things back
to the pre-r61136 state of things.

Bootstrapped&tested on x86_64-unknown-linux-gnu. OK for trunk?



        * toplev.c (init_asm_output): Open asm_out_file in 'w' mode.

        * c-pch.c (CHECK_NO_ASM_OUT_DURING_PCH): Do not define.
        Remove code conditional on it.


Ian Taylor July 14, 2012, 4:25 p.m. | #1
On Fri, Jul 13, 2012 at 12:30 PM, Steven Bosscher <> wrote:
> gcc/
>         * toplev.c (init_asm_output): Open asm_out_file in 'w' mode.
> c-family/
>         * c-pch.c (CHECK_NO_ASM_OUT_DURING_PCH): Do not define.
>         Remove code conditional on it.

This is OK.




Index: toplev.c
--- toplev.c    (revision 189469)
+++ toplev.c    (working copy)
@@ -908,7 +908,7 @@  init_asm_output (const char *name)
       if (!strcmp (asm_file_name, "-"))
        asm_out_file = stdout;
-       asm_out_file = fopen (asm_file_name, "w+b");
+       asm_out_file = fopen (asm_file_name, "w");
       if (asm_out_file == 0)
        fatal_error ("can%'t open %s for writing: %m", asm_file_name);
Index: c-family/c-pch.c
--- c-family/c-pch.c    (revision 189469)
+++ c-family/c-pch.c    (working copy)
@@ -35,24 +35,6 @@  along with GCC; see the file COPYING3.
 #include "opts.h"
 #include "timevar.h"

-/* PCH was introduced before unit-at-a-time became the only supported
-   compilation mode.  To exactly replay the content parsed at PCH generate
-   time, anything written to asm_out_file was read back in and stored in
-   the PCH, and written back out to asm_out_file while reading a PCH.
-   Nowadays, ideally no action by a front end should never result in output
-   to asm_out_file, and front-end files should not include output.h.  For
-   now assert that nothing is written to asm_out_file while a PCH is being
-   generated.  Before GCC 4.8 is released, this code should be removed.
-   FIXME.  */
-extern FILE *asm_out_file;
-/* The position in the assembler output file when pch_init was called.  */
-static long asm_file_startpos;
 /* This is a list of flag variables that must match exactly, and their
    names for the error message.  The possible values for *flag_var must
    fit in a 'signed char'.  */
@@ -112,9 +94,7 @@  get_ident (void)

 /* Prepare to write a PCH file, if one is being written.  This is
-   called at the start of compilation.
-   Also, print out the executable checksum if -fverbose-asm is in effect.  */
+   called at the start of compilation.  */

 pch_init (void)
@@ -153,10 +133,6 @@  pch_init (void)
       || fwrite (target_validity, v.target_data_length, 1, f) != 1)
     fatal_error ("can%'t write to %s: %m", pch_file);

-  asm_file_startpos = ftell (asm_out_file);
   /* Let the debugging format deal with the PCHness.  */
   (*debug_hooks->handle_pch) (0);

@@ -177,10 +153,6 @@  c_common_write_pch (void)

   cpp_write_pch_deps (parse_in, pch_outfile);

-  gcc_assert (ftell (asm_out_file) - asm_file_startpos == 0);
   gt_pch_save (pch_outfile);

   timevar_push (TV_PCH_CPP_SAVE);