From 5a50eec623f9d8b619da02d5a38f604b0342b7fa Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 3 Feb 1997 20:31:39 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 7 +++++++ 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 + * 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: { -- 2.7.4