Patchwork [1/2,master/8.1] Fix GDB build failure when $development is false

login
register
mail settings
Submitter Yao Qi
Date Jan. 8, 2018, 9:53 a.m.
Message ID <86fu7ghe1i.fsf@gmail.com>
Download mbox | patch
Permalink /patch/25267/
State New
Headers show

Comments

Yao Qi - Jan. 8, 2018, 9:53 a.m.
Simon Marchi <simon.marchi@ericsson.com> writes:

> Otherwise, the patch LGTM.
>
> Here's a fixup patch that does this, feel free to use it if you like the
> idea.  Just as a sanity check, I added an assert in unittest.exp to make sure
> that when tests are ran, we run at least one test.

It is good to make the output more explicit.  I take your fixup patch
in, and I'll push the patch below in.

Patch

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/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" \