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
@ -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>
|
2015-06-05 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* elf32-msp430.c (rl78_sym_diff_handler): New function.
|
* 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;
|
struct internal_syment *sym;
|
||||||
bfd_vma addend;
|
bfd_vma addend;
|
||||||
bfd_vma val;
|
bfd_vma val;
|
||||||
|
asection *sec;
|
||||||
reloc_howto_type *howto;
|
reloc_howto_type *howto;
|
||||||
bfd_reloc_status_type rstat;
|
bfd_reloc_status_type rstat;
|
||||||
|
|
||||||
@ -2965,11 +2966,9 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
val = 0;
|
val = 0;
|
||||||
|
sec = NULL;
|
||||||
if (h == NULL)
|
if (h == NULL)
|
||||||
{
|
{
|
||||||
asection *sec;
|
|
||||||
|
|
||||||
if (symndx == -1)
|
if (symndx == -1)
|
||||||
{
|
{
|
||||||
sec = bfd_abs_section_ptr;
|
sec = bfd_abs_section_ptr;
|
||||||
@ -2978,11 +2977,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sec = sections[symndx];
|
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
|
val = (sec->output_section->vma
|
||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ sym->n_value);
|
+ sym->n_value);
|
||||||
@ -2996,8 +2990,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
|||||||
|| h->root.type == bfd_link_hash_defweak)
|
|| h->root.type == bfd_link_hash_defweak)
|
||||||
{
|
{
|
||||||
/* Defined weak symbols are a GNU extension. */
|
/* Defined weak symbols are a GNU extension. */
|
||||||
asection *sec;
|
|
||||||
|
|
||||||
sec = h->root.u.def.section;
|
sec = h->root.u.def.section;
|
||||||
val = (h->root.u.def.value
|
val = (h->root.u.def.value
|
||||||
+ sec->output_section->vma
|
+ 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
|
will resolve a weak external only if a normal
|
||||||
external causes the library member to be linked.
|
external causes the library member to be linked.
|
||||||
See also linker.c: generic_link_check_archive_element. */
|
See also linker.c: generic_link_check_archive_element. */
|
||||||
asection *sec;
|
|
||||||
struct coff_link_hash_entry *h2 =
|
struct coff_link_hash_entry *h2 =
|
||||||
h->auxbfd->tdata.coff_obj_data->sym_hashes[
|
h->auxbfd->tdata.coff_obj_data->sym_hashes[
|
||||||
h->aux->x_sym.x_tagndx.l];
|
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)
|
if (info->base_file)
|
||||||
{
|
{
|
||||||
/* Emit a reloc if the backend thinks it needs it. */
|
/* Emit a reloc if the backend thinks it needs it. */
|
||||||
|
Loading…
Reference in New Issue
Block a user