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] Fix "FAIL: -Bsymbolic-functions" for cris-linux in ld


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

commit cb1c8103f13d413e05ca6e61e21b56bba3baae74
Author: Hans-Peter Nilsson <hp@bitrange.com>
Date:   Mon Aug 3 20:34:51 2015 +0200

    Fix "FAIL: -Bsymbolic-functions" for cris-linux in ld
    
    	* elf32-cris.c (cris_elf_relocate_section)
    	(elf_cris_finish_dynamic_symbol, cris_elf_check_relocs)
    	(elf_cris_discard_excess_dso_dynamics): Use SYMBOLIC_BIND, not
    	just h->symbolic, to check if a symbol should be bound
    	symbolically.

Diff:
---
 bfd/ChangeLog    |  8 ++++++++
 bfd/elf32-cris.c | 14 +++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e9776bf..abcbeb9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2015-08-03  Hans-Peter Nilsson  <hp@axis.com>
+
+	* elf32-cris.c (cris_elf_relocate_section)
+	(elf_cris_finish_dynamic_symbol, cris_elf_check_relocs)
+	(elf_cris_discard_excess_dso_dynamics): Use SYMBOLIC_BIND, not
+	just h->symbolic, to check if a symbol should be bound
+	symbolically.
+
 2015-07-30  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/18735
diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c
index d5670ac..439ce11 100644
--- a/bfd/elf32-cris.c
+++ b/bfd/elf32-cris.c
@@ -1093,7 +1093,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 		 h->elf_link_hash_flags test, though it's there in
 		 other targets.  */
 	      if (info->shared
-		  && ((! info->symbolic && h->dynindx != -1)
+		  && ((!SYMBOLIC_BIND (info, h) && h->dynindx != -1)
 		      || !h->def_regular)
 		  && (input_section->flags & SEC_ALLOC) != 0
 		  && (r_type == R_CRIS_8
@@ -1212,7 +1212,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    || h->type == STT_FUNC
 			    || h->needs_plt))
 		    || (info->shared
-			&& (info->symbolic || h->dynindx == -1)
+			&& (SYMBOLIC_BIND (info, h) || h->dynindx == -1)
 			&& h->def_regular))
 		  {
 		    /* This wasn't checked above for ! info->shared, but
@@ -1432,7 +1432,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	      && ((r_type != R_CRIS_8_PCREL
 		   && r_type != R_CRIS_16_PCREL
 		   && r_type != R_CRIS_32_PCREL)
-		  || (!info->symbolic
+		  || (!SYMBOLIC_BIND (info, h)
 		      || (h != NULL && !h->def_regular))))
 	    {
 	      Elf_Internal_Rela outrel;
@@ -1484,7 +1484,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	      /* h->dynindx may be -1 if the symbol was marked to
 		 become local.  */
 	      else if (h != NULL
-		       && ((! info->symbolic && h->dynindx != -1)
+		       && ((!SYMBOLIC_BIND (info, h) && h->dynindx != -1)
 			   || !h->def_regular))
 		{
 		  BFD_ASSERT (h->dynindx != -1);
@@ -2245,7 +2245,7 @@ elf_cris_finish_dynamic_symbol (bfd *output_bfd,
       where = sgot->contents + (h->got.offset &~ (bfd_vma) 1);
       if (! elf_hash_table (info)->dynamic_sections_created
 	  || (info->shared
-	      && (info->symbolic || h->dynindx == -1)
+	      && (SYMBOLIC_BIND (info, h) || h->dynindx == -1)
 	      && h->def_regular))
 	{
 	  rela.r_info = ELF32_R_INFO (0, R_CRIS_RELATIVE);
@@ -3661,7 +3661,7 @@ cris_elf_check_relocs (bfd *abfd,
 	     this shared library) then we can also eliminate the
 	     reloc.  See comment above for more eliminable cases which
 	     we can't identify at this time.  */
-	  if (info->symbolic
+	  if (SYMBOLIC_BIND (info, h)
 	      && h->root.type != bfd_link_hash_defweak
 	      && h->def_regular)
 	    break;
@@ -3953,7 +3953,7 @@ elf_cris_discard_excess_dso_dynamics (struct elf_cris_link_hash_entry *h,
      any relocs.  */
   if (h->root.def_regular
       && (h->root.forced_local
-	  || info->symbolic))
+	  || SYMBOLIC_BIND (info, &h->root)))
     {
       for (s = h->pcrel_relocs_copied; s != NULL; s = s->next)
 	{


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