aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2003-12-05 11:30:18 +0000
committerNick Clifton <nickc@redhat.com>2003-12-05 11:30:18 +0000
commitd3793eaa607bc918758f22d4939a2080485770e6 (patch)
tree28596cf403c68f9f8b04aef033d2ccfc6c78c091 /ld
parent362ff856039fd10e1dc996d424d03dc02d410e5f (diff)
downloadfsf-binutils-gdb-d3793eaa607bc918758f22d4939a2080485770e6.zip
fsf-binutils-gdb-d3793eaa607bc918758f22d4939a2080485770e6.tar.gz
fsf-binutils-gdb-d3793eaa607bc918758f22d4939a2080485770e6.tar.bz2
Fixes for use of ARM_26D reloc in arm-wince toolchain.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/pe-dll.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index bf844d1..de662ea 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2003-12-05 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
+
+ * pe-dll.c (generate_reloc): Remap ARM_26D relocation from 5 to
+ 0. This fixes "bad fixup" error generated by MS linker.
+
2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/ia64elf.em (gld${EMULATION_NAME}_after_parse): Set
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index ebd3711..0542ace 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1155,7 +1155,12 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
total_relocs++;
break;
case BITS_AND_SHIFT (24, 2):
- if (relocs[i]->howto->type == 5)
+ /* FIXME: 0 is ARM_26D, it is defined in bfd/coff-arm.c
+ Those ARM_xxx definitions should go in proper
+ header someday. */
+ if (relocs[i]->howto->type == 0
+ /* Older GNU linkers used 5 instead of 0 for this reloc. */
+ || relocs[i]->howto->type == 5)
/* This is an ARM_26D reloc, which is an ARM_26 reloc
that has already been fully processed during a
previous link stage, so ignore it here. */