Any compatible new release of a shared object that contains new global symbols should assign these symbols to a new version definition. This new version definition should inherit the previous version definition.
The following mapfile example assigns the new symbol foo3 to the new interface version definition SUNW_1.2. This new interface inherits the original interface SUNW_1.1.
$ cat mapfile SUNW_1.2 { # Release X+1. global: foo3; } SUNW_1.1; SUNW_1.1 { # Release X. global: foo2; foo1; local: *; }; |
The inheritance of version definitions reduces the amount of version information that must be recorded in any user of the shared object.