* libecoff.h (ecoff_data_type): Add linker field.

* ecoff.c (ecoff_write_object_contents): Check new tdata linker
	field, rather than outsymbols being non-NULL, to decide whether to
	output the symbols and relocs.
	(ecoff_bfd_final_link): Set new tdata linker field to true.
This commit is contained in:
Ian Lance Taylor 1994-06-06 17:44:34 +00:00
parent d2c71068e8
commit 469984d1f6
3 changed files with 16 additions and 6 deletions

View File

@ -1,5 +1,11 @@
Mon Jun 6 10:57:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* libecoff.h (ecoff_data_type): Add linker field.
* ecoff.c (ecoff_write_object_contents): Check new tdata linker
field, rather than outsymbols being non-NULL, to decide whether to
output the symbols and relocs.
(ecoff_bfd_final_link): Set new tdata linker field to true.
* ecoff.c (ecoff_bfd_copy_private_bfd_data): Don't try to copy
data to a non-ECOFF file.

View File

@ -2918,11 +2918,10 @@ ecoff_write_object_contents (abfd)
goto error_return;
/* Build the external symbol information. This must be done before
writing out the relocs so that we know the symbol indices. The
condition checks makes sure this object was not created by
ecoff_bfd_final_link, since if it was we do not want to tamper
with the external symbols. */
if (bfd_get_outsymbols (abfd) != (asymbol **) NULL)
writing out the relocs so that we know the symbol indices. We
don't do this if this BFD was created by the backend linker,
since it will have already handled the symbols and relocs. */
if (! ecoff_data (abfd)->linker)
{
symhdr->iextMax = 0;
symhdr->issExtMax = 0;
@ -4388,6 +4387,8 @@ ecoff_bfd_final_link (abfd, info)
bfd_get_symcount (abfd) = symhdr->iextMax + symhdr->isymMax;
ecoff_data (abfd)->linker = true;
return true;
}

View File

@ -121,6 +121,9 @@ typedef struct ecoff_tdata
linking. */
asection **symndx_to_section;
/* True if this BFD was written by the backend linker. */
boolean linker;
} ecoff_data_type;
/* Each canonical asymbol really looks like this. */
@ -233,7 +236,7 @@ extern boolean ecoff_get_section_contents PARAMS ((bfd *abfd,
file_ptr offset,
bfd_size_type count));
#define ecoff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
extern boolean ecoff_bfd_copy_private_bfd_data PARAMS ((bfd *, bfd *));
#define ecoff_bfd_copy_private_section_data \
_bfd_generic_bfd_copy_private_section_data