From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by sourceware.org (Postfix) with ESMTPS id 6C822384BC32 for ; Sat, 9 Jul 2022 12:30:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6C822384BC32 Received: by mail-pg1-x52d.google.com with SMTP id r22so1076365pgr.2 for ; Sat, 09 Jul 2022 05:30:12 -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=NUxlSQUqpYAfbv8kn6sR9CeeJU19L/UpzvmxxRhhW8w=; b=okOhqz/fa+qfqARQL7/V3p09Fq0SdaIs/iRyf+lCeci9I8X79xfq+39ymPOPyBqb5J Pj6EjgzaEikkcw9n0QMpDBoA/PwAv34zwrYOe1tRmKGB2v2Tc1hrilzUXTzHYG8ifaZt 7bZ0dYi3rZc60HkjP1EMnQWt5/Wq/MiuhevdUwyKLUok8xVnOpQ9G4yshsI7iuLAfaMq pgADct7DoHn9NoChU48VUU9yklLgwwxzIUoOSGgK229g/LDd6wHe70EcuHYZDATWaA02 UceuDK2rXJ7YMuQwbSsuEqEKzHlsvuzvnVAVQ7ZEoheMXYyfxmiDr9m3qT4HMPzCjJr2 k6Cw== X-Gm-Message-State: AJIora+7YLYXqZIZ9K5bP9ybJUffe6DT1L19vAxaGMFzNDC/+5WIblc4 3APKWv2xHc2pg4rgJ5I1EhSZh9hhvZA= X-Google-Smtp-Source: AGRyM1s5t8/OgJokqQTrKtsNVq8ASA+v6XE6h5ZqpQrMDRORGZWB+QSTt33jx7wXNkB0Rw/xfNpW/w== X-Received: by 2002:a63:cf18:0:b0:40d:5506:df97 with SMTP id j24-20020a63cf18000000b0040d5506df97mr7448472pgg.43.1657369811330; Sat, 09 Jul 2022 05:30:11 -0700 (PDT) Received: from squeak.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id z24-20020aa79498000000b0052542cbff9dsm1418063pfk.99.2022.07.09.05.30.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Jul 2022 05:30:10 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 97CA01143046; Sat, 9 Jul 2022 22:00:08 +0930 (ACST) Date: Sat, 9 Jul 2022 22:00:08 +0930 From: Alan Modra To: binutils@sourceware.org Subject: gas: set up notes obstack earlier Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3036.9 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:30:13 -0000 So that the notes obstack can be used for persistent storage in parse_args. * as.c (parse_args): Use notes_alloc and notes_strdup. (free_notes): New function. (main): Init notes obstack, and arrange to be freed on exit. * read.c (read_begin): Don't init notes obstack. (read_end): Free cond_obstack. * subsegs.c (subsegs_end): Don't free cond_obstack or notes. diff --git a/gas/as.c b/gas/as.c index 8b2b3e8d33f..2b8886e8b54 100644 --- a/gas/as.c +++ b/gas/as.c @@ -588,7 +588,7 @@ parse_args (int * pargc, char *** pargv) old_argv = *pargv; /* Initialize a new argv that contains no options. */ - new_argv = XNEWVEC (char *, old_argc + 1); + new_argv = notes_alloc (sizeof (char *) * (old_argc + 1)); new_argv[0] = old_argv[0]; new_argc = 1; new_argv[new_argc] = NULL; @@ -996,7 +996,7 @@ This program has absolutely no warranty.\n")); case OPTION_AL: listing |= LISTING_LISTING; if (optarg) - listing_filename = xstrdup (optarg); + listing_filename = notes_strdup (optarg); break; case OPTION_ALTERNATE: @@ -1050,7 +1050,7 @@ This program has absolutely no warranty.\n")); listing |= LISTING_SYMBOLS; break; case '=': - listing_filename = xstrdup (optarg + 1); + listing_filename = notes_strdup (optarg + 1); optarg += strlen (listing_filename); break; default: @@ -1076,14 +1076,14 @@ This program has absolutely no warranty.\n")); case 'I': { /* Include file directory. */ - char *temp = xstrdup (optarg); + char *temp = notes_strdup (optarg); add_include_dir (temp); break; } case 'o': - out_file_name = xstrdup (optarg); + out_file_name = notes_strdup (optarg); break; case 'w': @@ -1231,7 +1231,12 @@ perform_an_assembly_pass (int argc, char ** argv) if (!saw_a_file) read_a_source_file (""); } - + +static void +free_notes (void) +{ + _obstack_free (¬es, NULL); +} int main (int argc, char ** argv) @@ -1280,6 +1285,9 @@ main (int argc, char ** argv) select_emulation_mode (argc, argv); #endif + obstack_begin (¬es, chunksize); + xatexit (free_notes); + PROGRESS (1); /* Call parse_args before any of the init/begin functions so that switches like --hash-size can be honored. */ diff --git a/gas/read.c b/gas/read.c index edf3f2a7881..6f3a51df761 100644 --- a/gas/read.c +++ b/gas/read.c @@ -261,9 +261,6 @@ read_begin (void) pobegin (); obj_read_begin_hook (); - /* Something close -- but not too close -- to a multiple of 1024. - The debugging malloc I'm using has 24 bytes of overhead. */ - obstack_begin (¬es, chunksize); obstack_begin (&cond_obstack, chunksize); #ifndef tc_line_separator_chars @@ -282,6 +279,7 @@ void read_end (void) { poend (); + _obstack_free (&cond_obstack, NULL); } #ifndef TC_ADDRESS_BYTES diff --git a/gas/subsegs.c b/gas/subsegs.c index 1776511a9b8..b1a85d3d6c7 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -50,8 +50,6 @@ subsegs_end (struct obstack **obs) for (; *obs; obs++) _obstack_free (*obs, NULL); _obstack_free (&frchains, NULL); - _obstack_free (&cond_obstack, NULL); - _obstack_free (¬es, NULL); } static void -- Alan Modra Australia Development Lab, IBM