diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-02-03 20:31:39 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-02-03 20:31:39 +0000 |
commit | 5a50eec623f9d8b619da02d5a38f604b0342b7fa (patch) | |
tree | 51b8989ef379d55fc464e8b2c77e3f4d2897b35f /bfd/cofflink.c | |
parent | fbfa4d54f806bff6646948c6a26f9691075d56a3 (diff) | |
download | gdb-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.c | 16 |
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: { |