* [PATCH] Remove legacy -gz=zlib-gnu
@ 2022-07-01 6:57 Fangrui Song
2022-07-01 7:03 ` Andrew Pinski
0 siblings, 1 reply; 14+ messages in thread
From: Fangrui Song @ 2022-07-01 6:57 UTC (permalink / raw)
To: gcc-patches, H.J. Lu, Rainer Orth; +Cc: Fangrui Song
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.
---
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
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
2022-07-01 6:57 [PATCH] Remove legacy -gz=zlib-gnu Fangrui Song
@ 2022-07-01 7:03 ` Andrew Pinski
2022-07-01 7:20 ` Fangrui Song
0 siblings, 1 reply; 14+ messages in thread
From: Andrew Pinski @ 2022-07-01 7:03 UTC (permalink / raw)
To: Fangrui Song; +Cc: GCC Patches, H.J. Lu, Rainer Orth, Fangrui Song
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.
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
> 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
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
2022-07-01 7:03 ` Andrew Pinski
@ 2022-07-01 7:20 ` Fangrui Song
2022-09-20 12:55 ` Martin Liška
0 siblings, 1 reply; 14+ messages in thread
From: Fangrui Song @ 2022-07-01 7:20 UTC (permalink / raw)
To: Andrew Pinski; +Cc: GCC Patches, H.J. Lu, Rainer Orth, Fangrui Song
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
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
2022-07-01 7:20 ` Fangrui Song
@ 2022-09-20 12:55 ` Martin Liška
2022-09-21 7:36 ` Richard Biener
0 siblings, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-20 12:55 UTC (permalink / raw)
To: Fangrui Song, Andrew Pinski; +Cc: Fangrui Song, GCC Patches, Richard Biener
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
>> <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?
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 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
>>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
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
0 siblings, 2 replies; 14+ messages in thread
From: Richard Biener @ 2022-09-21 7:36 UTC (permalink / raw)
To: Martin Liška; +Cc: Fangrui Song, Andrew Pinski, Fangrui Song, GCC Patches
On Tue, Sep 20, 2022 at 2:55 PM Martin Liška <mliska@suse.cz> 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
> >> <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?
>
> 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
> >>> @@ -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
> >>>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
2022-09-21 7:36 ` Richard Biener
@ 2022-09-21 7:45 ` Fangrui Song
2022-09-21 7:49 ` Martin Liška
1 sibling, 0 replies; 14+ messages in thread
From: Fangrui Song @ 2022-09-21 7:45 UTC (permalink / raw)
To: Richard Biener
Cc: Martin Liška, Andrew Pinski, Fangrui Song, GCC Patches
On Wed, Sep 21, 2022 at 12:37 AM Richard Biener
<richard.guenther@gmail.com> wrote:
>
> On Tue, Sep 20, 2022 at 2:55 PM Martin Liška <mliska@suse.cz> 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
> > >> <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?
> >
> > 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
> > >>> + 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
> > >>>
> >
--
宋方睿
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
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
1 sibling, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-21 7:49 UTC (permalink / raw)
To: Richard Biener; +Cc: Fangrui Song, Andrew Pinski, Fangrui Song, GCC Patches
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
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Remove legacy -gz=zlib-gnu
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
0 siblings, 1 reply; 14+ messages in thread
From: Richard Biener @ 2022-09-21 9:35 UTC (permalink / raw)
To: Martin Liška; +Cc: Fangrui Song, Andrew Pinski, Fangrui Song, GCC Patches
On Wed, Sep 21, 2022 at 9:49 AM Martin Liška <mliska@suse.cz> 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
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] remove -gz=zlib-gnu option value
2022-09-21 9:35 ` Richard Biener
@ 2022-09-22 11:10 ` Martin Liška
2022-09-22 12:26 ` [PATCH v2] " Martin Liška
0 siblings, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-22 11:10 UTC (permalink / raw)
To: Richard Biener; +Cc: Fangrui Song, Andrew Pinski, Fangrui Song, GCC Patches
[-- Attachment #1: Type: text/plain, Size: 1229 bytes --]
On 9/21/22 11:35, Richard Biener wrote:
> On Wed, Sep 21, 2022 at 9:49 AM Martin Liška <mliska@suse.cz> 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.
Hi.
I'm sending patch that makes it no-op and simplifies more the configure.ac detection.
Tested with both ld.bfd and mold:
$ ./xgcc -B. ~/Programming/testcases/a.c -c -gz=zlib --save-temps --verbose 2>&1 | grep =zlib | grep -v COLLECT_GCC_OPTIONS
./cc1 -fpreprocessed a.i -quiet -dumpbase a.c -dumpbase-ext .c -mtune=generic -march=x86-64 -gz=zlib -version -o a.s
./as -v --compress-debug-sections=zlib --64 -o a.o a.s
$ ./xgcc -B. ~/Programming/testcases/a.c -c -gz=zlib-gnu --save-temps --verbose 2>&1 | grep =zlib | grep -v COLLECT_GCC_OPTIONS
./cc1 -fpreprocessed a.i -quiet -dumpbase a.c -dumpbase-ext .c -mtune=generic -march=x86-64 -gz=zlib-gnu -version -o a.s
Ready after it finishes tests?
Thanks,
Martin
>
>> Martin
[-- Attachment #2: 0001-remove-gz-zlib-gnu-option-value.patch --]
[-- Type: text/x-patch, Size: 12396 bytes --]
From 979ab57b853cee002d29d1ac9199021a1866e4fb Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Thu, 22 Sep 2022 13:04:57 +0200
Subject: [PATCH] remove -gz=zlib-gnu option value
The option value is legacy and probably not used at all,
thus ignore it.
gcc/ChangeLog:
* configure: Regenerate.
* configure.ac: Simplify to gcc_cv_ld_compress_debug={0,1}
and gcc_cv_as_compress_debug={0,1}.
* doc/invoke.texi: Document the removal.
* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Simplify and ignore
zlib-gnu.
(ASM_COMPRESS_DEBUG_SPEC): Likewise.
Co-Authored-By: Fangrui Song <i@maskray.me>
---
gcc/configure | 39 +++++++++------------------------------
gcc/configure.ac | 39 +++++++++------------------------------
gcc/doc/invoke.texi | 11 +++++------
gcc/gcc.cc | 26 +++++---------------------
4 files changed, 28 insertions(+), 87 deletions(-)
diff --git a/gcc/configure b/gcc/configure
index 817d765568e..3cea801d5a7 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -29727,16 +29727,9 @@ 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
- 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
+ elif $gcc_cv_as --compress-debug-sections=zlib -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"
@@ -30254,40 +30247,26 @@ $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=1
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
+ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
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=1
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=1
gcc_cv_ld_compress_debug_option="--compress-debug-sections"
fi
else
@@ -30295,7 +30274,7 @@ else
*-*-solaris2*)
# Introduced in Solaris 11.2.
if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
- gcc_cv_ld_compress_debug=3
+ gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="-z compress-sections"
else
gcc_cv_ld_compress_debug=0
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 59f205a1781..b9a39d62d30 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5732,16 +5732,9 @@ 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
- 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
+ elif $gcc_cv_as --compress-debug-sections=zlib -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"
@@ -6130,40 +6123,26 @@ 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=1
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
+ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
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=1
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=1
gcc_cv_ld_compress_debug_option="--compress-debug-sections"
fi
else
@@ -6172,7 +6151,7 @@ changequote(,)dnl
*-*-solaris2*)
# Introduced in Solaris 11.2.
if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
- gcc_cv_ld_compress_debug=3
+ gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="-z compress-sections"
else
gcc_cv_ld_compress_debug=0
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index aa5655764a0..9fdcb5f60d9 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11077,12 +11077,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 15846116795..7578988efa9 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -831,21 +831,11 @@ proper position among the other output files. */
#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=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_LD_COMPRESS_DEBUG.
#endif
@@ -885,31 +875,25 @@ proper position among the other output files. */
#endif
/* Assembler options for compressed debug sections. */
-#if HAVE_LD_COMPRESS_DEBUG < 2
+#if HAVE_LD_COMPRESS_DEBUG == 0
/* Reject if the linker cannot write compressed debug sections. */
#define ASM_COMPRESS_DEBUG_SPEC \
" %{gz*:%e-gz is not supported in this configuration} "
-#else /* HAVE_LD_COMPRESS_DEBUG >= 2 */
+#else /* HAVE_LD_COMPRESS_DEBUG >= 1 */
#if HAVE_AS_COMPRESS_DEBUG == 0
/* 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=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_AS_COMPRESS_DEBUG.
#endif
-#endif /* HAVE_LD_COMPRESS_DEBUG >= 2 */
+#endif /* HAVE_LD_COMPRESS_DEBUG >= 1 */
/* Define ASM_DEBUG_SPEC to be a spec suitable for translating '-g'
to the assembler, when compiling assembly sources only. */
--
2.37.3
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2] remove -gz=zlib-gnu option value
2022-09-22 11:10 ` [PATCH] remove -gz=zlib-gnu option value Martin Liška
@ 2022-09-22 12:26 ` Martin Liška
2022-09-22 12:35 ` Richard Biener
0 siblings, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-22 12:26 UTC (permalink / raw)
To: Richard Biener; +Cc: Fangrui Song, GCC Patches
[-- Attachment #1: Type: text/plain, Size: 255 bytes --]
Hi.
I have a better version of the patch where section compression detection is based
on ld --help, rather than a particular binutils version.
That's much easier and all ld, ld.bfd and mold use the very same option.
Ready to be installed?
Thanks,
Martin
[-- Attachment #2: 0001-remove-gz-zlib-gnu-option-value-v2.patch --]
[-- Type: text/x-patch, Size: 12136 bytes --]
From d2314c942c5c19a5fd5d6b2d45750d863636873c Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Thu, 22 Sep 2022 13:04:57 +0200
Subject: [PATCH] remove -gz=zlib-gnu option value
The option value is legacy and probably not used at all,
thus ignore it.
gcc/ChangeLog:
* configure: Regenerate.
* configure.ac: Simplify to gcc_cv_ld_compress_debug={0,1}
and gcc_cv_as_compress_debug={0,1}.
* doc/invoke.texi: Document the removal.
* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Simplify and ignore
zlib-gnu.
(ASM_COMPRESS_DEBUG_SPEC): Likewise.
Co-Authored-By: Fangrui Song <i@maskray.me>
---
gcc/configure | 49 +++++----------------------------------------
gcc/configure.ac | 49 +++++----------------------------------------
gcc/doc/invoke.texi | 11 +++++-----
gcc/gcc.cc | 26 +++++-------------------
4 files changed, 20 insertions(+), 115 deletions(-)
diff --git a/gcc/configure b/gcc/configure
index 817d765568e..70a013e9a30 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -29727,16 +29727,9 @@ 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
- 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
+ elif $gcc_cv_as --compress-debug-sections=zlib -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"
@@ -30254,48 +30247,16 @@ $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.
-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
+# GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26.
+if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; 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
- 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*)
# Introduced in Solaris 11.2.
if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
- gcc_cv_ld_compress_debug=3
+ gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="-z compress-sections"
else
gcc_cv_ld_compress_debug=0
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 59f205a1781..96e10d7c194 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5732,16 +5732,9 @@ 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
- 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
+ elif $gcc_cv_as --compress-debug-sections=zlib -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"
@@ -6130,49 +6123,17 @@ 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.
-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
+# GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26.
+if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; 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
- 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
*-*-solaris2*)
# Introduced in Solaris 11.2.
if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
- gcc_cv_ld_compress_debug=3
+ gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="-z compress-sections"
else
gcc_cv_ld_compress_debug=0
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index aa5655764a0..9fdcb5f60d9 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11077,12 +11077,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 15846116795..7578988efa9 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -831,21 +831,11 @@ proper position among the other output files. */
#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=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_LD_COMPRESS_DEBUG.
#endif
@@ -885,31 +875,25 @@ proper position among the other output files. */
#endif
/* Assembler options for compressed debug sections. */
-#if HAVE_LD_COMPRESS_DEBUG < 2
+#if HAVE_LD_COMPRESS_DEBUG == 0
/* Reject if the linker cannot write compressed debug sections. */
#define ASM_COMPRESS_DEBUG_SPEC \
" %{gz*:%e-gz is not supported in this configuration} "
-#else /* HAVE_LD_COMPRESS_DEBUG >= 2 */
+#else /* HAVE_LD_COMPRESS_DEBUG >= 1 */
#if HAVE_AS_COMPRESS_DEBUG == 0
/* 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=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_AS_COMPRESS_DEBUG.
#endif
-#endif /* HAVE_LD_COMPRESS_DEBUG >= 2 */
+#endif /* HAVE_LD_COMPRESS_DEBUG >= 1 */
/* Define ASM_DEBUG_SPEC to be a spec suitable for translating '-g'
to the assembler, when compiling assembly sources only. */
--
2.37.3
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] remove -gz=zlib-gnu option value
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
0 siblings, 1 reply; 14+ messages in thread
From: Richard Biener @ 2022-09-22 12:35 UTC (permalink / raw)
To: Martin Liška; +Cc: Fangrui Song, GCC Patches
On Thu, Sep 22, 2022 at 2:26 PM Martin Liška <mliska@suse.cz> wrote:
>
> Hi.
>
> I have a better version of the patch where section compression detection is based
> on ld --help, rather than a particular binutils version.
> That's much easier and all ld, ld.bfd and mold use the very same option.
>
> Ready to be installed?
OK. Can you document the change in changes.html?
> Thanks,
> Martin
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] support -gz=zstd for both linker and assembler
2022-09-22 12:35 ` Richard Biener
@ 2022-09-22 12:51 ` Martin Liška
2022-09-27 13:54 ` Martin Liška
0 siblings, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-22 12:51 UTC (permalink / raw)
To: gcc-patches; +Cc: Fangrui Song, Richard Biener
Hi.
Tested with Fangrui's patch set sent to binutils ML and mold linker.
$ gcc -g -gz=zstd a.c --save-temps --verbose 2>&1 | grep debug-sections
/home/marxin/Programming/binutils/objdir/gas/as-new -v --gdwarf-5 --compress-debug-sections=zstd --64 -o a.o a.s
/home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/collect2 -plugin /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/liblto_plugin.so -plugin-opt=/home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper -plugin-opt=-fresolution=a.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 --compress-debug-sections=zstd /lib/../lib64/crt1.o /lib/../lib64/crti.o /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtbegin.o -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../.. a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtend.o /lib/../lib64/crtn.o
$ gdb a.out
...
BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
"/home/marxin/Programming/testcases/a.out": not in executable format: file format not recognized
So it's really compressed with zstd. I'm going to write ChangeLog entry for zlib-gnu once this gets merged as well.
Ready to be installed?
Thanks,
Martin
PR driver/106897
gcc/ChangeLog:
* common.opt: Add -gz=zstd value.
* configure.ac: Detect --compress-debug-sections=zstd
for both linker and assembler.
* configure: Regenerate.
* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Handle -gz=zstd.
(ASM_COMPRESS_DEBUG_SPEC): Likewise.
---
gcc/common.opt | 5 ++++-
gcc/configure | 11 +++++++++--
gcc/configure.ac | 11 +++++++++--
gcc/gcc.cc | 15 +++++++++++++++
4 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/gcc/common.opt b/gcc/common.opt
index 06ef768ab78..68370db816b 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -3419,7 +3419,10 @@ EnumValue
Enum(compressed_debug_sections) String(zlib) Value(1)
EnumValue
-Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
+Enum(compressed_debug_sections) String(zstd) Value(2)
+
+EnumValue
+Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
gz
Common Driver
diff --git a/gcc/configure b/gcc/configure
index 70a013e9a30..ce4e1859e1f 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -29727,13 +29727,16 @@ 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=zlib,
- # defaulting to the ELF gABI format.
elif $gcc_cv_as --compress-debug-sections=zlib -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"
+ # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
+ if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
+ then
+ gcc_cv_as_compress_debug=2
+ fi
else
gcc_cv_as_compress_debug=0
fi
@@ -30251,6 +30254,10 @@ $as_echo_n "checking linker for compressed debug sections... " >&6; }
if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="--compress-debug-sections"
+ # Detect zstd debug section compression support
+ if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
+ gcc_cv_ld_compress_debug=2
+ fi
else
case "${target}" in
*-*-solaris2*)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 96e10d7c194..b6bafa8b7d6 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5732,13 +5732,16 @@ 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=zlib,
- # defaulting to the ELF gABI format.
elif $gcc_cv_as --compress-debug-sections=zlib -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"
+ # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
+ if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
+ then
+ gcc_cv_as_compress_debug=2
+ fi
else
gcc_cv_as_compress_debug=0
fi])
@@ -6127,6 +6130,10 @@ AC_MSG_CHECKING(linker for compressed debug sections)
if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="--compress-debug-sections"
+ # Detect zstd debug section compression support
+ if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
+ gcc_cv_ld_compress_debug=2
+ fi
else
changequote(,)dnl
case "${target}" in
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 7578988efa9..2ffbbc0bf2a 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -835,6 +835,14 @@ proper position among the other output files. */
#define LINK_COMPRESS_DEBUG_SPEC \
" %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
" %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
+ " %{gz*:%e-gz=zstd is not supported in this configuration} " \
+ " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
+#elif HAVE_LD_COMPRESS_DEBUG == 2
+/* ELF gABI style and ZSTD. */
+#define LINK_COMPRESS_DEBUG_SPEC \
+ " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
+ " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
+ " %{gz=zstd:" LD_COMPRESS_DEBUG_OPTION "=zstd}" \
" %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_LD_COMPRESS_DEBUG.
@@ -890,6 +898,13 @@ proper position among the other output files. */
" %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
" %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
" %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
+#elif HAVE_AS_COMPRESS_DEBUG == 2
+/* ELF gABI style and ZSTD. */
+#define ASM_COMPRESS_DEBUG_SPEC \
+ " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
+ " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
+ " %{gz=zstd:" AS_COMPRESS_DEBUG_OPTION "=zstd}" \
+ " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
#else
#error Unknown value for HAVE_AS_COMPRESS_DEBUG.
#endif
--
2.37.3
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] support -gz=zstd for both linker and assembler
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
0 siblings, 1 reply; 14+ messages in thread
From: Martin Liška @ 2022-09-27 13:54 UTC (permalink / raw)
To: gcc-patches; +Cc: Richard Biener
PING^1
On 9/22/22 14:51, Martin Liška wrote:
> Hi.
>
> Tested with Fangrui's patch set sent to binutils ML and mold linker.
>
> $ gcc -g -gz=zstd a.c --save-temps --verbose 2>&1 | grep debug-sections
> /home/marxin/Programming/binutils/objdir/gas/as-new -v --gdwarf-5 --compress-debug-sections=zstd --64 -o a.o a.s
> /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/collect2 -plugin /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/liblto_plugin.so -plugin-opt=/home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper -plugin-opt=-fresolution=a.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 --compress-debug-sections=zstd /lib/../lib64/crt1.o /lib/../lib64/crti.o /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtbegin.o -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../.. a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtend.o /lib/../lib64/crtn.o
>
> $ gdb a.out
> ...
> BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
> BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
> "/home/marxin/Programming/testcases/a.out": not in executable format: file format not recognized
>
> So it's really compressed with zstd. I'm going to write ChangeLog entry for zlib-gnu once this gets merged as well.
>
> Ready to be installed?
> Thanks,
> Martin
>
> PR driver/106897
>
> gcc/ChangeLog:
>
> * common.opt: Add -gz=zstd value.
> * configure.ac: Detect --compress-debug-sections=zstd
> for both linker and assembler.
> * configure: Regenerate.
> * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Handle -gz=zstd.
> (ASM_COMPRESS_DEBUG_SPEC): Likewise.
> ---
> gcc/common.opt | 5 ++++-
> gcc/configure | 11 +++++++++--
> gcc/configure.ac | 11 +++++++++--
> gcc/gcc.cc | 15 +++++++++++++++
> 4 files changed, 37 insertions(+), 5 deletions(-)
>
> diff --git a/gcc/common.opt b/gcc/common.opt
> index 06ef768ab78..68370db816b 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -3419,7 +3419,10 @@ EnumValue
> Enum(compressed_debug_sections) String(zlib) Value(1)
>
> EnumValue
> -Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
> +Enum(compressed_debug_sections) String(zstd) Value(2)
> +
> +EnumValue
> +Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
>
> gz
> Common Driver
> diff --git a/gcc/configure b/gcc/configure
> index 70a013e9a30..ce4e1859e1f 100755
> --- a/gcc/configure
> +++ b/gcc/configure
> @@ -29727,13 +29727,16 @@ 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=zlib,
> - # defaulting to the ELF gABI format.
> elif $gcc_cv_as --compress-debug-sections=zlib -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"
> + # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
> + if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
> + then
> + gcc_cv_as_compress_debug=2
> + fi
> else
> gcc_cv_as_compress_debug=0
> fi
> @@ -30251,6 +30254,10 @@ $as_echo_n "checking linker for compressed debug sections... " >&6; }
> if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
> gcc_cv_ld_compress_debug=1
> gcc_cv_ld_compress_debug_option="--compress-debug-sections"
> + # Detect zstd debug section compression support
> + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
> + gcc_cv_ld_compress_debug=2
> + fi
> else
> case "${target}" in
> *-*-solaris2*)
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 96e10d7c194..b6bafa8b7d6 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -5732,13 +5732,16 @@ 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=zlib,
> - # defaulting to the ELF gABI format.
> elif $gcc_cv_as --compress-debug-sections=zlib -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"
> + # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
> + if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
> + then
> + gcc_cv_as_compress_debug=2
> + fi
> else
> gcc_cv_as_compress_debug=0
> fi])
> @@ -6127,6 +6130,10 @@ AC_MSG_CHECKING(linker for compressed debug sections)
> if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
> gcc_cv_ld_compress_debug=1
> gcc_cv_ld_compress_debug_option="--compress-debug-sections"
> + # Detect zstd debug section compression support
> + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
> + gcc_cv_ld_compress_debug=2
> + fi
> else
> changequote(,)dnl
> case "${target}" in
> diff --git a/gcc/gcc.cc b/gcc/gcc.cc
> index 7578988efa9..2ffbbc0bf2a 100644
> --- a/gcc/gcc.cc
> +++ b/gcc/gcc.cc
> @@ -835,6 +835,14 @@ proper position among the other output files. */
> #define LINK_COMPRESS_DEBUG_SPEC \
> " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
> " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
> + " %{gz*:%e-gz=zstd is not supported in this configuration} " \
> + " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> +#elif HAVE_LD_COMPRESS_DEBUG == 2
> +/* ELF gABI style and ZSTD. */
> +#define LINK_COMPRESS_DEBUG_SPEC \
> + " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
> + " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
> + " %{gz=zstd:" LD_COMPRESS_DEBUG_OPTION "=zstd}" \
> " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> #else
> #error Unknown value for HAVE_LD_COMPRESS_DEBUG.
> @@ -890,6 +898,13 @@ proper position among the other output files. */
> " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
> " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
> " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> +#elif HAVE_AS_COMPRESS_DEBUG == 2
> +/* ELF gABI style and ZSTD. */
> +#define ASM_COMPRESS_DEBUG_SPEC \
> + " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
> + " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
> + " %{gz=zstd:" AS_COMPRESS_DEBUG_OPTION "=zstd}" \
> + " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> #else
> #error Unknown value for HAVE_AS_COMPRESS_DEBUG.
> #endif
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] support -gz=zstd for both linker and assembler
2022-09-27 13:54 ` Martin Liška
@ 2022-09-28 19:21 ` Richard Biener
0 siblings, 0 replies; 14+ messages in thread
From: Richard Biener @ 2022-09-28 19:21 UTC (permalink / raw)
To: Martin Liška; +Cc: gcc-patches
On Tue, Sep 27, 2022 at 3:54 PM Martin Liška <mliska@suse.cz> wrote:
>
> PING^1
OK
Thanks,
Richard.
> On 9/22/22 14:51, Martin Liška wrote:
> > Hi.
> >
> > Tested with Fangrui's patch set sent to binutils ML and mold linker.
> >
> > $ gcc -g -gz=zstd a.c --save-temps --verbose 2>&1 | grep debug-sections
> > /home/marxin/Programming/binutils/objdir/gas/as-new -v --gdwarf-5 --compress-debug-sections=zstd --64 -o a.o a.s
> > /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/collect2 -plugin /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/liblto_plugin.so -plugin-opt=/home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper -plugin-opt=-fresolution=a.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 --compress-debug-sections=zstd /lib/../lib64/crt1.o /lib/../lib64/crti.o /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtbegin.o -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../.. a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtend.o /lib/../lib64/crtn.o
> >
> > $ gdb a.out
> > ...
> > BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
> > BFD: /home/marxin/Programming/testcases/a.out: unable to initialize decompress status for section .debug_abbrev
> > "/home/marxin/Programming/testcases/a.out": not in executable format: file format not recognized
> >
> > So it's really compressed with zstd. I'm going to write ChangeLog entry for zlib-gnu once this gets merged as well.
> >
> > Ready to be installed?
> > Thanks,
> > Martin
> >
> > PR driver/106897
> >
> > gcc/ChangeLog:
> >
> > * common.opt: Add -gz=zstd value.
> > * configure.ac: Detect --compress-debug-sections=zstd
> > for both linker and assembler.
> > * configure: Regenerate.
> > * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Handle -gz=zstd.
> > (ASM_COMPRESS_DEBUG_SPEC): Likewise.
> > ---
> > gcc/common.opt | 5 ++++-
> > gcc/configure | 11 +++++++++--
> > gcc/configure.ac | 11 +++++++++--
> > gcc/gcc.cc | 15 +++++++++++++++
> > 4 files changed, 37 insertions(+), 5 deletions(-)
> >
> > diff --git a/gcc/common.opt b/gcc/common.opt
> > index 06ef768ab78..68370db816b 100644
> > --- a/gcc/common.opt
> > +++ b/gcc/common.opt
> > @@ -3419,7 +3419,10 @@ EnumValue
> > Enum(compressed_debug_sections) String(zlib) Value(1)
> >
> > EnumValue
> > -Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
> > +Enum(compressed_debug_sections) String(zstd) Value(2)
> > +
> > +EnumValue
> > +Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
> >
> > gz
> > Common Driver
> > diff --git a/gcc/configure b/gcc/configure
> > index 70a013e9a30..ce4e1859e1f 100755
> > --- a/gcc/configure
> > +++ b/gcc/configure
> > @@ -29727,13 +29727,16 @@ 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=zlib,
> > - # defaulting to the ELF gABI format.
> > elif $gcc_cv_as --compress-debug-sections=zlib -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"
> > + # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
> > + if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
> > + then
> > + gcc_cv_as_compress_debug=2
> > + fi
> > else
> > gcc_cv_as_compress_debug=0
> > fi
> > @@ -30251,6 +30254,10 @@ $as_echo_n "checking linker for compressed debug sections... " >&6; }
> > if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
> > gcc_cv_ld_compress_debug=1
> > gcc_cv_ld_compress_debug_option="--compress-debug-sections"
> > + # Detect zstd debug section compression support
> > + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
> > + gcc_cv_ld_compress_debug=2
> > + fi
> > else
> > case "${target}" in
> > *-*-solaris2*)
> > diff --git a/gcc/configure.ac b/gcc/configure.ac
> > index 96e10d7c194..b6bafa8b7d6 100644
> > --- a/gcc/configure.ac
> > +++ b/gcc/configure.ac
> > @@ -5732,13 +5732,16 @@ 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=zlib,
> > - # defaulting to the ELF gABI format.
> > elif $gcc_cv_as --compress-debug-sections=zlib -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"
> > + # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
> > + if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
> > + then
> > + gcc_cv_as_compress_debug=2
> > + fi
> > else
> > gcc_cv_as_compress_debug=0
> > fi])
> > @@ -6127,6 +6130,10 @@ AC_MSG_CHECKING(linker for compressed debug sections)
> > if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
> > gcc_cv_ld_compress_debug=1
> > gcc_cv_ld_compress_debug_option="--compress-debug-sections"
> > + # Detect zstd debug section compression support
> > + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
> > + gcc_cv_ld_compress_debug=2
> > + fi
> > else
> > changequote(,)dnl
> > case "${target}" in
> > diff --git a/gcc/gcc.cc b/gcc/gcc.cc
> > index 7578988efa9..2ffbbc0bf2a 100644
> > --- a/gcc/gcc.cc
> > +++ b/gcc/gcc.cc
> > @@ -835,6 +835,14 @@ proper position among the other output files. */
> > #define LINK_COMPRESS_DEBUG_SPEC \
> > " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
> > " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
> > + " %{gz*:%e-gz=zstd is not supported in this configuration} " \
> > + " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> > +#elif HAVE_LD_COMPRESS_DEBUG == 2
> > +/* ELF gABI style and ZSTD. */
> > +#define LINK_COMPRESS_DEBUG_SPEC \
> > + " %{gz|gz=zlib:" LD_COMPRESS_DEBUG_OPTION "=zlib}" \
> > + " %{gz=none:" LD_COMPRESS_DEBUG_OPTION "=none}" \
> > + " %{gz=zstd:" LD_COMPRESS_DEBUG_OPTION "=zstd}" \
> > " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> > #else
> > #error Unknown value for HAVE_LD_COMPRESS_DEBUG.
> > @@ -890,6 +898,13 @@ proper position among the other output files. */
> > " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
> > " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
> > " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> > +#elif HAVE_AS_COMPRESS_DEBUG == 2
> > +/* ELF gABI style and ZSTD. */
> > +#define ASM_COMPRESS_DEBUG_SPEC \
> > + " %{gz|gz=zlib:" AS_COMPRESS_DEBUG_OPTION "=zlib}" \
> > + " %{gz=none:" AS_COMPRESS_DEBUG_OPTION "=none}" \
> > + " %{gz=zstd:" AS_COMPRESS_DEBUG_OPTION "=zstd}" \
> > + " %{gz=zlib-gnu:}" /* Ignore silently zlib-gnu option value. */
> > #else
> > #error Unknown value for HAVE_AS_COMPRESS_DEBUG.
> > #endif
>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2022-09-28 19:22 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-01 6:57 [PATCH] Remove legacy -gz=zlib-gnu Fangrui Song
2022-07-01 7:03 ` Andrew Pinski
2022-07-01 7:20 ` Fangrui Song
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
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).