Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-09-21 Thread Richard Biener via Gcc-patches
On Wed, Sep 21, 2022 at 9:49 AM Martin Liška  wrote:
>
> On 9/21/22 09:36, Richard Biener wrote:
> > If it's all configure time what's the point in
> > "deprecating" it?
>
> Note it's one of our options -gz where 'zlib-gnu' is one of the possible 
> option values.

I see.  Not sure if deprecating is really necessary, you need to keep
recognizing
zlib-gnu as no-op anyway.  So I'd just go ahead and remove support for it.

> Martin


Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-09-21 Thread Martin Liška
On 9/21/22 09:36, Richard Biener wrote:
> If it's all configure time what's the point in
> "deprecating" it?

Note it's one of our options -gz where 'zlib-gnu' is one of the possible option 
values.

Martin


Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-09-21 Thread Fangrui Song via Gcc-patches
On Wed, Sep 21, 2022 at 12:37 AM Richard Biener
 wrote:
>
> On Tue, Sep 20, 2022 at 2:55 PM Martin Liška  wrote:
> >
> > On 7/1/22 09:20, Fangrui Song via Gcc-patches wrote:
> > > 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?
> >
> > Hi.
> >
> > I do support the option removal, while I would replace the removal with a 
> > warning
> > saying no compression will be used.
> >
> > >
> > > 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.
> >
> > Agree, the compression format is legacy. I verified all openSUSE packages 
> > (15k)
> > and there's no project actively using it.
> >
> > >
> > > 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.
> >
> > The argument makes sense, it will be even bigger mess.
> >
> > @Richi: Is it something we can deprecate for GCC 13?
>
> What's the practical difference between zlib and zlib-gnu?  Can we just
> map zlib-gnu to zlib?  If it's all configure time what's the point in
> "deprecating" it?

zlib-gnu uses the legacy .zdebug section name with a "ZLIB" magic:
http://www.linker-aliens.org/blogs/ali/entry/elf_section_compression/
https://maskray.me/blog/2022-01-23-compressed-debug-sections has some
history about how the zlib-gabi replacement: ELFCOMPRESS_ZLIB .

FWIW I removed -gz=zlib-gnu from clang and .zdebug support from
various llvm-project tools.

I cannot really find uses of -gz=zlib-gnu in the wild. Users can
always fallback to -Wa, and -Wl, if their tools are so old that
ELFCOMPRESS_ZLIB is unsupported.

> Richard.
>
> >
> > Martin
> >
> > >
> > >> 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
> > 

Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-09-21 Thread Richard Biener via Gcc-patches
On Tue, Sep 20, 2022 at 2:55 PM Martin Liška  wrote:
>
> On 7/1/22 09:20, Fangrui Song via Gcc-patches wrote:
> > 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?
>
> Hi.
>
> I do support the option removal, while I would replace the removal with a 
> warning
> saying no compression will be used.
>
> >
> > 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.
>
> Agree, the compression format is legacy. I verified all openSUSE packages 
> (15k)
> and there's no project actively using it.
>
> >
> > 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.
>
> The argument makes sense, it will be even bigger mess.
>
> @Richi: Is it something we can deprecate for GCC 13?

What's the practical difference between zlib and zlib-gnu?  Can we just
map zlib-gnu to zlib?  If it's all configure time what's the point in
"deprecating" it?

Richard.

>
> Martin
>
> >
> >> 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
> >>> @@ 

Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-09-20 Thread Martin Liška
On 7/1/22 09:20, Fangrui Song via Gcc-patches wrote:
> 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?

Hi.

I do support the option removal, while I would replace the removal with a 
warning
saying no compression will be used.

> 
> 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.

Agree, the compression format is legacy. I verified all openSUSE packages (15k)
and there's no project actively using it.

> 
> 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.

The argument makes sense, it will be even bigger mess.

@Richi: Is it something we can deprecate for GCC 13?

Martin

> 
>> 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 

Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-07-01 Thread Fangrui Song via Gcc-patches

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 

Re: [PATCH] Remove legacy -gz=zlib-gnu

2022-07-01 Thread Andrew Pinski via Gcc-patches
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.
Second, why remove something which is still working?
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).

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
>  

[PATCH] Remove legacy -gz=zlib-gnu

2022-07-01 Thread Fangrui Song via Gcc-patches
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.
---
 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"