aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-10-29 14:11:08 +0200
committerTom de Vries <tdevries@suse.de>2021-10-29 14:11:08 +0200
commitb88e456f7e3e6d8c354da57d3e77a98575070ee8 (patch)
treeae039d8d59040b4948105511f21e612d143c3ee4
parent91b7c7e522802371f07cf614e5e5b24c1911a6d8 (diff)
downloadgdb-b88e456f7e3e6d8c354da57d3e77a98575070ee8.zip
gdb-b88e456f7e3e6d8c354da57d3e77a98575070ee8.tar.gz
gdb-b88e456f7e3e6d8c354da57d3e77a98575070ee8.tar.bz2
[gdb/build] Fix build with --disable-unit-tests
A build with --disable-unit-tests currently run into: ... ld: maint.o: in function \ `maintenance_selftest_completer(cmd_list_element*, completion_tracker&, char const*, char const*)': src/gdb/maint.c:1183: undefined reference to \ `selftests::for_each_selftest( gdb::function_view< void (std::__cxx11::basic_string<char,std::char_traits<char>, std::allocator<char> > const&)>)' ... Fix this by guarding the call to selftests::for_each_selftest in maintenance_selftest_completer with GDB_SELF_TEST, such that the "-verbose" completion still works. Rebuild on x86_64-linux and ran gdb.gdb/unittest.exp.
-rw-r--r--gdb/maint.c2
-rw-r--r--gdb/testsuite/gdb.gdb/unittest.exp21
2 files changed, 19 insertions, 4 deletions
diff --git a/gdb/maint.c b/gdb/maint.c
index 85fa18c..bcc71aa 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -1180,11 +1180,13 @@ maintenance_selftest_completer (cmd_list_element *cmd,
(tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, grp))
return;
+#if GDB_SELF_TEST
selftests::for_each_selftest ([&tracker, text] (const std::string &name)
{
if (startswith (name.c_str (), text))
tracker.add_completion (make_unique_xstrdup (name.c_str ()));
});
+#endif
}
static void
diff --git a/gdb/testsuite/gdb.gdb/unittest.exp b/gdb/testsuite/gdb.gdb/unittest.exp
index 0ddd206..bcb4bbd 100644
--- a/gdb/testsuite/gdb.gdb/unittest.exp
+++ b/gdb/testsuite/gdb.gdb/unittest.exp
@@ -40,6 +40,7 @@ proc run_selftests { binfile } {
clean_restart ${binfile}
}
+ set enabled 1
set test "maintenance selftest"
gdb_test_multiple $test $test {
-re ".*Running selftest \[^\n\r\]+\." {
@@ -57,23 +58,35 @@ proc run_selftests { binfile } {
}
-re "Selftests have been disabled for this build.\r\n$gdb_prompt $" {
unsupported $test
+ set enabled 0
}
}
+
+ return $enabled
}
# Test completion of command "maintenance selftest".
proc_with_prefix test_completion {} {
+ global self_tests_enabled
+
clean_restart
- test_gdb_complete_tab_multiple "maintenance selftest string_v" "" \
- {string_vappendf string_view string_vprintf}
- test_gdb_complete_tab_unique "maintenance selftest string_vie" "maintenance selftest string_view" " "
+
+ if { $self_tests_enabled } {
+ test_gdb_complete_tab_multiple "maintenance selftest string_v" "" \
+ {string_vappendf string_view string_vprintf}
+ test_gdb_complete_tab_unique "maintenance selftest string_vie" \
+ "maintenance selftest string_view" " "
+ } else {
+ test_gdb_complete_tab_none "maintenance selftest string_v"
+ test_gdb_complete_tab_none "maintenance selftest string_vie"
+ }
test_gdb_complete_tab_unique "maintenance selftest -ver" "maintenance selftest -verbose" " "
test_gdb_complete_tab_none "maintenance selftest name_that_does_not_exist"
}
with_test_prefix "no executable loaded" {
- run_selftests ""
+ set self_tests_enabled [run_selftests ""]
}
with_test_prefix "executable loaded" {