From patchwork Mon Mar 6 03:28:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 64413 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp1638773wrd; Sun, 5 Mar 2023 19:29:29 -0800 (PST) X-Google-Smtp-Source: AK7set+1onqZdi46vCx/IWUbToo1sYA8Qwq1a6eKQ6UjdG/1ZEm6vWe/PCX2l7CLF2WQjTFvHlgc X-Received: by 2002:aa7:d754:0:b0:4af:740d:fde with SMTP id a20-20020aa7d754000000b004af740d0fdemr13298216eds.20.1678073368936; Sun, 05 Mar 2023 19:29:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678073368; cv=none; d=google.com; s=arc-20160816; b=UlaEkDRHNEVrV1h828joYERVgbXkHYoVitoRW0OEbNzpKCxugsdv5pjEYMny/nmM7z lhizzDD0ser2yjtqLf0ctPMCbwd8Vc+7ltbqu38/mGtGOS2bGb5fMHofeAPNfregPnhd 49/iE0JOhKyJ3EyahqdsYtvzytTdXL9YPz7Vx1WxJE9WFdMR0xMudBkXmgEB5Rbyo6O7 UWkp9QUBG3vj9+dzZi/4SVABOLfYLmxnXAJvb6jjQZxC32rAiaoQwFH43HCA9FxTt+EF 7bvc5UTWYRiIgdGXbs2Q2ShSDczEiGMB77+/jYvmnS3wllmx8h8jmxJQnG7m5eT71ntd qKXg== 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=XtroAsliKKqZyNfrMF7GjDI2EHFSA/MmCS+YU67MAro=; b=y2gozvfv0KAn4EWOn+eFHoYAogwbJOeTiUR5RFLH9AXaKIguUSnKdViOmLt/tv3rNa kA16xWk2/3JnfT/Vgnqjzzcs8gQP4lIw6p/CNtW+pbjP1X8NobZq2omvHjHpcFQlSW/A vQ0mE/DzKdY7j6YDcZV/J8WJeNwEwL2XQReCOwIPjyVADsfal+jMELG15xZK0yUtJfvl S/Ozu9qO+u/YZzLqW0jgewi7esDFtKdhs34aqpkhWxhFx8aAiRHBB0Kf7LWsdwOKqQlX MYIAc3Kx/IfxeALc3ekpUtveYH8tl8o5xN/InDLsHmFMVVCerUxcp9dY8T1sJ827RCSM Ti4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=RL+gzvIz; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c 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 (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id v16-20020a056402185000b004c1bfa5adf8si9437654edy.611.2023.03.05.19.29.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Mar 2023 19:29:28 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=RL+gzvIz; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c 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 6C67F3858C2B for ; Mon, 6 Mar 2023 03:29:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6C67F3858C2B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1678073364; bh=XtroAsliKKqZyNfrMF7GjDI2EHFSA/MmCS+YU67MAro=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=RL+gzvIzBZsxkrEVwc1FqOiBER7DoN1nPG/LDQl/SOEjo0vKVVkfU7Mns9I7TZjWL agphTIHZ+RlHsQp8Ti4aB1wxTKUIPuXLB28ScxWE5lWt4u1ngKpAHIhnXfcZb9mn+u W7TWhHBqRZ+HosXYcVNQMjGoqt4s+y5UbgyYM14w= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id D7BAB385B515 for ; Mon, 6 Mar 2023 03:28:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7BAB385B515 Received: by mail-pl1-x633.google.com with SMTP id i5so8830167pla.2 for ; Sun, 05 Mar 2023 19:28:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678073330; 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=XtroAsliKKqZyNfrMF7GjDI2EHFSA/MmCS+YU67MAro=; b=jckOC802KL2tw3nk08EvVc0xyp+knanxk4YeTXqePAgZ5sDGqf78JjhxwG213C9QKU JL/eyuo3uNJZvVQRSlQqSItVAKh2l2J7sigipt7yR2SrU/27QzYwKYI0ZWFHkmjQt3Rt 4U+eJKiYQtXgQVAxns4q2Kf3o7UiFQiUrpT/bVFtQaaPi4ZgOOrRGdc5R5KoPvzdG6zG Qw+5cnOlWJ3i2pHqS522C2izjnvZOwEgTldCK0WaBzk6TKNyiQZ33Ef5PnT3O87a7AT6 FM/Lkx04Hrwd2wHXj6SNd5zSbqKcesejjxYhLZU4Xjx5W4HJk+Yt52G+h1nBlbrj2Lg/ j2ew== X-Gm-Message-State: AO0yUKWYdZlV74Ek5SG+oOU+XcPeTu3XeuQLEHQLZ7QsAOCkEt8HrqZ3 319ng78U272yezumGAf/rMZCBOOheRA= X-Received: by 2002:a17:902:d4cd:b0:19e:23c1:4c3d with SMTP id o13-20020a170902d4cd00b0019e23c14c3dmr11959038plg.2.1678073329719; Sun, 05 Mar 2023 19:28:49 -0800 (PST) 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 z15-20020a170902d54f00b0019a928a8982sm5418386plf.118.2023.03.05.19.28.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Mar 2023 19:28:49 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 3E3361142C90; Mon, 6 Mar 2023 13:58:47 +1030 (ACDT) Date: Mon, 6 Mar 2023 13:58:47 +1030 To: binutils@sourceware.org Subject: Downgrade nm fatal errors to non-fatal Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-3035.3 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?1759587460694752057?= X-GMAIL-MSGID: =?utf-8?q?1759587460694752057?= Many of the fatal errors in nm ought to be recoverable. This patch downgrades most of them. The ones that are left are most likely due to memory allocation failures. * nm.c (print_symdef_entry): Don't bomb with a fatal error on a corrupted archive symbol table. (filter_symbols): Silently omit symbols that return NULL from bfd_minisymbol_to_symbol rather than giving a fatal error. (display_rel_file): Don't give a fatal error on bfd_read_minisymbols returning an error, or on not being able to read dynamic symbols for synth syms. (display_archive): Downgrade bfd_openr_next_archived_file error. (display_file): Don't bomb on a bfd_close failure. diff --git a/binutils/nm.c b/binutils/nm.c index 2c428d20fdf..8b6b249a951 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -736,19 +736,19 @@ print_symdef_entry (bfd *abfd) idx != BFD_NO_MORE_SYMBOLS; idx = bfd_get_next_mapent (abfd, idx, &thesym)) { - bfd *elt; if (!everprinted) { printf (_("\nArchive index:\n")); everprinted = true; } - elt = bfd_get_elt_at_index (abfd, idx); - if (elt == NULL) - bfd_fatal ("bfd_get_elt_at_index"); - if (thesym->name != (char *) NULL) + if (thesym->name != NULL) { print_symname ("%s", NULL, thesym->name, abfd); - printf (" in %s\n", bfd_get_filename (elt)); + bfd *elt = bfd_get_elt_at_index (abfd, idx); + if (elt) + printf (" in %s\n", bfd_get_filename (elt)); + else + printf ("\n"); } } } @@ -781,9 +781,9 @@ filter_symbols (bfd *abfd, bool is_dynamic, void *minisyms, int keep = 0; asymbol *sym; - sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, (const void *) from, store); + sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from, store); if (sym == NULL) - bfd_fatal (bfd_get_filename (abfd)); + continue; if (sym->name != NULL && sym->name[0] == '_' @@ -1405,19 +1405,7 @@ display_rel_file (bfd *abfd, bfd *archive_bfd) } symcount = bfd_read_minisymbols (abfd, dynamic, &minisyms, &size); - if (symcount < 0) - { - if (dynamic && bfd_get_error () == bfd_error_no_symbols) - { - if (!quiet) - non_fatal (_("%s: no symbols"), bfd_get_filename (abfd)); - return; - } - - bfd_fatal (bfd_get_filename (abfd)); - } - - if (symcount == 0) + if (symcount <= 0) { if (!quiet) non_fatal (_("%s: no symbols"), bfd_get_filename (abfd)); @@ -1449,7 +1437,7 @@ display_rel_file (bfd *abfd, bfd *archive_bfd) dyn_syms = (asymbol **) xmalloc (storage); dyn_count = bfd_canonicalize_dynamic_symtab (abfd, dyn_syms); if (dyn_count < 0) - bfd_fatal (bfd_get_filename (abfd)); + dyn_count = 0; } } @@ -1588,7 +1576,7 @@ display_archive (bfd *file) if (arfile == NULL) { if (bfd_get_error () != bfd_error_no_more_archived_files) - bfd_fatal (bfd_get_filename (file)); + bfd_nonfatal (bfd_get_filename (file)); break; } @@ -1664,7 +1652,7 @@ display_file (char *filename) free_lineno_cache (file); if (!bfd_close (file)) - bfd_fatal (filename); + retval = false; return retval; }