Commit ccfcfce6 authored by unknown's avatar unknown

Fix compile issues in Intel C/C++ compiler (Bug #9063)


acinclude.m4:
  Use AC_LANG_PUSH/POP instead of _SAVE/RESTORE
  Add test to get type of 'struct rlimit'
  Switch order of including stdlib.h and declaration being tested to
  match how it will be used in regular code.
configure.in:
  Call MYSQL_TYPE_STRUCT_RLIMIT macro
sql/mysqld.cc:
  Use STRUCT_RLIMIT for getting type of struct rlimit.
parent 20cf8f82
...@@ -97,10 +97,10 @@ undefine([AC_CV_NAME])dnl ...@@ -97,10 +97,10 @@ undefine([AC_CV_NAME])dnl
AC_DEFUN([MYSQL_TYPE_ACCEPT], AC_DEFUN([MYSQL_TYPE_ACCEPT],
[ac_save_CXXFLAGS="$CXXFLAGS" [ac_save_CXXFLAGS="$CXXFLAGS"
AC_CACHE_CHECK([base type of last arg to accept], mysql_cv_btype_last_arg_accept, AC_CACHE_CHECK([base type of last arg to accept], mysql_cv_btype_last_arg_accept,
AC_LANG_SAVE AC_LANG_PUSH(C++)
AC_LANG_CPLUSPLUS
if test "$ac_cv_prog_gxx" = "yes" if test "$ac_cv_prog_gxx" = "yes"
then then
# Add -Werror, remove -fbranch-probabilities (Bug #268)
CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'`
fi fi
mysql_cv_btype_last_arg_accept=none mysql_cv_btype_last_arg_accept=none
...@@ -127,7 +127,7 @@ fi ...@@ -127,7 +127,7 @@ fi
if test "$mysql_cv_btype_last_arg_accept" = "none"; then if test "$mysql_cv_btype_last_arg_accept" = "none"; then
mysql_cv_btype_last_arg_accept=int mysql_cv_btype_last_arg_accept=int
fi) fi)
AC_LANG_RESTORE AC_LANG_POP(C++)
AC_DEFINE_UNQUOTED([SOCKET_SIZE_TYPE], [$mysql_cv_btype_last_arg_accept], AC_DEFINE_UNQUOTED([SOCKET_SIZE_TYPE], [$mysql_cv_btype_last_arg_accept],
[The base type of the last arg to accept]) [The base type of the last arg to accept])
CXXFLAGS="$ac_save_CXXFLAGS" CXXFLAGS="$ac_save_CXXFLAGS"
...@@ -153,6 +153,35 @@ then ...@@ -153,6 +153,35 @@ then
fi fi
]) ])
#---START: Figure out whether to use 'struct rlimit' or 'struct rlimit64'
AC_DEFUN([MYSQL_TYPE_STRUCT_RLIMIT],
[ac_save_CXXFLAGS="$CXXFLAGS"
AC_CACHE_CHECK([struct type to use with setrlimit], mysql_cv_btype_struct_rlimit,
AC_LANG_PUSH(C++)
if test "$ac_cv_prog_gxx" = "yes"
then
# Add -Werror, remove -fbranch-probabilities (Bug #268)
CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'`
fi
mysql_cv_btype_struct_rlimit=none
[AC_TRY_COMPILE([#if defined(inline)
#undef inline
#endif
#include <stdlib.h>
#include <sys/resources.h>
],
[struct rlimit64 rl; setrlimit(RLIMIT_CORE, &rl);],
mysql_cv_btype_struct_rlimit="struct rlimit64")]
if test "$mysql_cv_btype_struct_rlimit" = "none"; then
mysql_cv_btype_struct_rlimit="struct rlimit"
fi)
AC_LANG_POP(C++)
AC_DEFINE_UNQUOTED([STRUCT_RLIMIT], [$mysql_cv_btype_struct_rlimit],
[The struct rlimit type to use with setrlimit])
CXXFLAGS="$ac_save_CXXFLAGS"
])
#---END:
AC_DEFUN([MYSQL_TIMESPEC_TS], AC_DEFUN([MYSQL_TIMESPEC_TS],
[AC_CACHE_CHECK([if struct timespec has a ts_sec member], mysql_cv_timespec_ts, [AC_CACHE_CHECK([if struct timespec has a ts_sec member], mysql_cv_timespec_ts,
[AC_TRY_COMPILE([#include <pthread.h> [AC_TRY_COMPILE([#include <pthread.h>
...@@ -1940,8 +1969,8 @@ m4_define([_AC_PROG_CXX_EXIT_DECLARATION], ...@@ -1940,8 +1969,8 @@ m4_define([_AC_PROG_CXX_EXIT_DECLARATION],
'void exit (int);' \ 'void exit (int);' \
'#include <stdlib.h>' '#include <stdlib.h>'
do do
_AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@include <stdlib.h> _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_declaration
$ac_declaration], @%:@include <stdlib.h>],
[exit (42);])], [exit (42);])],
[], [],
[continue]) [continue])
......
...@@ -1795,6 +1795,8 @@ AC_C_BIGENDIAN ...@@ -1795,6 +1795,8 @@ AC_C_BIGENDIAN
MYSQL_TYPE_ACCEPT MYSQL_TYPE_ACCEPT
#---END: #---END:
# Figure out what type of struct rlimit to use with setrlimit
MYSQL_TYPE_STRUCT_RLIMIT
# Find where the stack goes # Find where the stack goes
MYSQL_STACK_DIRECTION MYSQL_STACK_DIRECTION
# We want to skip alloca on irix unconditionally. It may work on some version.. # We want to skip alloca on irix unconditionally. It may work on some version..
......
...@@ -2000,7 +2000,7 @@ static void init_signals(void) ...@@ -2000,7 +2000,7 @@ static void init_signals(void)
if (test_flags & TEST_CORE_ON_SIGNAL) if (test_flags & TEST_CORE_ON_SIGNAL)
{ {
/* Change limits so that we will get a core file */ /* Change limits so that we will get a core file */
struct rlimit rl; STRUCT_RLIMIT rl;
rl.rlim_cur = rl.rlim_max = RLIM_INFINITY; rl.rlim_cur = rl.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &rl) && global_system_variables.log_warnings) if (setrlimit(RLIMIT_CORE, &rl) && global_system_variables.log_warnings)
sql_print_warning("setrlimit could not change the size of core files to 'infinity'; We may not be able to generate a core file on signals"); sql_print_warning("setrlimit could not change the size of core files to 'infinity'; We may not be able to generate a core file on signals");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment