mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
Properly check --compress-debug-sections=XXX
We can't check if input is ELF in copy_file since some targets may only set xvec after bfd_check_format_matches is called. This patch moves this check to copy_object. bfd/ * elfxx-target.h (TARGET_BIG_SYM): Add BFD_COMPRESS_GABI to object_flags. (TARGET_LITTLE_SYM): Likewise. binutils/ * objcopy.c (do_debug_sections): Use bit patterns. (copy_object): Return FALSE for compress_zlib, compress_gnu_zlib and compress_gabi_zlib on non-ELF input. (copy_file): Don't check non-ELF input here.
This commit is contained in:
parent
1942484389
commit
cd6faa73f8
@ -1,3 +1,9 @@
|
||||
2015-04-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elfxx-target.h (TARGET_BIG_SYM): Add BFD_COMPRESS_GABI to
|
||||
object_flags.
|
||||
(TARGET_LITTLE_SYM): Likewise.
|
||||
|
||||
2015-04-09 Max Filippov <jcmvbkbc@gmail.com>
|
||||
|
||||
* elf32-xtensa.c (splay-tree.h): include header.
|
||||
|
@ -835,7 +835,8 @@ const bfd_target TARGET_BIG_SYM =
|
||||
|
||||
/* object_flags: mask of all file flags */
|
||||
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
|
||||
| DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
|
||||
| DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
|
||||
| BFD_COMPRESS_GABI),
|
||||
|
||||
/* section_flags: mask of all section flags */
|
||||
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
|
||||
@ -933,7 +934,8 @@ const bfd_target TARGET_LITTLE_SYM =
|
||||
|
||||
/* object_flags: mask of all file flags */
|
||||
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
|
||||
| DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
|
||||
| DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
|
||||
| BFD_COMPRESS_GABI),
|
||||
|
||||
/* section_flags: mask of all section flags */
|
||||
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
|
||||
|
@ -1,3 +1,10 @@
|
||||
2015-04-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* objcopy.c (do_debug_sections): Use bit patterns.
|
||||
(copy_object): Return FALSE for compress_zlib, compress_gnu_zlib
|
||||
and compress_gabi_zlib on non-ELF input.
|
||||
(copy_file): Don't check non-ELF input here.
|
||||
|
||||
2015-04-09 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* readelf.c (get_machine_flags): Report the setting of the string
|
||||
|
@ -202,12 +202,12 @@ static bfd_boolean convert_debugging = FALSE;
|
||||
/* Whether to compress/decompress DWARF debug sections. */
|
||||
static enum
|
||||
{
|
||||
nothing,
|
||||
compress,
|
||||
compress_zlib,
|
||||
compress_gnu_zlib,
|
||||
compress_gabi_zlib,
|
||||
decompress
|
||||
nothing = 0,
|
||||
compress = 1 << 0,
|
||||
compress_zlib = compress | 1 << 1,
|
||||
compress_gnu_zlib = compress | 1 << 2,
|
||||
compress_gabi_zlib = compress | 1 << 3,
|
||||
decompress = 1 << 4
|
||||
} do_debug_sections = nothing;
|
||||
|
||||
/* Whether to change the leading character in symbol names. */
|
||||
@ -1664,6 +1664,15 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((do_debug_sections & compress) != 0
|
||||
&& do_debug_sections != compress
|
||||
&& ibfd->xvec->flavour != bfd_target_elf_flavour)
|
||||
{
|
||||
non_fatal (_("--compress-debug-sections=[zlib|zlib-gnu|zlib-gabi] is unsupported on `%s'"),
|
||||
bfd_get_archive_filename (ibfd));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
printf (_("copy from `%s' [%s] to `%s' [%s]\n"),
|
||||
bfd_get_archive_filename (ibfd), bfd_get_target (ibfd),
|
||||
@ -2596,14 +2605,10 @@ copy_file (const char *input_filename, const char *output_filename,
|
||||
case compress_gnu_zlib:
|
||||
case compress_gabi_zlib:
|
||||
ibfd->flags |= BFD_COMPRESS;
|
||||
if (do_debug_sections != compress)
|
||||
{
|
||||
if (ibfd->xvec->flavour != bfd_target_elf_flavour)
|
||||
fatal (_("--compress-debug-sections=[zlib|zlib-gnu|zlib-gabi] is unsupported for `%s'"),
|
||||
bfd_get_target (ibfd));
|
||||
if (do_debug_sections == compress_gabi_zlib)
|
||||
ibfd->flags |= BFD_COMPRESS_GABI;
|
||||
}
|
||||
/* Don't check if input is ELF here since this information is
|
||||
only available after bfd_check_format_matches is called. */
|
||||
if (do_debug_sections == compress_gabi_zlib)
|
||||
ibfd->flags |= BFD_COMPRESS_GABI;
|
||||
break;
|
||||
case decompress:
|
||||
ibfd->flags |= BFD_DECOMPRESS;
|
||||
|
Loading…
Reference in New Issue
Block a user