From 1e5ded6ce688ddee065fa852053dda07fcce959e Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Mon, 8 Jan 2018 10:09:32 +0000 Subject: [PATCH] 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 Simon Marchi * 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 * gdb.gdb/unittest.exp: Match output in non-development mode. --- 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 af35cb5289..cf93d229dd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2018-01-08 Yao Qi + Simon Marchi + + * 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 * ada-valprint.c (val_print_packed_array_elements): Use diff --git a/gdb/Makefile.in b/gdb/Makefile.in index c0486c42ec..17b71c6e7c 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 7b250079de..db610f32fc 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 3e073b506e..3db44ae758 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 a924f8363c..70e00110e5 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 3a12b0fa12..c1223dbd13 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-01-08 Simon Marchi + + * gdb.gdb/unittest.exp: Match output in non-development mode. + 2018-01-08 Joel Brobecker * 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 44e93290b6..1c835850b8 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" \ -- 2.34.1