diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/pe-dll.c | 7 |
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. */ |