patches/binutils/2.20.1a/290-ld-stub-crash.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Dec 31 18:47:37 2011 +0100 (2011-12-31)
changeset 2829 0c3c95f911ec
parent 2088 4f21ba5f8e91
permissions -rw-r--r--
docs: credit Konrad EISELE for the initial multilib support

Konrad submitted an initial patch adding multlib support:
http://sourceware.org/ml/crossgcc/2011-11/msg00040.html

The patch was full of good ideas, but had a few issues, so
I (Yann E. MORIN) started it all from scatch, re-using part
of the original patch. This got implemented in this series:
hg log -r 446a17b5dd1e:e47d17391ae3

As I forgot to credit Konrad in these changelogs, update the
docs so that the work by Konrad gets credited. Without his
initial effort, we would probably not have had multlib support
so soon. Thank you Konrad!

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
jocke@1700
     1
diff -p -c -u -r1.196 elf32-arm.c
yann@2088
     2
yann@2088
     3
diff -durN binutils-2.20.1.orig/bfd/elf32-arm.c binutils-2.20.1/bfd/elf32-arm.c
yann@2088
     4
--- binutils-2.20.1.orig/bfd/elf32-arm.c	2010-02-22 09:06:48.000000000 +0100
yann@2088
     5
+++ binutils-2.20.1/bfd/elf32-arm.c	2010-08-17 19:32:25.000000000 +0200
yann@2088
     6
@@ -3194,11 +3194,15 @@
jocke@1700
     7
 
jocke@1700
     8
 	  /* We have an extra 2-bytes reach because of
jocke@1700
     9
 	     the mode change (bit 24 (H) of BLX encoding).  */
jocke@1700
    10
+	  /* A stub is needed only if this call is not throught a PLT
jocke@1700
    11
+	     entry, because PLT stubs handle mode switching
jocke@1700
    12
+	     already.  */
jocke@1700
    13
 	  if (branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2)
jocke@1700
    14
 	      || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)
jocke@1700
    15
-	      || ((r_type == R_ARM_CALL) && !globals->use_blx)
jocke@1700
    16
-	      || (r_type == R_ARM_JUMP24)
jocke@1700
    17
-	      || (r_type == R_ARM_PLT32))
jocke@1700
    18
+	      || ( (((r_type == R_ARM_CALL) && !globals->use_blx)
jocke@1700
    19
+		    || (r_type == R_ARM_JUMP24)
jocke@1700
    20
+		    || (r_type == R_ARM_PLT32))
jocke@1700
    21
+		   && !use_plt))
jocke@1700
    22
 	    {
jocke@1700
    23
 	      stub_type = (info->shared | globals->pic_veneer)
jocke@1700
    24
 		/* PIC stubs.  */