aboutsummaryrefslogtreecommitdiff
path: root/gas/write.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-10-04 13:09:36 +1030
committerAlan Modra <amodra@gmail.com>2022-10-04 18:36:45 +1030
commit034235cebd790d4f9a1728043a175d7d7d9338b1 (patch)
tree1899d8ea958ae0a684f09f48e4255dee6cfd3f59 /gas/write.c
parent7afbac7ddd7299491a88341149bc72b38173447a (diff)
downloadfsf-binutils-gdb-034235cebd790d4f9a1728043a175d7d7d9338b1.zip
fsf-binutils-gdb-034235cebd790d4f9a1728043a175d7d7d9338b1.tar.gz
fsf-binutils-gdb-034235cebd790d4f9a1728043a175d7d7d9338b1.tar.bz2
Re: compress .gnu.debuglto_.debug_* sections if requested
Enable zlib-gnu compression for .gnu.debuglto_.debug_*. This differs from zlib-gnu for .debug_* where the name is changed to .zdebug_*. The name change isn't really needed. 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.*.
Diffstat (limited to 'gas/write.c')
-rw-r--r--gas/write.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/gas/write.c b/gas/write.c
index b8d5253..30f6c11 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);