* [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto
@ 2023-04-21 14:58 Tom de Vries
2023-04-21 14:58 ` [PATCH 1/3] [gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple Tom de Vries
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Tom de Vries @ 2023-04-21 14:58 UTC (permalink / raw)
To: gdb-patches
Fix test-case gdb.gdb/python-helper.exp when gdb is build with -O2 -flto=auto,
both on openSUSE Leap 15.4 and Tumbleweed.
There are three patches.
The first fixes a testsuite problem that is required for the second patch.
The second contains the actual fix.
The third addresses a cosmetic issue in the same test-case.
Tested on x86_64-linux.
Tom de Vries (3):
[gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple
[gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto
[gdb/testsuite] Fix auto-indent in gdb.gdb/python-helper.exp
gdb/testsuite/gdb.gdb/python-helper.exp | 89 +++++++++++++++++-------
gdb/testsuite/gdb.testsuite/gdb-test.exp | 11 +++
gdb/testsuite/lib/gdb.exp | 2 +-
3 files changed, 76 insertions(+), 26 deletions(-)
base-commit: fbdecfbf285234cd4eba0e7daf480c63b2d65eb3
--
2.35.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] [gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple
2023-04-21 14:58 [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
@ 2023-04-21 14:58 ` Tom de Vries
2023-04-21 14:58 ` [PATCH 2/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Tom de Vries @ 2023-04-21 14:58 UTC (permalink / raw)
To: gdb-patches
While writing a gdb_test_multiple call in a test-case I tried to use -wrap in
combination with -prompt and found out that it doesn't work, because -wrap uses
"$gdb_prompt $" instead of $prompt_regexp.
Fix this by making -wrap use $prompt_regexp.
Tested on x86_64-linux.
---
gdb/testsuite/gdb.testsuite/gdb-test.exp | 11 +++++++++++
gdb/testsuite/lib/gdb.exp | 2 +-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/gdb/testsuite/gdb.testsuite/gdb-test.exp b/gdb/testsuite/gdb.testsuite/gdb-test.exp
index a582b1b125f..e19f2a8de4a 100644
--- a/gdb/testsuite/gdb.testsuite/gdb-test.exp
+++ b/gdb/testsuite/gdb.testsuite/gdb-test.exp
@@ -48,3 +48,14 @@ with_test_prefix "cmd with trailing control code" {
gdb_assert { [string equal $output $expected_error_msg] }
}
}
+
+# Change the prompt.
+set prompt "(GDB) "
+set prompt_re "\\(GDB\\) $"
+gdb_test -prompt $prompt_re "set prompt $prompt"
+
+gdb_test_multiple "print 1" "" -prompt $prompt_re {
+ -re -wrap " = 1" {
+ pass $gdb_test_name
+ }
+}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 9ea0334759d..fec64ed1e6c 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1126,7 +1126,7 @@ proc gdb_test_multiple { command message args } {
if { $wrap_pattern } {
# Wrap subst_item as is done for the gdb_test PATTERN argument.
lappend $current_list \
- "\[\r\n\]*(?:$subst_item)\[\r\n\]+$gdb_prompt $"
+ "\[\r\n\]*(?:$subst_item)\[\r\n\]+$prompt_regexp"
set wrap_pattern 0
} else {
lappend $current_list $subst_item
--
2.35.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto
2023-04-21 14:58 [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
2023-04-21 14:58 ` [PATCH 1/3] [gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple Tom de Vries
@ 2023-04-21 14:58 ` Tom de Vries
2023-04-21 14:58 ` [PATCH 3/3] [gdb/testsuite] Fix auto-indent in gdb.gdb/python-helper.exp Tom de Vries
2023-04-24 17:09 ` [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom de Vries @ 2023-04-21 14:58 UTC (permalink / raw)
To: gdb-patches
On openSUSE Leap 15.4, with gcc 7.5.0, when building gdb with
-O2 -g -flto=auto, I run into:
...
FAIL: gdb.gdb/python-helper.exp: hit breakpoint in outer gdb
FAIL: gdb.gdb/python-helper.exp: print integer from DWARF info
FAIL: gdb.gdb/python-helper.exp: print *type->main_type
...
Fix the first two FAILs by using $bkptno_numopt_re.
The last FAIL is due to:
...
(outer-gdb) print *type->main_type^M
A syntax error in expression, near `->main_type'.^M
(outer-gdb) FAIL: gdb.gdb/python-helper.exp: print *type->main_type
...
because:
...
(outer-gdb) print type^M
Attempt to use a type name as an expression^M
...
Fix this by making the test unresolved if "print type" or
"print type->main_type" doesn't succeed.
On openSUSE Tumbleweed, with gcc 13.0.1, when building gdb with
-O2 -g -flto=auto, I run into timeouts due to the breakpoint in c_print_type
not hitting. Fix this by detecting the situation and bailing out.
Tested on x86_64-linux.
---
gdb/testsuite/gdb.gdb/python-helper.exp | 77 +++++++++++++++++++------
1 file changed, 58 insertions(+), 19 deletions(-)
diff --git a/gdb/testsuite/gdb.gdb/python-helper.exp b/gdb/testsuite/gdb.gdb/python-helper.exp
index a58e3b601df..a2dbeee4815 100644
--- a/gdb/testsuite/gdb.gdb/python-helper.exp
+++ b/gdb/testsuite/gdb.gdb/python-helper.exp
@@ -124,7 +124,9 @@ proc test_python_helper {} {
# GDB, this should result in the outer GDB stopping at one of the
# breakpoints we created..
send_inferior "print 1\n"
- gdb_test -prompt $outer_prompt_re "" "Breakpoint $decimal, value_print.*" "hit breakpoint in outer gdb"
+ gdb_test -prompt $outer_prompt_re "" \
+ "Breakpoint $bkptno_numopt_re, value_print.*" \
+ "hit breakpoint in outer gdb"
# Now inspect the type of parameter VAL, this should trigger the
# pretty printers.
@@ -162,8 +164,10 @@ proc test_python_helper {} {
# information, this will include the TYPE_SPECIFIC_INT
# information.
send_inferior "print global_c.m_val\n"
- gdb_test -prompt $outer_prompt_re "" "Breakpoint $decimal, value_print.*" "print integer from DWARF info"
-
+ gdb_test -prompt $outer_prompt_re "" \
+ "Breakpoint $bkptno_numopt_re, value_print.*" \
+ "print integer from DWARF info"
+
set answer [multi_line \
"$decimal = " \
"{name = $hex \"int\"," \
@@ -187,23 +191,58 @@ proc test_python_helper {} {
# Send a command to the inner GDB, this should result in the outer
# GDB stopping at the value_print breakpoint again.
send_inferior "ptype global_c\n"
- gdb_test -prompt $outer_prompt_re "" "Breakpoint $bkptno_numopt_re, c_print_type.*" "hit breakpoint in outer gdb again"
+ set test "hit breakpoint in outer gdb again"
+ set in_outer_gdb 0
+ gdb_test_multiple "" $test -prompt $outer_prompt_re {
+ -re -wrap "Breakpoint $bkptno_numopt_re, c_print_type.*" {
+ pass $gdb_test_name
+ set in_outer_gdb 1
+ }
+ -re "\r\n$gdb_prompt $" {
+ unsupported $gdb_test_name
+ }
+ }
- set answer [multi_line \
- "$decimal = " \
- "{name = $hex \"CC\"," \
- " code = TYPE_CODE_STRUCT," \
- " flags = \[^\r\n\]+," \
- " owner = $hex \\(objfile\\)," \
- " target_type = 0x0," \
- " flds_bnds\\.fields\\\[0\\\]:" \
- " {m_name = $hex \"m_val\"," \
- " m_type = $hex," \
- " m_loc_kind = FIELD_LOC_KIND_BITPOS," \
- " bitsize = 0," \
- " bitpos = 0}," \
- " cplus_stuff = $hex}"]
- gdb_test -prompt $outer_prompt_re "print *type->main_type" $answer
+ if { ! $in_outer_gdb } {
+ return 0
+ }
+
+ set cmd "print *type->main_type"
+ set cmd_supported 1
+ foreach sub_expr { type type->main_type } {
+ set ok 0
+ gdb_test_multiple "print $sub_expr" "" -prompt $outer_prompt_re {
+ -re -wrap " = \\(\[^\r\n\]+ \\*\\) $hex" {
+ set ok 1
+ }
+ -re -wrap "" {
+ }
+ }
+ if { ! $ok } {
+ set cmd_supported 0
+ break
+ }
+ }
+
+ if { $cmd_supported } {
+ set answer [multi_line \
+ "$decimal = " \
+ "{name = $hex \"CC\"," \
+ " code = TYPE_CODE_STRUCT," \
+ " flags = \[^\r\n\]+," \
+ " owner = $hex \\(objfile\\)," \
+ " target_type = 0x0," \
+ " flds_bnds\\.fields\\\[0\\\]:" \
+ " {m_name = $hex \"m_val\"," \
+ " m_type = $hex," \
+ " m_loc_kind = FIELD_LOC_KIND_BITPOS," \
+ " bitsize = 0," \
+ " bitpos = 0}," \
+ " cplus_stuff = $hex}"]
+ gdb_test -prompt $outer_prompt_re $cmd $answer
+ } else {
+ unsupported $cmd
+ }
# Test the htab_t pretty-printer.
gdb_test -prompt $outer_prompt_re "print all_bfds" "htab_t with ${::decimal} elements = \\{${::hex}.*\\}"
--
2.35.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/3] [gdb/testsuite] Fix auto-indent in gdb.gdb/python-helper.exp
2023-04-21 14:58 [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
2023-04-21 14:58 ` [PATCH 1/3] [gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple Tom de Vries
2023-04-21 14:58 ` [PATCH 2/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
@ 2023-04-21 14:58 ` Tom de Vries
2023-04-24 17:09 ` [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom de Vries @ 2023-04-21 14:58 UTC (permalink / raw)
To: gdb-patches
When editing gdb.gdb/python-helper.exp, auto-indent is broken in my editor
(emacs).
The problem is that this:
...
if { 1 } {
foo "{" "}"<ENTER>bar
}
...
produces this:
...
if { 1 } {
foo "{" "}"
bar
}
...
Note that this doesn't happen for "{}".
Fix this by using "\{" and "\}".
Tested on x86_64-linux.
---
gdb/testsuite/gdb.gdb/python-helper.exp | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/gdb/testsuite/gdb.gdb/python-helper.exp b/gdb/testsuite/gdb.gdb/python-helper.exp
index a2dbeee4815..217f123302d 100644
--- a/gdb/testsuite/gdb.gdb/python-helper.exp
+++ b/gdb/testsuite/gdb.gdb/python-helper.exp
@@ -132,22 +132,22 @@ proc test_python_helper {} {
# pretty printers.
set answer [multi_line \
"${decimal} = " \
- "{pointer_type = 0x0," \
+ "\{pointer_type = 0x0," \
" reference_type = 0x0," \
" chain = 0x0," \
" instance_flags = 0," \
" length = $decimal," \
- " main_type = $hex}"]
+ " main_type = $hex\}"]
gdb_test -prompt $outer_prompt_re "print *val->m_type" $answer "pretty print type"
set answer [multi_line \
"$decimal = " \
- "{name = $hex \"int\"," \
+ "\{name = $hex \"int\"," \
" code = TYPE_CODE_INT," \
" flags = \[^\r\n\]+," \
" owner = $hex \\(gdbarch\\)," \
" target_type = 0x0," \
- " int_stuff = { bit_size = $decimal, bit_offset = $decimal }}"]
+ " int_stuff = \{ bit_size = $decimal, bit_offset = $decimal \}\}"]
gdb_test -prompt $outer_prompt_re "print *val->m_type->main_type" $answer "pretty print type->main_type"
# Send the continue to the outer GDB, which resumes the inner GDB,
@@ -170,12 +170,12 @@ proc test_python_helper {} {
set answer [multi_line \
"$decimal = " \
- "{name = $hex \"int\"," \
+ "\{name = $hex \"int\"," \
" code = TYPE_CODE_INT," \
" flags = \[^\r\n\]+," \
" owner = $hex \\(objfile\\)," \
" target_type = 0x0," \
- " int_stuff = { bit_size = $decimal, bit_offset = $decimal }}"]
+ " int_stuff = \{ bit_size = $decimal, bit_offset = $decimal \}\}"]
gdb_test -prompt $outer_prompt_re "print *val->m_type->main_type" $answer "pretty print type->main_type for DWARF type"
# Send the continue to the outer GDB, which resumes the inner GDB,
@@ -227,18 +227,18 @@ proc test_python_helper {} {
if { $cmd_supported } {
set answer [multi_line \
"$decimal = " \
- "{name = $hex \"CC\"," \
+ "\{name = $hex \"CC\"," \
" code = TYPE_CODE_STRUCT," \
" flags = \[^\r\n\]+," \
" owner = $hex \\(objfile\\)," \
" target_type = 0x0," \
" flds_bnds\\.fields\\\[0\\\]:" \
- " {m_name = $hex \"m_val\"," \
+ " \{m_name = $hex \"m_val\"," \
" m_type = $hex," \
" m_loc_kind = FIELD_LOC_KIND_BITPOS," \
" bitsize = 0," \
- " bitpos = 0}," \
- " cplus_stuff = $hex}"]
+ " bitpos = 0\}," \
+ " cplus_stuff = $hex\}"]
gdb_test -prompt $outer_prompt_re $cmd $answer
} else {
unsupported $cmd
--
2.35.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto
2023-04-21 14:58 [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
` (2 preceding siblings ...)
2023-04-21 14:58 ` [PATCH 3/3] [gdb/testsuite] Fix auto-indent in gdb.gdb/python-helper.exp Tom de Vries
@ 2023-04-24 17:09 ` Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2023-04-24 17:09 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> Fix test-case gdb.gdb/python-helper.exp when gdb is build with -O2 -flto=auto,
Tom> both on openSUSE Leap 15.4 and Tumbleweed.
Tom> There are three patches.
Tom> The first fixes a testsuite problem that is required for the second patch.
Tom> The second contains the actual fix.
Tom> The third addresses a cosmetic issue in the same test-case.
Tom> Tested on x86_64-linux.
FWIW these all seem fine to me. Thanks for doing this.
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-04-24 17:09 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-21 14:58 [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
2023-04-21 14:58 ` [PATCH 1/3] [gdb/testsuite] Fix -wrap in presence of -prompt in gdb_test_multiple Tom de Vries
2023-04-21 14:58 ` [PATCH 2/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom de Vries
2023-04-21 14:58 ` [PATCH 3/3] [gdb/testsuite] Fix auto-indent in gdb.gdb/python-helper.exp Tom de Vries
2023-04-24 17:09 ` [PATCH 0/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).