This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Fix GDB build failure when $development is false
- From: Yao Qi <qiyao at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 8 Jan 2018 10:14:13 -0000
- Subject: [binutils-gdb] Fix GDB build failure when $development is false
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1e5ded6ce688ddee065fa852053dda07fcce959e
commit 1e5ded6ce688ddee065fa852053dda07fcce959e
Author: Yao Qi <yao.qi@linaro.org>
Date: Mon Jan 8 10:09:32 2018 +0000
Fix GDB build failure when $development is false
We don't build GDB selftests bits when $development is false. However, if
we turn bfd/development.sh:$development to false, common/selftest.c is
compiled which is not expected. It causes the build failure,
selftest.o: In function `selftests::run_tests(char const*)':
binutils-gdb/gdb/common/selftest.c:97: undefined reference to `selftests::reset()'
collect2: error: ld returned 1 exit status
I fix this issue by putting selftest.o selftest-arch.o into CONFIG_OBS
only when $development is true. After this is fixed, there are other
build failures in maint.c, this patch fixes them as well.
In the release mode, the output of these commands are:
(gdb) maintenance selftest
Selftests are not available in a non-development build.
(gdb) maintenance selftest foo
Selftests are not available in a non-development build.
(gdb) maintenance info selftests
Selftests are not available in a non-development build.
gdb:
2018-01-08 Yao Qi <yao.qi@linaro.org>
Simon Marchi <simon.marchi@ericsson.com>
* Makefile.in (COMMON_SFILES): Remove selftest-arch.c and
common/selftest.c.
(COMMON_OBS): Remove selftest.o.
* configure.ac: Append selftest-arch.c and common/selftest.c to
CONFIG_SRCS. Append selftest-arch.o and selftest.o to COMMON_OBS.
* configure: Re-generated.
* maint.c (maintenance_selftest): Wrap selftests::run_tests with
GDB_SELF_TEST.
(maintenance_info_selftests): Likewise.
gdb/testsuite:
2018-01-08 Simon Marchi <simon.marchi@ericsson.com>
* gdb.gdb/unittest.exp: Match output in non-development mode.
Diff:
---
gdb/ChangeLog | 13 +++++++++++++
gdb/Makefile.in | 3 ---
gdb/configure | 4 ++--
gdb/configure.ac | 4 ++--
gdb/maint.c | 10 ++++++++++
gdb/testsuite/ChangeLog | 4 ++++
gdb/testsuite/gdb.gdb/unittest.exp | 13 ++++++++++++-
7 files changed, 43 insertions(+), 8 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af35cb5..cf93d22 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2018-01-08 Yao Qi <yao.qi@linaro.org>
+ Simon Marchi <simon.marchi@ericsson.com>
+
+ * Makefile.in (COMMON_SFILES): Remove selftest-arch.c and
+ common/selftest.c.
+ (COMMON_OBS): Remove selftest.o.
+ * configure.ac: Append selftest-arch.c and common/selftest.c to
+ CONFIG_SRCS. Append selftest-arch.o and selftest.o to COMMON_OBS.
+ * configure: Re-generated.
+ * maint.c (maintenance_selftest): Wrap selftests::run_tests with
+ GDB_SELF_TEST.
+ (maintenance_info_selftests): Likewise.
+
2018-01-08 Xavier Roirand <roirand@adacore.com>
* ada-valprint.c (val_print_packed_array_elements): Use
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index c0486c4..17b71c6 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1050,7 +1050,6 @@ COMMON_SFILES = \
remote-notif.c \
reverse.c \
rust-lang.c \
- selftest-arch.c \
sentinel-frame.c \
ser-event.c \
serial.c \
@@ -1139,7 +1138,6 @@ SFILES = \
common/ptid.c \
common/rsp-low.c \
common/run-time-clock.c \
- common/selftest.c \
common/signals.c \
common/signals-state-save-restore.c \
common/vec.c \
@@ -1555,7 +1553,6 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
ptid.o \
rsp-low.o \
run-time-clock.o \
- selftest.o \
signals.o \
signals-state-save-restore.o \
vec.o \
diff --git a/gdb/configure b/gdb/configure
index 7b25007..db610f3 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -17599,8 +17599,8 @@ if $development; then
$as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
- CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS)"
- CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS)"
+ CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) selftest.o selftest-arch.o"
+ CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) common/selftest.c selftest-arch.c"
fi
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 3e073b5..3db44ae 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -2293,8 +2293,8 @@ AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8",
if $development; then
AC_DEFINE(GDB_SELF_TEST, 1,
[Define if self-testing features should be enabled])
- CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS)"
- CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS)"
+ CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) selftest.o selftest-arch.o"
+ CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) common/selftest.c selftest-arch.c"
fi
GDB_AC_TRANSFORM([gdb], [GDB_TRANSFORM_NAME])
diff --git a/gdb/maint.c b/gdb/maint.c
index a924f83..70e0011 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -939,16 +939,26 @@ show_per_command_cmd (const char *args, int from_tty)
static void
maintenance_selftest (const char *args, int from_tty)
{
+#if GDB_SELF_TEST
selftests::run_tests (args);
+#else
+ printf_filtered (_("\
+Selftests are not available in a non-development build.\n"));
+#endif
}
static void
maintenance_info_selftests (const char *arg, int from_tty)
{
+#if GDB_SELF_TEST
printf_filtered ("Registered selftests:\n");
selftests::for_each_selftest ([] (const std::string &name) {
printf_filtered (" - %s\n", name.c_str ());
});
+#else
+ printf_filtered (_("\
+Selftests are not available in a non-development build.\n"));
+#endif
}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3a12b0f..c1223db 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2018-01-08 Simon Marchi <simon.marchi@ericsson.com>
+
+ * gdb.gdb/unittest.exp: Match output in non-development mode.
+
2018-01-08 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/access_tagged_param.exp: Relax expected output
diff --git a/gdb/testsuite/gdb.gdb/unittest.exp b/gdb/testsuite/gdb.gdb/unittest.exp
index 44e9329..1c83585 100644
--- a/gdb/testsuite/gdb.gdb/unittest.exp
+++ b/gdb/testsuite/gdb.gdb/unittest.exp
@@ -16,7 +16,18 @@
set do_xml_test [expr ![gdb_skip_xml_test]]
gdb_start
-gdb_test "maintenance selftest" "Ran $decimal unit tests, 0 failed"
+
+set test "maintenance selftest"
+gdb_test_multiple $test $test {
+ -re "Ran ($decimal) unit tests, 0 failed\r\n$gdb_prompt $" {
+ set num_ran $expect_out(1,string)
+ gdb_assert "$num_ran > 0" $test
+ }
+
+ -re "Selftests are not available in a non-development build.\r\n$gdb_prompt $" {
+ unsupported $test
+ }
+}
if { ![is_remote host] && $do_xml_test } {
gdb_test "maintenance check xml-descriptions ${srcdir}/../features" \