This is the mail archive of the binutils@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]

[Committed] PR19083 S/390: Fix garbage collection of some GOT relocs.


Hi,

when garbage collecting relocs we decreased the GOT slot counters for
relocs which do not actually requested a GOT slot.  Fixed with the
attached patch.

Bye,

-Andreas-


    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 --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]