We plan to hide (not export) the symbols of the SSL library used
by the MySQL client library. As step one in that effort, we plan
to hide all of the non-documented symbols because we want to stop
polluting the MySQL client program’s namespace.
Consider a requirement where there the OpenSSL and MySQL client
library functions are both used directly to generate a binary. If
the order of linking used is 1. MySQL client library (i.e
libmysqlclient) and then 2. OpenSSL library (i.e libcrypto),
then using the created binary will result in a crash.
The Reason why it will crash is as follows: The
libmysqlclient library already has the built-in yaSSL library and
has exported its symbols. The yaSSL and OpenSSL libraries share
some of the same symbol names, so the executable which is
prepared in the above said order, will resolve the OpenSSL
symbols indirectly using the libmysqlclient library (yaSSL)
rather than using …[Read more]