aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog11
-rw-r--r--bfd/bfd-in2.h1
-rw-r--r--bfd/bfd.c2
-rw-r--r--bfd/elf.c9
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
}
diff --git a/bfd/bfd.c b/bfd/bfd.c
index 94e9f27..e92213b 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -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>")
};
diff --git a/bfd/elf.c b/bfd/elf.c
index be060d5..e100998 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -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;
}
}