From patchwork Tue May 21 14:59:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas De Schampheleire X-Patchwork-Id: 1102862 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-501350-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="BHIJN24e"; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="arDrAo05"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 457f5Z6w3nz9s3Z for ; Wed, 22 May 2019 00:58:10 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version :content-transfer-encoding; q=dns; s=default; b=ARZaf+La/isX+c/C HccPIoLTXPPqnfXX8VNmV7sBXvyNQ2cB6qSFcYxQ4wHK/NUvLI+6pELZNjWAjUbT GGJbfydHVyK0PUxgLB2YxqsaH/I4wxrV7+qyBUBSudTXRlutQAqTshPTaRP85sAC tOEf3zfqqU4XQtvjZfSY/8RiKDI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version :content-transfer-encoding; s=default; bh=ABAVWhsYWxgk87kOar4KV/ w1XBQ=; b=BHIJN24eXl1086bEXu2Qg0SLUftAEBbFzmssfHPnTB2hE4IvQAIHzL la663fZIGn0U1UpypDQQcp9iOEnhD33Y+acueHYf6WJoqbpC/6LG7+A4hFFFX1Ds maIwJpuBrOOsGtsV+4arGlh7Gqbb9PJqPoDZW6I+aD/JWYLFgcbrY= Received: (qmail 79251 invoked by alias); 21 May 2019 14:58:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 79243 invoked by uid 89); 21 May 2019 14:58:02 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-wm1-f41.google.com Received: from mail-wm1-f41.google.com (HELO mail-wm1-f41.google.com) (209.85.128.41) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 21 May 2019 14:57:59 +0000 Received: by mail-wm1-f41.google.com with SMTP id t5so3237808wmh.3 for ; Tue, 21 May 2019 07:57:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=oJ8ncgwY6S/aaNgv0oCON+AFR2TVIKDMgbZa8kfTAVg=; b=arDrAo05YqP7GlRzbSPePA6Yl+YUmBbbWaAlCCsUISqUAp3xf885s4aSyinAxHgJIA 1YYU6yOAfsr4XdZ2E1p9A5Is2qYaZkz56pFW5xlsVV+rztGyOs74cbyV2JOC8FB1vlCQ RaJitggF5aMfyrbUMZIoAl5SZ4/2ZnxSpkKeELGzD+0nRr3YHQOP32+zlFltkJ34f7jI 8ncycrZ3a0CnLr5UiLm1lbJQhMM3F7yW0H9wFzptDyYZfKNAXCzojEvbgKO14z8jPwXd MLYltgTCIbc/rZa/2gX62asfz0jppH2o5O0RfrO+h1sPuKPAqVcL3msPyi4EzLhqhvXA 4+Bw== Received: from localhost ([131.228.32.167]) by smtp.gmail.com with ESMTPSA id a11sm22543266wrx.31.2019.05.21.07.57.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 21 May 2019 07:57:56 -0700 (PDT) From: Thomas De Schampheleire To: gcc-patches@gcc.gnu.org Cc: Richard Biener , Thomas De Schampheleire Subject: [PATCHv2] debug: make -feliminate-unused-debug-symbols the default [PR debug/86964] Date: Tue, 21 May 2019 16:59:11 +0200 Message-Id: <20190521145911.3330-1-patrickdepinguin@gmail.com> MIME-Version: 1.0 X-IsSubscribed: yes From: Thomas De Schampheleire In addition to making -feliminate-unused-debug-symbols work for the DWARF format (see [1]), make this option the default. This behavior was the case before, e.g. under gcc 4.9.x. [1] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=269925 This change requires some updates to test cases, which expected the previous default of not eliminating unused debug symbols. gcc/ChangeLog: 2019-05-21 Thomas De Schampheleire PR debug/86964 * common.opt (feliminate-unused-debug-symbols): Enable by default. * doc/invoke.texi (Debugging Options): Document new default of -feliminate-unused-debug-symbols and remove restriction to 'stabs'. gcc/testsuite/ChangeLog: 2019-05-21 Thomas De Schampheleire PR debug/86964 * g++.dg/debug/dwarf2/fesd-any.C: Use -fno-eliminate-unused-debug-symbols. * g++.dg/debug/dwarf2/fesd-baseonly.C: Likewise. * g++.dg/debug/dwarf2/fesd-none.C: Likewise. * g++.dg/debug/dwarf2/fesd-reduced.C: Likewise. * g++.dg/debug/dwarf2/fesd-sys.C: Likewise. * g++.dg/debug/dwarf2/inline-var-1.C: Likewise. * g++.dg/debug/enum-2.C: Likewise. * gcc.dg/debug/dwarf2/fesd-any.c: Likewise. * gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise. * gcc.dg/debug/dwarf2/fesd-none.c: Likewise. * gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise. * gcc.dg/debug/dwarf2/fesd-sys.c: Likewise. --- gcc/common.opt | 2 +- gcc/doc/invoke.texi | 9 +++++---- gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/fesd-baseonly.C | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/fesd-none.C | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/fesd-reduced.C | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.C | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C | 2 +- gcc/testsuite/g++.dg/debug/enum-2.C | 1 + gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c | 2 +- gcc/testsuite/gcc.dg/debug/dwarf2/fesd-baseonly.c | 2 +- gcc/testsuite/gcc.dg/debug/dwarf2/fesd-none.c | 2 +- gcc/testsuite/gcc.dg/debug/dwarf2/fesd-reduced.c | 2 +- gcc/testsuite/gcc.dg/debug/dwarf2/fesd-sys.c | 2 +- 14 files changed, 18 insertions(+), 16 deletions(-) diff --git a/gcc/common.opt b/gcc/common.opt index d342c4f3749..0e72fd08ec4 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1379,7 +1379,7 @@ Common Report Var(flag_ipa_sra) Init(0) Optimization Perform interprocedural reduction of aggregates. feliminate-unused-debug-symbols -Common Report Var(flag_debug_only_used_symbols) +Common Report Var(flag_debug_only_used_symbols) Init(1) Perform unused symbol elimination in debug info. feliminate-unused-debug-types diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 5e3e8873d35..06c8c60f19e 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -388,7 +388,7 @@ Objective-C and Objective-C++ Dialects}. -fno-eliminate-unused-debug-types @gol -femit-struct-debug-baseonly -femit-struct-debug-reduced @gol -femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]} @gol --feliminate-unused-debug-symbols -femit-class-debug-always @gol +-fno-eliminate-unused-debug-symbols -femit-class-debug-always @gol -fno-merge-debug-strings -fno-dwarf2-cfi-asm @gol -fvar-tracking -fvar-tracking-assignments} @@ -7827,10 +7827,11 @@ confusion with @option{-gdwarf-@var{level}}. Instead use an additional @option{-g@var{level}} option to change the debug level for DWARF. -@item -feliminate-unused-debug-symbols +@item -fno-eliminate-unused-debug-symbols @opindex feliminate-unused-debug-symbols -Produce debugging information in stabs format (if that is supported), -for only symbols that are actually used. +@opindex fno-eliminate-unused-debug-symbols +By default, no debug information is produced for symbols that are not actually +used. Use this option if you want debug information for all symbols. @item -femit-class-debug-always @opindex femit-class-debug-always diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C index a4a0b50ee50..5868ebc9c85 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=any" } +// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=any -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-baseonly.C b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-baseonly.C index 4f580ebd361..fe0016a4563 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-baseonly.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-baseonly.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf-2 -dA -femit-struct-debug-baseonly" } +// { dg-options "-gdwarf-2 -dA -femit-struct-debug-baseonly -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-none.C b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-none.C index 0af0a83d85f..c5a33967426 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-none.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-none.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=none" } +// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=none -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-reduced.C b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-reduced.C index a93b90f05ad..ba40f176375 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-reduced.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-reduced.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf-2 -dA -femit-struct-debug-reduced" } +// { dg-options "-gdwarf-2 -dA -femit-struct-debug-reduced -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.C b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.C index 95a9a31ff60..86eeb21cf10 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=sys" } +// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=sys -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C index fc3e6fd435f..3b1c913edfc 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C @@ -1,5 +1,5 @@ // { dg-do compile { target c++17 } } -// { dg-options "-O -g -dA -gno-strict-dwarf" } +// { dg-options "-O -g -dA -gno-strict-dwarf -fno-eliminate-unused-debug-symbols" } // { dg-require-weak "" } // { dg-final { scan-assembler-times "0x3\[^\n\r]* DW_AT_inline" 6 { xfail *-*-aix* } } } // { dg-final { scan-assembler-times "0x1\[^\n\r]* DW_AT_inline" 2 { xfail *-*-aix* } } } diff --git a/gcc/testsuite/g++.dg/debug/enum-2.C b/gcc/testsuite/g++.dg/debug/enum-2.C index d5501313d93..554de37c40a 100644 --- a/gcc/testsuite/g++.dg/debug/enum-2.C +++ b/gcc/testsuite/g++.dg/debug/enum-2.C @@ -1,5 +1,6 @@ /* Verify that used enums are output. */ /* { dg-do compile } */ +/* { dg-options "-fno-eliminate-unused-debug-symbols" } */ /* { dg-final { scan-assembler "JTI_MAX" } } */ int var; diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c index 810788ae6e3..4062268e54c 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=any" } +// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=any -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-baseonly.c b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-baseonly.c index aefcb871509..fffdf04cfb6 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-baseonly.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-baseonly.c @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf -dA -femit-struct-debug-baseonly" } +// { dg-options "-gdwarf -dA -femit-struct-debug-baseonly -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-none.c b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-none.c index 193c05d6155..6fba51287ef 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-none.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-none.c @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=none" } +// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=none -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-reduced.c b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-reduced.c index ebbfc36672b..4209e30e3f9 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-reduced.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-reduced.c @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf -dA -femit-struct-debug-reduced" } +// { dg-options "-gdwarf -dA -femit-struct-debug-reduced -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } } diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-sys.c b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-sys.c index ad0a44a95b3..9c100d7cf91 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-sys.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/fesd-sys.c @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=sys" } +// { dg-options "-gdwarf -dA -femit-struct-debug-detailed=sys -fno-eliminate-unused-debug-symbols" } // { dg-final { scan-assembler "timespec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_sec.*DW_AT_name" } } // { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } }