From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by sourceware.org (Postfix) with ESMTPS id 523273857431 for ; Sat, 9 Jul 2022 12:25:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 523273857431 Received: by mail-pj1-x1029.google.com with SMTP id g16-20020a17090a7d1000b001ea9f820449so4258726pjl.5 for ; Sat, 09 Jul 2022 05:25:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition; bh=TojavbjiQXcyKUIsfzJpzUcTKxZmJEcCbLpXBtI9d88=; b=0hYpSonQMq0mKhGM43PjGUe2kfBeW3ePJe19Oi6TXGX3qQWhXCwPyMmnRC6g2DVLSE oGO97KMabfQX/x00ZAoNowy34LBX3spBxqBLVQifvEtvj2CiqZfOZc8KEWZGHVO3AAk0 O3lZnz9AqgIiHxuzzxIiyQXRYzE1VuiETONWJygtIZ6bdWzhD8RS5xusalyCakB94iRe Bz0KkFztdpkbrb9HgPrYT+61mtUOYNuSaWTWQkgjKeASqPN7XZiFrxMACOl0HNI3VQj3 /qm4QKzx01+5oaLanA7/WQzP5VV2G9CBUfvgZex/mNFiYrsdC8eManVo9OCDObZhffjU gSrw== X-Gm-Message-State: AJIora8uo7AbydKvISlBMbgHu6S1VDVjD83QVXuabpyDITRQ3PRV3tx+ GeBZPZPHZlYvW7MBffAYcK73wgRaeXk= X-Google-Smtp-Source: AGRyM1vEwT4pwIIIRYTPq62MZZlKpnOVGLmw0WV+5xEvWVOZrMbJojoumlBf7tsMGmb3zHPdCJu8yw== X-Received: by 2002:a17:90b:2788:b0:1ef:9fcc:4b18 with SMTP id pw8-20020a17090b278800b001ef9fcc4b18mr5803592pjb.127.1657369521177; Sat, 09 Jul 2022 05:25:21 -0700 (PDT) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:4b98:7b4b:d3e3:2ead]) by smtp.gmail.com with ESMTPSA id x16-20020aa79570000000b00528c0e516fesm1347811pfq.152.2022.07.09.05.25.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Jul 2022 05:25:20 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 6E4A11143046; Sat, 9 Jul 2022 21:55:18 +0930 (ACST) Date: Sat, 9 Jul 2022 21:55:18 +0930 From: Alan Modra To: binutils@sourceware.org Subject: gas: output_file_close Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3035.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jul 2022 12:25:24 -0000 This is mostly a tidy with the aim of being able to free out_file_name, but it does fix a possible attempt to unlink the output file twice (not that that matters). * as.h (keep_it): New global. * as.c (keep_it): Delete. (close_output_file): Delete, merged into.. * output-file.c (output_file_close): ..here. Delete parameter. * output-file.h (output_file_close): Update prototype. diff --git a/gas/as.c b/gas/as.c index 0262a6fec98..49a44863001 100644 --- a/gas/as.c +++ b/gas/as.c @@ -111,9 +111,6 @@ int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; bool flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES; #endif -/* Keep the output file. */ -static int keep_it = 0; - segT reg_section; segT expr_section; segT text_section; @@ -1155,14 +1152,6 @@ dump_statistics (void) #endif } -static void -close_output_file (void) -{ - output_file_close (out_file_name); - if (!keep_it) - unlink_if_ordinary (out_file_name); -} - /* The interface between the macro code and gas expression handling. */ static size_t @@ -1361,7 +1350,7 @@ main (int argc, char ** argv) expr_begin (); /* It has to be called after dump_statistics (). */ - xatexit (close_output_file); + xatexit (output_file_close); if (flag_print_statistics) xatexit (dump_statistics); diff --git a/gas/as.h b/gas/as.h index 0ee3873bd1a..d179537f383 100644 --- a/gas/as.h +++ b/gas/as.h @@ -340,6 +340,9 @@ COMMON int flag_noexecstack; /* name of emitted object file */ COMMON const char *out_file_name; +/* Keep the output file. */ +COMMON int keep_it; + /* name of file defining extensions to the basic instruction set */ COMMON char *insttbl_file_name; diff --git a/gas/output-file.c b/gas/output-file.c index 95e21d23dc1..584deb27c08 100644 --- a/gas/output-file.c +++ b/gas/output-file.c @@ -64,12 +64,13 @@ stash_frchain_obs (asection *sec) } void -output_file_close (const char *filename) +output_file_close (void) { bool res; bfd *obfd = stdoutput; struct obstack **obs; asection *sec; + const char *filename; if (obfd == NULL) return; @@ -97,8 +98,13 @@ output_file_close (const char *filename) else res = bfd_close (obfd); + filename = out_file_name; + out_file_name = NULL; + if (!keep_it && filename) + unlink_if_ordinary (filename); + subsegs_end (obs); - if (! res) + if (!res) as_fatal ("%s: %s", filename, bfd_errmsg (bfd_get_error ())); } diff --git a/gas/output-file.h b/gas/output-file.h index 8e738df1eee..3c65e25134a 100644 --- a/gas/output-file.h +++ b/gas/output-file.h @@ -19,7 +19,7 @@ the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ void output_file_append (char *where, long length, char *filename); -void output_file_close (const char *filename); +void output_file_close (void); void output_file_create (const char *name); /* end of output-file.h */ -- Alan Modra Australia Development Lab, IBM