diff options
author | Yao Qi <yao.qi@linaro.org> | 2018-01-08 10:09:32 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2018-01-08 10:09:32 +0000 |
commit | 1e5ded6ce688ddee065fa852053dda07fcce959e (patch) | |
tree | 5e1d593ab7b7e216bc1ee0f05ff367b49009ac8e | |
parent | 9f86398b29d53a5a0aaea390ce813628715b3125 (diff) | |
download | binutils-1e5ded6ce688ddee065fa852053dda07fcce959e.zip binutils-1e5ded6ce688ddee065fa852053dda07fcce959e.tar.gz binutils-1e5ded6ce688ddee065fa852053dda07fcce959e.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/Makefile.in | 3 | ||||
-rwxr-xr-x | gdb/configure | 4 | ||||
-rw-r--r-- | gdb/configure.ac | 4 | ||||
-rw-r--r-- | gdb/maint.c | 10 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | 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" \ |