diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/comp_tools/bison.in | 1 | ||||
-rw-r--r-- | config/comp_tools/make.in | 7 | ||||
-rw-r--r-- | config/configure.in.in | 15 | ||||
-rw-r--r-- | config/debug/gdb.in | 18 | ||||
-rw-r--r-- | config/debug/gdb.in.gdbserver | 71 | ||||
-rw-r--r-- | config/debug/gdb.in.native | 46 | ||||
-rw-r--r-- | config/libc/glibc.in | 31 |
7 files changed, 108 insertions, 81 deletions
diff --git a/config/comp_tools/bison.in b/config/comp_tools/bison.in new file mode 100644 index 0000000..b0dc9e1 --- /dev/null +++ b/config/comp_tools/bison.in @@ -0,0 +1 @@ +# GNU bison diff --git a/config/comp_tools/make.in b/config/comp_tools/make.in index 8d0ac29..ca7996b 100644 --- a/config/comp_tools/make.in +++ b/config/comp_tools/make.in @@ -3,6 +3,7 @@ ## default y if !CONFIGURE_has_make_3_81_or_newer config MAKE_GMAKE_SYMLINK - bool - prompt "Add gmake symlink to companion gnu/make" - depends on COMP_TOOLS_MAKE + bool "Create 'gmake' symlink" + +config MAKE_GNUMAKE_SYMLINK + bool "Create 'gnumake' symlink" diff --git a/config/configure.in.in b/config/configure.in.in index 49fdb2e..e042019 100644 --- a/config/configure.in.in +++ b/config/configure.in.in @@ -3,6 +3,9 @@ config CONFIGURE_has_static_link @KCONFIG_static_link@ +config CONFIGURE_has_cxx11 + @KCONFIG_has_cxx11@ + config CONFIGURE_has_lzip @KCONFIG_lzip@ @@ -15,6 +18,9 @@ config CONFIGURE_has_curl config CONFIGURE_has_make_3_81_or_newer @KCONFIG_make_3_81_or_newer@ +config CONFIGURE_has_make_4_0_or_newer + @KCONFIG_make_4_0_or_newer@ + config CONFIGURE_has_libtool_2_4_or_newer @KCONFIG_libtool_2_4_or_newer@ @@ -33,6 +39,15 @@ config CONFIGURE_has_automake_1_15_or_newer config CONFIGURE_has_gnu_m4_1_4_12_or_newer @KCONFIG_gnu_m4_1_4_12_or_newer@ +config CONFIGURE_has_python_3_4_or_newer + @KCONFIG_python_3_4_or_newer@ + +config CONFIGURE_has_bison_2_7_or_newer + @KCONFIG_bison_2_7_or_newer@ + +config CONFIGURE_has_python + @KCONFIG_python@ + config CONFIGURE_has_dtc @KCONFIG_dtc@ diff --git a/config/debug/gdb.in b/config/debug/gdb.in index a9fab10..7fc539e 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -4,7 +4,6 @@ source "config/debug/gdb.in.cross" source "config/debug/gdb.in.native" -source "config/debug/gdb.in.gdbserver" config GDB_HAS_PKGVERSION_BUGURL bool @@ -24,3 +23,20 @@ config GDB_INSTALL_GDBINIT config GDB_HAS_DISABLE_CXX_BUILD def_bool y depends on GDB_7_12_or_later && !GDB_8_0_or_later + +# GDB 8.0 requires not just any C++, but recent enough to support C++11. +# Yes, in 2019 there are still LTS systems still lacking such support. +# I am looking at you, CentOS 6: no cookie for you, use an older GDB. +config GDB_DEP_CXX11 + def_bool y + depends on !CONFIGURE_has_cxx11 + select GDB_REQUIRE_older_than_8_0 + +config GDB_HAS_IPA_LIB + def_bool y + depends on GDB_7_2_or_later + +# Does GDB need ps_get_thread_area with const qualifier? +config GDB_CONST_GET_THREAD_AREA + bool + default y if GDB_older_than_7_12 diff --git a/config/debug/gdb.in.gdbserver b/config/debug/gdb.in.gdbserver deleted file mode 100644 index d7f1bb8..0000000 --- a/config/debug/gdb.in.gdbserver +++ /dev/null @@ -1,71 +0,0 @@ -# Menu for the native gdbserver - -config GDB_GDBSERVER - bool - prompt "gdbserver" - default y - depends on ! BARE_METAL - select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later - help - Build and install a gdbserver for the target, to run on the target. - -if GDB_GDBSERVER - -config GDB_GDBSERVER_HAS_IPA_LIB - bool - depends on GDB_7_2_or_later - default y - -config GDB_GDBSERVER_STATIC - bool - prompt "Build a static gdbserver" - depends on EXPERIMENTAL - help - In case you have trouble with dynamic loading of shared libraries, - you will find that a static gdbserver comes in handy. - - However, it has been noticed at least on x86 that enabling this - option produces an invalid gdbserver binary. It is linked with - "-static -Wl,--dynamic-list=..." which - # (a) requests invalid program interpreter - # (b) crashes glibc/uClibc-ng and does not work with musl - # See https://sourceware.org/ml/libc-alpha/2017-03/msg00267.html - - It is possible it would work with other architectures, hence it is - not completely removed. Use with care and report to the mailing list - if the resulting gdbserver works. - - For further details, see: - https://sourceware.org/bugzilla/show_bug.cgi?id=19617 - https://sourceware.org/bugzilla/show_bug.cgi?id=21086 - -config GDB_GDBSERVER_STATIC_LIBSTDCXX - bool - prompt "Link against static libstdc+++" - depends on !GDB_GDBSERVER_STATIC - default n - help - Say 'y' if you do not want gdbserver to require libstdc++.so on the - target. - -config GDB_GDBSERVER_BUILD_IPA_LIB - bool - prompt "Build the IPA library" - depends on GDB_GDBSERVER_HAS_IPA_LIB && !GDB_GDBSERVER_STATIC - help - gdbserver >= 7.2 comes with an optional library to use tracepoints, - the In Process Agent (IPA) library, libinproctrace.so. - - Say 'y' if you indend to use tracepoints when debugging your - programs with gdbserver. - - Note: Currently, building this library is not possible when the - gdbserver is built statically. This is a limitation in - crosstool-NG, so do not bug upstream about it... - -endif # GDB_GDBSERVER - -if BARE_METAL -comment "In bare-metal, you'll need to " -comment "provide your own gdbserver stub." -endif # BARE_METAL diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native index 48c8575..1ee8ad1 100644 --- a/config/debug/gdb.in.native +++ b/config/debug/gdb.in.native @@ -1,4 +1,4 @@ -# Menu for the native GDB +# Menu for the native GDB binaries (GDB itself and gdbserver) config GDB_NATIVE bool @@ -12,11 +12,35 @@ config GDB_NATIVE help Build and install a native gdb for the target, to run on the target. -if GDB_NATIVE +config GDB_GDBSERVER + bool + prompt "gdbserver" + default y + depends on ! BARE_METAL + select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later + help + Build and install a gdbserver for the target, to run on the target. + +if GDB_NATIVE || GDB_GDBSERVER + +config GDB_NATIVE_BUILD_IPA_LIB + bool + prompt "Build the IPA library" + depends on GDB_HAS_IPA_LIB && !GDB_NATIVE_STATIC + help + gdbserver >= 7.2 comes with an optional library to use tracepoints, + the In Process Agent (IPA) library, libinproctrace.so. + + Say 'y' if you intend to use tracepoints when debugging your + programs with gdbserver. + + Note: Currently, building this library is not possible when the + gdbserver is built statically. This is a limitation in + crosstool-NG, so do not bug upstream about it... config GDB_NATIVE_STATIC bool - prompt "Build a static native gdb" + prompt "Build a static gdb binaries" depends on EXPERIMENTAL help In case you have trouble with dynamic loading of shared libraries, @@ -31,10 +55,24 @@ config GDB_NATIVE_STATIC It is possible it would work with other architectures, hence it is not completely removed. Use with care and report to the mailing list - if the resulting gdbserver works. + if the resulting binaries work. For further details, see: https://sourceware.org/bugzilla/show_bug.cgi?id=19617 https://sourceware.org/bugzilla/show_bug.cgi?id=21086 +config GDB_NATIVE_STATIC_LIBSTDCXX + bool + prompt "Link against static libstdc+++" + depends on !GDB_NATIVE_STATIC + default n + help + Say 'y' if you do not want gdbserver to require libstdc++.so on the + target. + endif # GDB_NATIVE + +if BARE_METAL +comment "In bare-metal, you'll need to " +comment "provide your own gdbserver stub." +endif # BARE_METAL diff --git a/config/libc/glibc.in b/config/libc/glibc.in index 6598c31..4138707 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -23,8 +23,8 @@ endif # Glibc has some dependencies on the kernel headers: config GLIBC_DEP_KERNEL_HEADERS_VERSION - def_bool y - select LINUX_REQUIRE_3_2_or_later if GLIBC_2_24_or_later + def_bool y + select LINUX_REQUIRE_3_2_or_later if GLIBC_2_24_or_later # Glibc 2.26 requires at least binutils 2.25. # Also, binutils 2.30 fail while compiling aarch64 glibc; fixed in 2.27 @@ -35,6 +35,33 @@ config GLIBC_DEP_BINUTILS select BINUTILS_REQUIRE_2_25_or_later if GLIBC_2_26_or_later select BINUTILS_REQUIRE_older_than_2_30 if GLIBC_older_than_2_26 && ARCH_ARM && ARCH_64 +# Glibc 2.29 requires GCC5+ or, for ppc64le, GCC6.2+. We only support the latest +# release on GCC6 branch, so just assume it is newer than 6.2 +config GLIBC_DEP_GCC + def_bool y + select GCC_REQUIRE_5_or_later if GLIBC_2_29_or_later + select GCC_REQUIRE_6_or_later if GLIBC_2_29_or_later && ARCH_POWERPC && ARCH_64 && ARCH_LE + +# Glibc 2.29 requires bison 2.7 or later. All versions in ct-ng satisfy that +# version requirement. +config GLIBC_DEP_BISON + def_bool y + depends on GLIBC_2_29_or_later && !CONFIGURE_has_bison_2_7_or_newer + select COMP_TOOLS_BISON + +# Glibc 2.29 now requires Python 3.4 or later, and make 4.0 or later. Ensure +# we build 'make' as a companion tool if host's make isn't new enough. +config GLIBC_DEP_PYTHON + def_bool y + select GLIBC_REQUIRE_older_than_2_29 if !CONFIGURE_has_python_3_4_or_newer + +config GLIBC_DEP_MAKE_4_0 + def_bool y + depends on GLIBC_2_29_or_later && !CONFIGURE_has_make_4_0_or_newer + select COMP_TOOLS_MAKE + select MAKE_REQUIRE_4_0_or_later + select MAKE_GNUMAKE_SYMLINK # Override old host make in .build/tools/bin + config GLIBC_DEP_GCC def_bool y select GCC_REQUIRE_4_9_or_later if GLIBC_2_26_or_later |