diff options
author | Alexey Botchkov <holyfoot@askmonty.org> | 2016-05-04 11:42:39 +0400 |
---|---|---|
committer | Alexey Botchkov <holyfoot@askmonty.org> | 2016-05-04 11:42:39 +0400 |
commit | a02d4023db42755b5cb7d0ccb0543fbe94d1b628 (patch) | |
tree | a79b1c21efeab54a4b044ecfcc5bff09fba2fe34 | |
parent | 5dd0c77e9239217457cf795d6380bdd3bf0808ad (diff) | |
download | mariadb-git-a02d4023db42755b5cb7d0ccb0543fbe94d1b628.tar.gz |
MDEV-9618 solaris sparc build fails on 10.1.
Compiler there is strict about the C/C++ call model
mixing in function variable assumptions.
Fixed by adding some 'extern "C"' and changing
'?' operator with 'if'.
-rw-r--r-- | include/mysql/plugin_audit.h | 8 | ||||
-rw-r--r-- | include/mysql/plugin_auth.h | 9 | ||||
-rw-r--r-- | include/mysql/plugin_encryption.h | 8 | ||||
-rw-r--r-- | include/mysql/plugin_ftparser.h | 8 | ||||
-rw-r--r-- | include/mysql/plugin_password_validation.h | 9 | ||||
-rw-r--r-- | sql/encryption.cc | 16 |
6 files changed, 55 insertions, 3 deletions
diff --git a/include/mysql/plugin_audit.h b/include/mysql/plugin_audit.h index 31589f071f0..cbdd6591b70 100644 --- a/include/mysql/plugin_audit.h +++ b/include/mysql/plugin_audit.h @@ -23,6 +23,10 @@ #include "plugin.h" +#ifdef __cplusplus +extern "C" { +#endif + #define MYSQL_AUDIT_CLASS_MASK_SIZE 1 #define MYSQL_AUDIT_INTERFACE_VERSION 0x0302 @@ -175,4 +179,8 @@ struct st_mysql_audit }; +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/mysql/plugin_auth.h b/include/mysql/plugin_auth.h index 156fb386aae..d776ed79a61 100644 --- a/include/mysql/plugin_auth.h +++ b/include/mysql/plugin_auth.h @@ -31,6 +31,10 @@ #include <mysql/plugin_auth_common.h> +#ifdef __cplusplus +extern "C" { +#endif + /* defines for MYSQL_SERVER_AUTH_INFO.password_used */ #define PASSWORD_USED_NO 0 @@ -122,5 +126,10 @@ struct st_mysql_auth */ int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, MYSQL_SERVER_AUTH_INFO *info); }; + +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/mysql/plugin_encryption.h b/include/mysql/plugin_encryption.h index 3f35c2bcf80..5d08f6d3067 100644 --- a/include/mysql/plugin_encryption.h +++ b/include/mysql/plugin_encryption.h @@ -27,6 +27,10 @@ #include <mysql/plugin.h> +#ifdef __cplusplus +extern "C" { +#endif + #define MariaDB_ENCRYPTION_INTERFACE_VERSION 0x0300 /** @@ -114,5 +118,9 @@ struct st_mariadb_encryption */ unsigned int (*encrypted_length)(unsigned int slen, unsigned int key_id, unsigned int key_version); }; + +#ifdef __cplusplus +} +#endif #endif diff --git a/include/mysql/plugin_ftparser.h b/include/mysql/plugin_ftparser.h index 324fce7ae86..4dace4ef3a6 100644 --- a/include/mysql/plugin_ftparser.h +++ b/include/mysql/plugin_ftparser.h @@ -18,6 +18,10 @@ #define _my_plugin_ftparser_h #include "plugin.h" +#ifdef __cplusplus +extern "C" { +#endif + /************************************************************************* API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN) */ @@ -208,5 +212,9 @@ struct st_mysql_ftparser }; +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/mysql/plugin_password_validation.h b/include/mysql/plugin_password_validation.h index f3ca5c7e0cf..18c643e877b 100644 --- a/include/mysql/plugin_password_validation.h +++ b/include/mysql/plugin_password_validation.h @@ -26,6 +26,10 @@ #include <mysql/plugin.h> +#ifdef __cplusplus +extern "C" { +#endif + #define MariaDB_PASSWORD_VALIDATION_INTERFACE_VERSION 0x0100 /** @@ -41,5 +45,10 @@ struct st_mariadb_password_validation int (*validate_password)(MYSQL_LEX_STRING *username, MYSQL_LEX_STRING *password); }; + +#ifdef __cplusplus +} +#endif + #endif diff --git a/sql/encryption.cc b/sql/encryption.cc index 209b092b0a4..52aaef896dd 100644 --- a/sql/encryption.cc +++ b/sql/encryption.cc @@ -23,6 +23,8 @@ static plugin_ref encryption_manager= 0; struct encryption_service_st encryption_handler; +extern "C" { + uint no_key(uint) { return ENCRYPTION_KEY_VERSION_INVALID; @@ -41,6 +43,8 @@ static unsigned int get_length(unsigned int slen, unsigned int key_id, return my_aes_get_size(MY_AES_CBC, slen); } +} /* extern "C" */ + int initialize_encryption_plugin(st_plugin_int *plugin) { if (encryption_manager) @@ -57,9 +61,15 @@ int initialize_encryption_plugin(st_plugin_int *plugin) st_mariadb_encryption *handle= (struct st_mariadb_encryption*) plugin->plugin->info; - encryption_handler.encryption_ctx_size_func= - handle->crypt_ctx_size ? handle->crypt_ctx_size : - (uint (*)(unsigned int, unsigned int))my_aes_ctx_size; + /* + Copmiler on Spark doesn't like the '?' operator here as it + belives the (uint (*)...) implies the C++ call model. + */ + if (handle->crypt_ctx_size) + encryption_handler.encryption_ctx_size_func= handle->crypt_ctx_size; + else + encryption_handler.encryption_ctx_size_func= + (uint (*)(unsigned int, unsigned int))my_aes_ctx_size; encryption_handler.encryption_ctx_init_func= handle->crypt_ctx_init ? handle->crypt_ctx_init : ctx_init; |