Bug #28172 Conflict between libmysqlclient_r and libmystrings in 5.1 binary tarball dist
Submitted: 30 Apr 2007 20:43 Modified: 14 Feb 2008 23:15
Reporter: Monty Taylor Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Packaging Severity:S3 (Non-critical)
Version:5.1.17-beta OS:Linux
Assigned to: CPU Architecture:Any

[30 Apr 2007 20:43] Monty Taylor
Description:
When I try to build a program and link against the libraries in mysql-5.1.17-beta-linux-i686-glibc23.tar.gz, I get the following error: (before you respond about building staticly, there are no shared libs in mysql-5.1.17-beta-linux-i686-glibc23.tar.gz.) 

g++ `/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/bin/mysql_config --cflags` -I/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/include/storage/ndb -I/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/include/storage/ndb/ndbapi -c ndbapi_simple_index.cpp -o ndbapi_simple_index.o
g++  -L/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib ndbapi_simple_index.o /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libndbclient.a -lmysqlclient_r -lmysys -lmystrings -lz -lpthread -o ndbapi_simple_index
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `bmove_upp':
strings.s:(.text+0x2f): multiple definition of `bmove_upp'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(bmove_upp.o):bmove_upp.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `bmove_upp' changed from 35 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(bmove_upp.o) to 38 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `strend':
strings.s:(.text+0xaf): multiple definition of `strend'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strend.o):strend.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `strend' changed from 20 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strend.o) to 19 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `strcend':
strings.s:(.text+0xee): multiple definition of `strcend'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strcend.o):strcend.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `strcend' changed from 35 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strcend.o) to 25 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `is_prefix':
strings.s:(.text+0x107): multiple definition of `is_prefix'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(is_prefix.o):is_prefix.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `is_prefix' changed from 49 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(is_prefix.o) to 29 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `strmake':
strings.s:(.text+0x176): multiple definition of `strmake'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strmake.o):strmake.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `strmake' changed from 59 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strmake.o) to 48 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `strnmov':
strings.s:(.text+0x1a6): multiple definition of `strnmov'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strnmov.o):strnmov.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `strnmov' changed from 56 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strnmov.o) to 32 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o): In function `strxmov':
strings.s:(.text+0x1e1): multiple definition of `strxmov'
/usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strxmov.o):strxmov.c:(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `strxmov' changed from 50 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmysqlclient_r.a(strxmov.o) to 42 in /usr/local/mysql-5.1.17-beta-linux-i686-glibc23/lib/libmystrings.a(strings-x86.o)
collect2: ld returned 1 exit status
make: *** [ndbapi_simple_index] Error 1

How to repeat:
Attaching a test case (also used for bug#28171) Change USE to equal L51 and make. 

Suggested fix:
I dunno - maybe make mysys and mystrings real shared libs, for one, since they are shipped and required by everything. Or integrate them into mysqlclient. Or something.
[30 Apr 2007 20:44] Monty Taylor
Test case for libmystrings problems.

Attachment: testabi.tgz (application/x-compressed-tar, text), 2.99 KiB.

[3 May 2007 9:27] Sveta Smirnova
Thank you for the report.

Verified as described.

Bug is only repeatable with our packages (tested with mysql-5.1.17-beta-linux-i686-glibc23.tar.gz) and not repeatable with BK sources. So I changed category to "Packaging"
[14 Feb 2008 23:15] Sveta Smirnova
Bug is not repeatable with current mysql-5.1.23-rc-linux-i686-glibc23 packages
[21 Feb 2008 22:24] Brian Morin
I am seeing this problem in mysql-5.1.23-rc-linux-i686-glibc23.tar.gz