From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id B65E6384B0D4 for ; Sat, 9 Jul 2022 12:28:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B65E6384B0D4 Received: by mail-pf1-x42a.google.com with SMTP id b9so1157510pfp.10 for ; Sat, 09 Jul 2022 05:28:45 -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=NVkQvVPDqYbquyBymiJhwU4AKK3z+hEQaTREu51bXSY=; b=5mmt0ZV8Vly91Lz7h283NHpm8bIkbHqRXW2piciIs917xXMLHUlpq6Rnu+dlv9e0rj FRmN9Iz+yC/bsOHZ3OzvLjY/al0DMjPrX5lm9Er5Y8837mWhoZYO07BJ6YAuCTRwiyHj g75RTonPiBqOHIvezwJBsT7pRoSLmrdKlrwz6a7PrOZCilB7spHrfQPyPJ8ySgXzcy3/ 5KX9VZq52zA6cwAmMouQNBQneeTRbydznrHy0KuawIRlzy6MEM1207ddsckm5pq6KNaB 0SC3mWWKMeUwZDAD1+uKJ4LHqGPu9h4pCyb51nRl0E0dubgFZAHy3jZGVF1p7FVnrvpC +Xgw== X-Gm-Message-State: AJIora+6QwSUv+n0coiaCeFTsPNjyF2HNx0UDcFpSWlzmbjZLeB608aw sZv1xh5BuuUr7I4BkScYP7/34MImJCQ= X-Google-Smtp-Source: AGRyM1veshOeSgkZ+Krq6COr6x/4V/AYtcO1z98YnW5dvrs0DJBXD8U/1FoZur/oHQJrvTnDzgE3Dg== X-Received: by 2002:a65:6a4f:0:b0:3fe:9ef:1c49 with SMTP id o15-20020a656a4f000000b003fe09ef1c49mr7502919pgu.229.1657369724561; Sat, 09 Jul 2022 05:28:44 -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 d8-20020a17090a7bc800b001efa332d365sm1052774pjl.33.2022.07.09.05.28.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Jul 2022 05:28:44 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id D504A1143046; Sat, 9 Jul 2022 21:58:41 +0930 (ACST) Date: Sat, 9 Jul 2022 21:58:41 +0930 From: Alan Modra To: binutils@sourceware.org Subject: dw2gencfi.c: use notes obstack 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:28:47 -0000 Use notes obstack for dwcfi_hash entries, and free table. Freeing the table makes memory checkers complain more about "definitely lost" memory as we've moved some from the "still reachable" category. That will be fixed with a later patch. * dw2gencfi.c (get_debugseg_name): Allocate on notes obstack. (alloc_debugseg_item): Likewise. (dwcfi_hash_find_or_make): Adjust failure path free. (cfi_finish): Delete dwfci_hash. diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c index 961a3b92188..6be8cb50495 100644 --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -229,13 +229,10 @@ get_debugseg_name (segT seg, const char *base_name) const char * dollar; const char * dot; - if (!seg) - return concat (base_name, NULL); - - name = bfd_section_name (seg); - - if (name == NULL || *name == 0) - return concat (base_name, NULL); + if (!seg + || (name = bfd_section_name (seg)) == NULL + || *name == 0) + return notes_strdup (base_name); dollar = strchr (name, '$'); dot = strchr (name + 1, '.'); @@ -244,7 +241,7 @@ get_debugseg_name (segT seg, const char *base_name) { if (!strcmp (base_name, ".eh_frame_entry") && strcmp (name, ".text") != 0) - return concat (base_name, ".", name, NULL); + return notes_concat (base_name, ".", name, NULL); name = ""; } @@ -257,7 +254,7 @@ get_debugseg_name (segT seg, const char *base_name) else name = dollar; - return concat (base_name, name, NULL); + return notes_concat (base_name, name, NULL); } /* Allocate a dwcfi_seg_list structure. */ @@ -267,8 +264,7 @@ alloc_debugseg_item (segT seg, int subseg, char *name) { struct dwcfi_seg_list *r; - r = (struct dwcfi_seg_list *) - xmalloc (sizeof (struct dwcfi_seg_list) + strlen (name)); + r = notes_alloc (sizeof (*r) + strlen (name)); r->seg = seg; r->subseg = subseg; r->seg_name = name; @@ -351,7 +347,7 @@ dwcfi_hash_find_or_make (segT cseg, const char *base_name, int flags) str_hash_insert (dwcfi_hash, item->seg_name, item, 0); } else - free (name); + notes_free (name); return item; } @@ -2542,6 +2538,8 @@ cfi_finish (void) for (fde = all_fde_data; fde ; fde = fde->next) SET_HANDLED (fde, 0); } + if (dwcfi_hash) + htab_delete (dwcfi_hash); } #else /* TARGET_USE_CFIPOP */ -- Alan Modra Australia Development Lab, IBM