diff options
-rw-r--r-- | cmake/os/SunOS.cmake | 1 | ||||
-rw-r--r-- | config.h.cmake | 2 | ||||
-rw-r--r-- | configure.cmake | 43 | ||||
-rw-r--r-- | include/my_pthread.h | 4 | ||||
-rw-r--r-- | include/mysql/psi/mysql_file.h | 2 | ||||
-rw-r--r-- | mysys/ptr_cmp.c | 19 | ||||
-rw-r--r-- | sql/my_decimal.cc | 1 | ||||
-rw-r--r-- | sql/mysqld.cc | 4 | ||||
-rw-r--r-- | sql/sql_audit.h | 2 | ||||
-rw-r--r-- | sql/sql_plugin.h | 2 | ||||
-rw-r--r-- | sql/sql_show.cc | 2 | ||||
-rw-r--r-- | sql/sys_vars.h | 8 | ||||
-rw-r--r-- | storage/perfschema/pfs_instr.cc | 2 |
13 files changed, 78 insertions, 14 deletions
diff --git a/cmake/os/SunOS.cmake b/cmake/os/SunOS.cmake index e932e6c2b74..9e8ca0ef11f 100644 --- a/cmake/os/SunOS.cmake +++ b/cmake/os/SunOS.cmake @@ -17,7 +17,6 @@ INCLUDE(CheckSymbolExists) INCLUDE(CheckCSourceRuns) INCLUDE(CheckCSourceCompiles) -SET(TARGET_OS_SOLARIS 1) # Enable 64 bit file offsets SET(_FILE_OFFSET_BITS 64) diff --git a/config.h.cmake b/config.h.cmake index 54567df4548..e51dcf51f32 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -226,6 +226,7 @@ #cmakedefine HAVE_PTHREAD_THREADMASK 1 #cmakedefine HAVE_PTHREAD_YIELD_NP 1 #cmakedefine HAVE_PTHREAD_YIELD_ZERO_ARG 1 +#cmakedefine PTHREAD_ONCE_INITIALIZER @PTHREAD_ONCE_INITIALIZER@ #cmakedefine HAVE_PUTENV 1 #cmakedefine HAVE_RE_COMP 1 #cmakedefine HAVE_REGCOMP 1 @@ -406,7 +407,6 @@ #cmakedefine TARGET_OS_LINUX 1 -#cmakedefine TARGET_OS_SOLARIS 1 #cmakedefine HAVE_WCTYPE_H 1 #cmakedefine HAVE_WCHAR_H 1 diff --git a/configure.cmake b/configure.cmake index cba9e79ff23..954b60a45f6 100644 --- a/configure.cmake +++ b/configure.cmake @@ -269,6 +269,49 @@ ENDIF() # FIND_PACKAGE (Threads) +FUNCTION(MY_CHECK_PTHREAD_ONCE_INIT) + CHECK_C_COMPILER_FLAG("-Werror" HAVE_WERROR_FLAG) + IF(NOT HAVE_WERROR_FLAG) + RETURN() + ENDIF() + SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror") + CHECK_C_SOURCE_COMPILES(" + #include <pthread.h> + void foo(void) {} + int main() + { + pthread_once_t once_control = PTHREAD_ONCE_INIT; + pthread_once(&once_control, foo); + return 0; + }" + HAVE_PTHREAD_ONCE_INIT + ) + # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6611808 + IF(NOT HAVE_PTHREAD_ONCE_INIT) + CHECK_C_SOURCE_COMPILES(" + #include <pthread.h> + void foo(void) {} + int main() + { + pthread_once_t once_control = { PTHREAD_ONCE_INIT }; + pthread_once(&once_control, foo); + return 0; + }" + HAVE_ARRAY_PTHREAD_ONCE_INIT + ) + ENDIF() + IF(HAVE_PTHREAD_ONCE_INIT) + SET(PTHREAD_ONCE_INITIALIZER "PTHREAD_ONCE_INIT" PARENT_SCOPE) + ENDIF() + IF(HAVE_ARRAY_PTHREAD_ONCE_INIT) + SET(PTHREAD_ONCE_INITIALIZER "{ PTHREAD_ONCE_INIT }" PARENT_SCOPE) + ENDIF() +ENDFUNCTION() + +IF(CMAKE_USE_PTHREADS_INIT) + MY_CHECK_PTHREAD_ONCE_INIT() +ENDIF() + # # Tests for functions # diff --git a/include/my_pthread.h b/include/my_pthread.h index bec88a716fe..c71ad9bf321 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -214,7 +214,11 @@ int pthread_cancel(pthread_t thread); typedef void *(* pthread_handler)(void *); #define my_pthread_once_t pthread_once_t +#if defined(PTHREAD_ONCE_INITIALIZER) +#define MY_PTHREAD_ONCE_INIT PTHREAD_ONCE_INITIALIZER +#else #define MY_PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#endif #define my_pthread_once(C,F) pthread_once(C,F) /* Test first for RTS or FSU threads */ diff --git a/include/mysql/psi/mysql_file.h b/include/mysql/psi/mysql_file.h index de145f642e1..6fc6689c47d 100644 --- a/include/mysql/psi/mysql_file.h +++ b/include/mysql/psi/mysql_file.h @@ -16,6 +16,8 @@ #ifndef MYSQL_FILE_H #define MYSQL_FILE_H +#include <my_global.h> + /* For strlen() */ #include <string.h> /* For MY_STAT */ diff --git a/mysys/ptr_cmp.c b/mysys/ptr_cmp.c index 2005e3eb2b7..dcafe13291d 100644 --- a/mysys/ptr_cmp.c +++ b/mysys/ptr_cmp.c @@ -22,7 +22,7 @@ #include "mysys_priv.h" #include <myisampack.h> -#ifdef TARGET_OS_SOLARIS +#ifdef __sun /* * On Solaris, memcmp() is normally faster than the unrolled ptr_compare_N * functions, as memcmp() is usually a platform-specific implementation @@ -39,22 +39,25 @@ static int native_compare(size_t *length, unsigned char **a, unsigned char **b) return memcmp(*a, *b, *length); } -#else /* TARGET_OS_SOLARIS */ +#else /* __sun */ static int ptr_compare(size_t *compare_length, uchar **a, uchar **b); static int ptr_compare_0(size_t *compare_length, uchar **a, uchar **b); static int ptr_compare_1(size_t *compare_length, uchar **a, uchar **b); static int ptr_compare_2(size_t *compare_length, uchar **a, uchar **b); static int ptr_compare_3(size_t *compare_length, uchar **a, uchar **b); -#endif /* TARGET_OS_SOLARIS */ +#endif /* __sun */ /* Get a pointer to a optimal byte-compare function for a given size */ -qsort2_cmp get_ptr_compare (size_t size) +#ifdef __sun +qsort2_cmp get_ptr_compare (size_t size __attribute__((unused))) { -#ifdef TARGET_OS_SOLARIS return (qsort2_cmp) native_compare; +} #else +qsort2_cmp get_ptr_compare (size_t size) +{ if (size < 4) return (qsort2_cmp) ptr_compare; switch (size & 3) { @@ -64,8 +67,8 @@ qsort2_cmp get_ptr_compare (size_t size) case 3: return (qsort2_cmp) ptr_compare_3; } return 0; /* Impossible */ -#endif /* TARGET_OS_SOLARIS */ } +#endif /* __sun */ /* @@ -75,6 +78,8 @@ qsort2_cmp get_ptr_compare (size_t size) #define cmp(N) if (first[N] != last[N]) return (int) first[N] - (int) last[N] +#ifndef __sun + static int ptr_compare(size_t *compare_length, uchar **a, uchar **b) { reg3 int length= *compare_length; @@ -177,6 +182,8 @@ static int ptr_compare_3(size_t *compare_length,uchar **a, uchar **b) return (0); } +#endif /* !__sun */ + void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos) { switch (pack_length) { diff --git a/sql/my_decimal.cc b/sql/my_decimal.cc index 8a31cec6721..a5b60739b26 100644 --- a/sql/my_decimal.cc +++ b/sql/my_decimal.cc @@ -13,6 +13,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <my_global.h> #include "sql_priv.h" #include <time.h> diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d56b6715d6e..c3afa1a5399 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3247,8 +3247,8 @@ static int init_common_variables() size_t *pagesize = (size_t *) malloc(sizeof(size_t) * nelem); if (pagesize != NULL && getpagesizes(pagesize, nelem) > 0) { - size_t i, max_page_size= 0; - for (i= 0; i < nelem; i++) + size_t max_page_size= 0; + for (int i= 0; i < nelem; i++) { if (pagesize[i] > max_page_size && pagesize[i] <= max_desired_page_size) diff --git a/sql/sql_audit.h b/sql/sql_audit.h index d676c3974bc..da44c4a023b 100644 --- a/sql/sql_audit.h +++ b/sql/sql_audit.h @@ -17,6 +17,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <my_global.h> + #include <mysql/plugin_audit.h> #include "sql_class.h" diff --git a/sql/sql_plugin.h b/sql/sql_plugin.h index 0cbd5a519c1..1b7838ea085 100644 --- a/sql/sql_plugin.h +++ b/sql/sql_plugin.h @@ -16,6 +16,8 @@ #ifndef _sql_plugin_h #define _sql_plugin_h +#include <my_global.h> + /* the following #define adds server-only members to enum_mysql_show_type, that is defined in plugin.h diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 0421cc35c5d..80dfde5343e 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2255,7 +2255,7 @@ static bool show_status_array(THD *thd, const char *wild, end= int10_to_str(*(long*) value, buff, 10); break; case SHOW_LONGLONG_STATUS: - value= ((char *) status_var + (ulonglong) value); + value= ((char *) status_var + (ulong) value); /* fall through */ case SHOW_LONGLONG: end= longlong10_to_str(*(longlong*) value, buff, 10); diff --git a/sql/sys_vars.h b/sql/sys_vars.h index e16bd3c5330..c9987ed4674 100644 --- a/sql/sys_vars.h +++ b/sql/sys_vars.h @@ -1191,7 +1191,8 @@ public: void global_save_default(THD *thd, set_var *var) { LEX_STRING pname; - pname.str= *(char**)option.def_value; + char **default_value= reinterpret_cast<char**>(option.def_value); + pname.str= *default_value; pname.length= strlen(pname.str); plugin_ref plugin; @@ -1556,7 +1557,10 @@ public: void session_save_default(THD *thd, set_var *var) { var->save_result.ptr= global_var(void*); } void global_save_default(THD *thd, set_var *var) - { var->save_result.ptr= *(void**)option.def_value; } + { + void **default_value= reinterpret_cast<void**>(option.def_value); + var->save_result.ptr= *default_value; + } bool check_update_type(Item_result type) { return type != INT_RESULT && type != STRING_RESULT; } uchar *session_value_ptr(THD *thd, LEX_STRING *base) diff --git a/storage/perfschema/pfs_instr.cc b/storage/perfschema/pfs_instr.cc index 904efc2aff4..a09920737c8 100644 --- a/storage/perfschema/pfs_instr.cc +++ b/storage/perfschema/pfs_instr.cc @@ -18,9 +18,9 @@ Performance schema instruments (implementation). */ +#include <my_global.h> #include <string.h> -#include "my_global.h" #include "my_sys.h" #include "pfs.h" #include "pfs_stat.h" |