summaryrefslogtreecommitdiff
path: root/storage/innobase
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-05-01 14:05:52 +0200
committerSergei Golubchik <sergii@pisem.net>2014-05-01 14:05:52 +0200
commitdc23a9501a995d7b24c98877fbdf40435ad1a097 (patch)
tree963b31c0f3852c1ee6eae37756950cb46ec78c3d /storage/innobase
parent302e4776e0be6b71512446c1bd6a3541b08b8350 (diff)
downloadmariadb-git-dc23a9501a995d7b24c98877fbdf40435ad1a097.tar.gz
Solaris compilation failure: xtradb is linked in statically, ha_innodb.so needs
the linker script.
Diffstat (limited to 'storage/innobase')
-rw-r--r--storage/innobase/CMakeLists.txt10
-rw-r--r--storage/innobase/plugin_exports14
2 files changed, 24 insertions, 0 deletions
diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt
index 8210115fb82..50fdb36495d 100644
--- a/storage/innobase/CMakeLists.txt
+++ b/storage/innobase/CMakeLists.txt
@@ -391,6 +391,16 @@ IF(WITH_INNODB)
SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
ENDIF()
+# On solaris, reduce symbol visibility, so loader does not mix
+# the same symbols from builtin innodb and from shared one.
+# Only required for old GCC (3.4.3) that does not support hidden visibility
+IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCC
+ AND NOT HAVE_VISIBILITY_HIDDEN)
+ SET(LINKER_SCRIPT "-Wl,-M${CMAKE_CURRENT_SOURCE_DIR}/plugin_exports")
+ELSE()
+ SET(LINKER_SCRIPT)
+ENDIF()
+
MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE
MODULE_ONLY
MODULE_OUTPUT_NAME ha_innodb
diff --git a/storage/innobase/plugin_exports b/storage/innobase/plugin_exports
new file mode 100644
index 00000000000..235ae3d5e72
--- /dev/null
+++ b/storage/innobase/plugin_exports
@@ -0,0 +1,14 @@
+{
+ global:
+ _maria_plugin_interface_version_;
+ _maria_sizeof_struct_st_plugin_;
+ _maria_plugin_declarations_;
+ my_snprintf_service;
+ thd_alloc_service;
+ thd_autoinc_service;
+ thd_error_context_service;
+ thd_kill_statement_service;
+ thd_wait_service;
+ local:
+ *;
+};