From 77c8aaf716d9f93dc5850f8b2481da5eb7a53662 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 15 Dec 2020 10:18:23 +0100 Subject: [PATCH] [gdb/testsuite] Handle PS1 quirk in gdb.base/multi-line-starts-subshell.exp On SLE-11, I run into: ... (gdb) if 1^M >shell HOME=/dev/null PS1="gdb-subshell$ " /bin/sh^M >end^M hostname:/dir> FAIL: gdb.base/multi-line-starts-subshell.exp: \ spawn subshell from multi-line (timeout) ... The problem is that the PS1 setting has no effect, due to a bug on older openSUSE/SLE version. The mechanism there is: - /etc/profile sets ENV=/etc/bash.bashrc - /bin/sh is started - /bin/sh executes ENV, in other words /etc/bash.bashrc - during the execution of /etc/bash.bashrc, PS1 is set unconditionally Fix this by setting PS1 after spawning the subshell. Tested on x86_64-linux. 2020-12-15 Tom de Vries PR testsuite/26952 * gdb.base/multi-line-starts-subshell.exp: Set PS1 after spawning shell. --- gdb/testsuite/gdb.base/multi-line-starts-subshell.exp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp b/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp index 710c3916c6e..dc6d70582a8 100644 --- a/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp +++ b/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp @@ -27,11 +27,11 @@ set shell_prompt_re [string_to_regexp $shell_prompt] # Point HOME nowhere to avoid the shell sourcing the user's init # scripts. -set shell_cmd "HOME=/dev/null PS1=\"$shell_prompt\" /bin/sh" +set shell_cmd "HOME=/dev/null /bin/sh" set test "spawn subshell from multi-line" -gdb_test_multiple "if 1\nshell ${shell_cmd}\nend" $test { - -re "$shell_prompt_re$" { +gdb_test_multiple "if 1\nshell ${shell_cmd}\nend\nPS1=\"$shell_prompt\"" $test { + -re "PS1=\[^\r\n\]*\r\n$shell_prompt_re$" { pass $test # Now check that shell input works and that echo is enabled. -- 2.30.2