This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/2 master/8.1] Fix GDB build failure when $development is false
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: Yao Qi <qiyaoltc at gmail dot com>, <gdb-patches at sourceware dot org>
- Date: Sat, 6 Jan 2018 12:08:47 -0500
- Subject: Re: [PATCH 1/2 master/8.1] Fix GDB build failure when $development is false
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=simon dot marchi at ericsson dot com;
- References: <1515148494-21578-1-git-send-email-yao.qi@linaro.org>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
On 2018-01-05 05:34 AM, Yao Qi wrote:
> 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
> (gdb) maintenance selftest ffo
> (gdb) maintenance info selftest
> Registered selftests:
> (gdb)
I would suggest printing a message when selftests are not available, instead
of doing nothing. It could help people figure out why they are not running
as they would expect.
Also, it would allow changing gdb.gdb/unittest.exp to report "unsupported"
when make checking a non-development build, which is a bit more precise
than reporting a pass.
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.
Simon
>From 19aaacbe970594e077f502e3212a5a22d4dc716e Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Sat, 6 Jan 2018 11:49:09 -0500
Subject: [PATCH] Print message when selftests are not available
---
gdb/maint.c | 8 +++++++-
gdb/testsuite/gdb.gdb/unittest.exp | 13 ++++++++++++-
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/gdb/maint.c b/gdb/maint.c
index 624a80e..70e0011 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -941,17 +941,23 @@ 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)
{
- printf_filtered ("Registered selftests:\n");
#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" \
--
2.7.4