public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] gas_init
@ 2023-02-16 11:24 Alan Modra
  0 siblings, 0 replies; only message in thread
From: Alan Modra @ 2023-02-16 11:24 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7f27b6b18a0b72372128b2f49f743084776f1c54

commit 7f27b6b18a0b72372128b2f49f743084776f1c54
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Feb 16 09:28:29 2023 +1030

    gas_init
    
    Rename gas_late_init to plain gas_init, to reinforce the idea that
    this is where the bulk of gas initialisation belongs.  Also reorder
    some initialisation.
    
            * as.c (gas_init): Rename from gas_late_init.  Open output
            file and arrange for dump_statistics to be called here rather
            than in main.  Create .gasversion. local symbol earlier,
            because we can.

Diff:
---
 gas/as.c | 39 ++++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/gas/as.c b/gas/as.c
index 0995292d1c8..23240989301 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -1314,10 +1314,10 @@ gas_early_init (int *argcp, char ***argvp)
 #endif
 }
 
-/* Init things that might depend on program args.  */
+/* The bulk of gas initialisation.  This is after args are parsed.  */
 
 static void
-gas_late_init (void)
+gas_init (void)
 {
   symbol_begin ();
   frag_init ();
@@ -1334,9 +1334,22 @@ gas_late_init (void)
 
   dwarf2_init ();
 
-  /* Somewhat arbitrary division into initialisation above that
-     doesn't need stdoutput open (even though it is open), and below
-     where things might be put on stdoutput memory, eg. symbols.  */
+  local_symbol_make (".gasversion.", absolute_section,
+		     &predefined_address_frag, BFD_VERSION / 10000UL);
+
+  /* Note: Put new initialisation calls that don't depend on stdoutput
+     being open above this point.  stdoutput must be open for anything
+     that might use stdoutput objalloc memory, eg. calling bfd_alloc
+     or creating global symbols (via bfd_make_empty_symbol).  */
+  xatexit (output_file_close);
+  output_file_create (out_file_name);
+  gas_assert (stdoutput != 0);
+
+  /* Must be called before output_file_close.  xexit calls the xatexit
+     list in reverse order.  */
+  if (flag_print_statistics)
+    xatexit (dump_statistics);
+
   PROGRESS (1);
 
   dot_symbol_init ();
@@ -1347,9 +1360,6 @@ gas_late_init (void)
 
   itbl_init ();
 
-  local_symbol_make (".gasversion.", absolute_section,
-		     &predefined_address_frag, BFD_VERSION / 10000UL);
-
   /* Now that we have fully initialized, and have created the output
      file, define any symbols requested by --defsym command line
      arguments.  */
@@ -1381,7 +1391,7 @@ main (int argc, char ** argv)
   gas_early_init (&argc, &argv);
   PROGRESS (1);
 
-  /* Call parse_args before gas_late_init so that switches like
+  /* Call parse_args before gas_init so that switches like
      --hash-size can be honored.  */
   parse_args (&argc, &argv);
 
@@ -1424,16 +1434,7 @@ main (int argc, char ** argv)
 	}
     }
 
-  /* It has to be called after dump_statistics ().  */
-  xatexit (output_file_close);
-
-  if (flag_print_statistics)
-    xatexit (dump_statistics);
-
-  output_file_create (out_file_name);
-  gas_assert (stdoutput != 0);
-
-  gas_late_init ();
+  gas_init ();
 
   PROGRESS (1);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-02-16 11:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-16 11:24 [binutils-gdb] gas_init Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).