summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-06-19 15:33:33 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-06-19 15:33:33 (GMT)
commit3950f8e87d5717bdb5e3bcdac69a544cef8efd28 (patch)
tree18f54c9c2cb664e249016fb172cd6373255f9250
parente66d06e8e3e613e16a406a051f77a4f323e70014 (diff)
A bunch of fixes/improvements to the gdb build:
- allow native builds (both shared and static) - fix enabling threads - better handle the gdbserver case - introduce the ncurses library to allow native builds - re-order config options adequately /trunk/scripts/build/debug/300-gdb.sh | 126 79 47 0 ++++++++++++++++++++++++++--------------- /trunk/config/debug/gdb.in | 45 33 12 0 +++++++++++---- 2 files changed, 112 insertions(+), 59 deletions(-)
-rw-r--r--config/debug/gdb.in45
-rw-r--r--scripts/build/debug/300-gdb.sh126
2 files changed, 112 insertions, 59 deletions
diff --git a/config/debug/gdb.in b/config/debug/gdb.in
index 8bebde7..4b35cc2 100644
--- a/config/debug/gdb.in
+++ b/config/debug/gdb.in
@@ -13,38 +13,59 @@ config GDB_CROSS
bool
prompt "Cross-gdb"
default y
+ select GDB_GDBSERVER
help
- Build and install a cross-gdb for the target, and to run on host.
+ Build and install a cross-gdb for the target, to run on host.
-config GDB_CROSS_STATIC_GDB
+config GDB_CROSS_STATIC
bool
prompt "Build a static cross gdb"
default n
depends on GDB_CROSS
help
A static cross gdb can be usefull if you debug on a machine that is
- not the one that is used to compile.
+ not the one that is used to compile the toolchain.
-config GDB_CROSS_STATIC_GDBSERVER
+ That way, you can share the cross-gdb without installing a toolchain
+ on every machine that will be used to debug target programs.
+
+config GDB_NATIVE
bool
- prompt "Build a static gdbserver"
+ prompt "Native gdb"
default n
- depends on GDB_CROSS
+ select GDB_GDBSERVER
+ help
+ Build and install a native gdb for the target, to run on the target.
+
+config GDB_NATIVE_STATIC
+ bool
+ prompt "Build a static native gdb"
+ default n
+ depends on GDB_NATIVE
help
In case you have trouble with dynamic loading of shared libraries,
- you will find that a static gdbserver comes in handy.
+ you will find that a static gdb comes in handy.
-config GDB_NATIVE
+config GDB_GDBSERVER
bool
- prompt "Native gdb (EXPERIMENTAL)"
+ prompt "gdbserver"
default n
- depends on EXPERIMENTAL
help
- Build and install a native gdb for the target, to run on the target.
+ Build and install a gdbserver for the target, to run on the target.
+
+config GDB_GDBSERVER_STATIC
+ bool
+ prompt "Build a static gdbserver"
+ default n
+ depends on GDB_GDBSERVER
+ help
+ In case you have trouble with dynamic loading of shared libraries,
+ you will find that a static gdbserver comes in handy.
choice
bool
prompt "gdb version"
+ depends on GDB_CROSS || GDB_NATIVE || GDB_GDBSERVER
config GDB_V_snapshot
bool
@@ -118,6 +139,6 @@ config NCURSES_VERSION
default "4.2" if NCURSES_V_4_2
default "5.6" if NCURSES_V_5_6
-endif # ncurses
+endif # GDB_NATIVE --> ncurses
endif
diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh
index b15b281..703082b 100644
--- a/scripts/build/debug/300-gdb.sh
+++ b/scripts/build/debug/300-gdb.sh
@@ -47,22 +47,29 @@ do_debug_gdb_build() {
mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
cd "${CT_BUILD_DIR}/build-gdb-cross"
+ if [ "${CT_CC_GCC_GMP_MPFR}" = "y" ]; then
+ extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
+ fi
+ case "${CT_THREADS}" in
+ none) extra_config="${extra_config} --disable-threads";;
+ *) extra_config="${extra_config} --enable-threads";;
+ esac
+
CC_for_gdb=
LD_for_gdb=
- if [ "${CT_GDB_CROSS_STATIC_GDBSERVER}" = "y" ]; then
+ if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then
CC_for_gdb="gcc -static"
LD_for_gdb="ld -static"
fi
CC="${CC_for_gdb}" \
- LD="${LD_forgdb}" \
+ LD="${LD_for_gdb}" \
"${gdb_src_dir}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \
--prefix="${CT_PREFIX_DIR}" \
--with-build-sysroot="${CT_SYSROOT_DIR}" \
- --enable-threads \
${extra_config} 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Building cross-gdb"
@@ -72,48 +79,6 @@ do_debug_gdb_build() {
make install 2>&1 |CT_DoLog ALL
CT_EndStep
-
- CT_DoStep INFO "Installing gdbserver"
- CT_DoLog EXTRA "Configuring gdbserver"
-
- mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
- cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
-
- # Workaround for bad versions, where the configure
- # script for gdbserver is not executable...
- # Bah, GNU folks strike again... :-(
- chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
-
- gdbserver_LDFLAGS=
- if [ "${CT_GDB_CROSS_STATIC_GDBSERVER}" = "y" ]; then
- gdbserver_LDFLAGS=-static
- fi
-
- LDFLAGS="${gdbserver_LDFLAGS}" \
- "${gdb_src_dir}/gdb/gdbserver/configure" \
- --build=${CT_BUILD} \
- --host=${CT_TARGET} \
- --target=${CT_TARGET} \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --includedir="${CT_HEADERS_DIR}" \
- --with-build-sysroot="${CT_SYSROOT_DIR}" \
- --program-prefix= \
- --without-uiout \
- --disable-tui \
- --disable-gdbtk \
- --without-x \
- --without-included-gettext \
- ${extra_config} 2>&1 |CT_DoLog ALL
-
- CT_DoLog EXTRA "Building gdbserver"
- make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL
-
- CT_DoLog EXTRA "Installing gdbserver"
- make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL
-
- CT_EndStep
fi
if [ "${CT_GDB_NATIVE}" = "y" ]; then
@@ -138,7 +103,6 @@ do_debug_gdb_build() {
--without-sysmouse \
--without-progs \
--enable-termcap \
- --without-develop \
${ncurses_opts} 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Building ncurses"
@@ -155,6 +119,22 @@ do_debug_gdb_build() {
mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
cd "${CT_BUILD_DIR}/build-gdb-native"
+ case "${CT_THREADS}" in
+ none) extra_config="${extra_config} --disable-threads";;
+ *) extra_config="${extra_config} --enable-threads";;
+ esac
+
+ CC_for_gdb=
+ LD_for_gdb=
+ if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then
+ CC_for_gdb="${CT_TARGET}-gcc -static"
+ LD_for_gdb="${CT_TARGET}-ld -static"
+ fi
+
+ export ac_cv_func_strncmp_works=yes
+
+ CC="${CC_for_gdb}" \
+ LD="${LD_for_gdb}" \
"${gdb_src_dir}/configure" \
--build=${CT_BUILD} \
--host=${CT_TARGET} \
@@ -166,8 +146,9 @@ do_debug_gdb_build() {
--disable-gdbtk \
--without-x \
--disable-sim \
- --disable-gdbserver \
+ --disable-werror \
--without-included-gettext \
+ --without-develop \
${extra_config} 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Building native gdb"
@@ -176,6 +157,57 @@ do_debug_gdb_build() {
CT_DoLog EXTRA "Installing native gdb"
make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL
+ # Building a native gdb also builds a gdbserver
+ CT_DoLog DEBUG "Removing spurious gdbserver"
+ find "${CT_DEBUG_INSTALL_DIR}" -type f -name gdbserver -exec rm -fv {} + 2>&1 |CT_DoLog ALL
+
+ unset ac_cv_func_strncmp_works
+
+ CT_EndStep
+ fi
+
+ if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
+ CT_DoStep INFO "Installing gdbserver"
+ CT_DoLog EXTRA "Configuring gdbserver"
+
+ mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
+ cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
+
+ # Workaround for bad versions, where the configure
+ # script for gdbserver is not executable...
+ # Bah, GNU folks strike again... :-(
+ chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
+
+ gdbserver_LDFLAGS=
+ if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then
+ gdbserver_LDFLAGS=-static
+ fi
+
+ LDFLAGS="${gdbserver_LDFLAGS}" \
+ "${gdb_src_dir}/gdb/gdbserver/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_TARGET} \
+ --target=${CT_TARGET} \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --includedir="${CT_HEADERS_DIR}" \
+ --with-build-sysroot="${CT_SYSROOT_DIR}" \
+ --program-prefix= \
+ --without-uiout \
+ --disable-tui \
+ --disable-gdbtk \
+ --without-x \
+ --without-included-gettext \
+ --without-develop \
+ ${extra_config} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Building gdbserver"
+ make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Installing gdbserver"
+ make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL
+
CT_EndStep
fi
}