From: Tom de Vries <tdevries@suse.de>
To: Simon Marchi <simon.marchi@efficios.com>, gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@polymtl.ca>
Subject: Re: [PATCH 2/2] gdb/testsuite: make gdb_unload use gdb_test_multiple
Date: Tue, 29 Nov 2022 17:28:55 +0100 [thread overview]
Message-ID: <7ddb7298-d036-52bb-933f-f225157735a0@suse.de> (raw)
In-Reply-To: <20221122155546.599061-2-simon.marchi@efficios.com>
On 11/22/22 16:55, Simon Marchi via Gdb-patches wrote:
> From: Simon Marchi <simon.marchi@polymtl.ca>
>
> In the failure seen by Philippe here:
>
> https://inbox.sourceware.org/gdb-patches/20221120173024.3647464-1-philippe.waroquiers@skynet.be/
>
> gdb_unload crashed GDB, leaving no trace in the test results. Change it
> to use gdb_test_multiple, so that it leaves an UNRESOLVED result. I
> think it is good practice anyway.
>
Agreed. I do remember some cases where I had to downgrade from
gdb_test_multiple to gdb_expect, but I guess for the common case
gdb_test_multiple is the best.
> Make it return the result of gdb_test_multiple directly, change
> gdb.python/py-objfile.exp accordingly.
>
> Change gdb.base/endian.exp as well to avoid duplicate test names.
>
> Change gdb.base/gnu-debugdata.exp to avoid recording a test result,
> since gdb_unload does it already now.
>
LGTM.
Thanks,
- Tom
> Change-Id: I59a1e4947691330797e6ce23277942547c437a48
> ---
> gdb/testsuite/gdb.base/endian.exp | 6 ++---
> gdb/testsuite/gdb.base/gnu-debugdata.exp | 7 ++---
> gdb/testsuite/gdb.python/py-objfile.exp | 9 ++++---
> gdb/testsuite/lib/gdb.exp | 34 ++++++++++--------------
> 4 files changed, 24 insertions(+), 32 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.base/endian.exp b/gdb/testsuite/gdb.base/endian.exp
> index 05cf1280bad0..daa49b516545 100644
> --- a/gdb/testsuite/gdb.base/endian.exp
> +++ b/gdb/testsuite/gdb.base/endian.exp
> @@ -59,7 +59,7 @@ if { [gdb_test_multiple "show endian" "$test" {
>
> # Now check that the automatic endianness is updated
> # according to the executable selected.
> -gdb_unload
> +gdb_unload "unload 1"
> gdb_test "set endian big" "$en_set big endian\\." \
> "override target endianness big"
> gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)\\." \
> @@ -69,7 +69,7 @@ gdb_file_cmd $binfile
> gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
> "previously big default executable endianness"
>
> -gdb_unload
> +gdb_unload "unload 2"
> gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
> "previously big default no executable endianness"
> gdb_test "set endian little" "$en_set little endian\\." \
> @@ -81,6 +81,6 @@ gdb_file_cmd $binfile
> gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
> "previously little default executable endianness"
>
> -gdb_unload
> +gdb_unload "unload 3"
> gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
> "previously little default no executable endianness"
> diff --git a/gdb/testsuite/gdb.base/gnu-debugdata.exp b/gdb/testsuite/gdb.base/gnu-debugdata.exp
> index 732eadcbd306..0900e2fc2d86 100644
> --- a/gdb/testsuite/gdb.base/gnu-debugdata.exp
> +++ b/gdb/testsuite/gdb.base/gnu-debugdata.exp
> @@ -150,10 +150,7 @@ if {$gdb_file_cmd_debug_info == "lzma"} {
> }
>
> # Be sure to test the 'close' method on the MiniDebugInfo BFD.
> -if {[gdb_unload]} {
> - fail "unload MiniDebugInfo"
> -} else {
> - pass "unload MiniDebugInfo"
> -}
> +# gdb_unload records a pass/fail.
> +gdb_unload
>
> gdb_exit
> diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp
> index 9565c16af96b..f42bc5fb9f0f 100644
> --- a/gdb/testsuite/gdb.python/py-objfile.exp
> +++ b/gdb/testsuite/gdb.python/py-objfile.exp
> @@ -92,7 +92,9 @@ gdb_test "python print (objfile.progspace)" "<gdb\.Progspace object at .*>" \
> "Get objfile program space"
> gdb_test "python print (objfile.is_valid())" "True" \
> "Get objfile validity"
> -gdb_unload
> +
> +gdb_unload "unload 1"
> +
> gdb_test "python print (objfile.is_valid())" "False" \
> "Get objfile validity after unload"
>
> @@ -103,9 +105,8 @@ gdb_test "python print (objfile.random_attribute)" "42" \
>
> # Verify invalid objfile handling.
>
> -if { [gdb_unload] < 0 } {
> - fail "unload all files"
> - return -1
> +if { [gdb_unload "unload 2"] != 0 } {
> + return
> }
>
> gdb_test "python print(objfile.filename)" "None" \
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index fcd54c88f251..264d3ff435b3 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -311,38 +311,32 @@ proc gdb_version { } {
> return [default_gdb_version]
> }
>
> -#
> # gdb_unload -- unload a file if one is loaded
> -# Return 0 on success, -1 on error.
> #
> +# Returns the same as gdb_test_multiple.
>
> -proc gdb_unload {} {
> +proc gdb_unload { {msg "file"} } {
> global GDB
> global gdb_prompt
> - send_gdb "file\n"
> - gdb_expect 60 {
> - -re "No executable file now\[^\r\n\]*\[\r\n\]" { exp_continue }
> - -re "No symbol file now\[^\r\n\]*\[\r\n\]" { exp_continue }
> - -re "A program is being debugged already.*Are you sure you want to change the file.*y or n. $" {
> + return [gdb_test_multiple "file" $msg {
> + -re "A program is being debugged already.\r\nAre you sure you want to change the file. .y or n. $" {
> send_gdb "y\n" answer
> exp_continue
> }
> - -re "Discard symbol table from .*y or n.*$" {
> - send_gdb "y\n" answer
> +
> + -re "No executable file now\\.\r\n" {
> exp_continue
> }
> - -re "$gdb_prompt $" {}
> - -re "A problem internal to GDB has been detected" {
> - perror "Couldn't unload file in $GDB (GDB internal error)."
> - gdb_internal_error_resync
> - return -1
> +
> + -re "Discard symbol table from `.*'. .y or n. $" {
> + send_gdb "y\n" answer
> + exp_continue
> }
> - timeout {
> - perror "couldn't unload file in $GDB (timeout)."
> - return -1
> +
> + -re -wrap "No symbol file now\\." {
> + pass $gdb_test_name
> }
> - }
> - return 0
> + }]
> }
>
> # Many of the tests depend on setting breakpoints at various places and
next prev parent reply other threads:[~2022-11-29 16:28 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-22 15:55 [PATCH 1/2] gdb/testsuite: make gdb_test_multiple return immediately if send_gdb fails Simon Marchi
2022-11-22 15:55 ` [PATCH 2/2] gdb/testsuite: make gdb_unload use gdb_test_multiple Simon Marchi
2022-11-29 16:28 ` Tom de Vries [this message]
2022-11-29 16:43 ` Simon Marchi
2022-11-23 10:59 ` [PATCH 1/2] gdb/testsuite: make gdb_test_multiple return immediately if send_gdb fails Philippe Waroquiers
2022-11-23 14:12 ` Simon Marchi
2022-11-29 16:21 ` Tom de Vries
2022-11-29 16:41 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7ddb7298-d036-52bb-933f-f225157735a0@suse.de \
--to=tdevries@suse.de \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@efficios.com \
--cc=simon.marchi@polymtl.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).