usually the first entry in the archive isn't a symbol header if one of
the object files is empty or incomplete.  for instnace, if you interrupt
a mk leaving an empty .8 file behind, it's possible the next mk will
add it to the lib.a file (since it's newer).  ar will only
put the special entry (containing an index of symbols)
into the archive if all its members are object files, and from the
same architecture.  an empty file for instance would prevent it.
(file or memory error during construction of the archive would
also have the same effect.)  the loader can't find the symbols
because it will scan an archive in order if the index isn't there,
and the .8 files are rarely arranged will all callees following all callers.
hence the index.

Reply via email to