* write.c (adjust_reloc_syms): Fix linkonce check for ELF.
This commit is contained in:
parent
c8f580cec6
commit
6259c65f73
@ -1,3 +1,7 @@
|
||||
Sun Dec 15 15:26:37 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* write.c (adjust_reloc_syms): Fix linkonce check for ELF.
|
||||
|
||||
Sat Dec 14 22:37:27 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* config/tc-mips.c (prev_insn_reloc_type): New static variable.
|
||||
|
34
gas/write.c
34
gas/write.c
@ -718,23 +718,39 @@ adjust_reloc_syms (abfd, sec, xxx)
|
||||
goto done;
|
||||
}
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
/* Don't try to reduce relocs which refer to .linkonce
|
||||
sections. It can lead to confusion when a debugging
|
||||
section refers to a .linkonce section. I hope this will
|
||||
always be correct. */
|
||||
if (symsec != sec
|
||||
&& ((bfd_get_section_flags (stdoutput, symsec) & SEC_LINK_ONCE)
|
||||
!= 0))
|
||||
if (symsec != sec)
|
||||
{
|
||||
fixp->fx_addsy->sy_used_in_reloc = 1;
|
||||
boolean linkonce;
|
||||
|
||||
linkonce = false;
|
||||
#ifdef BFD_ASSEMBLER
|
||||
if ((bfd_get_section_flags (stdoutput, symsec) & SEC_LINK_ONCE)
|
||||
!= 0)
|
||||
linkonce = true;
|
||||
#endif
|
||||
#ifdef OBJ_ELF
|
||||
/* The GNU toolchain uses an extension for ELF: a section
|
||||
beginning with the magic string .gnu.linkonce is a
|
||||
linkonce section. */
|
||||
if (strncmp (segment_name (symsec), ".gnu.linkonce",
|
||||
sizeof ".gnu.linkonce" - 1) == 0)
|
||||
linkonce = true;
|
||||
#endif
|
||||
|
||||
if (linkonce)
|
||||
{
|
||||
fixp->fx_addsy->sy_used_in_reloc = 1;
|
||||
#ifdef UNDEFINED_DIFFERENCE_OK
|
||||
if (fixp->fx_subsy != NULL)
|
||||
fixp->fx_subsy->sy_used_in_reloc = 1;
|
||||
if (fixp->fx_subsy != NULL)
|
||||
fixp->fx_subsy->sy_used_in_reloc = 1;
|
||||
#endif
|
||||
goto done;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Since we're reducing to section symbols, don't attempt to reduce
|
||||
anything that's already using one. */
|
||||
|
Loading…
Reference in New Issue
Block a user