[2/2] add --enable-default-compressed-debug-sections-algorithm configure option

Message ID b8acdd83-f33a-74b8-e21a-23719a0b1a60@suse.cz
State Accepted, archived
Headers
Series [1/2] refactor usage of compressed_debug_section_type |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Martin Liška Oct. 3, 2022, 7:50 a.m. UTC
  ChangeLog:

	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
	* configure: Regenerate.

gas/ChangeLog:

	* NEWS: Document the new option.
	* as.c (flag_compress_debug): Set default algorithm based
	on the configure option.
	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
	* configure: Regenerate.
	* config.in: Likewise.

ld/ChangeLog:

	* NEWS: Document the new option.
	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
	* configure: Regenerate.
	* config.in: Likewise.
	* ldmain.c: Set default algorithm based
	on the configure option.
---
 configure        | 13 +++++++++++++
 configure.ac     |  6 ++++++
 gas/NEWS         |  3 +++
 gas/as.c         |  2 +-
 gas/config.in    |  3 +++
 gas/configure    | 23 +++++++++++++++++++++--
 gas/configure.ac | 12 ++++++++++++
 ld/NEWS          |  3 +++
 ld/config.in     |  3 +++
 ld/configure     | 23 +++++++++++++++++++++--
 ld/configure.ac  | 12 ++++++++++++
 ld/ldmain.c      |  2 +-
 12 files changed, 99 insertions(+), 6 deletions(-)
  

Comments

Martin Liška Oct. 11, 2022, 7:14 a.m. UTC | #1
PING^1

On 10/3/22 09:50, Martin Liška wrote:
> ChangeLog:
> 
> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
> 	* configure: Regenerate.
> 
> gas/ChangeLog:
> 
> 	* NEWS: Document the new option.
> 	* as.c (flag_compress_debug): Set default algorithm based
> 	on the configure option.
> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
> 	* configure: Regenerate.
> 	* config.in: Likewise.
> 
> ld/ChangeLog:
> 
> 	* NEWS: Document the new option.
> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
> 	* configure: Regenerate.
> 	* config.in: Likewise.
> 	* ldmain.c: Set default algorithm based
> 	on the configure option.
> ---
>  configure        | 13 +++++++++++++
>  configure.ac     |  6 ++++++
>  gas/NEWS         |  3 +++
>  gas/as.c         |  2 +-
>  gas/config.in    |  3 +++
>  gas/configure    | 23 +++++++++++++++++++++--
>  gas/configure.ac | 12 ++++++++++++
>  ld/NEWS          |  3 +++
>  ld/config.in     |  3 +++
>  ld/configure     | 23 +++++++++++++++++++++--
>  ld/configure.ac  | 12 ++++++++++++
>  ld/ldmain.c      |  2 +-
>  12 files changed, 99 insertions(+), 6 deletions(-)
> 
> diff --git a/configure b/configure
> index f14e0efd675..a430e625c75 100755
> --- a/configure
> +++ b/configure
> @@ -792,6 +792,7 @@ enable_gold
>  enable_ld
>  enable_gprofng
>  enable_compressed_debug_sections
> +enable_default_compressed_debug_sections_algorithm
>  enable_year2038
>  enable_libquadmath
>  enable_libquadmath_support
> @@ -1523,6 +1524,9 @@ Optional Features:
>    --enable-compressed-debug-sections={all,gas,gold,ld,none}
>                            Enable compressed debug sections for gas, gold or ld
>                            by default
> +  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
> +                          Default compression algorithm for
> +                          --enable-compressed-debug-sections.
>    --enable-year2038       enable support for timestamps past the year 2038
>    --disable-libquadmath   do not build libquadmath directory
>    --disable-libquadmath-support
> @@ -3119,6 +3123,15 @@ else
>  fi
>  
>  
> +# Select default compression algorithm.
> +# Check whether --enable-default_compressed_debug_sections_algorithm was given.
> +if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
> +  enableval=$enable_default_compressed_debug_sections_algorithm;
> +else
> +  default_compressed_debug_sections_algorithm=
> +fi
> +
> +
>  # Configure extra directories which are host specific
>  
>  case "${host}" in
> diff --git a/configure.ac b/configure.ac
> index 0152c69292e..9c4c9e13907 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -422,6 +422,12 @@ AC_ARG_ENABLE(compressed_debug_sections,
>    fi
>  ], [enable_compressed_debug_sections=])
>  
> +# Select default compression algorithm.
> +AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
> +[AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
> +		[Default compression algorithm for --enable-compressed-debug-sections.])],
> +[], [default_compressed_debug_sections_algorithm=])
> +
>  # Configure extra directories which are host specific
>  
>  case "${host}" in
> diff --git a/gas/NEWS b/gas/NEWS
> index 9a8b726b942..d9043d9d469 100644
> --- a/gas/NEWS
> +++ b/gas/NEWS
> @@ -2,6 +2,9 @@
>  
>  * gas now supports --compress-debug-sections=zstd to compress
>    debug sections with zstd.
> +* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
> +  that selects the default compression algorithm
> +  for --enable-compressed-debug-sections.
>  
>  Changes in 2.39:
>  
> diff --git a/gas/as.c b/gas/as.c
> index a5c2d2459f7..d42dd5394b5 100644
> --- a/gas/as.c
> +++ b/gas/as.c
> @@ -226,7 +226,7 @@ print_version_id (void)
>  
>  #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
>  enum compressed_debug_section_type flag_compress_debug
> -  = COMPRESS_DEBUG_GABI_ZLIB;
> +  = DEFAULT_COMPRESSED_DEBUG_ALGORITHM;
>  #endif
>  
>  static void
> diff --git a/gas/config.in b/gas/config.in
> index 0d1668a3eac..232bc350759 100644
> --- a/gas/config.in
> +++ b/gas/config.in
> @@ -22,6 +22,9 @@
>  /* Default architecture. */
>  #undef DEFAULT_ARCH
>  
> +/* Default compression algorithm for --enable-compressed-debug-sections. */
> +#undef DEFAULT_COMPRESSED_DEBUG_ALGORITHM
> +
>  /* Default CRIS architecture. */
>  #undef DEFAULT_CRIS_ARCH
>  
> diff --git a/gas/configure b/gas/configure
> index 02cded59b6a..cae14c066d2 100755
> --- a/gas/configure
> +++ b/gas/configure
> @@ -810,6 +810,7 @@ enable_largefile
>  enable_targets
>  enable_checking
>  enable_compressed_debug_sections
> +enable_default_compressed_debug_sections_algorithm
>  enable_x86_relax_relocations
>  enable_elf_stt_common
>  enable_generate_build_notes
> @@ -1476,6 +1477,9 @@ Optional Features:
>    --enable-checking       enable run-time checks
>    --enable-compressed-debug-sections={all,gas,none}
>                            compress debug sections by default
> +  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
> +                          Default compression algorithm for
> +                          --enable-compressed-debug-sections.
>    --enable-x86-relax-relocations
>                            generate x86 relax relocations by default
>    --enable-elf-stt-common generate ELF common symbols with STT_COMMON type by
> @@ -10722,7 +10726,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 10725 "configure"
> +#line 10729 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -10828,7 +10832,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 10831 "configure"
> +#line 10835 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -11502,6 +11506,15 @@ if test "${enable_compressed_debug_sections+set}" = set; then :
>  esac
>  fi
>  
> +# Select default compression algorithm.
> +ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
> +# Check whether --enable-default_compressed_debug_sections_algorithm was given.
> +if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
> +  enableval=$enable_default_compressed_debug_sections_algorithm; case "${enableval}" in
> +   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
> +esac
> +fi
> +
>  # PR gas/19520
>  # Decide if x86 assembler should generate relax relocations.
>  ac_default_x86_relax_relocations=unset
> @@ -12671,6 +12684,12 @@ $as_echo "#define DEFAULT_FLAG_COMPRESS_DEBUG 1" >>confdefs.h
>  
>  fi
>  
> +
> +cat >>confdefs.h <<_ACEOF
> +#define DEFAULT_COMPRESSED_DEBUG_ALGORITHM $ac_default_compressed_debug_sections_algorithm
> +_ACEOF
> +
> +
>  # Turn on all targets if possible
>  if test ${all_targets} = "yes"; then
>    case ${target_cpu_type} in
> diff --git a/gas/configure.ac b/gas/configure.ac
> index e6f3298cb3e..feb43399ce8 100644
> --- a/gas/configure.ac
> +++ b/gas/configure.ac
> @@ -76,6 +76,15 @@ AC_ARG_ENABLE(compressed_debug_sections,
>    *)   ac_default_compressed_debug_sections=unset ;;
>  esac])dnl
>  
> +# Select default compression algorithm.
> +ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
> +AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
> +	      AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
> +	      [Default compression algorithm for --enable-compressed-debug-sections.]),
> +[case "${enableval}" in
> +   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
> +esac])dnl
> +
>  # PR gas/19520
>  # Decide if x86 assembler should generate relax relocations.
>  ac_default_x86_relax_relocations=unset
> @@ -755,6 +764,9 @@ if test x$ac_default_compressed_debug_sections = xyes ; then
>    AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
>  fi
>  
> +AC_DEFINE_UNQUOTED(DEFAULT_COMPRESSED_DEBUG_ALGORITHM, $ac_default_compressed_debug_sections_algorithm,
> +		   [Default compression algorithm for --enable-compressed-debug-sections.])
> +
>  # Turn on all targets if possible
>  if test ${all_targets} = "yes"; then
>    case ${target_cpu_type} in
> diff --git a/ld/NEWS b/ld/NEWS
> index dfe2690d9f2..d7ceb0c68b6 100644
> --- a/ld/NEWS
> +++ b/ld/NEWS
> @@ -2,6 +2,9 @@
>  
>  * ld now supports zstd compressed debug sections.  The new option
>    --compress-debug-sections=zstd compresses debug sections with zstd.
> +* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
> +  that selects the default compression algorithm
> +  for --enable-compressed-debug-sections.
>  
>  Changes in 2.39:
>  
> diff --git a/ld/config.in b/ld/config.in
> index 3916740eee4..ad0dc6a106c 100644
> --- a/ld/config.in
> +++ b/ld/config.in
> @@ -7,6 +7,9 @@
>  #endif
>  #define __CONFIG_H__ 1
>  
> +/* Default compression algorithm for --enable-compressed-debug-sections. */
> +#undef DEFAULT_COMPRESSED_DEBUG_ALGORITHM
> +
>  /* Define to 1 if you want to emit gnu hash in the ELF linker by default. */
>  #undef DEFAULT_EMIT_GNU_HASH
>  
> diff --git a/ld/configure b/ld/configure
> index 9dd3ed5f1e7..7906f52aadf 100755
> --- a/ld/configure
> +++ b/ld/configure
> @@ -841,6 +841,7 @@ with_sysroot
>  enable_gold
>  enable_got
>  enable_compressed_debug_sections
> +enable_default_compressed_debug_sections_algorithm
>  enable_new_dtags
>  enable_relro
>  enable_textrel_check
> @@ -1524,6 +1525,9 @@ Optional Features:
>                            multigot)
>    --enable-compressed-debug-sections={all,ld,none}
>                            compress debug sections by default]
> +  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
> +                          Default compression algorithm for
> +                          --enable-compressed-debug-sections.
>    --enable-new-dtags      set DT_RUNPATH instead of DT_RPATH by default]
>    --enable-relro          enable -z relro in ELF linker by default
>    --enable-textrel-check=[yes|no|warning|error]
> @@ -11620,7 +11624,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11623 "configure"
> +#line 11627 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -11726,7 +11730,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11729 "configure"
> +#line 11733 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -15544,6 +15548,15 @@ if test "${enable_compressed_debug_sections+set}" = set; then :
>  esac
>  fi
>  
> +# Select default compression algorithm.
> +ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
> +# Check whether --enable-default_compressed_debug_sections_algorithm was given.
> +if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
> +  enableval=$enable_default_compressed_debug_sections_algorithm; case "${enableval}" in
> +   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
> +esac
> +fi
> +
>  # Decide setting DT_RUNPATH instead of DT_RPATH by default
>  ac_default_new_dtags=unset
>  # Provide a configure time option to override our default.
> @@ -17340,6 +17353,12 @@ $as_echo "#define DEFAULT_FLAG_COMPRESS_DEBUG 1" >>confdefs.h
>  
>  fi
>  
> +
> +cat >>confdefs.h <<_ACEOF
> +#define DEFAULT_COMPRESSED_DEBUG_ALGORITHM $ac_default_compressed_debug_sections_algorithm
> +_ACEOF
> +
> +
>  if test "${ac_default_new_dtags}" = unset; then
>    ac_default_new_dtags=0
>  fi
> diff --git a/ld/configure.ac b/ld/configure.ac
> index f1b2f9897f8..6123ea78611 100644
> --- a/ld/configure.ac
> +++ b/ld/configure.ac
> @@ -163,6 +163,15 @@ AC_ARG_ENABLE(compressed_debug_sections,
>    ,no, | ,none,)  ac_default_compressed_debug_sections=no ;;
>  esac])dnl
>  
> +# Select default compression algorithm.
> +ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
> +AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
> +	      AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
> +	      [Default compression algorithm for --enable-compressed-debug-sections.]),
> +[case "${enableval}" in
> +   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
> +esac])dnl
> +
>  # Decide setting DT_RUNPATH instead of DT_RPATH by default
>  ac_default_new_dtags=unset
>  # Provide a configure time option to override our default.
> @@ -510,6 +519,9 @@ if test x$ac_default_compressed_debug_sections = xyes ; then
>    AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
>  fi
>  
> +AC_DEFINE_UNQUOTED(DEFAULT_COMPRESSED_DEBUG_ALGORITHM, $ac_default_compressed_debug_sections_algorithm,
> +		   [Default compression algorithm for --enable-compressed-debug-sections.])
> +
>  if test "${ac_default_new_dtags}" = unset; then
>    ac_default_new_dtags=0
>  fi
> diff --git a/ld/ldmain.c b/ld/ldmain.c
> index d63002c994a..10f7a0538aa 100644
> --- a/ld/ldmain.c
> +++ b/ld/ldmain.c
> @@ -352,7 +352,7 @@ main (int argc, char **argv)
>    link_info.spare_dynamic_tags = 5;
>    link_info.path_separator = ':';
>  #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
> -  link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
> +  link_info.compress_debug = DEFAULT_COMPRESSED_DEBUG_ALGORITHM;
>  #endif
>  #ifdef DEFAULT_NEW_DTAGS
>    link_info.new_dtags = DEFAULT_NEW_DTAGS;
  
Nick Clifton Oct. 11, 2022, 12:08 p.m. UTC | #2
Hi Martin,

> PING^1
Sorry!

> On 10/3/22 09:50, Martin Liška wrote:
>> ChangeLog:
>>
>> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
>> 	* configure: Regenerate.
>>
>> gas/ChangeLog:
>>
>> 	* NEWS: Document the new option.
>> 	* as.c (flag_compress_debug): Set default algorithm based
>> 	on the configure option.
>> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
>> 	* configure: Regenerate.
>> 	* config.in: Likewise.
>>
>> ld/ChangeLog:
>>
>> 	* NEWS: Document the new option.
>> 	* configure.ac: Add --enable-default-compressed-debug-sections-algorithm.
>> 	* configure: Regenerate.
>> 	* config.in: Likewise.
>> 	* ldmain.c: Set default algorithm based
>> 	on the configure option.
  Approved - please apply.

Cheers
   Nick
  

Patch

diff --git a/configure b/configure
index f14e0efd675..a430e625c75 100755
--- a/configure
+++ b/configure
@@ -792,6 +792,7 @@  enable_gold
 enable_ld
 enable_gprofng
 enable_compressed_debug_sections
+enable_default_compressed_debug_sections_algorithm
 enable_year2038
 enable_libquadmath
 enable_libquadmath_support
@@ -1523,6 +1524,9 @@  Optional Features:
   --enable-compressed-debug-sections={all,gas,gold,ld,none}
                           Enable compressed debug sections for gas, gold or ld
                           by default
+  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+                          Default compression algorithm for
+                          --enable-compressed-debug-sections.
   --enable-year2038       enable support for timestamps past the year 2038
   --disable-libquadmath   do not build libquadmath directory
   --disable-libquadmath-support
@@ -3119,6 +3123,15 @@  else
 fi
 
 
+# Select default compression algorithm.
+# Check whether --enable-default_compressed_debug_sections_algorithm was given.
+if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
+  enableval=$enable_default_compressed_debug_sections_algorithm;
+else
+  default_compressed_debug_sections_algorithm=
+fi
+
+
 # Configure extra directories which are host specific
 
 case "${host}" in
diff --git a/configure.ac b/configure.ac
index 0152c69292e..9c4c9e13907 100644
--- a/configure.ac
+++ b/configure.ac
@@ -422,6 +422,12 @@  AC_ARG_ENABLE(compressed_debug_sections,
   fi
 ], [enable_compressed_debug_sections=])
 
+# Select default compression algorithm.
+AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
+[AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
+		[Default compression algorithm for --enable-compressed-debug-sections.])],
+[], [default_compressed_debug_sections_algorithm=])
+
 # Configure extra directories which are host specific
 
 case "${host}" in
diff --git a/gas/NEWS b/gas/NEWS
index 9a8b726b942..d9043d9d469 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -2,6 +2,9 @@ 
 
 * gas now supports --compress-debug-sections=zstd to compress
   debug sections with zstd.
+* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+  that selects the default compression algorithm
+  for --enable-compressed-debug-sections.
 
 Changes in 2.39:
 
diff --git a/gas/as.c b/gas/as.c
index a5c2d2459f7..d42dd5394b5 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -226,7 +226,7 @@  print_version_id (void)
 
 #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
 enum compressed_debug_section_type flag_compress_debug
-  = COMPRESS_DEBUG_GABI_ZLIB;
+  = DEFAULT_COMPRESSED_DEBUG_ALGORITHM;
 #endif
 
 static void
diff --git a/gas/config.in b/gas/config.in
index 0d1668a3eac..232bc350759 100644
--- a/gas/config.in
+++ b/gas/config.in
@@ -22,6 +22,9 @@ 
 /* Default architecture. */
 #undef DEFAULT_ARCH
 
+/* Default compression algorithm for --enable-compressed-debug-sections. */
+#undef DEFAULT_COMPRESSED_DEBUG_ALGORITHM
+
 /* Default CRIS architecture. */
 #undef DEFAULT_CRIS_ARCH
 
diff --git a/gas/configure b/gas/configure
index 02cded59b6a..cae14c066d2 100755
--- a/gas/configure
+++ b/gas/configure
@@ -810,6 +810,7 @@  enable_largefile
 enable_targets
 enable_checking
 enable_compressed_debug_sections
+enable_default_compressed_debug_sections_algorithm
 enable_x86_relax_relocations
 enable_elf_stt_common
 enable_generate_build_notes
@@ -1476,6 +1477,9 @@  Optional Features:
   --enable-checking       enable run-time checks
   --enable-compressed-debug-sections={all,gas,none}
                           compress debug sections by default
+  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+                          Default compression algorithm for
+                          --enable-compressed-debug-sections.
   --enable-x86-relax-relocations
                           generate x86 relax relocations by default
   --enable-elf-stt-common generate ELF common symbols with STT_COMMON type by
@@ -10722,7 +10726,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10725 "configure"
+#line 10729 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10828,7 +10832,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10831 "configure"
+#line 10835 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11502,6 +11506,15 @@  if test "${enable_compressed_debug_sections+set}" = set; then :
 esac
 fi
 
+# Select default compression algorithm.
+ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
+# Check whether --enable-default_compressed_debug_sections_algorithm was given.
+if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
+  enableval=$enable_default_compressed_debug_sections_algorithm; case "${enableval}" in
+   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
+esac
+fi
+
 # PR gas/19520
 # Decide if x86 assembler should generate relax relocations.
 ac_default_x86_relax_relocations=unset
@@ -12671,6 +12684,12 @@  $as_echo "#define DEFAULT_FLAG_COMPRESS_DEBUG 1" >>confdefs.h
 
 fi
 
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_COMPRESSED_DEBUG_ALGORITHM $ac_default_compressed_debug_sections_algorithm
+_ACEOF
+
+
 # Turn on all targets if possible
 if test ${all_targets} = "yes"; then
   case ${target_cpu_type} in
diff --git a/gas/configure.ac b/gas/configure.ac
index e6f3298cb3e..feb43399ce8 100644
--- a/gas/configure.ac
+++ b/gas/configure.ac
@@ -76,6 +76,15 @@  AC_ARG_ENABLE(compressed_debug_sections,
   *)   ac_default_compressed_debug_sections=unset ;;
 esac])dnl
 
+# Select default compression algorithm.
+ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
+AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
+	      AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
+	      [Default compression algorithm for --enable-compressed-debug-sections.]),
+[case "${enableval}" in
+   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
+esac])dnl
+
 # PR gas/19520
 # Decide if x86 assembler should generate relax relocations.
 ac_default_x86_relax_relocations=unset
@@ -755,6 +764,9 @@  if test x$ac_default_compressed_debug_sections = xyes ; then
   AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
 fi
 
+AC_DEFINE_UNQUOTED(DEFAULT_COMPRESSED_DEBUG_ALGORITHM, $ac_default_compressed_debug_sections_algorithm,
+		   [Default compression algorithm for --enable-compressed-debug-sections.])
+
 # Turn on all targets if possible
 if test ${all_targets} = "yes"; then
   case ${target_cpu_type} in
diff --git a/ld/NEWS b/ld/NEWS
index dfe2690d9f2..d7ceb0c68b6 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -2,6 +2,9 @@ 
 
 * ld now supports zstd compressed debug sections.  The new option
   --compress-debug-sections=zstd compresses debug sections with zstd.
+* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+  that selects the default compression algorithm
+  for --enable-compressed-debug-sections.
 
 Changes in 2.39:
 
diff --git a/ld/config.in b/ld/config.in
index 3916740eee4..ad0dc6a106c 100644
--- a/ld/config.in
+++ b/ld/config.in
@@ -7,6 +7,9 @@ 
 #endif
 #define __CONFIG_H__ 1
 
+/* Default compression algorithm for --enable-compressed-debug-sections. */
+#undef DEFAULT_COMPRESSED_DEBUG_ALGORITHM
+
 /* Define to 1 if you want to emit gnu hash in the ELF linker by default. */
 #undef DEFAULT_EMIT_GNU_HASH
 
diff --git a/ld/configure b/ld/configure
index 9dd3ed5f1e7..7906f52aadf 100755
--- a/ld/configure
+++ b/ld/configure
@@ -841,6 +841,7 @@  with_sysroot
 enable_gold
 enable_got
 enable_compressed_debug_sections
+enable_default_compressed_debug_sections_algorithm
 enable_new_dtags
 enable_relro
 enable_textrel_check
@@ -1524,6 +1525,9 @@  Optional Features:
                           multigot)
   --enable-compressed-debug-sections={all,ld,none}
                           compress debug sections by default]
+  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+                          Default compression algorithm for
+                          --enable-compressed-debug-sections.
   --enable-new-dtags      set DT_RUNPATH instead of DT_RPATH by default]
   --enable-relro          enable -z relro in ELF linker by default
   --enable-textrel-check=[yes|no|warning|error]
@@ -11620,7 +11624,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11623 "configure"
+#line 11627 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11726,7 +11730,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11729 "configure"
+#line 11733 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15544,6 +15548,15 @@  if test "${enable_compressed_debug_sections+set}" = set; then :
 esac
 fi
 
+# Select default compression algorithm.
+ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
+# Check whether --enable-default_compressed_debug_sections_algorithm was given.
+if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
+  enableval=$enable_default_compressed_debug_sections_algorithm; case "${enableval}" in
+   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
+esac
+fi
+
 # Decide setting DT_RUNPATH instead of DT_RPATH by default
 ac_default_new_dtags=unset
 # Provide a configure time option to override our default.
@@ -17340,6 +17353,12 @@  $as_echo "#define DEFAULT_FLAG_COMPRESS_DEBUG 1" >>confdefs.h
 
 fi
 
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_COMPRESSED_DEBUG_ALGORITHM $ac_default_compressed_debug_sections_algorithm
+_ACEOF
+
+
 if test "${ac_default_new_dtags}" = unset; then
   ac_default_new_dtags=0
 fi
diff --git a/ld/configure.ac b/ld/configure.ac
index f1b2f9897f8..6123ea78611 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
@@ -163,6 +163,15 @@  AC_ARG_ENABLE(compressed_debug_sections,
   ,no, | ,none,)  ac_default_compressed_debug_sections=no ;;
 esac])dnl
 
+# Select default compression algorithm.
+ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_GABI_ZLIB
+AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
+	      AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
+	      [Default compression algorithm for --enable-compressed-debug-sections.]),
+[case "${enableval}" in
+   zstd) ac_default_compressed_debug_sections_algorithm=COMPRESS_DEBUG_ZSTD ;;
+esac])dnl
+
 # Decide setting DT_RUNPATH instead of DT_RPATH by default
 ac_default_new_dtags=unset
 # Provide a configure time option to override our default.
@@ -510,6 +519,9 @@  if test x$ac_default_compressed_debug_sections = xyes ; then
   AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
 fi
 
+AC_DEFINE_UNQUOTED(DEFAULT_COMPRESSED_DEBUG_ALGORITHM, $ac_default_compressed_debug_sections_algorithm,
+		   [Default compression algorithm for --enable-compressed-debug-sections.])
+
 if test "${ac_default_new_dtags}" = unset; then
   ac_default_new_dtags=0
 fi
diff --git a/ld/ldmain.c b/ld/ldmain.c
index d63002c994a..10f7a0538aa 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -352,7 +352,7 @@  main (int argc, char **argv)
   link_info.spare_dynamic_tags = 5;
   link_info.path_separator = ':';
 #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
-  link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
+  link_info.compress_debug = DEFAULT_COMPRESSED_DEBUG_ALGORITHM;
 #endif
 #ifdef DEFAULT_NEW_DTAGS
   link_info.new_dtags = DEFAULT_NEW_DTAGS;