ld: BFD information loss

1 
1 5.1.1 Information Loss
1 ----------------------
1 
1 _Information can be lost during output._  The output formats supported
1 by BFD do not provide identical facilities, and information which can be
1 described in one form has nowhere to go in another format.  One example
1 of this is alignment information in 'b.out'.  There is nowhere in an
1 'a.out' format file to store alignment information on the contained
1 data, so when a file is linked from 'b.out' and an 'a.out' image is
1 produced, alignment information will not propagate to the output file.
1 (The linker will still use the alignment information internally, so the
1 link is performed correctly).
1 
1    Another example is COFF section names.  COFF files may contain an
1 unlimited number of sections, each one with a textual section name.  If
1 the target of the link is a format which does not have many sections
1 (e.g., 'a.out') or has sections without names (e.g., the Oasys format),
1 the link cannot be done simply.  You can circumvent this problem by
1 describing the desired input-to-output section mapping with the linker
1 command language.
1 
1    _Information can be lost during canonicalization._  The BFD internal
1 canonical form of the external formats is not exhaustive; there are
1 structures in input formats for which there is no direct representation
1 internally.  This means that the BFD back ends cannot maintain all
1 possible data richness through the transformation between external to
1 internal and back to external formats.
1 
1    This limitation is only a problem when an application reads one
1 format and writes another.  Each BFD back end is responsible for
1 maintaining as much data as possible, and the internal BFD canonical
1 form has structures which are opaque to the BFD core, and exported only
1 to the back ends.  When a file is read in one format, the canonical form
1 is generated for BFD and the application.  At the same time, the back
1 end saves away any information which may otherwise be lost.  If the data
1 is then written back in the same format, the back end routine will be
1 able to use the canonical form provided by the BFD core as well as the
1 information it prepared earlier.  Since there is a great deal of
1 commonality between back ends, there is no information lost when linking
1 or copying big endian COFF to little endian COFF, or 'a.out' to 'b.out'.
1 When a mixture of formats is linked, the information is only lost from
1 the files whose format differs from the destination.
1