aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-s390.c10
-rw-r--r--bfd/elf64-s390.c11
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)
{