gas -Z flag
authorAlan Modra <amodra@gmail.com>
Mon, 10 Feb 2020 00:57:16 +0000 (11:27 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 10 Feb 2020 04:58:23 +0000 (15:28 +1030)
-Z is supposed to "generate object file even after errors".  It
doesn't do so at the moment, unless you count a zero length object
file as useful output.  Fixed for most targets as follows.
I suspect avr and pru need target patches.

* output-file.c (output_file_close): Do a normal close when
flag_always_generate_output.
* write.c (write_object_file): Don't stop output when
flag_always_generate_output.

gas/ChangeLog
gas/output-file.c
gas/write.c

index 1cc473b49f3a8626232821ae5eb75f4471466809..4c60d86a66ead9275bc5b82efd88770a5ade93bf 100644 (file)
@@ -1,3 +1,10 @@
+2020-02-10  Alan Modra  <amodra@gmail.com>
+
+       * output-file.c (output_file_close): Do a normal close when
+       flag_always_generate_output.
+       * write.c (write_object_file): Don't stop output when
+       flag_always_generate_output.
+
 2020-02-07  Sergey Belyashov  <sergey.belyashov@gmail.com>
 
        PR 25469
index 1781d82f22aee5efbce32fa4f9b09c2c276f7881..573598101c33ffe9adebf30b21b1e27e8424ad68 100644 (file)
@@ -58,7 +58,7 @@ output_file_close (const char *filename)
     return;
 
   /* Close the bfd.  */
-  if (had_errors ())
+  if (!flag_always_generate_output && had_errors ())
     res = bfd_cache_close_all ();
   else
     res = bfd_close (stdoutput);
index 5d9a2394224d0c36129cc70f0d5755c7014ff9bb..dfbbc7cb9bef22207a423881821e7d33e5585ddc 100644 (file)
@@ -2429,7 +2429,7 @@ write_object_file (void)
 #endif
 
   /* Stop if there is an error.  */
-  if (had_errors ())
+  if (!flag_always_generate_output && had_errors ())
     return;
 
   /* Now that all the sizes are known, and contents correct, we can