From 47b8bb38fcb8ea1df70a932f7fe9fedca8993ec7 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Sat, 26 Mar 2022 13:41:33 +0000 Subject: [PATCH] gdb/testsuite: fix test failure when building against readline v7 The test added in the commit: commit a6b413d24ccc5d76179bab866834e11fd6fec294 Date: Fri Mar 11 14:44:03 2022 +0000 gdb: work around prompt corruption caused by bracketed-paste-mode Was not written with readline 7 in mind, only readline 8+. Between readline 7 and 8 the escape sequence used to disable bracketed paste mode changed, an additional '\r' character was added to the end. In fact, it was the addition of this '\r' character that triggered the issue for which the above commit is part of the solution. Anyway, the test tries to spot the case where the output from GDB is not perfect, but does have the above work around applied. However, the pattern in the test assumes that the problematic '\r' will be present, and this is only true for readline 8+. With readline 7 the test was failing. In this commit I generalise the pattern a little so that the test will still KFAIL with readline 7. It's a little unfortunate that the test is KFAILing with readline 7, as without the problematic '\r' there's actually no reason that GDB couldn't "do the right thing" in this case, in which case, the test would PASS, but that would require changes within GDB itself. My preference then is that initially we patch the test to get it KFAILing, then in a separate commit I can modify GDB so that it can PASS with readline 7. --- gdb/testsuite/gdb.base/eof-exit.exp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/eof-exit.exp b/gdb/testsuite/gdb.base/eof-exit.exp index d604d029974..2d9530ccebe 100644 --- a/gdb/testsuite/gdb.base/eof-exit.exp +++ b/gdb/testsuite/gdb.base/eof-exit.exp @@ -38,7 +38,7 @@ proc run_test {} { -re "$::gdb_prompt \[^\n\]*\r\[^\n\]*quit" { fail "$gdb_test_name (misplaced \\r)" } - -re "$::gdb_prompt \[^\n\]*\r\[^\n\]*\r\nquit\r\n" { + -re "$::gdb_prompt (?:\[^\n\]*\r)?\[^\n\]*\r\nquit\r\n" { # For versions of readline that don't include the # RL_STATE_EOF patch, then the 'quit' is printed on the # subsequent line. -- 2.30.2