X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gas%2Foutput-file.c;h=573598101c33ffe9adebf30b21b1e27e8424ad68;hb=de54374205650be71237ce51ef7981d30ddd78dc;hp=e993033f4812ed967572a25c4ec36acac222afda;hpb=ec2655a6a75bc61d21e6f8ddc1e9f9027a8914dd;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/output-file.c b/gas/output-file.c index e993033f48..573598101c 100644 --- a/gas/output-file.c +++ b/gas/output-file.c @@ -1,6 +1,5 @@ /* output-file.c - Deal with the output file - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999, 2001, - 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1987-2020 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -29,7 +28,7 @@ bfd *stdoutput; void -output_file_create (char *name) +output_file_create (const char *name) { if (name[0] == '-' && name[1] == '\0') as_fatal (_("can't open a bfd on stdout %s"), name); @@ -51,15 +50,18 @@ output_file_create (char *name) } void -output_file_close (char *filename) +output_file_close (const char *filename) { bfd_boolean res; if (stdoutput == NULL) return; - + /* Close the bfd. */ - res = bfd_close (stdoutput); + if (!flag_always_generate_output && had_errors ()) + res = bfd_cache_close_all (); + else + res = bfd_close (stdoutput); /* Prevent an infinite loop - if the close failed we will call as_fatal which will call xexit() which may call this function again... */