From: Andrew Burgess <aburgess@redhat.com>
To: Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org>,
gdb-patches@sourceware.org
Cc: Bruno Larsen <blarsen@redhat.com>
Subject: Re: [PATCH] gdb/testsuite: dont test dprintf to stderr in gdb.mi/mi-dprintf.exp
Date: Fri, 21 Jul 2023 10:12:00 +0100 [thread overview]
Message-ID: <871qh1hbmn.fsf@redhat.com> (raw)
In-Reply-To: <20230719134015.2331400-1-blarsen@redhat.com>
Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org> writes:
> As mentioned in commit 3f5bbc3e2075ef5061a815c73fdc277218489f22, some
> compilers such as clang don't add debug information about stderr by
> default, leaving it to external debug packages. However, different to
> that commit, there seems to be no simple way to test if stderr is present
> without introducing a failure,
I don't understand what you mean here. In the previous commit, you just
print stderr and check GDB's reply. Why no adopt the same approach for
this test?
I revised this test to use this proc:
# Check for stderr.
proc mi_gdb_is_stderr_available {} {
set has_stderr_symbol false
gdb_test_multiple "-data-evaluate-expression stderr" "stderr symbol check" {
-re "\\^error,msg=\"'stderr' has unknown type; cast it to its declared type\"\r\n$::mi_gdb_prompt$" {
# Default value of false is fine.
}
-re "$::mi_gdb_prompt$" {
set has_stderr_symbol true
}
}
return $has_stderr_symbol
}
set has_stderr_symbol [mi_gdb_is_stderr_available]
And then replaced your:
if ![test_compiler_info clang*]
with:
if {$::has_stderr_symbol}
And (when testing with Clang) I don't see any failures.
I think, in general, we should avoid as much as possible placing
specific compiler checks into test scripts unless we can make a _really_
strong argument that a special behaviour will _only_ happen for this one
compiler.
In this case, if a compiler check really was the _only_ way to solve
this problem we would still be better off placing the check into a new
proc in lib/*.exp somewhere -- but in this case I don't think that's
necessary, we should be able to check for stderr.
Also, I think the new stderr checking proc should be placed into
lib/mi-support.exp.
Thanks,
Andrew
> so instead this commit just disables
> tests that rely on stderr when clang is detected
> ---
> gdb/testsuite/gdb.mi/mi-dprintf.exp | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.mi/mi-dprintf.exp b/gdb/testsuite/gdb.mi/mi-dprintf.exp
> index e40fa6121fa..735f7fc234e 100644
> --- a/gdb/testsuite/gdb.mi/mi-dprintf.exp
> +++ b/gdb/testsuite/gdb.mi/mi-dprintf.exp
> @@ -127,7 +127,6 @@ proc mi_continue_dprintf {args} {
> mi_continue_dprintf "gdb"
>
> # The "call" style depends on having I/O functions available, so test.
> -
> if ![target_info exists gdb,noinferiorio] {
>
> # Now switch styles and rerun; in the absence of redirection the
> @@ -136,9 +135,12 @@ if ![target_info exists gdb,noinferiorio] {
> mi_gdb_test "set dprintf-style call" ".*" "mi set dprintf style to call"
> mi_continue_dprintf "call"
>
> - mi_gdb_test "set dprintf-function fprintf" ".*" "mi set dprintf-channel stderr"
> - mi_gdb_test "set dprintf-channel stderr" ".*" "mi set dprintf channel"
> - mi_continue_dprintf "fprintf"
> + # Clang does not add information about stderr, so skip these tests if needed.
> + if ![test_compiler_info clang*] {
> + mi_gdb_test "set dprintf-function fprintf" ".*" "mi set dprintf-channel stderr"
> + mi_gdb_test "set dprintf-channel stderr" ".*" "mi set dprintf channel"
> + mi_continue_dprintf "fprintf"
> + }
> }
>
> set target_can_dprintf 0
> --
> 2.41.0
next prev parent reply other threads:[~2023-07-21 9:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 13:40 Bruno Larsen
2023-07-21 9:12 ` Andrew Burgess [this message]
2023-07-21 9:33 ` Bruno Larsen
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=871qh1hbmn.fsf@redhat.com \
--to=aburgess@redhat.com \
--cc=blarsen@redhat.com \
--cc=gdb-patches@sourceware.org \
/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).