- Master backport: * gdb-fix-breakpoints-on-file-reloads-for-pie-binaries.patch - Master backports testsuite: * gdb-testsuite-i386-pkru-exp.patch * gdb-testsuite-read1-fixes.patch * gdb-testsuite-pie-no-pie.patch * gdb-testsuite-add-missing-initial-prompt-read-in-multidictionary.exp.patch - Work around bsc#1115034: * gdb-testsuite-ada-pie.patch - Fixes for fedora patches: * gdb-testsuite-fix-perror-in-gdb.opt-fortran-string.exp.patch * gdb-testsuite-avoid-pagination-in-attach-32.exp.patch OBS-URL: https://build.opensuse.org/request/show/721544 OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=219
313 lines
11 KiB
Diff
313 lines
11 KiB
Diff
- Fix test_gdb_complete_tab_multiple race
|
|
- [gdb/testsuite] Don't expect gdb_prompt in mi_skip_python_test
|
|
- [gdb/testsuite] Fix gdb.base/maint.exp with check-read1
|
|
- [gdb/testsuite] Fix mi-catch-cpp-exceptions.exp and mi-nonstop.exp with check-read1
|
|
- [gdb/testsuite] Fix python.exp with check-read1
|
|
- [gdb/testsuite, 1/2] Fix gdb.linespec/explicit.exp with check-read1
|
|
- [gdb/testsuite, 2/2] Fix gdb.linespec/explicit.exp with check-read1
|
|
- [gdb/testsuite] Test skip_libstdcxx_probe_tests in mi-catch-cpp-exceptions.exp
|
|
|
|
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
|
|
index 38e9a1ec4b..810c7c9b8c 100644
|
|
--- a/gdb/testsuite/gdb.base/maint.exp
|
|
+++ b/gdb/testsuite/gdb.base/maint.exp
|
|
@@ -69,15 +69,15 @@ set saw_registers 0
|
|
set saw_headers 0
|
|
set test "maint print registers"
|
|
gdb_test_multiple $test $test {
|
|
- -re "\[^\r\n\]+Name\[^\r\n\]+Nr\[^\r\n\]+Rel\[^\r\n\]+Offset\[^\r\n\]+Size\[^\r\n\]+Type\[^\r\n\]+\[\r\n\]+" {
|
|
+ -re "\[^\r\n\]+Name\[^\r\n\]+Nr\[^\r\n\]+Rel\[^\r\n\]+Offset\[^\r\n\]+Size\[^\r\n\]+Type\[^\r\n\]+\r\n" {
|
|
set saw_headers 1
|
|
exp_continue
|
|
}
|
|
- -re "^\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[\r\n\]+" {
|
|
+ -re "^\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\r\n" {
|
|
set saw_registers 1
|
|
exp_continue
|
|
}
|
|
- -re "^\\*\[0-9\]+\[^\r\n\]+\[\r\n\]+" {
|
|
+ -re "^\\*\[0-9\]+\[^\r\n\]+\r\n" {
|
|
exp_continue
|
|
}
|
|
-re "$gdb_prompt $" {
|
|
diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp
|
|
index 11656ca5c5..e50e503343 100644
|
|
--- a/gdb/testsuite/gdb.linespec/explicit.exp
|
|
+++ b/gdb/testsuite/gdb.linespec/explicit.exp
|
|
@@ -241,20 +241,7 @@ namespace eval $testfile {
|
|
-re "break -source exp\\\x07licit" {
|
|
send_gdb "\t\t"
|
|
gdb_test_multiple "" $tst {
|
|
- -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\r\n$gdb_prompt" {
|
|
- send_gdb "\n"
|
|
- gdb_test "" \
|
|
- {Source filename requires function, label, or line offset.} \
|
|
- $tst
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- -re "break -source exp\\\x07l" {
|
|
- # This pattern may occur when glibc debuginfo is installed.
|
|
- send_gdb "\t\t"
|
|
- gdb_test_multiple "" $tst {
|
|
- -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+expl.*\r\n$gdb_prompt" {
|
|
+ -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\(expl.*\)?\r\n$gdb_prompt" {
|
|
send_gdb "\n"
|
|
gdb_test "" \
|
|
{Source filename requires function, label, or line offset.} \
|
|
@@ -486,7 +473,7 @@ namespace eval $testfile {
|
|
send_gdb "break \t"
|
|
gdb_test_multiple "" $tst {
|
|
"break \\\x07" {
|
|
- send_gdb "\t\t"
|
|
+ send_gdb "\t"
|
|
gdb_test_multiple "" $tst {
|
|
"Display all" {
|
|
send_gdb "y"
|
|
diff --git a/gdb/testsuite/gdb.python/python.exp b/gdb/testsuite/gdb.python/python.exp
|
|
index b62572ceb8..f5c1d1b261 100644
|
|
--- a/gdb/testsuite/gdb.python/python.exp
|
|
+++ b/gdb/testsuite/gdb.python/python.exp
|
|
@@ -450,7 +450,7 @@ gdb_py_test_multiple "prompt substitution readline" \
|
|
"end" ""
|
|
|
|
gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" {
|
|
- -re "Python Exception (exceptions.RuntimeError|<(type 'exceptions.|class ')RuntimeError'>) Python exception called.*" {
|
|
+ -re "Python Exception (exceptions.RuntimeError|<(type 'exceptions.|class ')RuntimeError'>) Python exception called.*$gdb_prompt $" {
|
|
pass "set hook"
|
|
}
|
|
}
|
|
@@ -462,7 +462,7 @@ gdb_py_test_silent_cmd "set python print-stack full" \
|
|
"set print-stack full for prompt error test" 1
|
|
|
|
gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" {
|
|
- -re "Traceback.*File.*line.*RuntimeError.*Python exception called.*" {
|
|
+ -re "Traceback.*File.*line.*RuntimeError.*Python exception called.*$gdb_prompt $" {
|
|
pass "set hook"
|
|
}
|
|
}
|
|
diff --git a/gdb/testsuite/lib/completion-support.exp b/gdb/testsuite/lib/completion-support.exp
|
|
index 3e498d3c63..8a75b0d785 100644
|
|
--- a/gdb/testsuite/lib/completion-support.exp
|
|
+++ b/gdb/testsuite/lib/completion-support.exp
|
|
@@ -144,8 +144,12 @@ proc test_gdb_complete_tab_multiple { input_line add_completed_line \
|
|
set maybe_bell ""
|
|
}
|
|
gdb_test_multiple "" "$test (second tab)" {
|
|
- -re "^${maybe_bell}\r\n$expected_re\r\n$gdb_prompt $input_line_re$add_completed_line_re$" {
|
|
- pass "$test"
|
|
+ -re "^${maybe_bell}\r\n$expected_re\r\n$gdb_prompt " {
|
|
+ gdb_test_multiple "" "$test (second tab)" {
|
|
+ -re "^$input_line_re$add_completed_line_re$" {
|
|
+ pass "$test"
|
|
+ }
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
|
|
index 896e0f1b40..2eb00d58b9 100644
|
|
--- a/gdb/testsuite/lib/gdb.exp
|
|
+++ b/gdb/testsuite/lib/gdb.exp
|
|
@@ -695,7 +695,7 @@ proc gdb_internal_error_resync {} {
|
|
}
|
|
|
|
|
|
-# gdb_test_multiple COMMAND MESSAGE EXPECT_ARGUMENTS
|
|
+# gdb_test_multiple COMMAND MESSAGE EXPECT_ARGUMENTS PROMPT_REGEXP
|
|
# Send a command to gdb; test the result.
|
|
#
|
|
# COMMAND is the command to execute, send to GDB with send_gdb. If
|
|
@@ -707,6 +707,8 @@ proc gdb_internal_error_resync {} {
|
|
# context; action elements will be executed in the caller's context.
|
|
# Unlike patterns for gdb_test, these patterns should generally include
|
|
# the final newline and prompt.
|
|
+# PROMPT_REGEXP is a regexp matching the expected prompt after the command
|
|
+# output. If empty, defaults to "$gdb_prompt $"
|
|
#
|
|
# Returns:
|
|
# 1 if the test failed, according to a built-in failure pattern
|
|
@@ -744,7 +746,7 @@ proc gdb_internal_error_resync {} {
|
|
# expected from $gdb_spawn_id. IOW, callers do not need to worry
|
|
# about resetting "-i" back to $gdb_spawn_id explicitly.
|
|
#
|
|
-proc gdb_test_multiple { command message user_code } {
|
|
+proc gdb_test_multiple { command message user_code { prompt_regexp "" } } {
|
|
global verbose use_gdb_stub
|
|
global gdb_prompt pagination_prompt
|
|
global GDB
|
|
@@ -754,6 +756,10 @@ proc gdb_test_multiple { command message user_code } {
|
|
upvar expect_out expect_out
|
|
global any_spawn_id
|
|
|
|
+ if { "$prompt_regexp" == "" } {
|
|
+ set prompt_regexp "$gdb_prompt $"
|
|
+ }
|
|
+
|
|
if { $message == "" } {
|
|
set message $command
|
|
}
|
|
@@ -913,7 +919,7 @@ proc gdb_test_multiple { command message user_code } {
|
|
}
|
|
|
|
append code {
|
|
- -re "Ending remote debugging.*$gdb_prompt $" {
|
|
+ -re "Ending remote debugging.*$prompt_regexp" {
|
|
if ![isnative] then {
|
|
warning "Can`t communicate to remote target."
|
|
}
|
|
@@ -921,17 +927,17 @@ proc gdb_test_multiple { command message user_code } {
|
|
gdb_start
|
|
set result -1
|
|
}
|
|
- -re "Undefined\[a-z\]* command:.*$gdb_prompt $" {
|
|
+ -re "Undefined\[a-z\]* command:.*$prompt_regexp" {
|
|
perror "Undefined command \"$command\"."
|
|
fail "$message"
|
|
set result 1
|
|
}
|
|
- -re "Ambiguous command.*$gdb_prompt $" {
|
|
+ -re "Ambiguous command.*$prompt_regexp" {
|
|
perror "\"$command\" is not a unique command name."
|
|
fail "$message"
|
|
set result 1
|
|
}
|
|
- -re "$inferior_exited_re with code \[0-9\]+.*$gdb_prompt $" {
|
|
+ -re "$inferior_exited_re with code \[0-9\]+.*$prompt_regexp" {
|
|
if ![string match "" $message] then {
|
|
set errmsg "$message (the program exited)"
|
|
} else {
|
|
@@ -940,7 +946,7 @@ proc gdb_test_multiple { command message user_code } {
|
|
fail "$errmsg"
|
|
set result -1
|
|
}
|
|
- -re "$inferior_exited_re normally.*$gdb_prompt $" {
|
|
+ -re "$inferior_exited_re normally.*$prompt_regexp" {
|
|
if ![string match "" $message] then {
|
|
set errmsg "$message (the program exited)"
|
|
} else {
|
|
@@ -949,7 +955,7 @@ proc gdb_test_multiple { command message user_code } {
|
|
fail "$errmsg"
|
|
set result -1
|
|
}
|
|
- -re "The program is not being run.*$gdb_prompt $" {
|
|
+ -re "The program is not being run.*$prompt_regexp" {
|
|
if ![string match "" $message] then {
|
|
set errmsg "$message (the program is no longer running)"
|
|
} else {
|
|
@@ -958,7 +964,7 @@ proc gdb_test_multiple { command message user_code } {
|
|
fail "$errmsg"
|
|
set result -1
|
|
}
|
|
- -re "\r\n$gdb_prompt $" {
|
|
+ -re "\r\n$prompt_regexp" {
|
|
if ![string match "" $message] then {
|
|
fail "$message"
|
|
}
|
|
@@ -972,13 +978,13 @@ proc gdb_test_multiple { command message user_code } {
|
|
}
|
|
-re "\\((y or n|y or \\\[n\\\]|\\\[y\\\] or n)\\) " {
|
|
send_gdb "n\n"
|
|
- gdb_expect -re "$gdb_prompt $"
|
|
+ gdb_expect -re "$prompt_regexp"
|
|
fail "$message (got interactive prompt)"
|
|
set result -1
|
|
}
|
|
-re "\\\[0\\\] cancel\r\n\\\[1\\\] all.*\r\n> $" {
|
|
send_gdb "0\n"
|
|
- gdb_expect -re "$gdb_prompt $"
|
|
+ gdb_expect -re "$prompt_regexp"
|
|
fail "$message (got breakpoint menu)"
|
|
set result -1
|
|
}
|
|
@@ -1842,7 +1848,7 @@ proc skip_python_tests_prompt { prompt_regexp } {
|
|
return 1
|
|
}
|
|
-re "$prompt_regexp" {}
|
|
- }
|
|
+ } "$prompt_regexp"
|
|
|
|
set gdb_py_is_py24 0
|
|
gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" {
|
|
@@ -1852,7 +1858,7 @@ proc skip_python_tests_prompt { prompt_regexp } {
|
|
-re ".*$prompt_regexp" {
|
|
set gdb_py_is_py3k 0
|
|
}
|
|
- }
|
|
+ } "$prompt_regexp"
|
|
if { $gdb_py_is_py3k == 0 } {
|
|
gdb_test_multiple "python print (sys.version_info\[1\])" "check if python 2.4" {
|
|
-re "\[45\].*$prompt_regexp" {
|
|
@@ -1861,7 +1867,7 @@ proc skip_python_tests_prompt { prompt_regexp } {
|
|
-re ".*$prompt_regexp" {
|
|
set gdb_py_is_py24 0
|
|
}
|
|
- }
|
|
+ } "$prompt_regexp"
|
|
}
|
|
|
|
return 0
|
|
@@ -3079,22 +3085,27 @@ proc skip_unwinder_tests {} {
|
|
|
|
# Return 0 if we should skip tests that require the libstdc++ stap
|
|
# probes. This must be invoked while gdb is running, after shared
|
|
-# libraries have been loaded.
|
|
-
|
|
-proc skip_libstdcxx_probe_tests {} {
|
|
- global gdb_prompt
|
|
+# libraries have been loaded. PROMPT_REGEXP is the expected prompt.
|
|
|
|
+proc skip_libstdcxx_probe_tests_prompt { prompt_regexp } {
|
|
set ok 0
|
|
gdb_test_multiple "info probe" "check for stap probe in libstdc++" {
|
|
- -re ".*libstdcxx.*catch.*\r\n$gdb_prompt $" {
|
|
+ -re ".*libstdcxx.*catch.*\r\n$prompt_regexp" {
|
|
set ok 1
|
|
}
|
|
- -re "\r\n$gdb_prompt $" {
|
|
+ -re "\r\n$prompt_regexp" {
|
|
}
|
|
- }
|
|
+ } "$prompt_regexp"
|
|
return $ok
|
|
}
|
|
|
|
+# As skip_libstdcxx_probe_tests_prompt, with gdb_prompt.
|
|
+
|
|
+proc skip_libstdcxx_probe_tests {} {
|
|
+ global gdb_prompt
|
|
+ return [skip_libstdcxx_probe_tests_prompt "$gdb_prompt $"]
|
|
+}
|
|
+
|
|
# Return 1 if we should skip tests of the "compile" feature.
|
|
# This must be invoked after the inferior has been started.
|
|
|
|
@@ -3131,7 +3142,7 @@ proc gdb_is_target_1 { target_name target_stack_regexp prompt_regexp } {
|
|
-re "$prompt_regexp" {
|
|
pass $test
|
|
}
|
|
- }
|
|
+ } "$prompt_regexp"
|
|
return 0
|
|
}
|
|
|
|
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
|
|
index a58c4f6e11..d0ee5ca744 100644
|
|
--- a/gdb/testsuite/lib/mi-support.exp
|
|
+++ b/gdb/testsuite/lib/mi-support.exp
|
|
@@ -2596,6 +2596,13 @@ proc mi_skip_python_tests {} {
|
|
return [skip_python_tests_prompt "$mi_gdb_prompt$"]
|
|
}
|
|
|
|
+# As skip_libstdcxx_probe_tests_prompt, with mi_gdb_prompt.
|
|
+
|
|
+proc mi_skip_libstdcxx_probe_tests {} {
|
|
+ global mi_gdb_prompt
|
|
+ return [skip_libstdcxx_probe_tests_prompt "$mi_gdb_prompt$"]
|
|
+}
|
|
+
|
|
# Check whether we're testing with the remote or extended-remote
|
|
# targets.
|
|
|