/* Intel i386 Mach-O support for BFD.
- Copyright (C) 2009-2015 Free Software Foundation, Inc.
+ Copyright (C) 2009-2017 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
};
static bfd_boolean
-bfd_mach_o_i386_canonicalize_one_reloc (bfd *abfd,
- struct mach_o_reloc_info_external *raw,
- arelent *res, asymbol **syms)
+bfd_mach_o_i386_canonicalize_one_reloc (bfd * abfd,
+ struct mach_o_reloc_info_external * raw,
+ arelent * res,
+ asymbol ** syms,
+ arelent * res_base)
{
bfd_mach_o_reloc_info reloc;
switch (reloc.r_type)
{
case BFD_MACH_O_GENERIC_RELOC_PAIR:
+ /* PR 21813: Check for a corrupt PAIR reloc at the start. */
+ if (res == res_base)
+ return FALSE;
if (reloc.r_length == 2)
{
res->howto = &i386_howto_table[7];
}
return FALSE;
default:
- return FALSE;
+ break;
}
}
else
default:
return FALSE;
}
- break;
default:
- return FALSE;
+ break;
}
}
+ return FALSE;
}
static bfd_boolean
{ NULL, NULL }
};
-#define bfd_mach_o_canonicalize_one_reloc bfd_mach_o_i386_canonicalize_one_reloc
-#define bfd_mach_o_swap_reloc_out bfd_mach_o_i386_swap_reloc_out
-#define bfd_mach_o_print_thread bfd_mach_o_i386_print_thread
+#define bfd_mach_o_canonicalize_one_reloc bfd_mach_o_i386_canonicalize_one_reloc
+#define bfd_mach_o_swap_reloc_out bfd_mach_o_i386_swap_reloc_out
+#define bfd_mach_o_print_thread bfd_mach_o_i386_print_thread
#define bfd_mach_o_tgt_seg_table mach_o_i386_segsec_names_xlat
#define bfd_mach_o_section_type_valid_for_tgt NULL