* 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) 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 * ecoff.c (ecoff_bfd_copy_private_bfd_data): Don't try to copy
data to a non-ECOFF file. data to a non-ECOFF file.

View File

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

View File

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