* 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.
This commit is contained in:
Ian Lance Taylor 1997-02-03 20:31:39 +00:00
parent fbfa4d54f8
commit 5a50eec623
2 changed files with 19 additions and 4 deletions

View File

@ -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.

View File

@ -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:
{