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]

[PATCH 1/2 v5] ld: change --enable-new-dtags to only generate new dtags


The "new" dtags options have been around for 14+ years, so there
shouldn't be a need to generate both new & old tags anymore.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

bfd/:
2013-01-12  Mike Frysinger  <vapier@gentoo.org>

	* elflink.c (bfd_elf_size_dynamic_sections): Only add DT_RPATH
	when new_dtags is false.  Only add DT_RUNPATH when new_dtags is
	true.

gold/:
2013-01-12  Mike Frysinger  <vapier@gentoo.org>

	* layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
	when enable_new_dtags is false.  Only add DT_RUNPATH when
	enable_new_dtags is true.

ld/:
2013-01-12  Mike Frysinger  <vapier@gentoo.org>

	* NEWS: Mention change in behavior with --enable-new-dtags.
	* ld.texinfo (Options): Clarify --enable-new-dtags behavior.
---
v5
	- post correct patch this time ...

 bfd/elflink.c  | 13 +++++--------
 gold/layout.cc |  5 +++--
 ld/NEWS        |  2 ++
 ld/ld.texinfo  |  3 ++-
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/bfd/elflink.c b/bfd/elflink.c
index 6985786..d336730 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -5730,19 +5730,16 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
       if (rpath != NULL)
 	{
 	  bfd_size_type indx;
+	  bfd_vma tag;
 
 	  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, rpath,
 				      TRUE);
-	  if (indx == (bfd_size_type) -1
-	      || !_bfd_elf_add_dynamic_entry (info, DT_RPATH, indx))
+	  if (indx == (bfd_size_type) -1)
 	    return FALSE;
 
-	  if  (info->new_dtags)
-	    {
-	      _bfd_elf_strtab_addref (elf_hash_table (info)->dynstr, indx);
-	      if (!_bfd_elf_add_dynamic_entry (info, DT_RUNPATH, indx))
-		return FALSE;
-	    }
+	  tag = info->new_dtags ? DT_RUNPATH : DT_RPATH;
+	  if (!_bfd_elf_add_dynamic_entry (info, tag, indx))
+	    return FALSE;
 	}
 
       if (filter_shlib != NULL)
diff --git a/gold/layout.cc b/gold/layout.cc
index 576d44b..250782a 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -4647,8 +4647,9 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
 	    }
 	}
 
-      odyn->add_string(elfcpp::DT_RPATH, rpath_val);
-      if (parameters->options().enable_new_dtags())
+      if (!parameters->options().enable_new_dtags())
+	odyn->add_string(elfcpp::DT_RPATH, rpath_val);
+      else
 	odyn->add_string(elfcpp::DT_RUNPATH, rpath_val);
     }
 
diff --git a/ld/NEWS b/ld/NEWS
index 9b9f4a6..1e07605 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -2,6 +2,8 @@
 
 * Add support for the Imagination Technologies Meta processor.
 
+* --enable-new-dtags no longer generates old dtags in addition to new dtags.
+
 Changes in 2.23:
 
 * Enable compressed debug section feature for x86/x86_64 pe-coff.
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index 2429668..194f56a 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -2112,7 +2112,8 @@ if linker generated unwind info is supported.
 @itemx --disable-new-dtags
 This linker can create the new dynamic tags in ELF. But the older ELF
 systems may not understand them. If you specify
-@option{--enable-new-dtags}, the dynamic tags will be created as needed.
+@option{--enable-new-dtags}, the new dynamic tags will be created as needed
+and older dynamic tags will be omitted.
 If you specify @option{--disable-new-dtags}, no new dynamic tags will be
 created. By default, the new dynamic tags are not created. Note that
 those options are only available for ELF systems.
-- 
1.8.0.2


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