Version information can be recorded and used within dynamic objects. Relocatable objects can maintain versioning information in a similar manner. However, there are some subtle differences in how this information is used.
Any version definitions supplied to the link-edit of a relocatable object are recorded in the same format as they are when building dynamic executables or shared objects. However, by default, symbol reduction is not carried out on the object being created. Instead, when the relocatable object is finally used as input to the generation of a dynamic object, the version recording itself will be used to determine the symbol reductions to apply.
In addition, any version definitions found in relocatable objects are propagated to the dynamic object. For an example of version processing in relocatable objects, see Reducing Symbol Scope.