cURL / Mailing Lists / curl-library / Single Mail

curl-library

RE: New push functions

From: Patrick Monnerat <Patrick.Monnerat_at_datasphere.ch>
Date: Mon, 20 Jul 2015 19:28:30 +0200

Kamil Dudka wrote:
>> This won't change the final SONAME on platforms which support what
you
>> described, because they use C-A for SONAME. But others (i.e.:
iSeries)
>> will bump (they use C alone).

> What is the actual motivation to do so?

>If applications and other libraries are built against the old version
of libcurl, will they have to be rebuilt to load the new version of
libcurl just because of the SONAME bump?

The same discussion occurs each time there is some reason to change
VERSIONINFO.

The answer is: an soname bump always causes the linked programs to be
rebuilt. However, we must talk about VERSIONINFO bump rather than SONAME
bump (my bad).

In short (for symbol addition only):
- Many OS deals with symbol names: in this case, the order in the table
may even change without impact --> no need to change the SONAME.
- Some other OS use position in table: as long as you don't change the
symbol order in the table, there's still no need to change the SONAME if
you only add new symbols to the end of the table.
- Finally, some other OS have a symbol table signature that is copied to
the calling binary program at link time, and that must match at
execution time. In this case, any change to the symbol table should be
reflected by an SONAME change.

The three rules for changing VERSIONINFO accomodates this OS dependency:
- OS that do not need a SONAME change on symbol addition uses C-A as the
soname value: since C and A are both bumped by 1 on addition only. If a
deletion occurs, A is cleared and the soname bump occurs.
- The other OS use C alone, which is bumped on any symbol table change.

As a result, on linux, the soname is currently 4. On iseries, it is 8.

On each platform, soname is monotonically increasing, but this is more
often on iSeries. As a consequence, a linux soname may skip many numbers
when an soname bump is really needed (i.e.: when a symbol is deleted).
If a symbol was deleted just now, VERSIONINFO should be set to 9:0:0
(from 8:0:3), so the soname will jump from 4 to 9 on linux and from 8 to
9 on iSeries...

I have never seen an OS that uses the R part of the VERSIONINFO.

:-)

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2015-07-20