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

Re: [patches] X86-64 shared linking fix


This is a slight rearrangement and optimization of the code around the patch 
I just sent. The logic hasn't changed. Please apply this instead of the 
previous one.

2001-06-20  Bo Thorsen  <bo@suse.co.uk>

	* elf64-x86-64.c (elf64_x86_64_relocate_section): Fix linking of
	  shared libraries.

Index: elf64-x86-64.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-x86-64.c,v
retrieving revision 1.20
diff -u -r1.20 elf64-x86-64.c
--- elf64-x86-64.c	2001/06/19 13:30:40	1.20
+++ elf64-x86-64.c	2001/06/20 15:42:02
@@ -1442,7 +1442,9 @@
 	case R_X86_64_PC8:
 	case R_X86_64_PC16:
 	case R_X86_64_PC32:
-	  if (h == NULL)
+	  if (h == NULL || h->dynindx == -1 ||
+	      (info->symbolic
+	       && h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
 	    break;
 	  /* Fall through.  */
 	case R_X86_64_8:
@@ -1451,15 +1453,7 @@
 	case R_X86_64_64:
 	  /* FIXME: The ABI says the linker should make sure the value is
 	     the same when it's zeroextended to 64 bit.	 */
-	  if (info->shared
-	      && (input_section->flags & SEC_ALLOC) != 0
-	      && ((r_type != R_X86_64_PC8
-		   && r_type != R_X86_64_PC16
-		   && r_type != R_X86_64_PC32)
-		  || (! info->symbolic
-		      || (h->elf_link_hash_flags
-			  & ELF_LINK_HASH_DEF_REGULAR) == 0)))
-
+	  if (info->shared && (input_section->flags & SEC_ALLOC) != 0)
 	    {
 	      Elf_Internal_Rela outrel;
 	      boolean skip, relocate;

Bo.

-- 

     Bo Thorsen                 |   28 Merton Road
     Free software developer    |   Slough, SL1 1QW
     SuSE Labs                  |   England


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