summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-12-07 09:28:18 +1030
committerAlan Modra <amodra@gmail.com>2022-12-07 13:15:29 +1030
commitc3620d6d5639ab7a0b483030350e8f2929212ea7 (patch)
tree802bc807b5e2feb2f5f55ab54c8479cdd7c14529 /gas
parent9db0f1ae844614673957e48257aba137e3c41133 (diff)
downloadbinutils-gdb-c3620d6d5639ab7a0b483030350e8f2929212ea7.tar.gz
Compression tidy and fixes
Tidies: - Move stuff from bfd-in.h and libbfd.c to compress.c - Delete COMPRESS_DEBUG from enum compressed_debug_section_type - Move compress_debug field out of link_info to ld_config. Fixes: - Correct test in bfd_convert_section_setup to use obfd flags, not ibfd. - Apply bfd_applicable_file_flags to compression bfd flags added by gas and ld to the output bfd. bfd/ * bfd-in.h (enum compressed_debug_section_type), (struct compressed_type_tuple), (bfd_get_compression_algorithm), (bfd_get_compression_algorithm_name), * libbfd.c (compressed_debug_section_names), (bfd_get_compression_algorithm), (bfd_get_compression_algorithm_name): Move.. * compress.c: ..to here, deleting COMPRESS_DEBUG from enum compressed_debug_section_type. (bfd_convert_section_setup): Test obfd flags not ibfd for compression flags. * elf.c (elf_fake_sections): Replace link_info->compress_debug test with abfd->flags test. * bfd-in2.h: Regenerate. binutils/ * objcopy.c (copy_file): Tidy setting of bfd compress flags. Expand comment. gas/ * write.c (compress_debug): Test bfd compress flags rather than flag_compress_debug. (write_object_file): Apply bfd_applicable_file_flags to compress debug flags added to output bfd. include/ * bfdlink.h (struct bfd_link_info): Delete compress_debug. ld/ * ld.h (ld_config_type): Add compress_debug. * emultempl/elf.em: Replace references to link_info.compress_debug with config.compress_debug. * lexsup.c (elf_static_list_options): Likewise. * ldmain.c (main): Likewise. Apply bfd_applicable_file_flags to compress debug flags added to output bfd.
Diffstat (limited to 'gas')
-rw-r--r--gas/write.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gas/write.c b/gas/write.c
index fa748eb7c79..573e0244459 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1490,7 +1490,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
if (ctx == NULL)
return;
- if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB)
+ if ((abfd->flags & BFD_COMPRESS_GABI) == 0)
header_size = 12;
else
header_size = bfd_get_compression_header_size (stdoutput, NULL);
@@ -1601,7 +1601,7 @@ 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 (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB
+ if ((abfd->flags & BFD_COMPRESS_GABI) == 0
&& section_name[1] == 'd')
{
compressed_name = concat (".z", section_name + 1, (char *) NULL);
@@ -2531,15 +2531,16 @@ write_object_file (void)
contents of the debug sections. This needs to be done before
we start writing any sections, because it will affect the file
layout, which is fixed once we start writing contents. */
- if (flag_compress_debug)
+ if (flag_compress_debug != COMPRESS_DEBUG_NONE)
{
+ flagword flags = BFD_COMPRESS;
if (flag_compress_debug == COMPRESS_DEBUG_GABI_ZLIB)
- stdoutput->flags |= BFD_COMPRESS | BFD_COMPRESS_GABI;
+ flags = BFD_COMPRESS | BFD_COMPRESS_GABI;
else if (flag_compress_debug == COMPRESS_DEBUG_ZSTD)
- stdoutput->flags |= BFD_COMPRESS | BFD_COMPRESS_GABI | BFD_COMPRESS_ZSTD;
- else
- stdoutput->flags |= BFD_COMPRESS;
- bfd_map_over_sections (stdoutput, compress_debug, (char *) 0);
+ flags = BFD_COMPRESS | BFD_COMPRESS_GABI | BFD_COMPRESS_ZSTD;
+ stdoutput->flags |= flags & bfd_applicable_file_flags (stdoutput);
+ if ((stdoutput->flags & BFD_COMPRESS) != 0)
+ bfd_map_over_sections (stdoutput, compress_debug, (char *) 0);
}
bfd_map_over_sections (stdoutput, write_contents, (char *) 0);