* elflink.c (elf_link_input_bfd): Don't use linker_mark and

SEC_EXCLUDE to test for sections dropped from output.  Instead,
	use bfd_section_removed_from_list on normal sections.  Don't
	attempt to handle symbols with unknown reserved section indices.
	* linker.c (_bfd_generic_link_output_symbols): Don't use
	linker_mark to test for symbols belonging to dropped sections.
	Do allow absolute symbols.
This commit is contained in:
Alan Modra
2005-10-24 11:24:31 +00:00
parent 3e45f319ea
commit f02571c5d9
3 changed files with 22 additions and 21 deletions

View File

@@ -6827,8 +6827,10 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
isec = bfd_com_section_ptr;
else
{
/* Who knows? */
isec = NULL;
/* Don't attempt to output symbols with st_shnx in the
reserved range other than SHN_ABS and SHN_COMMON. */
*ppsection = NULL;
continue;
}
*ppsection = isec;
@@ -6859,20 +6861,12 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
continue;
/* If this symbol is defined in a section which we are
discarding, we don't need to keep it, but note that
linker_mark is only reliable for sections that have contents.
For the benefit of the MIPS ELF linker, we check SEC_EXCLUDE
as well as linker_mark. */
if ((isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
discarding, we don't need to keep it. */
if (isym->st_shndx != SHN_UNDEF
&& (isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
&& (isec == NULL
|| (! isec->linker_mark && (isec->flags & SEC_HAS_CONTENTS) != 0)
|| (! finfo->info->relocatable
&& (isec->flags & SEC_EXCLUDE) != 0)))
continue;
/* If the section is not in the output BFD's section list, it is not
being output. */
if (bfd_section_removed_from_list (output_bfd, isec->output_section))
|| bfd_section_removed_from_list (output_bfd,
isec->output_section)))
continue;
/* Get the name of the symbol. */