aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-i386.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-12-18 09:20:06 +1030
committerAlan Modra <amodra@gmail.com>2018-12-18 10:47:02 +1030
commit7af5d5c4dda26ac36ee2ff42af8f39a10382cc41 (patch)
treeea96ed2204aee3212b07516b827b30a0b779192f /bfd/elf32-i386.c
parentc5ebe0ff706521b4a5fb66a5e764031825276ad5 (diff)
downloadgdb-7af5d5c4dda26ac36ee2ff42af8f39a10382cc41.zip
gdb-7af5d5c4dda26ac36ee2ff42af8f39a10382cc41.tar.gz
gdb-7af5d5c4dda26ac36ee2ff42af8f39a10382cc41.tar.bz2
PR23980, assertion fail
All of the backend relocate_section functions that interpret reloc numbers assuming the input file is of the expected type (ie. same as output or very similar) really ought to be checking input file type. Not many do, and those that do currently just assert. This patch replaces the assertion with a more graceful exit. PR 23980 * elf32-i386.c (elf_i386_relocate_section): Exit with wrong format error rather than asserting input file is as expected. * elf32-s390.c (elf_s390_relocate_section): Likewise. * elf32-sh.c (sh_elf_relocate_section): Likewise. * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise. * elf32-ppc.c (ppc_elf_relocate_section): Exit with wrong format error if input file is not ppc32 ELF.
Diffstat (limited to 'bfd/elf32-i386.c')
-rw-r--r--bfd/elf32-i386.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 1774717..7fe6afb 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -2028,7 +2028,11 @@ elf_i386_relocate_section (bfd *output_bfd,
if (htab == NULL)
return FALSE;
- BFD_ASSERT (is_x86_elf (input_bfd, htab));
+ if (!is_x86_elf (input_bfd, htab))
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return FALSE;
+ }
symtab_hdr = &elf_symtab_hdr (input_bfd);
sym_hashes = elf_sym_hashes (input_bfd);