From: Tor Didriksen Date: December 21 2010 12:49pm Subject: bzr commit into mysql-5.5-bugteam branch (tor.didriksen:3221) Bug#58699 List-Archive: http://lists.mysql.com/commits/127423 X-Bug: 58699 Message-Id: <20101221124936.136C933D2@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6660103838183665265==" --===============6660103838183665265== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/didrik/repo/5.5-bugteam-bug58137/ based on revid:sven.sandberg@stripped 3221 Tor Didriksen 2010-12-21 Bug #58699 cannot build with gcc dbg on solaris @ cmake/os/SunOS.cmake Remove TARGET_OS_SOLARIS @ config.h.cmake Remove TARGET_OS_SOLARIS Add PTHREAD_ONCE_INITIALIZER @ configure.cmake Add function for testing whether we need { PTHREAD_ONCE_INIT } rather than PTHREAD_ONCE_INIT @ include/my_pthread.h Use PTHREAD_ONCE_INITIALIZER if set by cmake. @ include/mysql/psi/mysql_file.h Include my_global.h first, to get correct platform definitions. @ mysys/ptr_cmp.c Hide the unused static functions in #ifdef's on solaris. Use __sun (defined by both gcc and SunPro cc) rather than TARGET_OS_SOLARIS @ sql/my_decimal.cc Include my_global.h first, to get correct platform definitions. @ sql/mysqld.cc Fix signed/unsigned comparison warning. @ sql/sql_audit.h Include my_global.h first, to get correct platform definitions. @ sql/sql_plugin.h Include my_global.h first, to get correct platform definitions. @ sql/sql_show.cc Fix: warning: cast from pointer to integer of different size @ sql/sys_vars.h Use reinterpret_cast rather than c-style cast. @ storage/perfschema/pfs_instr.cc Include my_global.h first, to get correct platform definitions. modified: cmake/os/SunOS.cmake config.h.cmake configure.cmake include/my_pthread.h include/mysql/psi/mysql_file.h mysys/ptr_cmp.c sql/my_decimal.cc sql/mysqld.cc sql/sql_audit.h sql/sql_plugin.h sql/sql_show.cc sql/sys_vars.h storage/perfschema/pfs_instr.cc === modified file 'cmake/os/SunOS.cmake' --- a/cmake/os/SunOS.cmake 2010-02-25 09:57:23 +0000 +++ b/cmake/os/SunOS.cmake 2010-12-21 12:00:26 +0000 @@ -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) === modified file 'config.h.cmake' --- a/config.h.cmake 2010-10-04 12:42:16 +0000 +++ b/config.h.cmake 2010-12-21 12:00:26 +0000 @@ -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 === modified file 'configure.cmake' --- a/configure.cmake 2010-10-19 17:05:25 +0000 +++ b/configure.cmake 2010-12-21 12:00:26 +0000 @@ -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 + 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 + 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 # === modified file 'include/my_pthread.h' --- a/include/my_pthread.h 2010-10-20 14:48:19 +0000 +++ b/include/my_pthread.h 2010-12-21 12:00:26 +0000 @@ -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 */ === modified file 'include/mysql/psi/mysql_file.h' --- a/include/mysql/psi/mysql_file.h 2010-07-09 23:00:24 +0000 +++ b/include/mysql/psi/mysql_file.h 2010-12-21 12:00:26 +0000 @@ -16,6 +16,8 @@ #ifndef MYSQL_FILE_H #define MYSQL_FILE_H +#include + /* For strlen() */ #include /* For MY_STAT */ === modified file 'mysys/ptr_cmp.c' --- a/mysys/ptr_cmp.c 2009-11-20 19:01:43 +0000 +++ b/mysys/ptr_cmp.c 2010-12-21 12:00:26 +0000 @@ -22,7 +22,7 @@ #include "mysys_priv.h" #include -#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 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 return (0); } +#endif /* !__sun */ + void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos) { switch (pack_length) { === modified file 'sql/my_decimal.cc' --- a/sql/my_decimal.cc 2010-12-14 16:26:18 +0000 +++ b/sql/my_decimal.cc 2010-12-21 12:00:26 +0000 @@ -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 #include "sql_priv.h" #include === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2010-12-17 11:11:34 +0000 +++ b/sql/mysqld.cc 2010-12-21 12:00:26 +0000 @@ -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) === modified file 'sql/sql_audit.h' --- a/sql/sql_audit.h 2010-12-14 14:34:23 +0000 +++ b/sql/sql_audit.h 2010-12-21 12:00:26 +0000 @@ -17,6 +17,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include + #include #include "sql_class.h" === modified file 'sql/sql_plugin.h' --- a/sql/sql_plugin.h 2010-12-01 22:15:14 +0000 +++ b/sql/sql_plugin.h 2010-12-21 12:00:26 +0000 @@ -16,6 +16,8 @@ #ifndef _sql_plugin_h #define _sql_plugin_h +#include + /* the following #define adds server-only members to enum_mysql_show_type, that is defined in plugin.h === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2010-12-17 11:11:34 +0000 +++ b/sql/sql_show.cc 2010-12-21 12:00:26 +0000 @@ -2255,7 +2255,7 @@ static bool show_status_array(THD *thd, 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); === modified file 'sql/sys_vars.h' --- a/sql/sys_vars.h 2010-10-08 00:53:00 +0000 +++ b/sql/sys_vars.h 2010-12-21 12:00:26 +0000 @@ -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(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(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) === modified file 'storage/perfschema/pfs_instr.cc' --- a/storage/perfschema/pfs_instr.cc 2010-11-11 11:34:46 +0000 +++ b/storage/perfschema/pfs_instr.cc 2010-12-21 12:00:26 +0000 @@ -18,9 +18,9 @@ Performance schema instruments (implementation). */ +#include #include -#include "my_global.h" #include "my_sys.h" #include "pfs.h" #include "pfs_stat.h" --===============6660103838183665265== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # 0jj8yve2f4japdn9 # target_branch: file:///export/home/didrik/repo/5.5-bugteam-bug58137/ # testament_sha1: adc0a97deb69f65d62fb552dacbd5ba0cdfec1ee # timestamp: 2010-12-21 13:49:35 +0100 # base_revision_id: sven.sandberg@stripped\ # xwgkb365b2b5pdok # # Begin bundle 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 4/8XckU4UJDrlehQ --===============6660103838183665265==--