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] PR19083 S/390: Fix garbage collection of some GOT relocs.


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

commit ef05be83b7e1e10e7cba51aeafc879ca3a66826d
Author: Andreas Krebbel <krebbel@linux.vnet.ibm.com>
Date:   Mon Oct 12 10:21:51 2015 +0200

    PR19083 S/390: Fix garbage collection of some GOT relocs.
    
    bfd/ChangeLog:
    
    2015-10-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
    
    	PR ld/19083
    	* elf32-s390.c (elf_s390_gc_sweep_hook): Do not reduce got
    	refcount for relocs not really requiring a got slot.
    	* elf64-s390.c (elf_s390_gc_sweep_hook): Likewise.

Diff:
---
 bfd/ChangeLog    |  7 +++++++
 bfd/elf32-s390.c | 10 ++++++----
 bfd/elf64-s390.c | 11 ++++++-----
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3e234b4..ce1089b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2015-10-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+	PR ld/19083
+	* elf32-s390.c (elf_s390_gc_sweep_hook): Do not reduce got
+	refcount for relocs not really requiring a got slot.
+	* elf64-s390.c (elf_s390_gc_sweep_hook): Likewise.
+
 2015-10-11  John David Anglin  <danglin@gcc.gnu.org>
 
 	* elf-hppa.h (elf_hppa_action_discarded): Ignore relocations in
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 2143ee1..dc2d80f 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -1527,6 +1527,12 @@ elf_s390_gc_sweep_hook (bfd *abfd,
 	    elf_s390_hash_table (info)->tls_ldm_got.refcount -= 1;
 	  break;
 
+	case R_390_GOTOFF16:
+	case R_390_GOTOFF32:
+	case R_390_GOTPC:
+	case R_390_GOTPCDBL:
+	  break;
+
 	case R_390_TLS_GD32:
 	case R_390_TLS_IE32:
 	case R_390_TLS_GOTIE12:
@@ -1537,10 +1543,6 @@ elf_s390_gc_sweep_hook (bfd *abfd,
 	case R_390_GOT16:
 	case R_390_GOT20:
 	case R_390_GOT32:
-	case R_390_GOTOFF16:
-	case R_390_GOTOFF32:
-	case R_390_GOTPC:
-	case R_390_GOTPCDBL:
 	case R_390_GOTENT:
 	  if (h != NULL)
 	    {
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 1c37699..7cc0489 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -1462,6 +1462,12 @@ elf_s390_gc_sweep_hook (bfd *abfd,
 	  if (htab->tls_ldm_got.refcount > 0)
 	    htab->tls_ldm_got.refcount -= 1;
 	  break;
+	case R_390_GOTOFF16:
+	case R_390_GOTOFF32:
+	case R_390_GOTOFF64:
+	case R_390_GOTPC:
+	case R_390_GOTPCDBL:
+	  break;
 
 	case R_390_TLS_GD64:
 	case R_390_TLS_IE64:
@@ -1474,11 +1480,6 @@ elf_s390_gc_sweep_hook (bfd *abfd,
 	case R_390_GOT20:
 	case R_390_GOT32:
 	case R_390_GOT64:
-	case R_390_GOTOFF16:
-	case R_390_GOTOFF32:
-	case R_390_GOTOFF64:
-	case R_390_GOTPC:
-	case R_390_GOTPCDBL:
 	case R_390_GOTENT:
 	  if (h != NULL)
 	    {


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