summaryrefslogtreecommitdiff
path: root/libmysql
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-06-30 16:38:05 +0200
committerSergei Golubchik <serg@mariadb.org>2016-06-30 16:38:05 +0200
commit932646b1ff6a8f5815a961340a9e1ee4702f5b44 (patch)
tree5bc42ace8ae1f7e4d00baffd468bdb7564e851f1 /libmysql
parent0bb30f3603b519780eaf3fe0527b1c6af285229a (diff)
parent33492ec8d4e2077cf8e07d0628a959d8729bd1f9 (diff)
downloadmariadb-git-932646b1ff6a8f5815a961340a9e1ee4702f5b44.tar.gz
Merge branch '10.1' into 10.2
Diffstat (limited to 'libmysql')
-rw-r--r--libmysql/CMakeLists.txt46
-rw-r--r--libmysql/libmysql.c13
-rw-r--r--libmysql/libmysql_versions.ld.in16
3 files changed, 48 insertions, 27 deletions
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index 7dfc572b281..417f91c7879 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -274,6 +274,25 @@ SET(CLIENT_API_FUNCTIONS
)
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ IF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
+
+ INCLUDE (CheckCSourceCompiles)
+ FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.ld"
+ "VERSION {\nlibmysqlclient_18 {\nglobal: *;\n};\n}\n")
+ SET(CMAKE_REQUIRED_LIBRARIES "-Wl,src.ld")
+ CHECK_C_SOURCE_COMPILES("int main() { return 0; }"
+ SUPPORTS_VERSION_IN_LINK_SCRIPT)
+ SET(CMAKE_REQUIRED_LIBRARIES)
+
+ IF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=16895
+ MESSAGE(SEND_ERROR "Your current linker does not support VERSION "
+ "command in linker scripts like a GNU ld or any compatible linker "
+ "should. Perhaps you're using gold? Either switch to GNU ld compatible "
+ "linker or run cmake with -DDISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING=TRUE "
+ "to be able to complete the build")
+ ENDIF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
+
# When building RPM, or DEB package on Debian, use ELF symbol versioning
# for compatibility with distribution packages, so client shared library can
# painlessly replace the one supplied by the distribution.
@@ -358,14 +377,26 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
make_scrambled_password_323
)
- # Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
- SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
-
# Generate version script.
# Create semicolon separated lists of functions to export from
# Since RPM packages use separate versioning for 5.1 API
# and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
# we need 2 lists.
+ SET (VERSION_HEADER
+"VERSION {
+ libmysqlclient_18 {
+ global:")
+ SET (VERSION_FOOTER
+" local:
+ *;
+ };
+
+ libmysqlclient_16 {
+ /* empty here. aliases are added above */
+ };
+}
+")
+
SET (CLIENT_API_5_1_LIST)
SET (CLIENT_API_5_1_ALIASES)
FOREACH (f ${CLIENT_API_FUNCTIONS_5_1} ${CLIENT_API_5_1_EXTRA})
@@ -378,6 +409,13 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\t${f};\n")
ENDFOREACH()
+ ELSE (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
+ SET (CLIENT_API_5_1_ALIASES "/* Versioning disabled per user request. MDEV-5982 */")
+ ENDIF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
+
+ # Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
+ SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
+
CONFIGURE_FILE(
${VERSION_SCRIPT_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld
@@ -386,7 +424,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
SET(VERSION_SCRIPT_LINK_FLAGS
"-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
-ENDIF()
+ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
SET(CLIENT_SOURCES
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 0622b7a1a78..de50acde2f4 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -1510,9 +1510,8 @@ my_bool cli_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt)
*/
#ifdef EMBEDDED_LIBRARY
-#define STMT_INIT_PREALLOC(S) 0
-#else
-#define STMT_INIT_PREALLOC(S) S
+#undef MY_THREAD_SPECIFIC
+#define MY_THREAD_SPECIFIC 0
#endif /*EMBEDDED_LIBRARY*/
MYSQL_STMT * STDCALL
@@ -1533,10 +1532,8 @@ mysql_stmt_init(MYSQL *mysql)
DBUG_RETURN(NULL);
}
- init_alloc_root(&stmt->mem_root, 2048, STMT_INIT_PREALLOC(2048),
- MYF(MY_THREAD_SPECIFIC));
- init_alloc_root(&stmt->result.alloc, 4096, STMT_INIT_PREALLOC(4096),
- MYF(MY_THREAD_SPECIFIC));
+ init_alloc_root(&stmt->mem_root, 2048,2048, MYF(MY_THREAD_SPECIFIC));
+ init_alloc_root(&stmt->result.alloc, 4096, 4096, MYF(MY_THREAD_SPECIFIC));
stmt->result.alloc.min_malloc= sizeof(MYSQL_ROWS);
mysql->stmts= list_add(mysql->stmts, &stmt->list);
stmt->list.data= stmt;
@@ -1553,8 +1550,6 @@ mysql_stmt_init(MYSQL *mysql)
DBUG_RETURN(stmt);
}
-#undef STMT_INIT_PREALLOC
-
/*
Prepare server side statement with query.
diff --git a/libmysql/libmysql_versions.ld.in b/libmysql/libmysql_versions.ld.in
index 8d97da5b2eb..0cf5b45cc18 100644
--- a/libmysql/libmysql_versions.ld.in
+++ b/libmysql/libmysql_versions.ld.in
@@ -27,19 +27,7 @@ mysql_get_charset_by_csname = get_charset_by_csname;
mysql_net_realloc = net_realloc;
mysql_client_errors = client_errors;
-VERSION {
-
-libmysqlclient_18 {
- global:
+@VERSION_HEADER@
@CLIENT_API_5_1_LIST@
@CLIENT_API_5_5_LIST@
-
- local:
- *;
-};
-
-libmysqlclient_16 {
- /* empty here. aliases are added above */
-};
-
-}
+@VERSION_FOOTER@