diff options
-rw-r--r-- | bfd/ChangeLog | 11 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 1 | ||||
-rw-r--r-- | bfd/bfd.c | 2 | ||||
-rw-r--r-- | bfd/elf.c | 9 |
4 files changed, 19 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9370b7a..2184208 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,14 @@ +2019-11-18 Alan Modra <amodra@gmail.com> + + PR 25196 + * bfd.c (bfd_error_type): Add bfd_error_sorry. + (bfd_errmsgs): Likewise. + * elf.c (rewrite_elf_program_header): Don't abort on confused + lma/alignment. Replace bfd_error_bad_value with bfd_error_sorry. + (_bfd_elf_validate_reloc): Use bfd_error_sorry. + (_bfd_elf_final_write_processing): Likewise. + * bfd-in2.h: Regenerate. + 2019-11-12 Jim Wilson <jimw@sifive.com> PR 25181 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 3244905..a00dfa35 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -6964,6 +6964,7 @@ typedef enum bfd_error bfd_error_bad_value, bfd_error_file_truncated, bfd_error_file_too_big, + bfd_error_sorry, bfd_error_on_input, bfd_error_invalid_error_code } @@ -655,6 +655,7 @@ CODE_FRAGMENT . bfd_error_bad_value, . bfd_error_file_truncated, . bfd_error_file_too_big, +. bfd_error_sorry, . bfd_error_on_input, . bfd_error_invalid_error_code .} @@ -688,6 +689,7 @@ const char *const bfd_errmsgs[] = N_("bad value"), N_("file truncated"), N_("file too big"), + N_("sorry, cannot handle this file"), N_("error reading %s: %s"), N_("#<invalid error code>") }; @@ -7324,7 +7324,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) : 0), output_section->alignment_power) != output_section->lma) - abort (); + goto sorry; } else { @@ -7363,7 +7363,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) negative size - or segments that do not contain any sections. */ if (map->count == 0) { - bfd_set_error (bfd_error_bad_value); + sorry: + bfd_set_error (bfd_error_sorry); free (sections); return FALSE; } @@ -9277,7 +9278,7 @@ _bfd_elf_validate_reloc (bfd *abfd, arelent *areloc) /* xgettext:c-format */ _bfd_error_handler (_("%pB: %s unsupported"), abfd, areloc->howto->name); - bfd_set_error (bfd_error_bad_value); + bfd_set_error (bfd_error_sorry); return FALSE; } @@ -12249,7 +12250,7 @@ _bfd_elf_final_write_processing (bfd *abfd) _bfd_error_handler (_("symbol type STT_GNU_IFUNC is unsupported")); if (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_unique) _bfd_error_handler (_("symbol binding STB_GNU_UNIQUE is unsupported")); - bfd_set_error (bfd_error_bad_value); + bfd_set_error (bfd_error_sorry); return FALSE; } } |