[binutils-gdb] csky: Don't generate unnecessary dynamic tags

H.J. Lu hjl@sourceware.org
Wed Jun 24 13:17:51 GMT 2020


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

commit 2c8e370829c7e4ed73d64a9d7be4991521620b3a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jun 24 06:14:18 2020 -0700

    csky: Don't generate unnecessary dynamic tags
    
    Dynamic tags, DT_JMPREL, PLTREL and PLTRELSZ, are needed only if there
    are relocation entries for PLT.  Don't generate them if there are no
    relocation entries for PLT.
    
    bfd/
    
            PR ld/26083
            * elf32-csky.c (csky_elf_size_dynamic_sections): Call
            _bfd_elf_add_dynamic_tags.
    
    ld/
    
            PR ld/26083
            * testsuite/ld-csky/tls-ie-v1.d: Updated.
            * testsuite/ld-csky/tls-ie.d: Likewise.

Diff:
---
 bfd/ChangeLog                    |  6 ++++++
 bfd/elf32-csky.c                 | 45 ++--------------------------------------
 ld/ChangeLog                     |  6 ++++++
 ld/testsuite/ld-csky/tls-ie-v1.d |  5 +----
 ld/testsuite/ld-csky/tls-ie.d    |  5 +----
 5 files changed, 16 insertions(+), 51 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f0d7414dc73..943139ebf4f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26083
+	* elf32-csky.c (csky_elf_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+
 2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/26083
diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
index 43828beed03..ea58e14c004 100644
--- a/bfd/elf32-csky.c
+++ b/bfd/elf32-csky.c
@@ -2093,49 +2093,8 @@ csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
     }
 
   if (htab->elf.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in csky_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info) && !add_dynamic_entry (DT_DEBUG, 0))
-	return FALSE;
-
-      if (htab->elf.sgot->size != 0 || htab->elf.splt->size)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT,
-				     sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf,
-				    _bfd_elf_maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0
-	      && !add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+    htab->elf.dt_pltgot_required = htab->elf.sgot->size != 0;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 47500a11b86..bf171da0fa9 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26083
+	* testsuite/ld-csky/tls-ie-v1.d: Updated.
+	* testsuite/ld-csky/tls-ie.d: Likewise.
+
 2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/26083
diff --git a/ld/testsuite/ld-csky/tls-ie-v1.d b/ld/testsuite/ld-csky/tls-ie-v1.d
index 1f5f446e780..af1858c3b81 100644
--- a/ld/testsuite/ld-csky/tls-ie-v1.d
+++ b/ld/testsuite/ld-csky/tls-ie-v1.d
@@ -4,7 +4,7 @@
 #ld: -shared --hash-style=sysv
 #readelf: -d -r
 
-Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
+Dynamic section at offset 0x[0-9a-f]+ contains 10 entries:
   Tag        Type                         Name/Value
  0x00000004 \(HASH\)                       .*
  0x00000005 \(STRTAB\)                     .*
@@ -12,9 +12,6 @@ Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
  0x0000000a \(STRSZ\)                      .* \(bytes\)
  0x0000000b \(SYMENT\)                     .* \(bytes\)
  0x00000003 \(PLTGOT\)                     0x[0-9a-f]+
- 0x00000002 \(PLTRELSZ\)                   0 \(bytes\)
- 0x00000014 \(PLTREL\)                     RELA
- 0x00000017 \(JMPREL\)                     0x[0-9a-f]+
  0x00000007 \(RELA\)                       0x[0-9a-f]+
  0x00000008 \(RELASZ\)                     12 \(bytes\)
  0x00000009 \(RELAENT\)                    12 \(bytes\)
diff --git a/ld/testsuite/ld-csky/tls-ie.d b/ld/testsuite/ld-csky/tls-ie.d
index 45a8a1184a4..38c2a911def 100644
--- a/ld/testsuite/ld-csky/tls-ie.d
+++ b/ld/testsuite/ld-csky/tls-ie.d
@@ -3,7 +3,7 @@
 #ld: -shared --hash-style=sysv
 #readelf: -d -r
 
-Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
+Dynamic section at offset 0x[0-9a-f]+ contains 10 entries:
   Tag        Type                         Name/Value
  0x00000004 \(HASH\)                       .*
  0x00000005 \(STRTAB\)                     .*
@@ -11,9 +11,6 @@ Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
  0x0000000a \(STRSZ\)                      .* \(bytes\)
  0x0000000b \(SYMENT\)                     .* \(bytes\)
  0x00000003 \(PLTGOT\)                     0x[0-9a-f]+
- 0x00000002 \(PLTRELSZ\)                   0 \(bytes\)
- 0x00000014 \(PLTREL\)                     RELA
- 0x00000017 \(JMPREL\)                     0x[0-9a-f]+
  0x00000007 \(RELA\)                       0x[0-9a-f]+
  0x00000008 \(RELASZ\)                     12 \(bytes\)
  0x00000009 \(RELAENT\)                    12 \(bytes\)


More information about the Binutils-cvs mailing list