This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] S/390: Issue error for overflowing relocs.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=431e5de3f224e94fb0d061edb3a56d8e3c3f4403

commit 431e5de3f224e94fb0d061edb3a56d8e3c3f4403
Author: Andreas Krebbel <krebbel@linux.vnet.ibm.com>
Date:   Thu Jan 5 19:53:14 2017 +0100

    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.

Diff:
---
 bfd/elf64-s390.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index bbfcd2e..edc9b86 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -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.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]