PR 6848
* write.c (install_reloc): Check that reloc symbols have been written. (set_symtab): Mark symbols with BSF_KEEP.
This commit is contained in:
parent
b96e292732
commit
76d1293995
2 changed files with 20 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2008-08-20 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 6848
|
||||||
|
* write.c (install_reloc): Check that reloc symbols have been
|
||||||
|
written.
|
||||||
|
(set_symtab): Mark symbols with BSF_KEEP.
|
||||||
|
|
||||||
2008-08-18 H.J. Lu <hongjiu.lu@intel.com>
|
2008-08-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config/tc-i386.c (i386_align_code): Fix a comment typo.
|
* config/tc-i386.c (i386_align_code): Fix a comment typo.
|
||||||
|
|
13
gas/write.c
13
gas/write.c
|
@ -1084,6 +1084,15 @@ install_reloc (asection *sec, arelent *reloc, fragS *fragp,
|
||||||
{
|
{
|
||||||
char *err;
|
char *err;
|
||||||
bfd_reloc_status_type s;
|
bfd_reloc_status_type s;
|
||||||
|
asymbol *sym;
|
||||||
|
|
||||||
|
if (reloc->sym_ptr_ptr != NULL
|
||||||
|
&& (sym = *reloc->sym_ptr_ptr) != NULL
|
||||||
|
&& (sym->flags & BSF_KEEP) == 0
|
||||||
|
&& ((sym->flags & BSF_SECTION_SYM) == 0
|
||||||
|
|| !EMIT_SECTION_SYMBOLS
|
||||||
|
|| !bfd_is_abs_section (sym->section)))
|
||||||
|
as_bad_where (file, line, _("redefined symbol cannot be used on reloc"));
|
||||||
|
|
||||||
s = bfd_install_relocation (stdoutput, reloc,
|
s = bfd_install_relocation (stdoutput, reloc,
|
||||||
fragp->fr_literal, fragp->fr_address,
|
fragp->fr_literal, fragp->fr_address,
|
||||||
|
@ -1377,6 +1386,10 @@ set_symtab (void)
|
||||||
for (i = 0; i < nsyms; i++, symp = symbol_next (symp))
|
for (i = 0; i < nsyms; i++, symp = symbol_next (symp))
|
||||||
{
|
{
|
||||||
asympp[i] = symbol_get_bfdsym (symp);
|
asympp[i] = symbol_get_bfdsym (symp);
|
||||||
|
if (asympp[i]->flags != BSF_SECTION_SYM
|
||||||
|
|| !(bfd_is_const_section (asympp[i]->section)
|
||||||
|
&& asympp[i]->section->symbol == asympp[i]))
|
||||||
|
asympp[i]->flags |= BSF_KEEP;
|
||||||
symbol_mark_written (symp);
|
symbol_mark_written (symp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue