8ce33fed49
Since3341ceb1e5
(package/gdb: zlib is mandatory, not optional), zlib has become a mandatory dependencies of the gdb package. However, zlib is only needed for the debugger, gdb itself, while the server, gdbserver, does not use it. This means that, when building an SDK to be later reused as an external toolchain, the zlib headers and libraries are present in the sysroot of the toolchain, tainting the toolchain and making it unsuitable to be reused. As Julien noticed, for example, tcl will try and link with zlib if available, and at build time it is. But at runtime, it is not, and thus tclsh fails to run; see7af8dee3a8
(package/tcl: add mandatory dependency to zlib) When we only need to build gdbserver, we still need to configure and build the whole gdb distribution, which means we call the top-level configure script; that script has no option to disable the detection of zlib: it wants to either use a system one, or it will build the bundled one. So, when we only build gdbserver, we tell configure to not use a system zlib. This triggers the build of the bundled one, but it is not linked with gdbserver so in the end it is not used on the target. Reported-by: Julien Olivain <ju.o@free.fr> Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
92 lines
2.9 KiB
Plaintext
92 lines
2.9 KiB
Plaintext
config BR2_PACKAGE_GDB_ARCH_SUPPORTS
|
|
bool
|
|
default y
|
|
depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
|
|
depends on !BR2_microblaze
|
|
|
|
comment "gdb needs a glibc or uclibc toolchain"
|
|
depends on BR2_or1k
|
|
depends on BR2_TOOLCHAIN_USES_MUSL
|
|
|
|
comment "gdb/gdbserver needs a toolchain w/ threads, threads debug"
|
|
depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
|
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG
|
|
|
|
comment "gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8"
|
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
|
|
|
config BR2_PACKAGE_GDB
|
|
bool "gdb"
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG
|
|
depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
|
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
|
depends on BR2_INSTALL_LIBSTDCPP
|
|
# The or1k musl port is incomplete, elf_gregset_t definition is missing:
|
|
# https://git.musl-libc.org/cgit/musl/tree/arch/or1k/bits/user.h?h=v1.2.3
|
|
depends on !BR2_or1k || !BR2_TOOLCHAIN_USES_MUSL
|
|
# When the external toolchain gdbserver is copied to the
|
|
# target, we don't allow building a separate gdbserver. The
|
|
# one from the external toolchain should be used.
|
|
select BR2_PACKAGE_GDB_SERVER if \
|
|
(!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)
|
|
help
|
|
GDB, the GNU Project debugger, allows you to see what is
|
|
going on `inside' another program while it executes -- or
|
|
what another program was doing at the moment it crashed.
|
|
|
|
This option allows to build gdbserver and/or the gdb
|
|
debugger for the target.
|
|
|
|
For embedded development, the most common solution is to
|
|
build only 'gdbserver' for the target, and use a cross-gdb
|
|
on the host. See BR2_PACKAGE_HOST_GDB in the Toolchain menu
|
|
to enable one. Notice that external toolchains often provide
|
|
their own pre-built cross-gdb and gdbserver binaries.
|
|
|
|
http://www.gnu.org/software/gdb/
|
|
|
|
if BR2_PACKAGE_GDB
|
|
|
|
config BR2_PACKAGE_GDB_SERVER
|
|
bool "gdbserver"
|
|
depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
|
|
help
|
|
Build the gdbserver stub to run on the target.
|
|
A full gdb is needed to debug the progam.
|
|
|
|
config BR2_PACKAGE_GDB_DEBUGGER
|
|
bool "full debugger"
|
|
depends on BR2_USE_WCHAR
|
|
depends on !BR2_sh
|
|
select BR2_PACKAGE_GMP if !BR2_arc
|
|
select BR2_PACKAGE_NCURSES
|
|
select BR2_PACKAGE_ZLIB
|
|
|
|
comment "full gdb on target needs a toolchain w/ wchar"
|
|
depends on !BR2_sh
|
|
depends on !BR2_USE_WCHAR
|
|
|
|
if BR2_PACKAGE_GDB_DEBUGGER
|
|
|
|
config BR2_PACKAGE_GDB_TUI
|
|
bool "TUI support"
|
|
help
|
|
This option enables terminal user interface (TUI) for gdb
|
|
|
|
"The GDB Text User Interface (TUI) is a terminal interface
|
|
which uses the curses library to show the source file, the
|
|
assembly output, the program registers and GDB commands in
|
|
separate text windows."
|
|
|
|
https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html
|
|
|
|
config BR2_PACKAGE_GDB_PYTHON
|
|
bool "Python support"
|
|
depends on BR2_PACKAGE_PYTHON3
|
|
help
|
|
This option enables Python support in the target gdb.
|
|
|
|
endif
|
|
|
|
endif
|