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'.
This commit is contained in:
Alexey Botchkov 2016-05-04 11:42:39 +04:00
parent 5dd0c77e92
commit a02d4023db
6 changed files with 55 additions and 3 deletions

View File

@ -23,6 +23,10 @@
#include "plugin.h" #include "plugin.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MYSQL_AUDIT_CLASS_MASK_SIZE 1 #define MYSQL_AUDIT_CLASS_MASK_SIZE 1
#define MYSQL_AUDIT_INTERFACE_VERSION 0x0302 #define MYSQL_AUDIT_INTERFACE_VERSION 0x0302
@ -175,4 +179,8 @@ struct st_mysql_audit
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -31,6 +31,10 @@
#include <mysql/plugin_auth_common.h> #include <mysql/plugin_auth_common.h>
#ifdef __cplusplus
extern "C" {
#endif
/* defines for MYSQL_SERVER_AUTH_INFO.password_used */ /* defines for MYSQL_SERVER_AUTH_INFO.password_used */
#define PASSWORD_USED_NO 0 #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); int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, MYSQL_SERVER_AUTH_INFO *info);
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -27,6 +27,10 @@
#include <mysql/plugin.h> #include <mysql/plugin.h>
#ifdef __cplusplus
extern "C" {
#endif
#define MariaDB_ENCRYPTION_INTERFACE_VERSION 0x0300 #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); unsigned int (*encrypted_length)(unsigned int slen, unsigned int key_id, unsigned int key_version);
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -18,6 +18,10 @@
#define _my_plugin_ftparser_h #define _my_plugin_ftparser_h
#include "plugin.h" #include "plugin.h"
#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************* /*************************************************************************
API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN) API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN)
*/ */
@ -208,5 +212,9 @@ struct st_mysql_ftparser
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -26,6 +26,10 @@
#include <mysql/plugin.h> #include <mysql/plugin.h>
#ifdef __cplusplus
extern "C" {
#endif
#define MariaDB_PASSWORD_VALIDATION_INTERFACE_VERSION 0x0100 #define MariaDB_PASSWORD_VALIDATION_INTERFACE_VERSION 0x0100
/** /**
@ -41,5 +45,10 @@ struct st_mariadb_password_validation
int (*validate_password)(MYSQL_LEX_STRING *username, int (*validate_password)(MYSQL_LEX_STRING *username,
MYSQL_LEX_STRING *password); MYSQL_LEX_STRING *password);
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -23,6 +23,8 @@
static plugin_ref encryption_manager= 0; static plugin_ref encryption_manager= 0;
struct encryption_service_st encryption_handler; struct encryption_service_st encryption_handler;
extern "C" {
uint no_key(uint) uint no_key(uint)
{ {
return ENCRYPTION_KEY_VERSION_INVALID; 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); return my_aes_get_size(MY_AES_CBC, slen);
} }
} /* extern "C" */
int initialize_encryption_plugin(st_plugin_int *plugin) int initialize_encryption_plugin(st_plugin_int *plugin)
{ {
if (encryption_manager) if (encryption_manager)
@ -57,9 +61,15 @@ int initialize_encryption_plugin(st_plugin_int *plugin)
st_mariadb_encryption *handle= st_mariadb_encryption *handle=
(struct st_mariadb_encryption*) plugin->plugin->info; (struct st_mariadb_encryption*) plugin->plugin->info;
encryption_handler.encryption_ctx_size_func= /*
handle->crypt_ctx_size ? handle->crypt_ctx_size : Copmiler on Spark doesn't like the '?' operator here as it
(uint (*)(unsigned int, unsigned int))my_aes_ctx_size; 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= encryption_handler.encryption_ctx_init_func=
handle->crypt_ctx_init ? handle->crypt_ctx_init : ctx_init; handle->crypt_ctx_init ? handle->crypt_ctx_init : ctx_init;