Commit 49ac2dac authored by joerg@mysql.com's avatar joerg@mysql.com

Automerge / manual check of the fixes for NPTL configuration (bug#2173, bug#5871, and bug#9497).

Post-merge fix will follow.
parents b890c05b 70ed0ea4
...@@ -383,15 +383,16 @@ AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os") ...@@ -383,15 +383,16 @@ AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os")
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
then then
MYSQLD_DEFAULT_SWITCHES="--skip-locking" MYSQLD_DEFAULT_SWITCHES="--skip-locking"
IS_LINUX="true" TARGET_LINUX="true"
AC_MSG_RESULT("yes"); AC_MSG_RESULT("yes")
AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
else else
MYSQLD_DEFAULT_SWITCHES="" MYSQLD_DEFAULT_SWITCHES=""
IS_LINUX="false" TARGET_LINUX="false"
AC_MSG_RESULT("no"); AC_MSG_RESULT("no")
fi fi
AC_SUBST(MYSQLD_DEFAULT_SWITCHES) AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
AC_SUBST(IS_LINUX) AC_SUBST(TARGET_LINUX)
dnl Find paths to some shell programs dnl Find paths to some shell programs
AC_PATH_PROG(LN, ln, ln) AC_PATH_PROG(LN, ln, ln)
...@@ -580,7 +581,7 @@ AC_SUBST(NOINST_LDFLAGS) ...@@ -580,7 +581,7 @@ AC_SUBST(NOINST_LDFLAGS)
# (this is true on the MySQL build machines to avoid NSS problems) # (this is true on the MySQL build machines to avoid NSS problems)
# #
if test "$IS_LINUX" = "true" -a "$static_nss" = "" if test "$TARGET_LINUX" = "true" -a "$static_nss" = ""
then then
tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r` tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r`
if test -n "$tmp" if test -n "$tmp"
...@@ -747,7 +748,7 @@ AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init)) ...@@ -747,7 +748,7 @@ AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init))
MYSQL_CHECK_ZLIB_WITH_COMPRESS MYSQL_CHECK_ZLIB_WITH_COMPRESS
# For large pages support # For large pages support
if test "$IS_LINUX" = "true" if test "$TARGET_LINUX" = "true"
then then
# For SHM_HUGETLB on Linux # For SHM_HUGETLB on Linux
AC_CHECK_DECLS(SHM_HUGETLB, AC_CHECK_DECLS(SHM_HUGETLB,
...@@ -805,7 +806,7 @@ struct request_info *req; ...@@ -805,7 +806,7 @@ struct request_info *req;
]) ])
AC_SUBST(WRAPLIBS) AC_SUBST(WRAPLIBS)
if test "$IS_LINUX" = "true"; then if test "$TARGET_LINUX" = "true"; then
AC_MSG_CHECKING([for atomic operations]) AC_MSG_CHECKING([for atomic operations])
atom_ops= atom_ops=
...@@ -849,7 +850,7 @@ int main() ...@@ -849,7 +850,7 @@ int main()
[ USE_PSTACK=no ]) [ USE_PSTACK=no ])
pstack_libs= pstack_libs=
pstack_dirs= pstack_dirs=
if test "$USE_PSTACK" = yes -a "$IS_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386"
then then
have_libiberty= have_libbfd= have_libiberty= have_libbfd=
my_save_LIBS="$LIBS" my_save_LIBS="$LIBS"
...@@ -1231,11 +1232,36 @@ esac ...@@ -1231,11 +1232,36 @@ esac
# We have to check libc last because else it fails on Solaris 2.6 # We have to check libc last because else it fails on Solaris 2.6
with_posix_threads="no" with_posix_threads="no"
# Hack for DEC-UNIX (OSF1) # Search thread lib on Linux
if test "$with_named_thread" = "no" if test "$with_named_thread" = "no"
then then
AC_MSG_CHECKING("Linux threads")
if test "$TARGET_LINUX" = "true"
then
AC_MSG_RESULT("starting")
# use getconf to check glibc contents
AC_MSG_CHECKING("getconf GNU_LIBPTHREAD_VERSION")
case `getconf GNU_LIBPTHREAD_VERSION | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` in
NPTL* )
AC_MSG_RESULT("NPTL")
AC_DEFINE([HAVE_NPTL], [1], [NPTL threads implementation])
with_named_thread="-lpthread"
;;
LINUXTHREADS* )
AC_MSG_RESULT("Linuxthreads")
AC_DEFINE([HAVE_LINUXTHREADS], [1],
[Whether we are using Xavier Leroy's LinuxThreads])
with_named_thread="-lpthread"
;;
* )
AC_MSG_RESULT("unknown")
;;
esac
if test "$with_named_thread" = "no"
then
# old method, check headers
# Look for LinuxThreads. # Look for LinuxThreads.
AC_MSG_CHECKING("LinuxThreads") AC_MSG_CHECKING("LinuxThreads in header file comment")
res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l` res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
if test "$res" -gt 0 if test "$res" -gt 0
then then
...@@ -1251,41 +1277,48 @@ then ...@@ -1251,41 +1277,48 @@ then
else else
AC_MSG_RESULT("Not found") AC_MSG_RESULT("Not found")
# If this is a linux machine we should barf # If this is a linux machine we should barf
if test "$IS_LINUX" = "true" AC_MSG_ERROR([This is a Linux system without a working getconf,
then and Linuxthreads was not found. Please install it (or a new glibc) and try again.
AC_MSG_ERROR([This is a linux system and Linuxthreads was not See the Installation chapter in the Reference Manual for more information.])
found. On linux Linuxthreads should be used. Please install Linuxthreads fi
(or a new glibc) and try again. See the Installation chapter in the
Reference Manual for more information.])
else else
AC_MSG_CHECKING("DEC threads") AC_MSG_RESULT("no need to check headers")
fi
AC_MSG_CHECKING("for pthread_create in -lpthread");
ac_save_LIBS="$LIBS"
LIBS="$LIBS -lpthread"
AC_TRY_LINK( [#include <pthread.h>],
[ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
AC_MSG_RESULT("yes"),
[ AC_MSG_RESULT("no")
AC_MSG_ERROR([
This is a Linux system claiming to support threads, either Linuxthreads or NPTL, but linking a test program failed.
Please install one of these (or a new glibc) and try again.
See the Installation chapter in the Reference Manual for more information.]) ]
)
LIBS="$ac_save_LIBS"
else
AC_MSG_RESULT("no")
fi # "$TARGET_LINUX"
fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
# Hack for DEC-UNIX (OSF1 -> Tru64)
if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
then
AC_MSG_CHECKING("DEC threads post OSF/1 3.2")
if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a
then then
with_named_thread="-lpthread -lmach -lexc" with_named_thread="-lpthread -lmach -lexc"
CFLAGS="$CFLAGS -D_REENTRANT" CFLAGS="$CFLAGS -D_REENTRANT"
CXXFLAGS="$CXXFLAGS -D_REENTRANT" CXXFLAGS="$CXXFLAGS -D_REENTRANT"
AC_DEFINE(HAVE_DEC_THREADS, [1], AC_DEFINE(HAVE_DEC_THREADS, [1], [Whether we are using DEC threads])
[Whether we are using DEC threads])
AC_MSG_RESULT("yes") AC_MSG_RESULT("yes")
else else
AC_MSG_RESULT("no") AC_MSG_RESULT("no")
AC_MSG_CHECKING("DEC 3.2 threads") fi # DEC threads
if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
then
with_named_thread="-lpthreads -lmach -lc_r"
AC_DEFINE(HAVE_DEC_THREADS, [1])
AC_DEFINE([HAVE_DEC_3_2_THREADS], [1],
[Whether we are using OSF1 DEC threads on 3.2])
with_osf32_threads="yes"
MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority"
AC_MSG_RESULT("yes")
else
AC_MSG_RESULT("no")
fi
fi
fi
fi
fi
dnl This is needed because -lsocket has to come after the thread dnl This is needed because -lsocket has to come after the thread
...@@ -1696,7 +1729,7 @@ fi ...@@ -1696,7 +1729,7 @@ fi
AC_SUBST(COMPILATION_COMMENT) AC_SUBST(COMPILATION_COMMENT)
AC_MSG_CHECKING("need of special linking flags") AC_MSG_CHECKING("need of special linking flags")
if test "$IS_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes" if test "$TARGET_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes"
then then
LDFLAGS="$LDFLAGS -rdynamic" LDFLAGS="$LDFLAGS -rdynamic"
AC_MSG_RESULT("-rdynamic") AC_MSG_RESULT("-rdynamic")
...@@ -1914,7 +1947,7 @@ CFLAGS="$ORG_CFLAGS" ...@@ -1914,7 +1947,7 @@ CFLAGS="$ORG_CFLAGS"
# Sanity check: We chould not have any fseeko symbol unless # Sanity check: We chould not have any fseeko symbol unless
# large_file_support=yes # large_file_support=yes
AC_CHECK_FUNC(fseeko, AC_CHECK_FUNC(fseeko,
[if test "$large_file_support" = no -a "$IS_LINUX" = "true"; [if test "$large_file_support" = no -a "$TARGET_LINUX" = "true";
then then
AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!"); AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!");
fi] fi]
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
/* Fix problem with S_ISLNK() on Linux */ /* Fix problem with S_ISLNK() on Linux */
#if defined(HAVE_LINUXTHREADS) #if defined(TARGET_OS_LINUX)
#undef _GNU_SOURCE #undef _GNU_SOURCE
#define _GNU_SOURCE 1 #define _GNU_SOURCE 1
#endif #endif
...@@ -246,13 +246,13 @@ C_MODE_START int __cxa_pure_virtual() {\ ...@@ -246,13 +246,13 @@ C_MODE_START int __cxa_pure_virtual() {\
#endif #endif
/* In Linux-alpha we have atomic.h if we are using gcc */ /* In Linux-alpha we have atomic.h if we are using gcc */
#if defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && defined(__alpha__) && (__GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 95)) && !defined(HAVE_ATOMIC_ADD) #if defined(TARGET_OS_LINUX) && defined(__GNUC__) && defined(__alpha__) && (__GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 95)) && !defined(HAVE_ATOMIC_ADD)
#define HAVE_ATOMIC_ADD #define HAVE_ATOMIC_ADD
#define HAVE_ATOMIC_SUB #define HAVE_ATOMIC_SUB
#endif #endif
/* In Linux-ia64 including atomic.h will give us an error */ /* In Linux-ia64 including atomic.h will give us an error */
#if (defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && (defined(__ia64__)||defined(__powerpc64__))) || !defined(THREAD) #if (defined(TARGET_OS_LINUX) && defined(__GNUC__) && (defined(__ia64__)||defined(__powerpc64__))) || !defined(THREAD)
#undef HAVE_ATOMIC_ADD #undef HAVE_ATOMIC_ADD
#undef HAVE_ATOMIC_SUB #undef HAVE_ATOMIC_SUB
#endif #endif
...@@ -799,7 +799,7 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */ ...@@ -799,7 +799,7 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */
#error "Neither int or long is of 4 bytes width" #error "Neither int or long is of 4 bytes width"
#endif #endif
#if !defined(HAVE_ULONG) && !defined(HAVE_LINUXTHREADS) && !defined(__USE_MISC) #if !defined(HAVE_ULONG) && !defined(TARGET_OS_LINUX) && !defined(__USE_MISC)
typedef unsigned long ulong; /* Short for unsigned long */ typedef unsigned long ulong; /* Short for unsigned long */
#endif #endif
#ifndef longlong_defined #ifndef longlong_defined
......
...@@ -88,7 +88,7 @@ SUFFIXES = .sh ...@@ -88,7 +88,7 @@ SUFFIXES = .sh
-e 's!@''FIND_PROC''@!@FIND_PROC@!' \ -e 's!@''FIND_PROC''@!@FIND_PROC@!' \
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''sysconfdir''@!@sysconfdir@!' \ -e 's!@''sysconfdir''@!@sysconfdir@!' \
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
/* This makes a wrapper for mutex handling to make it easier to debug mutex */ /* This makes a wrapper for mutex handling to make it easier to debug mutex */
#include <my_global.h> #include <my_global.h>
#if defined(HAVE_LINUXTHREADS) && !defined (__USE_UNIX98) #if defined(TARGET_OS_LINUX) && !defined (__USE_UNIX98)
#define __USE_UNIX98 /* To get rw locks under Linux */ #define __USE_UNIX98 /* To get rw locks under Linux */
#endif #endif
#if defined(THREAD) && defined(SAFE_MUTEX) #if defined(THREAD) && defined(SAFE_MUTEX)
......
...@@ -135,7 +135,7 @@ SUFFIXES = .sh ...@@ -135,7 +135,7 @@ SUFFIXES = .sh
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \ -e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''STATIC_NSS_FLAGS''@!@STATIC_NSS_FLAGS@!' \ -e 's!@''STATIC_NSS_FLAGS''@!@STATIC_NSS_FLAGS@!' \
......
...@@ -368,7 +368,7 @@ do ...@@ -368,7 +368,7 @@ do
break break
fi fi
if @IS_LINUX@ && test $KILL_MYSQLD -eq 1 if @TARGET_LINUX@ && test $KILL_MYSQLD -eq 1
then then
# Test if one process was hanging. # Test if one process was hanging.
# This is only a fix for Linux (running as base 3 mysqld processes) # This is only a fix for Linux (running as base 3 mysqld processes)
......
...@@ -43,7 +43,7 @@ void safe_print_str(const char* name, const char* val, int max_len) ...@@ -43,7 +43,7 @@ void safe_print_str(const char* name, const char* val, int max_len)
fputc('\n', stderr); fputc('\n', stderr);
} }
#ifdef HAVE_LINUXTHREADS #ifdef TARGET_OS_LINUX
#define SIGRETURN_FRAME_COUNT 2 #define SIGRETURN_FRAME_COUNT 2
#if defined(__alpha__) && defined(__GNUC__) #if defined(__alpha__) && defined(__GNUC__)
...@@ -201,7 +201,7 @@ end: ...@@ -201,7 +201,7 @@ end:
stack trace is much more helpful in diagnosing the problem, so please do \n\ stack trace is much more helpful in diagnosing the problem, so please do \n\
resolve it\n"); resolve it\n");
} }
#endif /* HAVE_LINUXTHREADS */ #endif /* TARGET_OS_LINUX */
#endif /* HAVE_STACKTRACE */ #endif /* HAVE_STACKTRACE */
/* Produce a core for the thread */ /* Produce a core for the thread */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
extern "C" { extern "C" {
#endif #endif
#ifdef HAVE_LINUXTHREADS #ifdef TARGET_OS_LINUX
#if defined(HAVE_STACKTRACE) || (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) #if defined(HAVE_STACKTRACE) || (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__)))
#undef HAVE_STACKTRACE #undef HAVE_STACKTRACE
#define HAVE_STACKTRACE #define HAVE_STACKTRACE
...@@ -30,7 +30,7 @@ extern char* heap_start; ...@@ -30,7 +30,7 @@ extern char* heap_start;
void print_stacktrace(gptr stack_bottom, ulong thread_stack); void print_stacktrace(gptr stack_bottom, ulong thread_stack);
void safe_print_str(const char* name, const char* val, int max_len); void safe_print_str(const char* name, const char* val, int max_len);
#endif /* (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) */ #endif /* (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) */
#endif /* HAVE_LINUXTHREADS */ #endif /* TARGET_OS_LINUX */
/* Define empty prototypes for functions that are not implemented */ /* Define empty prototypes for functions that are not implemented */
#ifndef HAVE_STACKTRACE #ifndef HAVE_STACKTRACE
......
...@@ -90,7 +90,7 @@ SUFFIXES = .sh ...@@ -90,7 +90,7 @@ SUFFIXES = .sh
-e 's!@''FIND_PROC''@!@FIND_PROC@!' \ -e 's!@''FIND_PROC''@!@FIND_PROC@!' \
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''sysconfdir''@!@sysconfdir@!' \ -e 's!@''sysconfdir''@!@sysconfdir@!' \
......
...@@ -101,7 +101,7 @@ static CHARSET_INFO *cs= &my_charset_latin1; ...@@ -101,7 +101,7 @@ static CHARSET_INFO *cs= &my_charset_latin1;
set by the user set by the user
*/ */
#if defined(__i386__) && defined(HAVE_LINUXTHREADS) #if defined(__i386__) && defined(TARGET_OS_LINUX)
#define DO_STACKTRACE 1 #define DO_STACKTRACE 1
#endif #endif
......
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