DJGPP port of binutils broken due to 64 bit cygwin fix
* cofflink.c (_bfd_coff_generic_relocate_section): Revert 2014-03-26 change. Call _bfd_clear_contents for relocs against local and global symbols defined in discarded input sections.
This commit is contained in:
parent
17b9af13f5
commit
3a062fa1ee
2 changed files with 17 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-06-15 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* cofflink.c (_bfd_coff_generic_relocate_section): Revert
|
||||
2014-03-26 change. Call _bfd_clear_contents for relocs against
|
||||
local and global symbols defined in discarded input sections.
|
||||
|
||||
2015-06-05 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* elf32-msp430.c (rl78_sym_diff_handler): New function.
|
||||
|
|
|
@ -2915,6 +2915,7 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
struct internal_syment *sym;
|
||||
bfd_vma addend;
|
||||
bfd_vma val;
|
||||
asection *sec;
|
||||
reloc_howto_type *howto;
|
||||
bfd_reloc_status_type rstat;
|
||||
|
||||
|
@ -2965,11 +2966,9 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
}
|
||||
|
||||
val = 0;
|
||||
|
||||
sec = NULL;
|
||||
if (h == NULL)
|
||||
{
|
||||
asection *sec;
|
||||
|
||||
if (symndx == -1)
|
||||
{
|
||||
sec = bfd_abs_section_ptr;
|
||||
|
@ -2978,11 +2977,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
else
|
||||
{
|
||||
sec = sections[symndx];
|
||||
|
||||
/* If the output section has been discarded then ignore this reloc. */
|
||||
if (sec->output_section->vma == 0)
|
||||
continue;
|
||||
|
||||
val = (sec->output_section->vma
|
||||
+ sec->output_offset
|
||||
+ sym->n_value);
|
||||
|
@ -2996,8 +2990,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
|| h->root.type == bfd_link_hash_defweak)
|
||||
{
|
||||
/* Defined weak symbols are a GNU extension. */
|
||||
asection *sec;
|
||||
|
||||
sec = h->root.u.def.section;
|
||||
val = (h->root.u.def.value
|
||||
+ sec->output_section->vma
|
||||
|
@ -3018,7 +3010,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
will resolve a weak external only if a normal
|
||||
external causes the library member to be linked.
|
||||
See also linker.c: generic_link_check_archive_element. */
|
||||
asection *sec;
|
||||
struct coff_link_hash_entry *h2 =
|
||||
h->auxbfd->tdata.coff_obj_data->sym_hashes[
|
||||
h->aux->x_sym.x_tagndx.l];
|
||||
|
@ -3049,6 +3040,15 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||
}
|
||||
}
|
||||
|
||||
/* If the input section defining the symbol has been discarded
|
||||
then zero this reloc field. */
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
{
|
||||
_bfd_clear_contents (howto, input_bfd, input_section,
|
||||
contents + (rel->r_vaddr - input_section->vma));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info->base_file)
|
||||
{
|
||||
/* Emit a reloc if the backend thinks it needs it. */
|
||||
|
|
Loading…
Reference in a new issue