diff options
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/cofflink.c | 16 |
2 files changed, 19 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3b87aab..c8ba2fd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,12 @@ Mon Feb 3 11:54:06 1997 Ian Lance Taylor <ian@cygnus.com> + * 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. + * coff-h8300.c (h8300_reloc16_extra_cases): Correct off by one error in overflow check for R_RELBYTE. 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: { |