Bug #3074 | Unversioned symbols in shared library | ||
---|---|---|---|
Submitted: | 5 Mar 2004 5:18 | Modified: | 26 Jan 2006 3:04 |
Reporter: | Christian Hammers (Silver Quality Contributor) (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 4.0.18 | OS: | Linux (Debian GNU/Linux) |
Assigned to: | Sergey Vojtovich | CPU Architecture: | Any |
[5 Mar 2004 5:18]
Christian Hammers
[6 Mar 2004 6:30]
MySQL Verification Team
Of course. We do not plan to version symbols. As our manual strongly recommends, you should have one set of includes and one set of libraries for C API, never more then one.
[19 Sep 2005 19:16]
Christian Hammers
Hello again It's 1,5 years later and the problems are still the same. Adding versioned symbols would cost you nothing but a minor patch (provided) and even stay binary compatible with existing software! So please do it or at least discuss it with the ones who are maintaining the GNU autoconf/libtool part of MySQL. Below you will find a longer explanation from Steve Langasek <vorlon@debian.org>, Debian Developer and attached the patch he mentioned. This patch will become part of the Debian packages. thanks, -christian- -------------Steve Langasek------------------------------------------------------------------- Please find attached a patch which enables symbol versioning for libmysqlclient14. The same patch will probably apply pretty cleanly to libmysqlclient12 as well, but I wanted to give you the libmysqlclient14 version first so that you could begin discussing it with upstream as necessary. Since most new software being compiled on Debian will be linked against libmysqlclient14, it's important to get symbol versions officially added as soon as possible so that people rebuilding packages will get the benefit of them. This is just like adding any new symbol to a library -- you can run old software against a library that has added a new symbol, but if you have software that uses the new symbol, it won't work against the old version of the library. For that reason, the patch enables symbol versioning *unconditionally* on platforms that are known to support it, to ensure compatibility across all distributions that are using this version of the library. The patch also probably warrants bumping SHARED_LIB_VERSION from 14:0:0 to 15:0:1 for the same reason (which is supposed to still give an soname of libmysqlclient.so.14, AIUI). I think that getting versioned symbols added to 14 and 15 should be the first priority: 12 will mostly be an issue for transitions from sarge, since most packages that get rebuilt will rebuild against 14; and we can't add symbol versioning to the sarge package now, so adding them at all will only help in the rare case that packages are re-uploaded and still building against 12. Just having 14 versioned will help take care of some segfaults, though (statistically, half of them). The symbol version that I chose, MYSQL_4.1, is arbitrary; if upstream would prefer to use MYSQL_14, that's also a good choice. Like package names, they don't *have* to match the soname, but it's important that there be a 1:1 mapping with sonames; so basing the symbol version name on the SONAME is a good way to ensure this. Just make sure upstream uses a different one for libmysqlclient15. :) ----------------------------------------------------------------------------------------
[19 Sep 2005 19:17]
Christian Hammers
Patch for versioned symbols in libmysqlclient*.so
Attachment: mysql-dfsg-4.1-symbolversions.diff (text/plain), 2.52 KiB.
[16 Jan 2006 15:33]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/1148
[16 Jan 2006 21:11]
Konstantin Osipov
Approved by email with a minor comment.
[17 Jan 2006 14:51]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/1200
[18 Jan 2006 19:49]
Sergey Vojtovich
Fixed in 4.1.18, 5.0.19.
[26 Jan 2006 3:04]
Mike Hillyer
Documented in 4.1.18, 5.0.19 changelogs: <listitem> <para> <literal>libmysqlclient</literal> now uses versioned symbols. (Bug #3074) </para> </listitem>