From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id D348D3858D3C for ; Sun, 30 Jan 2022 20:06:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D348D3858D3C Received: by mail-pg1-x532.google.com with SMTP id z131so10237948pgz.12 for ; Sun, 30 Jan 2022 12:06:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=I3ys8JHdyS0e63frO+RfCihvOQT71NPLLJu2oxzlxvU=; b=T8Wmnzjp/nBRWc6Ae2EM9Rf/CCsY+YmczLKpZ7qk1e+ZkS7NVV6+9gQJVYZsaUldUi SfCds9t2aRyXoRbjJlae0wRzObMtN7UCc0TKg2s2tb4lccHA5mud0p/rSigHBFo6biEt J2mPbrYEqomhaK2pChbtfhxYUi+7bS98N8zgce+uNxFO+GLlLi1C2nQ2IqKlLYIuz0i2 TLa3NPtaD5EsqFvz82LCT7sZ9IbsSURWiDEYl+vgsE0iW2KWPP15Pnz6SUrqrtInCaGg ECZR03qLvkvHXP10RBXNAECEhoxtGSkdqYqJHZ6GIAm4ykKrrpNkrMJulRB1eTf0eVEE VYxQ== X-Gm-Message-State: AOAM532IoLQTzuRS8eJbhojb/duOKTcZfPtFM72HotbOI7s1aMuNrRun hHnKRIXVq+R8/V74kegvlFOL/0T1eag= X-Google-Smtp-Source: ABdhPJwMLWfFK4e41RjureZKx/qaEWW6bi0pYQtzDYoQhlTVYg4ZDz8Yn3p34+cNQMzA/W2TV8YOzw== X-Received: by 2002:a05:6a00:cca:: with SMTP id b10mr4833527pfv.27.1643573195375; Sun, 30 Jan 2022 12:06:35 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.35.133]) by smtp.gmail.com with ESMTPSA id pg2sm9016455pjb.54.2022.01.30.12.06.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 12:06:34 -0800 (PST) Received: from gnu-tgl-2.localdomain (gnu-tgl-2 [192.168.1.36]) by gnu-tgl-3.localdomain (Postfix) with ESMTPS id 88D19C07F0 for ; Sun, 30 Jan 2022 12:06:33 -0800 (PST) Received: from gnu-tgl-2.. (localhost [IPv6:::1]) by gnu-tgl-2.localdomain (Postfix) with ESMTP id 018C7300438 for ; Sun, 30 Jan 2022 12:04:36 -0800 (PST) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH] Load debug section only when dumping debug sections Date: Sun, 30 Jan 2022 12:04:35 -0800 Message-Id: <20220130200435.1634559-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3028.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Sun, 30 Jan 2022 20:06:38 -0000 Don't load debug sections if we aren't dumping any debug sections. PR binutils/28843 * objdump.c (dump_any_debugging): New. (load_debug_section): Return false if dump_any_debugging isn't set. (main): Set dump_any_debugging when dumping any debug sections. * readelf (dump_any_debugging): New. (parse_args): Set dump_any_debugging when dumping any debug sections. (load_debug_section): Return false if dump_any_debugging isn't set. --- binutils/objdump.c | 8 ++++++++ binutils/readelf.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/binutils/objdump.c b/binutils/objdump.c index 08a0fe521d8..24e91869bfd 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -131,6 +131,7 @@ static bool color_output = false; /* --visualize-jumps=color. */ static bool extended_color_output = false; /* --visualize-jumps=extended-color. */ static int process_links = false; /* --process-links. */ +static int dump_any_debugging; static int demangle_flags = DMGL_ANSI | DMGL_PARAMS; /* A structure to record the sections mentioned in -j switches. */ @@ -3851,6 +3852,9 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file) asection *sec; const char *name; + if (!dump_any_debugging) + return false; + /* If it is already loaded, do nothing. */ if (section->start != NULL) { @@ -5688,6 +5692,10 @@ main (int argc, char **argv) if (!seenflag) usage (stderr, 2); + dump_any_debugging = (dump_debugging + || dump_dwarf_section_info + || process_links); + if (formats_info) exit_status = display_info (); else diff --git a/binutils/readelf.c b/binutils/readelf.c index b45683cd571..e56e9b56393 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -239,6 +239,7 @@ static bool decompress_dumps = false; static bool do_not_show_symbol_truncation = false; static bool do_demangle = false; /* Pretty print C++ symbol names. */ static bool process_links = false; +static bool dump_any_debugging = false; static int demangle_flags = DMGL_ANSI | DMGL_PARAMS; static int sym_base = 0; @@ -5332,6 +5333,7 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv) case 'P': process_links = true; do_follow_links = true; + dump_any_debugging = true; break; case 'x': request_dump (dumpdata, HEX_DUMP); @@ -5347,6 +5349,7 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv) break; case 'w': do_dump = true; + dump_any_debugging = true; if (optarg == NULL) { do_debugging = true; @@ -5360,6 +5363,7 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv) break; case OPTION_DEBUG_DUMP: do_dump = true; + dump_any_debugging = true; if (optarg == NULL) { do_debugging = true; @@ -15913,6 +15917,9 @@ load_debug_section (enum dwarf_section_display_enum debug, void * data) Elf_Internal_Shdr * sec; Filedata * filedata = (Filedata *) data; + if (!dump_any_debugging) + return false; + /* Without section headers we cannot find any sections. */ if (filedata->section_headers == NULL) return false; -- 2.34.1