aboutsummaryrefslogtreecommitdiff
path: root/bfd/cofflink.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1997-02-03 20:31:39 +0000
committerIan Lance Taylor <ian@airs.com>1997-02-03 20:31:39 +0000
commit5a50eec623f9d8b619da02d5a38f604b0342b7fa (patch)
tree51b8989ef379d55fc464e8b2c77e3f4d2897b35f /bfd/cofflink.c
parentfbfa4d54f806bff6646948c6a26f9691075d56a3 (diff)
downloadgdb-5a50eec623f9d8b619da02d5a38f604b0342b7fa.zip
gdb-5a50eec623f9d8b619da02d5a38f604b0342b7fa.tar.gz
gdb-5a50eec623f9d8b619da02d5a38f604b0342b7fa.tar.bz2
* cofflink.c (_bfd_coff_generic_relocate_section): If doing a
relocateable link, just skip pc_relative pcrel_offset relocs. * coff-arm.c (coff_arm_rtype_to_howto): Return a different howto structure for an ARM26 reloc which can be resolved. (coff_arm_adjust_symndx): Only convert ARM26 to ARM26D if the reloc can be resolved. PR 11599.
Diffstat (limited to 'bfd/cofflink.c')
-rw-r--r--bfd/cofflink.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 8e11b09..cd76985 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -1,5 +1,5 @@
/* COFF specific linker code.
- Copyright 1994, 1995, 1996 Free Software Foundation, Inc.
+ Copyright 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -2423,6 +2423,14 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
if (howto == NULL)
return false;
+ /* If we are doing a relocateable link, then we can just ignore
+ a PC relative reloc that is pcrel_offset. It will already
+ have the correct value. */
+ if (info->relocateable
+ && howto->pc_relative
+ && howto->pcrel_offset)
+ continue;
+
val = 0;
if (h == NULL)
@@ -2497,10 +2505,10 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
break;
case bfd_reloc_outofrange:
(*_bfd_error_handler)
- ("%s: bad reloc address in section `%s' at address 0x%lx",
+ ("%s: bad reloc address 0x%lx in section `%s'",
bfd_get_filename (input_bfd),
- bfd_get_section_name (input_bfd, input_section),
- (unsigned long) rel->r_vaddr);
+ (unsigned long) rel->r_vaddr,
+ bfd_get_section_name (input_bfd, input_section));
return false;
case bfd_reloc_overflow:
{