S/390: Issue error for overflowing relocs.

Building PIE executable from non-PIC code results in broken binaries.
With this patch the problem is detected at link-time.

bfd/ChangeLog:

2017-01-07  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* elf64-s390.c (elf_s390_relocate_section): Issue error for
	non-PLT relocs of shared libary symbol in exectuable.
This commit is contained in:
Andreas Krebbel 2017-01-05 19:53:14 +01:00
parent 0e123f69da
commit 431e5de3f2

View File

@ -2701,6 +2701,18 @@ elf_s390_relocate_section (bfd *output_bfd,
case R_390_PC32:
case R_390_PC32DBL:
case R_390_PC64:
if (h != NULL
&& bfd_link_pie (info)
&& !h->def_regular)
{
_bfd_error_handler (_("%B: `%s' non-PLT reloc for symbol defined "
"in shared library and accessed "
"from executable "
"(rebuild file with -fPIC ?)"),
input_bfd, h->root.root.string);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
/* The target of these relocs are instruction operands
residing in read-only sections. We cannot emit a runtime
reloc for it. */