public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] compress .gnu.debuglto_.debug_* sections if requested
@ 2022-09-29 13:35 Martin Liška
  2022-09-30  0:20 ` Alan Modra
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Liška @ 2022-09-29 13:35 UTC (permalink / raw)
  To: binutils; +Cc: H.J. Lu

Right now, when using LTO, the intermediate object files do contain
debug info in sections starting with .gnu.debuglto_ prefix and are
not compressed when --compress-debug-sections is used.

It's a mistake and we can save quite some disk space. The following
example comes from tramp3d when the corresponding LTO sections
are compressed with zlib:

$ bloaty tramp3d-v4-v2.o -- tramp3d-v4.o
    FILE SIZE        VM SIZE
 --------------  --------------
   +83%     +10  [ = ]       0    [Unmapped]
 -68.0%    -441  [ = ]       0    .gnu.debuglto_.debug_line
 -52.3%    -759  [ = ]       0    .gnu.debuglto_.debug_line_str
 -62.4% -3.24Ki  [ = ]       0    .gnu.debuglto_.debug_abbrev
 -64.8% -1.12Mi  [ = ]       0    .gnu.debuglto_.debug_info
 -88.8% -4.58Mi  [ = ]       0    .gnu.debuglto_.debug_str
 -27.7% -5.70Mi  [ = ]       0    TOTAL

Survives tests on x86_64-linux-gnu.

Ready to be installed?
Thanks,
Martin

bfd/ChangeLog:

	* elf.c (_bfd_elf_make_section_from_shdr): Compress also
	".gnu.debuglto_.debug_" and use startswith for all 3 prefixes.

gas/ChangeLog:

	* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_".
---
 bfd/elf.c   | 9 +++++----
 gas/write.c | 3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/bfd/elf.c b/bfd/elf.c
index d496c1b2983..5d67c6f0694 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1199,12 +1199,13 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
 	}
     }
 
-  /* Compress/decompress DWARF debug sections with names: .debug_* and
-     .zdebug_*, after the section flags is set.  */
+  /* Compress/decompress DWARF debug sections with names: .debug_*,
+     .zdebug_*, .gnu.debuglto_.debug_, after the section flags is set.  */
   if ((newsect->flags & SEC_DEBUGGING) != 0
       && (newsect->flags & SEC_HAS_CONTENTS) != 0
-      && ((name[1] == 'd' && name[6] == '_')
-	  || (name[1] == 'z' && name[7] == '_')))
+      && (startswith (name, ".debug_")
+	  || startswith (name, ".zdebug_")
+	  || startswith (name, ".gnu.debuglto_.debug_")))
     {
       enum { nothing, compress, decompress } action = nothing;
       int compression_header_size;
diff --git a/gas/write.c b/gas/write.c
index 0e49df7c03f..7c6affd8d50 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1481,7 +1481,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     return;
 
   section_name = bfd_section_name (sec);
-  if (!startswith (section_name, ".debug_"))
+  if (!startswith (section_name, ".debug_")
+      && !startswith (section_name, ".gnu.debuglto_.debug_"))
     return;
 
   bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;
-- 
2.37.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] compress .gnu.debuglto_.debug_* sections if requested
  2022-09-29 13:35 [PATCH] compress .gnu.debuglto_.debug_* sections if requested Martin Liška
@ 2022-09-30  0:20 ` Alan Modra
  2022-09-30  7:19   ` Martin Liška
  0 siblings, 1 reply; 6+ messages in thread
From: Alan Modra @ 2022-09-30  0:20 UTC (permalink / raw)
  To: Martin Liška; +Cc: binutils

On Thu, Sep 29, 2022 at 03:35:15PM +0200, Martin Liška wrote:
> +  /* Compress/decompress DWARF debug sections with names: .debug_*,
> +     .zdebug_*, .gnu.debuglto_.debug_, after the section flags is set.  */
>    if ((newsect->flags & SEC_DEBUGGING) != 0
>        && (newsect->flags & SEC_HAS_CONTENTS) != 0
> -      && ((name[1] == 'd' && name[6] == '_')
> -	  || (name[1] == 'z' && name[7] == '_')))
> +      && (startswith (name, ".debug_")
> +	  || startswith (name, ".zdebug_")
> +	  || startswith (name, ".gnu.debuglto_.debug_")))

If you test "(newsect->flags & SEC_ELF_OCTETS) != 0" as well, I think
you could omit any name tests here.  This would also compress
.gnu.linkonce.wi.* sections.  (Not that they matter very much, I'm
just pointing out a code simplification.)

> --- a/gas/write.c
> +++ b/gas/write.c
> @@ -1481,7 +1481,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>      return;
>  
>    section_name = bfd_section_name (sec);
> -  if (!startswith (section_name, ".debug_"))
> +  if (!startswith (section_name, ".debug_")
> +      && !startswith (section_name, ".gnu.debuglto_.debug_"))
>      return;
>  
>    bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;

Hmm, it looks to me like this function will transform
".gnu.debuglto_.debug_*" to ".zgnu.debuglto_.debug_*" if
--compress-debug-sections=zlib-gnu is used, which will break your
elf.c change.  Please check --compress-debug-sections=zlib-gnu.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] compress .gnu.debuglto_.debug_* sections if requested
  2022-09-30  0:20 ` Alan Modra
@ 2022-09-30  7:19   ` Martin Liška
  2022-10-04  8:07     ` Alan Modra
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Liška @ 2022-09-30  7:19 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

[-- Attachment #1: Type: text/plain, Size: 1649 bytes --]

On 9/30/22 02:20, Alan Modra wrote:
> On Thu, Sep 29, 2022 at 03:35:15PM +0200, Martin Liška wrote:
>> +  /* Compress/decompress DWARF debug sections with names: .debug_*,
>> +     .zdebug_*, .gnu.debuglto_.debug_, after the section flags is set.  */
>>    if ((newsect->flags & SEC_DEBUGGING) != 0
>>        && (newsect->flags & SEC_HAS_CONTENTS) != 0
>> -      && ((name[1] == 'd' && name[6] == '_')
>> -	  || (name[1] == 'z' && name[7] == '_')))
>> +      && (startswith (name, ".debug_")
>> +	  || startswith (name, ".zdebug_")
>> +	  || startswith (name, ".gnu.debuglto_.debug_")))
> 
> If you test "(newsect->flags & SEC_ELF_OCTETS) != 0" as well, I think
> you could omit any name tests here.  This would also compress
> .gnu.linkonce.wi.* sections.  (Not that they matter very much, I'm
> just pointing out a code simplification.)

Yep, I like the code simplification!

> 
>> --- a/gas/write.c
>> +++ b/gas/write.c
>> @@ -1481,7 +1481,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>>      return;
>>  
>>    section_name = bfd_section_name (sec);
>> -  if (!startswith (section_name, ".debug_"))
>> +  if (!startswith (section_name, ".debug_")
>> +      && !startswith (section_name, ".gnu.debuglto_.debug_"))
>>      return;
>>  
>>    bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;
> 
> Hmm, it looks to me like this function will transform
> ".gnu.debuglto_.debug_*" to ".zgnu.debuglto_.debug_*" if
> --compress-debug-sections=zlib-gnu is used, which will break your
> elf.c change.  Please check --compress-debug-sections=zlib-gnu.

Again, great comment, fixed in v2.

Ready for master now?
Thanks,
Martin

[-- Attachment #2: 0001-compress-.gnu.debuglto_.debug_-sections-if-requested.patch --]
[-- Type: text/x-patch, Size: 2750 bytes --]

From 8cff32766302af863aa1ddf9ae30a18f7c801eb5 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Thu, 29 Sep 2022 14:10:30 +0200
Subject: [PATCH] compress .gnu.debuglto_.debug_* sections if requested

Right now, when using LTO, the intermediate object files do contain
debug info in sections starting with .gnu.debuglto_ prefix and are
not compressed when --compress-debug-sections is used.

It's a mistake and we can save quite some disk space. The following
example comes from tramp3d when the corresponding LTO sections
are compressed with zlib:

$ bloaty tramp3d-v4-v2.o -- tramp3d-v4.o
    FILE SIZE        VM SIZE
 --------------  --------------
   +83%     +10  [ = ]       0    [Unmapped]
 -68.0%    -441  [ = ]       0    .gnu.debuglto_.debug_line
 -52.3%    -759  [ = ]       0    .gnu.debuglto_.debug_line_str
 -62.4% -3.24Ki  [ = ]       0    .gnu.debuglto_.debug_abbrev
 -64.8% -1.12Mi  [ = ]       0    .gnu.debuglto_.debug_info
 -88.8% -4.58Mi  [ = ]       0    .gnu.debuglto_.debug_str
 -27.7% -5.70Mi  [ = ]       0    TOTAL

bfd/ChangeLog:

	* elf.c (_bfd_elf_make_section_from_shdr): Compress all debug
	  info sections.

gas/ChangeLog:

	* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_"
	if the compression algorithm is different from zlib-gnu.
---
 bfd/elf.c   | 7 +++----
 gas/write.c | 4 +++-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/bfd/elf.c b/bfd/elf.c
index d496c1b2983..8cd257fc65c 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1199,12 +1199,11 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
 	}
     }
 
-  /* Compress/decompress DWARF debug sections with names: .debug_* and
-     .zdebug_*, after the section flags is set.  */
+  /* Compress/decompress DWARF debug sections with names: .debug_*,
+     .zdebug_*, .gnu.debuglto_.debug_, after the section flags is set.  */
   if ((newsect->flags & SEC_DEBUGGING) != 0
       && (newsect->flags & SEC_HAS_CONTENTS) != 0
-      && ((name[1] == 'd' && name[6] == '_')
-	  || (name[1] == 'z' && name[7] == '_')))
+      && (newsect->flags & SEC_ELF_OCTETS) != 0)
     {
       enum { nothing, compress, decompress } action = nothing;
       int compression_header_size;
diff --git a/gas/write.c b/gas/write.c
index 0e49df7c03f..b8d5253006c 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1481,7 +1481,9 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     return;
 
   section_name = bfd_section_name (sec);
-  if (!startswith (section_name, ".debug_"))
+  if (!startswith (section_name, ".debug_")
+      && (!startswith (section_name, ".gnu.debuglto_.debug_")
+	  || flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB))
     return;
 
   bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;
-- 
2.37.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] compress .gnu.debuglto_.debug_* sections if requested
  2022-09-30  7:19   ` Martin Liška
@ 2022-10-04  8:07     ` Alan Modra
  2022-10-04  8:12       ` Martin Liška
  0 siblings, 1 reply; 6+ messages in thread
From: Alan Modra @ 2022-10-04  8:07 UTC (permalink / raw)
  To: Martin Liška; +Cc: binutils

On Fri, Sep 30, 2022 at 09:19:49AM +0200, Martin Liška wrote:
> 	* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_"
> 	if the compression algorithm is different from zlib-gnu.

OK, choosing to skip compression for zlib-gnu is a reasonable approach
given that zlib-gnu has the clunky .debug_* to .zdebug_* section
renaming scheme.  I'm going to commit your patch, but then enable
zlib-gnu with a followup patch of mine that doesn't rename the lto
debug sections.  ld.bfd and the binutils work fine without renaming,
but there may be some other reason why zlib-gnu must have .zdebug
sections.  If that turns out to be the case, my patch below can be
reverted.

bfd/
	* elf.c (elf_fake_sections): Replace "." with ".z" in debug
	section names only when name was ".d*", ie. ".debug_*".
	(_bfd_elf_assign_file_positions_for_non_load): Likewise.
gas/
	* write.c (compress_debug): Compress .gnu.debuglto_.debug_*
	for zlib-gnu too.  Compress .gnu.linkonce.wi.*.

diff --git a/bfd/elf.c b/bfd/elf.c
index 8cd257fc65c..420b524aae8 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3234,7 +3234,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
 	      name = new_name;
 	    }
 	}
-      else if (asect->compress_status == COMPRESS_SECTION_DONE)
+      else if (asect->compress_status == COMPRESS_SECTION_DONE
+	       && name[1] == 'd')
 	{
 	  /* PR binutils/18087: Compression does not always make a
 	     section smaller.  So only rename the section when
@@ -3246,7 +3247,6 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
 	      arg->failed = true;
 	      return;
 	    }
-	  BFD_ASSERT (name[1] != 'z');
 	  name = new_name;
 	}
     }
@@ -6689,7 +6689,8 @@ _bfd_elf_assign_file_positions_for_non_load (bfd *abfd)
 		    return false;
 
 		  if (sec->compress_status == COMPRESS_SECTION_DONE
-		      && (abfd->flags & BFD_COMPRESS_GABI) == 0)
+		      && (abfd->flags & BFD_COMPRESS_GABI) == 0
+		      && name[1] == 'd')
 		    {
 		      /* If section is compressed with zlib-gnu, convert
 			 section name from .debug_* to .zdebug_*.  */
diff --git a/gas/write.c b/gas/write.c
index b8d5253006c..30f6c110908 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1473,7 +1473,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
   char *header;
   int x;
   flagword flags = bfd_section_flags (sec);
-  unsigned int header_size, compression_header_size;
+  unsigned int header_size;
 
   if (seginfo == NULL
       || sec->size < 32
@@ -1482,8 +1482,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
 
   section_name = bfd_section_name (sec);
   if (!startswith (section_name, ".debug_")
-      && (!startswith (section_name, ".gnu.debuglto_.debug_")
-	  || flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB))
+      && !startswith (section_name, ".gnu.debuglto_.debug_")
+      && !startswith (section_name, ".gnu.linkonce.wi."))
     return;
 
   bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;
@@ -1492,16 +1492,9 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     return;
 
   if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB)
-    {
-      compression_header_size = 0;
-      header_size = 12;
-    }
+    header_size = 12;
   else
-    {
-      compression_header_size
-	= bfd_get_compression_header_size (stdoutput, NULL);
-      header_size = compression_header_size;
-    }
+    header_size = bfd_get_compression_header_size (stdoutput, NULL);
 
   /* Create a new frag to contain the compression header.  */
   first_newf = frag_alloc (ob);
@@ -1609,7 +1602,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
   bfd_update_compression_header (abfd, (bfd_byte *) header, sec);
   x = bfd_set_section_size (sec, compressed_size);
   gas_assert (x);
-  if (!compression_header_size)
+  if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB
+      && section_name[1] == 'd')
     {
       compressed_name = concat (".z", section_name + 1, (char *) NULL);
       bfd_rename_section (sec, compressed_name);


-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] compress .gnu.debuglto_.debug_* sections if requested
  2022-10-04  8:07     ` Alan Modra
@ 2022-10-04  8:12       ` Martin Liška
  2022-10-04 13:41         ` Alan Modra
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Liška @ 2022-10-04  8:12 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, Fangrui Song

On 10/4/22 10:07, Alan Modra wrote:
> On Fri, Sep 30, 2022 at 09:19:49AM +0200, Martin Liška wrote:
>> 	* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_"
>> 	if the compression algorithm is different from zlib-gnu.
> 
> OK, choosing to skip compression for zlib-gnu is a reasonable approach
> given that zlib-gnu has the clunky .debug_* to .zdebug_* section
> renaming scheme.  I'm going to commit your patch, but then enable
> zlib-gnu with a followup patch of mine that doesn't rename the lto
> debug sections.  ld.bfd and the binutils work fine without renaming,
> but there may be some other reason why zlib-gnu must have .zdebug
> sections.  If that turns out to be the case, my patch below can be
> reverted.

Makes sense. On the other hand, I would somehow slowly (but surely) make zlib-gnu
obsolete. What do you think? For the future, people will likely move to the more
modern and faster zstd compression algorithm. We're planning doing that once
new binutils is released in openSUSE Tumbleweed.

Cheers,
Martin

> 
> bfd/
> 	* elf.c (elf_fake_sections): Replace "." with ".z" in debug
> 	section names only when name was ".d*", ie. ".debug_*".
> 	(_bfd_elf_assign_file_positions_for_non_load): Likewise.
> gas/
> 	* write.c (compress_debug): Compress .gnu.debuglto_.debug_*
> 	for zlib-gnu too.  Compress .gnu.linkonce.wi.*.
> 
> diff --git a/bfd/elf.c b/bfd/elf.c
> index 8cd257fc65c..420b524aae8 100644
> --- a/bfd/elf.c
> +++ b/bfd/elf.c
> @@ -3234,7 +3234,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
>  	      name = new_name;
>  	    }
>  	}
> -      else if (asect->compress_status == COMPRESS_SECTION_DONE)
> +      else if (asect->compress_status == COMPRESS_SECTION_DONE
> +	       && name[1] == 'd')
>  	{
>  	  /* PR binutils/18087: Compression does not always make a
>  	     section smaller.  So only rename the section when
> @@ -3246,7 +3247,6 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
>  	      arg->failed = true;
>  	      return;
>  	    }
> -	  BFD_ASSERT (name[1] != 'z');
>  	  name = new_name;
>  	}
>      }
> @@ -6689,7 +6689,8 @@ _bfd_elf_assign_file_positions_for_non_load (bfd *abfd)
>  		    return false;
>  
>  		  if (sec->compress_status == COMPRESS_SECTION_DONE
> -		      && (abfd->flags & BFD_COMPRESS_GABI) == 0)
> +		      && (abfd->flags & BFD_COMPRESS_GABI) == 0
> +		      && name[1] == 'd')
>  		    {
>  		      /* If section is compressed with zlib-gnu, convert
>  			 section name from .debug_* to .zdebug_*.  */
> diff --git a/gas/write.c b/gas/write.c
> index b8d5253006c..30f6c110908 100644
> --- a/gas/write.c
> +++ b/gas/write.c
> @@ -1473,7 +1473,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>    char *header;
>    int x;
>    flagword flags = bfd_section_flags (sec);
> -  unsigned int header_size, compression_header_size;
> +  unsigned int header_size;
>  
>    if (seginfo == NULL
>        || sec->size < 32
> @@ -1482,8 +1482,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>  
>    section_name = bfd_section_name (sec);
>    if (!startswith (section_name, ".debug_")
> -      && (!startswith (section_name, ".gnu.debuglto_.debug_")
> -	  || flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB))
> +      && !startswith (section_name, ".gnu.debuglto_.debug_")
> +      && !startswith (section_name, ".gnu.linkonce.wi."))
>      return;
>  
>    bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD;
> @@ -1492,16 +1492,9 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>      return;
>  
>    if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB)
> -    {
> -      compression_header_size = 0;
> -      header_size = 12;
> -    }
> +    header_size = 12;
>    else
> -    {
> -      compression_header_size
> -	= bfd_get_compression_header_size (stdoutput, NULL);
> -      header_size = compression_header_size;
> -    }
> +    header_size = bfd_get_compression_header_size (stdoutput, NULL);
>  
>    /* Create a new frag to contain the compression header.  */
>    first_newf = frag_alloc (ob);
> @@ -1609,7 +1602,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
>    bfd_update_compression_header (abfd, (bfd_byte *) header, sec);
>    x = bfd_set_section_size (sec, compressed_size);
>    gas_assert (x);
> -  if (!compression_header_size)
> +  if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB
> +      && section_name[1] == 'd')
>      {
>        compressed_name = concat (".z", section_name + 1, (char *) NULL);
>        bfd_rename_section (sec, compressed_name);
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] compress .gnu.debuglto_.debug_* sections if requested
  2022-10-04  8:12       ` Martin Liška
@ 2022-10-04 13:41         ` Alan Modra
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Modra @ 2022-10-04 13:41 UTC (permalink / raw)
  To: Martin Liška; +Cc: binutils, Fangrui Song

On Tue, Oct 04, 2022 at 10:12:46AM +0200, Martin Liška wrote:
> On 10/4/22 10:07, Alan Modra wrote:
> > On Fri, Sep 30, 2022 at 09:19:49AM +0200, Martin Liška wrote:
> >> 	* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_"
> >> 	if the compression algorithm is different from zlib-gnu.
> > 
> > OK, choosing to skip compression for zlib-gnu is a reasonable approach
> > given that zlib-gnu has the clunky .debug_* to .zdebug_* section
> > renaming scheme.  I'm going to commit your patch, but then enable
> > zlib-gnu with a followup patch of mine that doesn't rename the lto
> > debug sections.  ld.bfd and the binutils work fine without renaming,
> > but there may be some other reason why zlib-gnu must have .zdebug
> > sections.  If that turns out to be the case, my patch below can be
> > reverted.
> 
> Makes sense. On the other hand, I would somehow slowly (but surely) make zlib-gnu
> obsolete. What do you think?

I don't see that happening in a hurry.  We'd want to keep the ability
to handle zlib-gnu compressed object files for as long as such objects
are still in use.  So decompression will stay supported for a long
time, and since we need to test decompression support it is also
necessary to support compression.

> For the future, people will likely move to the more
> modern and faster zstd compression algorithm. We're planning doing that once
> new binutils is released in openSUSE Tumbleweed.

Sure, that's fine.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-10-04 13:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-29 13:35 [PATCH] compress .gnu.debuglto_.debug_* sections if requested Martin Liška
2022-09-30  0:20 ` Alan Modra
2022-09-30  7:19   ` Martin Liška
2022-10-04  8:07     ` Alan Modra
2022-10-04  8:12       ` Martin Liška
2022-10-04 13:41         ` Alan Modra

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