GNU Info

Info Node: (bfd.info)Differing file formats

(bfd.info)Differing file formats


Next: Adding symbols from an object file Prev: Adding Symbols to the Hash Table Up: Adding Symbols to the Hash Table
Enter node , (file) or (file)node

Differing file formats
......................

   Normally all the files involved in a link will be of the same
format, but it is also possible to link together different format
object files, and the back end must support that.  The
`_bfd_link_add_symbols' entry point is called via the target vector of
the file to be added.  This has an important consequence: the function
may not assume that the hash table is the type created by the
corresponding `_bfd_link_hash_table_create' vector.  All the
`_bfd_link_add_symbols' function can assume about the hash table is
that it is derived from `struct bfd_link_hash_table'.

   Sometimes the `_bfd_link_add_symbols' function must store some
information in the hash table entry to be used by the `_bfd_final_link'
function.  In such a case the `creator' field of the hash table must be
checked to make sure that the hash table was created by an object file
of the same format.

   The `_bfd_final_link' routine must be prepared to handle a hash
entry without any extra information added by the
`_bfd_link_add_symbols' function.  A hash entry without extra
information will also occur when the linker script directs the linker
to create a symbol.  Note that, regardless of how a hash table entry is
added, all the fields will be initialized to some sort of null value by
the hash table entry initialization function.

   See `ecoff_link_add_externals' for an example of how to check the
`creator' field before saving information (in this case, the ECOFF
external symbol debugging information) in a hash table entry.


automatically generated by info2www version 1.2.2.9