forked from Imagelibrary/binutils-gdb
New --enable-threading configure option to control use of threads in GDB/GDBserver
Add the --enable-threading configure option so multithreading can be disabled at configure time. This is useful for statically-linked builds of GDB/GDBserver, since the thread library doesn't play well with that setup. If you try to run a statically-linked GDB built with threading, it will crash when setting up the number of worker threads. This new option is also convenient when debugging GDB in a system with lots of threads, where the thread discovery code in GDB will emit too many messages, like so: [New Thread 0xfffff74d3a50 (LWP 2625599)] If you have X threads, that message will be repeated X times. The default for --enable-threading is "yes".
This commit is contained in:
11
gdb/NEWS
11
gdb/NEWS
@@ -3,6 +3,17 @@
|
|||||||
|
|
||||||
*** Changes since GDB 11
|
*** Changes since GDB 11
|
||||||
|
|
||||||
|
* Configure changes
|
||||||
|
|
||||||
|
--enable-threading
|
||||||
|
|
||||||
|
Enable or disable multithreaded symbol loading. This is enabled
|
||||||
|
by default, but passing --disable-threading or --enable-threading=no
|
||||||
|
to configure will disable it.
|
||||||
|
|
||||||
|
Disabling this can cause a performance penalty when there are a lot of
|
||||||
|
symbols to load, but is useful for debugging purposes.
|
||||||
|
|
||||||
* New commands
|
* New commands
|
||||||
|
|
||||||
maint set backtrace-on-fatal-signal on|off
|
maint set backtrace-on-fatal-signal on|off
|
||||||
|
|||||||
24
gdb/configure
vendored
24
gdb/configure
vendored
@@ -910,6 +910,7 @@ with_python
|
|||||||
with_python_libdir
|
with_python_libdir
|
||||||
with_guile
|
with_guile
|
||||||
enable_source_highlight
|
enable_source_highlight
|
||||||
|
enable_threading
|
||||||
with_intel_pt
|
with_intel_pt
|
||||||
with_libipt_prefix
|
with_libipt_prefix
|
||||||
with_libipt_type
|
with_libipt_type
|
||||||
@@ -1597,6 +1598,8 @@ Optional Features:
|
|||||||
--disable-rpath do not hardcode runtime library paths
|
--disable-rpath do not hardcode runtime library paths
|
||||||
--enable-source-highlight
|
--enable-source-highlight
|
||||||
enable source-highlight for source listings
|
enable source-highlight for source listings
|
||||||
|
--enable-threading include support for parallel processing of data
|
||||||
|
(yes/no)
|
||||||
--enable-werror treat compile warnings as errors
|
--enable-werror treat compile warnings as errors
|
||||||
--enable-build-warnings enable build-time compiler warnings if gcc is used
|
--enable-build-warnings enable build-time compiler warnings if gcc is used
|
||||||
--enable-gdb-build-warnings
|
--enable-gdb-build-warnings
|
||||||
@@ -14065,6 +14068,22 @@ fi
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------- #
|
||||||
|
# Check for threading. #
|
||||||
|
# ----------------------- #
|
||||||
|
|
||||||
|
# Check whether --enable-threading was given.
|
||||||
|
if test "${enable_threading+set}" = set; then :
|
||||||
|
enableval=$enable_threading; case "$enableval" in
|
||||||
|
yes) want_threading=yes ;;
|
||||||
|
no) want_threading=no ;;
|
||||||
|
*) as_fn_error $? "bad value $enableval for threading" "$LINENO" 5 ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
want_threading=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check for std::thread. This does not work on some platforms, like
|
# Check for std::thread. This does not work on some platforms, like
|
||||||
# mingw and DJGPP.
|
# mingw and DJGPP.
|
||||||
ac_ext=cpp
|
ac_ext=cpp
|
||||||
@@ -14762,10 +14781,13 @@ done
|
|||||||
LIBS="$save_LIBS"
|
LIBS="$save_LIBS"
|
||||||
CXXFLAGS="$save_CXXFLAGS"
|
CXXFLAGS="$save_CXXFLAGS"
|
||||||
fi
|
fi
|
||||||
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
|
||||||
|
if test "$want_threading" = "yes"; then
|
||||||
|
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
||||||
|
|
||||||
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
ac_ext=c
|
ac_ext=c
|
||||||
ac_cpp='$CPP $CPPFLAGS'
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
|||||||
24
gdbserver/configure
vendored
24
gdbserver/configure
vendored
@@ -746,6 +746,7 @@ ac_user_opts='
|
|||||||
enable_option_checking
|
enable_option_checking
|
||||||
enable_maintainer_mode
|
enable_maintainer_mode
|
||||||
enable_largefile
|
enable_largefile
|
||||||
|
enable_threading
|
||||||
with_intel_pt
|
with_intel_pt
|
||||||
with_gnu_ld
|
with_gnu_ld
|
||||||
enable_rpath
|
enable_rpath
|
||||||
@@ -1396,6 +1397,8 @@ Optional Features:
|
|||||||
enable make rules and dependencies not useful (and
|
enable make rules and dependencies not useful (and
|
||||||
sometimes confusing) to the casual installer
|
sometimes confusing) to the casual installer
|
||||||
--disable-largefile omit support for large files
|
--disable-largefile omit support for large files
|
||||||
|
--enable-threading include support for parallel processing of data
|
||||||
|
(yes/no)
|
||||||
--disable-rpath do not hardcode runtime library paths
|
--disable-rpath do not hardcode runtime library paths
|
||||||
--enable-unit-tests Enable the inclusion of unit tests when compiling
|
--enable-unit-tests Enable the inclusion of unit tests when compiling
|
||||||
GDB
|
GDB
|
||||||
@@ -7264,6 +7267,22 @@ fi
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------- #
|
||||||
|
# Check for threading. #
|
||||||
|
# ----------------------- #
|
||||||
|
|
||||||
|
# Check whether --enable-threading was given.
|
||||||
|
if test "${enable_threading+set}" = set; then :
|
||||||
|
enableval=$enable_threading; case "$enableval" in
|
||||||
|
yes) want_threading=yes ;;
|
||||||
|
no) want_threading=no ;;
|
||||||
|
*) as_fn_error $? "bad value $enableval for threading" "$LINENO" 5 ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
want_threading=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check for std::thread. This does not work on some platforms, like
|
# Check for std::thread. This does not work on some platforms, like
|
||||||
# mingw and DJGPP.
|
# mingw and DJGPP.
|
||||||
ac_ext=cpp
|
ac_ext=cpp
|
||||||
@@ -7961,10 +7980,13 @@ done
|
|||||||
LIBS="$save_LIBS"
|
LIBS="$save_LIBS"
|
||||||
CXXFLAGS="$save_CXXFLAGS"
|
CXXFLAGS="$save_CXXFLAGS"
|
||||||
fi
|
fi
|
||||||
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
|
||||||
|
if test "$want_threading" = "yes"; then
|
||||||
|
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
||||||
|
|
||||||
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
ac_ext=c
|
ac_ext=c
|
||||||
ac_cpp='$CPP $CPPFLAGS'
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
|||||||
@@ -76,6 +76,19 @@ AC_DEFUN([GDB_AC_COMMON], [
|
|||||||
# Define HAVE_KINFO_GETFILE if kinfo_getfile is available.
|
# Define HAVE_KINFO_GETFILE if kinfo_getfile is available.
|
||||||
AC_CHECK_FUNCS(kinfo_getfile)
|
AC_CHECK_FUNCS(kinfo_getfile)
|
||||||
|
|
||||||
|
# ----------------------- #
|
||||||
|
# Check for threading. #
|
||||||
|
# ----------------------- #
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(threading,
|
||||||
|
AS_HELP_STRING([--enable-threading], [include support for parallel processing of data (yes/no)]),
|
||||||
|
[case "$enableval" in
|
||||||
|
yes) want_threading=yes ;;
|
||||||
|
no) want_threading=no ;;
|
||||||
|
*) AC_MSG_ERROR([bad value $enableval for threading]) ;;
|
||||||
|
esac],
|
||||||
|
[want_threading=yes])
|
||||||
|
|
||||||
# Check for std::thread. This does not work on some platforms, like
|
# Check for std::thread. This does not work on some platforms, like
|
||||||
# mingw and DJGPP.
|
# mingw and DJGPP.
|
||||||
AC_LANG_PUSH([C++])
|
AC_LANG_PUSH([C++])
|
||||||
@@ -101,9 +114,12 @@ AC_DEFUN([GDB_AC_COMMON], [
|
|||||||
LIBS="$save_LIBS"
|
LIBS="$save_LIBS"
|
||||||
CXXFLAGS="$save_CXXFLAGS"
|
CXXFLAGS="$save_CXXFLAGS"
|
||||||
fi
|
fi
|
||||||
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
|
||||||
AC_DEFINE(CXX_STD_THREAD, 1,
|
if test "$want_threading" = "yes"; then
|
||||||
[Define to 1 if std::thread works.])
|
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
||||||
|
AC_DEFINE(CXX_STD_THREAD, 1,
|
||||||
|
[Define to 1 if std::thread works.])
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
AC_LANG_POP
|
AC_LANG_POP
|
||||||
|
|
||||||
|
|||||||
24
gdbsupport/configure
vendored
24
gdbsupport/configure
vendored
@@ -767,6 +767,7 @@ enable_silent_rules
|
|||||||
enable_dependency_tracking
|
enable_dependency_tracking
|
||||||
enable_plugins
|
enable_plugins
|
||||||
enable_largefile
|
enable_largefile
|
||||||
|
enable_threading
|
||||||
with_intel_pt
|
with_intel_pt
|
||||||
with_gnu_ld
|
with_gnu_ld
|
||||||
enable_rpath
|
enable_rpath
|
||||||
@@ -1419,6 +1420,8 @@ Optional Features:
|
|||||||
speeds up one-time build
|
speeds up one-time build
|
||||||
--enable-plugins Enable support for plugins
|
--enable-plugins Enable support for plugins
|
||||||
--disable-largefile omit support for large files
|
--disable-largefile omit support for large files
|
||||||
|
--enable-threading include support for parallel processing of data
|
||||||
|
(yes/no)
|
||||||
--disable-rpath do not hardcode runtime library paths
|
--disable-rpath do not hardcode runtime library paths
|
||||||
--enable-unit-tests Enable the inclusion of unit tests when compiling
|
--enable-unit-tests Enable the inclusion of unit tests when compiling
|
||||||
GDB
|
GDB
|
||||||
@@ -8277,6 +8280,22 @@ fi
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------- #
|
||||||
|
# Check for threading. #
|
||||||
|
# ----------------------- #
|
||||||
|
|
||||||
|
# Check whether --enable-threading was given.
|
||||||
|
if test "${enable_threading+set}" = set; then :
|
||||||
|
enableval=$enable_threading; case "$enableval" in
|
||||||
|
yes) want_threading=yes ;;
|
||||||
|
no) want_threading=no ;;
|
||||||
|
*) as_fn_error $? "bad value $enableval for threading" "$LINENO" 5 ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
want_threading=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check for std::thread. This does not work on some platforms, like
|
# Check for std::thread. This does not work on some platforms, like
|
||||||
# mingw and DJGPP.
|
# mingw and DJGPP.
|
||||||
ac_ext=cpp
|
ac_ext=cpp
|
||||||
@@ -8974,10 +8993,13 @@ done
|
|||||||
LIBS="$save_LIBS"
|
LIBS="$save_LIBS"
|
||||||
CXXFLAGS="$save_CXXFLAGS"
|
CXXFLAGS="$save_CXXFLAGS"
|
||||||
fi
|
fi
|
||||||
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
|
||||||
|
if test "$want_threading" = "yes"; then
|
||||||
|
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
||||||
|
|
||||||
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
ac_ext=c
|
ac_ext=c
|
||||||
ac_cpp='$CPP $CPPFLAGS'
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
|||||||
Reference in New Issue
Block a user