public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Fangrui Song <maskray@google.com>
To: Andrew Pinski <pinskia@gmail.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>,
	"H.J. Lu" <hjl.tools@gmail.com>,
	Rainer Orth <ro@cebitec.uni-bielefeld.de>,
	Fangrui Song <i@maskray.me>
Subject: Re: [PATCH] Remove legacy -gz=zlib-gnu
Date: Fri, 1 Jul 2022 00:20:57 -0700	[thread overview]
Message-ID: <20220701072057.f2ojdm4pdm5257ni@google.com> (raw)
In-Reply-To: <CA+=Sn1nfQ-9NxSgY-rt2JP4kP_ydtE3F2RFpWmav9x204n_qFw@mail.gmail.com>

On 2022-07-01, Andrew Pinski wrote:
>On Thu, Jun 30, 2022 at 11:58 PM Fangrui Song via Gcc-patches
><gcc-patches@gcc.gnu.org> wrote:
>>
>> From: Fangrui Song <i@maskray.me>
>>
>> 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
>>

  reply	other threads:[~2022-07-01  7:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-01  6:57 Fangrui Song
2022-07-01  7:03 ` Andrew Pinski
2022-07-01  7:20   ` Fangrui Song [this message]
2022-09-20 12:55     ` Martin Liška
2022-09-21  7:36       ` Richard Biener
2022-09-21  7:45         ` Fangrui Song
2022-09-21  7:49         ` Martin Liška
2022-09-21  9:35           ` Richard Biener
2022-09-22 11:10             ` [PATCH] remove -gz=zlib-gnu option value Martin Liška
2022-09-22 12:26               ` [PATCH v2] " Martin Liška
2022-09-22 12:35                 ` Richard Biener
2022-09-22 12:51                   ` [PATCH] support -gz=zstd for both linker and assembler Martin Liška
2022-09-27 13:54                     ` Martin Liška
2022-09-28 19:21                       ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220701072057.f2ojdm4pdm5257ni@google.com \
    --to=maskray@google.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hjl.tools@gmail.com \
    --cc=i@maskray.me \
    --cc=pinskia@gmail.com \
    --cc=ro@cebitec.uni-bielefeld.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).