Bug #64387 libmysqlclient18 and libndbclient6 do not use symbol versioning

Submitted: 20 Feb 2012 20:24 Modified: 21 Feb 2012 7:00
Reporter: Steven Ayre Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:7.2.4 OS:Linux
Assigned to: CPU Architecture:Any
Tags: libmysqlclient, libmysqlclient18, libndbclient, libndbclient6, library, symbol, symbols, versioning, versions

[20 Feb 2012 20:24] Steven Ayre
Description:
In MySQL Cluster 7.1, libmysqlclient16 and libndbclient4 used versioned symbols.

In MySQL Cluster 7.2, libmysqlclient18 and libndbclient6 no longer uses versioned symbols.

This appears to be as a result of the move to cmake - the libmysql/libmysql.ver.in file is no longer used as the compiler is not given the -Wl,version-script option that were used when building previous versions.

Bug #64386 reports the same issue for libmysqlclient18 in MySQL 5.5.

How to repeat:
Compile MySQL 5.5 and examine the the symbols using 'objdump -T
libmysqlclient.so.18.0.0'

Compare for example the my_connect symbols from libmysqlclient16:
000000000008dce0 g    DF .text  0000000000000144  libmysqlclient_16 my_connect
to libmysqlclient18:
0000000000039bd0 g    DF .text  0000000000000179  Base        my_connect

Suggested fix:
Use libmysql.ver.in and libndb.ver.in to generate libmysql.ver and libndb.ver and then use the -Wl,version-script ld flags, as in 5.1 under the previous build system.
[20 Feb 2012 20:35] Steven Ayre
add tags.
[21 Feb 2012 7:00] Valeriy Kravchuk
Thank you for the problem report.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.042 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.