From patchwork Mon Feb 13 10:35:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 56162 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2271900wrn; Mon, 13 Feb 2023 02:35:38 -0800 (PST) X-Google-Smtp-Source: AK7set/0bxmrf+oRciLP1PmuLgnA9FtBl5WNUrOcY9MI6n73SDsEuDbio+Zu57FP847Lke6CgBwl X-Received: by 2002:a50:c445:0:b0:4ac:c635:8e03 with SMTP id w5-20020a50c445000000b004acc6358e03mr1913717edf.37.1676284538788; Mon, 13 Feb 2023 02:35:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676284538; cv=none; d=google.com; s=arc-20160816; b=i8MRQ0h/M3IOuVINcthuqQBh728GuAYftNfaRrEVUH+WIGlXM0FXhLcmBCrwhy9cSl SXKpMivdy0W9VUsE/GhIfRtth1/wy6gQRZbMeM/6HywC1kL6a9rXMH3MB/X8hZrqnxRL +uhCMA80dqf8SBnlhDgOSyiayiAyXd2o/ZFYYa2/e5TsSfrWND4NKXpIkbjokagfKn+k HC7ualilqUf/0JrU9kNH2DQP74h6eftLtfZUst9KYzl7jZxm3kJF/IwUbcU893hJQdc/ ZVC4/fuHgsgeJwbt6M4tEg7ffuo8r3o0Iw38FyEBhy8WS5uJR2LE/raV2I3UWkqpFPX5 yVPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-disposition:mime-version:message-id:subject:to:date :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=S5TR4sXZmaara1x53mFakKXRiUuaND5uUp6icAO4UmU=; b=o4c/YY2z9VZtEgwqUDSbkwOiXkaS4DsgBCltTXPoBRNexP9KA8bg5KSDr0qmKCLrJ4 BpQqs10tcA/kWO4bnwnNXNYgZ95bO/iZceqb2LJGm65YrBQQ5lfReUVowSsrmURTPnMR 0Ag23TqHq9TrlSViD4hGRWUMAAx3Y92UeLTd9u7ghXE+34NjjjI0A79wzYvA4ow4mgaj PD5wywDUDSjoqxD9Bxg1AKH7IjxUZ2G438dlraxLq63ONvDph4HAdevJL5KQ9s6hVXfN mCvktiJIQiK9w5zHzxk/0HjFHK4/tMm3Uy4BxmdrHTlN5WFHTdg4N5Vd43fDqsMZ7P+J LcsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=GOFXkoN7; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id a15-20020aa7cf0f000000b004aaa74dce26si14141019edy.569.2023.02.13.02.35.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Feb 2023 02:35:38 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=GOFXkoN7; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D57113858C20 for ; Mon, 13 Feb 2023 10:35:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D57113858C20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676284537; bh=S5TR4sXZmaara1x53mFakKXRiUuaND5uUp6icAO4UmU=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=GOFXkoN7dnw8F3szjA4Y+WeF8mToiTmYVBD3xd1YKyABadbA/UnSoR1x0oak8DY42 G2K6MHr+XvVf2l2qEcDGJPzjPmCXi48fbwiZ1pCtL6/LKcBfonKNZF+EM4OKoL0izs XrX6S8ePDU06OVdIqSqmn3N0UMbDR7DHSSXuNKK0= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by sourceware.org (Postfix) with ESMTPS id A7DD83858D35 for ; Mon, 13 Feb 2023 10:35:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A7DD83858D35 Received: by mail-pl1-x62f.google.com with SMTP id k13so13110077plg.0 for ; Mon, 13 Feb 2023 02:35:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S5TR4sXZmaara1x53mFakKXRiUuaND5uUp6icAO4UmU=; b=iTcoHNpg6BnPVG5KBKDj2qmPio2wo+erMedpWI+haFSwPtxbpz9A8KON8hlvQX+47p EhtM4lY/31ZgR3+D2tFV/56BMFL09p0dMP8IA0Q64CPAIoptcUZfGomcbcT16em3f00+ boxfAkai6j5/3f1fvNq7+4s2X7U2VbCrM3ZrIkkUqD5n/8/X8VmIoNIXSnHQInoUE5/r aFzERdE14GQLCYBKik9SxLprSEsLOAuL5UVZNnv1K4n2jWpio1Q+rbPrRWDCMS0Giq4n 6TTQFvW9zS1dtq1HSqWuo8rgijAauweQSC0PoT0RTwxh7qfhgQydDY42p5Cx4DkrrzgE hCDw== X-Gm-Message-State: AO0yUKWIuvlxLuLUethM11lKxvC/AeazfC2MzqwZ3KvbrHSMtDTwmCXK uvRysHxcyivbuU7GfAOdP3FU65nLJeU= X-Received: by 2002:a17:902:c404:b0:198:c27f:8954 with SMTP id k4-20020a170902c40400b00198c27f8954mr27575181plk.54.1676284524590; Mon, 13 Feb 2023 02:35:24 -0800 (PST) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:8dde:3ec7:89e7:261d]) by smtp.gmail.com with ESMTPSA id jh9-20020a170903328900b0018b025d9a40sm4138590plb.256.2023.02.13.02.35.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Feb 2023 02:35:24 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 19B851142CA6; Mon, 13 Feb 2023 21:05:22 +1030 (ACDT) Date: Mon, 13 Feb 2023 21:05:22 +1030 To: binutils@sourceware.org Subject: Split off gas init to functions Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-3034.2 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 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-Patchwork-Original-From: Alan Modra via Binutils From: Alan Modra Reply-To: Alan Modra Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757711736610028305?= X-GMAIL-MSGID: =?utf-8?q?1757711736610028305?= With some slight reordering. * as.c (gas_early_init, gas_late_init): New functions, split.. (main): ..from here. diff --git a/gas/as.c b/gas/as.c index f548294c3dc..0995292d1c8 100644 --- a/gas/as.c +++ b/gas/as.c @@ -1267,14 +1267,11 @@ free_notes (void) _obstack_free (¬es, NULL); } -int -main (int argc, char ** argv) -{ - char ** argv_orig = argv; - struct stat sob; - - int macro_strip_at; +/* Early initialisation, before gas prints messages. */ +static void +gas_early_init (int *argcp, char ***argvp) +{ start_time = get_run_time (); signal_init (); @@ -1288,17 +1285,6 @@ main (int argc, char ** argv) if (debug_memory) chunksize = 64; -#ifdef HOST_SPECIAL_INIT - HOST_SPECIAL_INIT (argc, argv); -#endif - - myname = argv[0]; - xmalloc_set_program_name (myname); - - expandargv (&argc, &argv); - - START_PROGRESS (myname, 0); - #ifndef OBJ_DEFAULT_OUTPUT_FILE_NAME #define OBJ_DEFAULT_OUTPUT_FILE_NAME "a.out" #endif @@ -1308,18 +1294,95 @@ main (int argc, char ** argv) hex_init (); if (bfd_init () != BFD_INIT_MAGIC) as_fatal (_("libbfd ABI mismatch")); + + obstack_begin (¬es, chunksize); + xatexit (free_notes); + + myname = **argvp; + xmalloc_set_program_name (myname); bfd_set_error_program_name (myname); + START_PROGRESS (myname, 0); + + expandargv (argcp, argvp); + +#ifdef HOST_SPECIAL_INIT + HOST_SPECIAL_INIT (*argcp, *argvp); +#endif #ifdef USE_EMULATIONS - select_emulation_mode (argc, argv); + select_emulation_mode (*argcp, *argvp); #endif +} - obstack_begin (¬es, chunksize); - xatexit (free_notes); +/* Init things that might depend on program args. */ + +static void +gas_late_init (void) +{ + symbol_begin (); + frag_init (); + subsegs_begin (); + read_begin (); + input_scrub_begin (); + expr_begin (); + + int macro_strip_at = 0; +#ifdef TC_I960 + macro_strip_at = flag_mri; +#endif + macro_init (flag_macro_alternate, flag_mri, macro_strip_at, macro_expr); + 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. */ PROGRESS (1); - /* Call parse_args before any of the init/begin functions - so that switches like --hash-size can be honored. */ + + dot_symbol_init (); + +#ifdef tc_init_after_args + tc_init_after_args (); +#endif + + 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. */ + while (defsyms != NULL) + { + symbolS *sym; + struct defsym_list *next; + + sym = symbol_new (defsyms->name, absolute_section, + &zero_address_frag, defsyms->value); + /* Make symbols defined on the command line volatile, so that they + can be redefined inside a source file. This makes this assembler's + behaviour compatible with earlier versions, but it may not be + completely intuitive. */ + S_SET_VOLATILE (sym); + symbol_table_insert (sym); + next = defsyms->next; + free (defsyms); + defsyms = next; + } +} + +int +main (int argc, char ** argv) +{ + char ** argv_orig = argv; + struct stat sob; + + gas_early_init (&argc, &argv); + PROGRESS (1); + + /* Call parse_args before gas_late_init so that switches like + --hash-size can be honored. */ parse_args (&argc, &argv); if (argc > 1 && stat (out_file_name, &sob) == 0) @@ -1361,64 +1424,16 @@ main (int argc, char ** argv) } } - symbol_begin (); - frag_init (); - subsegs_begin (); - read_begin (); - input_scrub_begin (); - expr_begin (); - /* It has to be called after dump_statistics (). */ xatexit (output_file_close); if (flag_print_statistics) xatexit (dump_statistics); - macro_strip_at = 0; -#ifdef TC_I960 - macro_strip_at = flag_mri; -#endif - - macro_init (flag_macro_alternate, flag_mri, macro_strip_at, macro_expr); - - PROGRESS (1); - output_file_create (out_file_name); gas_assert (stdoutput != 0); - dot_symbol_init (); - -#ifdef tc_init_after_args - tc_init_after_args (); -#endif - - itbl_init (); - - dwarf2_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. */ - while (defsyms != NULL) - { - symbolS *sym; - struct defsym_list *next; - - sym = symbol_new (defsyms->name, absolute_section, - &zero_address_frag, defsyms->value); - /* Make symbols defined on the command line volatile, so that they - can be redefined inside a source file. This makes this assembler's - behaviour compatible with earlier versions, but it may not be - completely intuitive. */ - S_SET_VOLATILE (sym); - symbol_table_insert (sym); - next = defsyms->next; - free (defsyms); - defsyms = next; - } + gas_late_init (); PROGRESS (1);