From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by sourceware.org (Postfix) with ESMTPS id E80A83858419 for ; Fri, 1 Jul 2022 07:21:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E80A83858419 Received: by mail-pj1-x1031.google.com with SMTP id dw10-20020a17090b094a00b001ed00a16eb4so1854536pjb.2 for ; Fri, 01 Jul 2022 00:21:02 -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:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=5PHQSispn1jCJ7eO0NbKOHs0Sc25BGy1YLpIuRpd0Sk=; b=FexgploLK46D5eCKmGh586IZFn4eVzPiiyEsTxGy1kunmnesoPNUnIXmeiT5T/ecm2 RmGZ30st1ypNFKfUC8XM0yysVKYQfC5eIhI1eSdpJnNjpM83DOYL9UxAPvFYJSyID7AX buByO8ejKBI1fsm1dI+K/nT4YKQzxMgNjLfBJDTb3no4gpRU017EAKFiTtGQJ+u8uj5L 29L6BzSYF8N5esub/Td+BaOY8JfVlzhqavn72LD8pEzLL0DCLFc9JwkuEPGDLBEjKAbd yajzZSBPiF0Vit1EcReOx3j/Bp9SijBgLNl3hKhnceL4DTEmdiEMXY0c5fL122Y5irQ8 Vb7g== X-Gm-Message-State: AJIora/ezUTDfVG/UhoKFo6mXCaE6NRP+lTFmzYAgPQaivscEi57BWUq olrJuOAq6U0P5lVtcpQGbOAPew== X-Google-Smtp-Source: AGRyM1u8ebEh+ipl/wC+diYyUkslbD9N0DTB9EY/+wI/O38qrViZgnN4P3eA9Co7ZdpAODxljrezog== X-Received: by 2002:a17:90a:34c7:b0:1ec:91a6:f3db with SMTP id m7-20020a17090a34c700b001ec91a6f3dbmr15059816pjf.112.1656660061593; Fri, 01 Jul 2022 00:21:01 -0700 (PDT) Received: from google.com ([2620:15c:2ce:200:2e5b:78f:605a:c739]) by smtp.gmail.com with ESMTPSA id i4-20020a17090332c400b0016a4db13435sm14826836plr.191.2022.07.01.00.21.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Jul 2022 00:21:01 -0700 (PDT) Date: Fri, 1 Jul 2022 00:20:57 -0700 From: Fangrui Song To: Andrew Pinski Cc: GCC Patches , "H.J. Lu" , Rainer Orth , Fangrui Song Subject: Re: [PATCH] Remove legacy -gz=zlib-gnu Message-ID: <20220701072057.f2ojdm4pdm5257ni@google.com> References: <20220701065725.3839926-1-maskray@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-27.4 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2022 07:21:08 -0000 On 2022-07-01, Andrew Pinski wrote: >On Thu, Jun 30, 2022 at 11:58 PM Fangrui Song via Gcc-patches > wrote: >> >> From: Fangrui Song >> >> SHF_COMPRESSED style zlib has been supported since binutils 2.26 >> and the legacy zlib-gnu option hasn't gain adoption. >> According to Debian Code Search (`gz=zlib-gnu`), no project uses >> -gz=zlib-gnu (valgrind has a configure to use -gz=zlib). >> Remove support for the legacy zlib-gnu and simplify configure.ac by >> removing zlib-gnu ld/as check. > >A couple of things, you are missing a changelog. Sorry. >Second, why remove something which is still working? It's unused and its existence causes confusion: the paradox of choice. People may assume the support may be good but newer DWARF consumers may not support the legacy format. The other motivation is to clean up it a bit. I foresee that someone will add --compress-debug-sections=zstd to binutils and configure.ac and gcc/gcc.cc would become more messy. >Third, why not just make gz=zlib-gnu as an alias to gz=zlib instead so >if someone used it before it will still work. we try not to remove >options; have them emit a warning and be ignored (or moved over to the >closed option). Changing the semantics of -gz=zlib-gnu would be even more confusing. >Thanks, >Andrew > >> --- >> gcc/common.opt | 3 --- >> gcc/configure | 33 ++++++--------------------------- >> gcc/configure.ac | 29 ++++------------------------- >> gcc/doc/invoke.texi | 11 +++++------ >> gcc/gcc.cc | 22 ++-------------------- >> 5 files changed, 17 insertions(+), 81 deletions(-) >> >> diff --git a/gcc/common.opt b/gcc/common.opt >> index e7a51e882ba..8754d93d545 100644 >> --- a/gcc/common.opt >> +++ b/gcc/common.opt >> @@ -3424,9 +3424,6 @@ Enum(compressed_debug_sections) String(none) Value(0) >> EnumValue >> Enum(compressed_debug_sections) String(zlib) Value(1) >> >> -EnumValue >> -Enum(compressed_debug_sections) String(zlib-gnu) Value(2) >> - >> gz >> Common Driver >> Generate compressed debug sections. >> diff --git a/gcc/configure b/gcc/configure >> index 62872d132ea..ca87e875e9d 100755 >> --- a/gcc/configure >> +++ b/gcc/configure >> @@ -19674,7 +19674,7 @@ else >> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >> lt_status=$lt_dlunknown >> cat > conftest.$ac_ext <<_LT_EOF >> -#line 19679 "configure" >> +#line 19677 "configure" >> #include "confdefs.h" >> >> #if HAVE_DLFCN_H >> @@ -19780,7 +19780,7 @@ else >> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >> lt_status=$lt_dlunknown >> cat > conftest.$ac_ext <<_LT_EOF >> -#line 19785 "configure" >> +#line 19783 "configure" >> #include "confdefs.h" >> >> #if HAVE_DLFCN_H >> @@ -29711,20 +29711,13 @@ else >> if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null >> then >> gcc_cv_as_compress_debug=0 >> - # Since binutils 2.26, gas supports --compress-debug-sections=type, >> + # Since binutils 2.26, gas supports --compress-debug-sections=zlib, >> # defaulting to the ELF gABI format. >> - elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1 >> + elif $gcc_cv_as --compress-debug-sections=zlib -o conftest.o conftest.s > /dev/null 2>&1 >> then >> gcc_cv_as_compress_debug=2 >> gcc_cv_as_compress_debug_option="--compress-debug-sections" >> gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections" >> - # Before binutils 2.26, gas only supported --compress-debug-options and >> - # emitted the traditional GNU format. >> - elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1 >> - then >> - gcc_cv_as_compress_debug=1 >> - gcc_cv_as_compress_debug_option="--compress-debug-sections" >> - gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections" >> else >> gcc_cv_as_compress_debug=0 >> fi >> @@ -30238,42 +30231,28 @@ $as_echo "$gcc_cv_ld_eh_gc_sections_bug" >&6; } >> >> { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for compressed debug sections" >&5 >> $as_echo_n "checking linker for compressed debug sections... " >&6; } >> -# gold/gld support compressed debug sections since binutils 2.19/2.21 >> -# In binutils 2.26, gld gained support for the ELF gABI format. >> +# GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26. >> if test $in_tree_ld = yes ; then >> gcc_cv_ld_compress_debug=0 >> if test $ld_is_mold = yes; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \ >> - && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then >> - gcc_cv_ld_compress_debug=2 >> - gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 26 -o "$gcc_cv_gld_major_version" -gt 2 \ >> && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \ >> - && test $in_tree_ld_is_elf = yes; then >> - gcc_cv_ld_compress_debug=1 >> fi >> elif echo "$ld_ver" | grep GNU > /dev/null; then >> if test $ld_is_mold = yes; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> elif test "$ld_vers_major" -lt 2 \ >> - || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then >> + || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then >> gcc_cv_ld_compress_debug=0 >> - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then >> - gcc_cv_ld_compress_debug=1 >> else >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> fi >> - if test $ld_is_gold = yes; then >> - gcc_cv_ld_compress_debug=2 >> - gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - fi >> else >> case "${target}" in >> *-*-solaris2*) >> diff --git a/gcc/configure.ac b/gcc/configure.ac >> index 446747311a6..f40f75271c2 100644 >> --- a/gcc/configure.ac >> +++ b/gcc/configure.ac >> @@ -5733,20 +5733,13 @@ gcc_GAS_CHECK_FEATURE([compressed debug sections], >> if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null >> then >> gcc_cv_as_compress_debug=0 >> - # Since binutils 2.26, gas supports --compress-debug-sections=type, >> + # Since binutils 2.26, gas supports --compress-debug-sections=zlib, >> # defaulting to the ELF gABI format. >> - elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1 >> + elif $gcc_cv_as --compress-debug-sections=zlib -o conftest.o conftest.s > /dev/null 2>&1 >> then >> gcc_cv_as_compress_debug=2 >> gcc_cv_as_compress_debug_option="--compress-debug-sections" >> gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections" >> - # Before binutils 2.26, gas only supported --compress-debug-options and >> - # emitted the traditional GNU format. >> - elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1 >> - then >> - gcc_cv_as_compress_debug=1 >> - gcc_cv_as_compress_debug_option="--compress-debug-sections" >> - gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections" >> else >> gcc_cv_as_compress_debug=0 >> fi]) >> @@ -6131,42 +6124,28 @@ fi >> AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug) >> >> AC_MSG_CHECKING(linker for compressed debug sections) >> -# gold/gld support compressed debug sections since binutils 2.19/2.21 >> -# In binutils 2.26, gld gained support for the ELF gABI format. >> +# GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26. >> if test $in_tree_ld = yes ; then >> gcc_cv_ld_compress_debug=0 >> if test $ld_is_mold = yes; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \ >> - && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then >> - gcc_cv_ld_compress_debug=2 >> - gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 26 -o "$gcc_cv_gld_major_version" -gt 2 \ >> && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \ >> - && test $in_tree_ld_is_elf = yes; then >> - gcc_cv_ld_compress_debug=1 >> fi >> elif echo "$ld_ver" | grep GNU > /dev/null; then >> if test $ld_is_mold = yes; then >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> elif test "$ld_vers_major" -lt 2 \ >> - || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then >> + || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then >> gcc_cv_ld_compress_debug=0 >> - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then >> - gcc_cv_ld_compress_debug=1 >> else >> gcc_cv_ld_compress_debug=3 >> gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> fi >> - if test $ld_is_gold = yes; then >> - gcc_cv_ld_compress_debug=2 >> - gcc_cv_ld_compress_debug_option="--compress-debug-sections" >> - fi >> else >> changequote(,)dnl >> case "${target}" in >> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi >> index 757775ea576..467659cb094 100644 >> --- a/gcc/doc/invoke.texi >> +++ b/gcc/doc/invoke.texi >> @@ -10775,12 +10775,11 @@ location views are enabled. >> Produce compressed debug sections in DWARF format, if that is supported. >> If @var{type} is not given, the default type depends on the capabilities >> of the assembler and linker used. @var{type} may be one of >> -@samp{none} (don't compress debug sections), @samp{zlib} (use zlib >> -compression in ELF gABI format), or @samp{zlib-gnu} (use zlib >> -compression in traditional GNU format). If the linker doesn't support >> -writing compressed debug sections, the option is rejected. Otherwise, >> -if the assembler does not support them, @option{-gz} is silently ignored >> -when producing object files. >> +@samp{none} (don't compress debug sections), or @samp{zlib} (use zlib >> +compression in ELF gABI format). If the linker doesn't support writing >> +compressed debug sections, the option is rejected. Otherwise, if the >> +assembler does not support them, @option{-gz} is silently ignored when >> +producing object files. >> >> @item -femit-struct-debug-baseonly >> @opindex femit-struct-debug-baseonly >> diff --git a/gcc/gcc.cc b/gcc/gcc.cc >> index 5cbb38560b2..660cd6f4ef4 100644 >> --- a/gcc/gcc.cc >> +++ b/gcc/gcc.cc >> @@ -827,22 +827,11 @@ proper position among the other output files. */ >> /* No linker support. */ >> #define LINK_COMPRESS_DEBUG_SPEC \ >> " %{gz*:%e-gz is not supported in this configuration} " >> -#elif HAVE_LD_COMPRESS_DEBUG == 1 >> -/* GNU style on input, GNU ld options. Reject, not useful. */ >> -#define LINK_COMPRESS_DEBUG_SPEC \ >> - " %{gz*:%e-gz is not supported in this configuration} " >> -#elif HAVE_LD_COMPRESS_DEBUG == 2 >> -/* GNU style, GNU gold options. */ >> -#define LINK_COMPRESS_DEBUG_SPEC \ >> - " %{gz|gz=zlib-gnu:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \ >> - " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \ >> - " %{gz=zlib:%e-gz=zlib is not supported in this configuration} " >> #elif HAVE_LD_COMPRESS_DEBUG == 3 >> /* ELF gABI style. */ >> #define LINK_COMPRESS_DEBUG_SPEC \ >> " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \ >> - " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \ >> - " %{gz=zlib-gnu:" LD_COMPRESS_DEBUG_OPTION "=zlib-gnu} " >> + " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" >> #else >> #error Unknown value for HAVE_LD_COMPRESS_DEBUG. >> #endif >> @@ -891,18 +880,11 @@ proper position among the other output files. */ >> /* No assembler support. Ignore silently. */ >> #define ASM_COMPRESS_DEBUG_SPEC \ >> " %{gz*:} " >> -#elif HAVE_AS_COMPRESS_DEBUG == 1 >> -/* GNU style, GNU as options. */ >> -#define ASM_COMPRESS_DEBUG_SPEC \ >> - " %{gz|gz=zlib-gnu:" AS_COMPRESS_DEBUG_OPTION "}" \ >> - " %{gz=none:" AS_NO_COMPRESS_DEBUG_OPTION "}" \ >> - " %{gz=zlib:%e-gz=zlib is not supported in this configuration} " >> #elif HAVE_AS_COMPRESS_DEBUG == 2 >> /* ELF gABI style. */ >> #define ASM_COMPRESS_DEBUG_SPEC \ >> " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \ >> - " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \ >> - " %{gz=zlib-gnu:" AS_COMPRESS_DEBUG_OPTION "=zlib-gnu} " >> + " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" >> #else >> #error Unknown value for HAVE_AS_COMPRESS_DEBUG. >> #endif >> -- >> 2.37.0.rc0.161.g10f37bed90-goog >>