2771 Alexey Botchkov 2008-12-03
Bug #41103 6.0 Windows embedded-server tests fail
to be exported correctly from the DLL, data
has to be declared as __declspec(dllimport)
for the client, and as DATA in the .def file.
per-file comments:
include/m_string.h
Bug#41103 6.0 Windows embedded-server tests fail
__declspec(dllimport) added for Windows
include/my_global.h
Bug#41103 6.0 Windows embedded-server tests fail
__declspec(dllimport) added for Windows
include/my_sys.h
Bug#41103 6.0 Windows embedded-server tests fail
__declspec(dllimport) added for Windows
libmysql/libmysql.def
Bug#41103 6.0 Windows embedded-server tests fail
DATA modifiers added
libmysqld/examples/CMakeLists.txt
Bug#41103 6.0 Windows embedded-server tests fail
MY_USE_CLIENT_DLL defined for projects
libmysqld/libmysqld.def
Bug#41103 6.0 Windows embedded-server tests fail
DATA modifiers added
per-file comments:
include/m_string.h
include/my_global.h
include/my_sys.h
libmysql/libmysql.def
libmysqld/examples/CMakeLists.txt
libmysqld/libmysqld.def
modified:
client/mysqltest.c
include/m_ctype.h
include/m_string.h
include/my_global.h
include/my_sys.h
include/mysql.h
libmysql/libmysql.def
libmysqld/examples/CMakeLists.txt
libmysqld/libmysqld.c
libmysqld/libmysqld.def
mysys/my_fopen.c
2770 Georgi Kodinov 2008-12-02 [merge]
merged 5.1-bugteam -> 6.0-bugteam
modified:
extra/yassl/src/yassl_imp.cpp
sql/set_var.h
=== modified file 'client/mysqltest.c'
--- a/client/mysqltest.c 2008-11-03 17:51:36 +0000
+++ b/client/mysqltest.c 2008-12-03 14:05:31 +0000
@@ -147,7 +147,7 @@ static struct st_test_file* cur_file;
static struct st_test_file* file_stack_end;
-static CHARSET_INFO *charset_info= &my_charset_latin1; /* Default charset */
+static CHARSET_INFO *charset_info; /* Default charset */
static const char *embedded_server_groups[]=
{
@@ -7255,6 +7255,7 @@ int main(int argc, char **argv)
MY_STAT res_info;
MY_INIT(argv[0]);
+ charset_info= &my_charset_latin1;
save_file[0]= 0;
TMPDIR[0]= 0;
=== modified file 'include/m_ctype.h'
--- a/include/m_ctype.h 2008-07-23 09:43:50 +0000
+++ b/include/m_ctype.h 2008-12-03 14:05:31 +0000
@@ -321,7 +321,7 @@ typedef struct charset_info_st
#define ILLEGAL_CHARSET_INFO_NUMBER (~0U)
-extern CHARSET_INFO my_charset_bin;
+MY_DLLEXPORT CHARSET_INFO my_charset_bin;
extern CHARSET_INFO my_charset_big5_chinese_ci;
extern CHARSET_INFO my_charset_big5_bin;
extern CHARSET_INFO my_charset_cp932_japanese_ci;
@@ -336,7 +336,7 @@ extern CHARSET_INFO my_charset_gb2312_ch
extern CHARSET_INFO my_charset_gb2312_bin;
extern CHARSET_INFO my_charset_gbk_chinese_ci;
extern CHARSET_INFO my_charset_gbk_bin;
-extern CHARSET_INFO my_charset_latin1;
+MY_DLLEXPORT CHARSET_INFO my_charset_latin1;
extern CHARSET_INFO my_charset_latin1_german2_ci;
extern CHARSET_INFO my_charset_latin1_bin;
extern CHARSET_INFO my_charset_latin2_czech_ci;
=== modified file 'include/m_string.h'
--- a/include/m_string.h 2008-06-26 18:29:30 +0000
+++ b/include/m_string.h 2008-12-03 14:05:31 +0000
@@ -89,8 +89,8 @@ extern char *stpcpy(char *, const char *
#endif
/* Declared in int2str() */
-extern char NEAR _dig_vec_upper[];
-extern char NEAR _dig_vec_lower[];
+MY_DLLEXPORT char NEAR _dig_vec_upper[];
+MY_DLLEXPORT char NEAR _dig_vec_lower[];
#ifdef BAD_STRING_COMPILER
#define strmov(A,B) (memccpy(A,B,0,INT_MAX)-1)
=== modified file 'include/my_global.h'
--- a/include/my_global.h 2008-11-19 10:04:44 +0000
+++ b/include/my_global.h 2008-12-03 14:05:31 +0000
@@ -1615,4 +1615,10 @@ inline void operator delete[](void*, vo
# define __func__ "<unknown>"
#endif
+#ifdef MY_USE_CLIENT_DLL
+#define MY_DLLEXPORT __declspec(dllimport)
+#else
+#define MY_DLLEXPORT extern
+#endif /*MY_USE_CLIENT_DLL*/
+
#endif /* my_global_h */
=== modified file 'include/my_sys.h'
--- a/include/my_sys.h 2008-10-20 19:13:22 +0000
+++ b/include/my_sys.h 2008-12-03 14:05:31 +0000
@@ -218,7 +218,7 @@ extern int errno; /* declare errno */
#endif /* #ifndef errno */
extern char NEAR errbuff[NRERRBUFFS][ERRMSGSIZE];
extern char *home_dir; /* Home directory for user */
-extern const char *my_progname; /* program-name (printed in errors) */
+MY_DLLEXPORT const char *my_progname; /* program-name (printed in errors) */
extern const char *my_progname_short; /* like above but without directory */
extern char NEAR curr_dir[]; /* Current directory for user */
extern void (*error_handler_hook)(uint my_err, const char *str,myf MyFlags);
@@ -682,6 +682,7 @@ extern void my_osmaperr(unsigned lon
extern void TERMINATE(FILE *file, uint flag);
#endif
extern void init_glob_errs(void);
+extern void make_ftype(char * to,int flag);
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
extern int my_fclose(FILE *fd,myf MyFlags);
=== modified file 'include/mysql.h'
--- a/include/mysql.h 2008-08-07 17:52:43 +0000
+++ b/include/mysql.h 2008-12-03 14:05:31 +0000
@@ -748,6 +748,12 @@ int STDCALL mysql_drop_db(MYSQL *mysql,
#pragma pack(pop) /* restore alignment */
#endif
+#ifdef MY_USE_CLIENT_DLL
+char *emb_make_ftype(int type);
+#define my_fopen(name, mode, flags) fopen(name, emb_make_ftype(mode))
+#define my_fclose(file, flags) fclose(file)
+#endif /*MY_USE_CLIENT_DLL*/
+
#ifdef __cplusplus
}
#endif
=== modified file 'libmysql/libmysql.def'
--- a/libmysql/libmysql.def 2008-08-11 10:03:45 +0000
+++ b/libmysql/libmysql.def 2008-12-03 14:05:31 +0000
@@ -1,8 +1,9 @@
LIBRARY LIBMYSQL
VERSION 6.0
EXPORTS
- _dig_vec_lower
- _dig_vec_upper
+ _dig_vec_lower DATA
+ _dig_vec_upper DATA
+ my_progname DATA
bmove_upp
delete_dynamic
free_defaults
=== modified file 'libmysqld/examples/CMakeLists.txt'
--- a/libmysqld/examples/CMakeLists.txt 2008-11-19 12:11:30 +0000
+++ b/libmysqld/examples/CMakeLists.txt 2008-12-03 14:05:31 +0000
@@ -24,18 +24,18 @@ IF(WIN32)
ADD_DEFINITIONS(-DUSE_TLS)
ENDIF(WIN32)
-ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
+ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -DMY_USE_CLIENT_DLL)
ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
../../client/mysql.cc ../../client/readline.cc
../../client/sql_string.cc)
-TARGET_LINK_LIBRARIES(mysql_embedded ws2_32)
+TARGET_LINK_LIBRARIES(mysql_embedded)
ADD_DEPENDENCIES(mysql_embedded libmysqld)
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c)
-TARGET_LINK_LIBRARIES(mysqltest_embedded ws2_32)
+TARGET_LINK_LIBRARIES(mysqltest_embedded)
ADD_DEPENDENCIES(mysqltest_embedded libmysqld)
ADD_EXECUTABLE(mysql_client_test_embedded ../../tests/mysql_client_test.c)
-TARGET_LINK_LIBRARIES(mysql_client_test_embedded ws2_32)
+TARGET_LINK_LIBRARIES(mysql_client_test_embedded)
ADD_DEPENDENCIES(mysql_client_test_embedded libmysqld)
=== modified file 'libmysqld/libmysqld.c'
--- a/libmysqld/libmysqld.c 2008-10-17 15:11:28 +0000
+++ b/libmysqld/libmysqld.c 2008-12-03 14:05:31 +0000
@@ -223,3 +223,14 @@ error:
DBUG_RETURN(0);
}
+
+#ifdef __WIN__
+static char emb_makeftype_buffer[10];
+
+char *emb_make_ftype(int type)
+{
+ make_ftype(emb_makeftype_buffer, type);
+ return emb_makeftype_buffer;
+}
+#endif /*__WIN__*/
+
=== modified file 'libmysqld/libmysqld.def'
--- a/libmysqld/libmysqld.def 2008-11-26 11:54:39 +0000
+++ b/libmysqld/libmysqld.def 2008-12-03 14:05:31 +0000
@@ -44,7 +44,7 @@ EXPORTS
pthread_create
pthread_cond_init
ll2str
- my_fileno
+ my_fileno
my_gcvt
my_regcomp
my_regexec
@@ -63,8 +63,8 @@ EXPORTS
my_dir
my_micro_time
find_type_or_exit
- _dig_vec_upper
- _dig_vec_lower
+ _dig_vec_upper DATA
+ _dig_vec_lower DATA
bmove_upp
delete_dynamic
free_defaults
@@ -177,17 +177,18 @@ EXPORTS
mysql_sqlstate
charsets_dir
disabled_my_option
- my_charset_latin1
+ my_charset_latin1 DATA
+ my_charset_bin DATA
+ my_charset_same
init_alloc_root
- my_progname
+ my_progname DATA
get_charset_name
get_charset_by_csname
print_defaults
find_type
strxnmov
strend
- my_fopen
- my_fclose
+ emb_make_ftype
unpack_filename
str2int
int10_to_str
@@ -228,7 +229,5 @@ EXPORTS
mysql_stmt_attr_set
mysql_stmt_field_count
get_defaults_options
- my_charset_bin
- my_charset_same
modify_defaults_file
mysql_stmt_next_result
=== modified file 'mysys/my_fopen.c'
--- a/mysys/my_fopen.c 2008-07-23 08:52:08 +0000
+++ b/mysys/my_fopen.c 2008-12-03 14:05:31 +0000
@@ -18,7 +18,6 @@
#include <errno.h>
#include "mysys_err.h"
-static void make_ftype(char * to,int flag);
/*
Open a file as stream
@@ -196,7 +195,7 @@ FILE *my_fdopen(File Filedes, const char
a+ == O_RDWR|O_APPEND|O_CREAT
*/
-static void make_ftype(register char * to, register int flag)
+void make_ftype(register char * to, register int flag)
{
/* check some possible invalid combinations */
DBUG_ASSERT((flag & (O_TRUNC | O_APPEND)) != (O_TRUNC | O_APPEND));