public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@ericsson.com>
To: Pedro Alves <palves@redhat.com>, <dejagnu@gnu.org>,
	gdb-patches	<gdb-patches@sourceware.org>
Subject: Re: How to abort a test?
Date: Thu, 14 Jan 2016 19:43:00 -0000	[thread overview]
Message-ID: <5697FA6C.7060703@ericsson.com> (raw)
In-Reply-To: <5697DABA.8010008@redhat.com>

On 16-01-14 12:28 PM, Pedro Alves wrote:
>> So they would need to be changed:
>>
>> -gdb_run_cmd
>> +if ![gdb_run_cmd] {
>> +    fail "Failed to run"
>> +}
>>
> 
> That's where the "return -code return" hack would come in.  You'd
> do that inside gdb_run_cmd so that would return directly to gdb_run_cmd's
> caller.  But it's an ugly hack.

Now that's some tcl dark magic.

>>> For the particular case of gdbserver not being present in the target,
>>> probably the easiest would be to check that earlier, likely before
>>> runtest, even.  Not ideal, since the testsuite can mix native and gdbserver
>>> tests, for instance, but...
>>
>> And it's a bit hard to check in the case of a remote target, given that it's runtest
>> that knows how to "compute" the remote hostname, username, expected gdbserver path,
>> etc, from the --target_board.
> 
> I meant, before runtest, the dejagnu procedure, not before invoking the
> runtest binary.  E.g., straight from the target board file, say.
> 
> E.g., with:
> 
> --- c/gdb/testsuite/boards/gdbserver-base.exp
> +++ w/gdb/testsuite/boards/gdbserver-base.exp
> @@ -33,6 +33,8 @@ set_board_info gdb,predefined_tsv "\\\$trace_timestamp"
> 
>  set GDBFLAGS "${GDBFLAGS} -ex \"set auto-connect-native-target off\""
> 
> +error "gdbserver not present on target!"
> +
>  proc ${board}_file { dest op args } {
>      if { $op == "delete" } {
>         return 0
> 
> then I get:
> 
> $ time make check RUNTESTFLAGS="--target_board=native-gdbserver"
> make[1]: Entering directory `/home/pedro/gdb/mygit/build/gdb/testsuite'
> Nothing to be done for all...
> make check-single
> make[2]: Entering directory `/home/pedro/gdb/mygit/build/gdb/testsuite'
> rootme=`pwd`; export rootme; srcdir=/home/pedro/gdb/mygit/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ "${READ1}" != "" ] ; then echo ${rootme}/expect-read1; elif [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --target_board=native-gdbserver
> Test Run By pedro on Thu Jan 14 17:24:37 2016
> Native configuration is x86_64-pc-linux-gnu
> 
>                 === gdb tests ===
> 
> Schedule of variations:
>     native-gdbserver
> 
> Running target native-gdbserver
> Using /home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/native-gdbserver.exp as board description file for target.
> Using /home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/gdbserver-base.exp as board description file for target.
> ERROR: tcl error sourcing board description file for target /home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/gdbserver-base.exp.
> gdbserver not present on target!
> gdbserver not present on target!
>     while executing
> "error "gdbserver not present on target!""
>     (file "/home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/gdbserver-base.exp" line 36)
>     invoked from within
> "source /home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/gdbserver-base.exp"
>     ("uplevel" body line 1)
>     invoked from within
> "uplevel #0 source /home/pedro/gdb/mygit/src/gdb/testsuite/boards/../boards/gdbserver-base.exp"
>     invoked from within
> "catch "uplevel #0 source ${dir}/${initfile}" error"
> make[2]: *** [check-single] Error 1
> make[2]: Leaving directory `/home/pedro/gdb/mygit/build/gdb/testsuite'
> make[1]: *** [check] Error 2
> make[1]: Leaving directory `/home/pedro/gdb/mygit/build/gdb/testsuite'
> make: *** [check] Error 2
> 
> real    0m0.404s
> user    0m0.336s
> sys     0m0.060s
> 
> Obviously not ideal; I'm just pointing out the likely easiest.

Hmm if I try to put a call to

  [remote_file target exists "/home/simark/nonexistent"]

It always returns true somehow.  When I dig, I find this error:

  {rsh to target failed for test -f /home/simark/nonexistent, rsh: Could not resolve hostname target: Name or service not known}

At this point I think the target board is not set (we are currently parsing it), so we
probably can't do operations on it.

Anyway, the point is not to fix it for my particular case, but to make the general
testsuite more robust.  I think I'll send a patch for Dejagnu for the "unresolved"
solution, and see what the maintainers think.

Thanks for you help Pedro.

Simon

  reply	other threads:[~2016-01-14 19:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-12 22:51 Simon Marchi
2016-01-14 16:25 ` Pedro Alves
2016-01-14 17:13   ` Simon Marchi
2016-01-14 17:28     ` Pedro Alves
2016-01-14 19:43       ` Simon Marchi [this message]
2016-01-14 19:48         ` Pedro Alves
2016-01-15 16:35           ` Simon Marchi
2016-01-15 20:22             ` Ben Elliston
2016-01-17  8:27             ` Joel Brobecker
2016-01-18 16:43               ` Simon Marchi
2016-01-21 10:42                 ` Joel Brobecker

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=5697FA6C.7060703@ericsson.com \
    --to=simon.marchi@ericsson.com \
    --cc=dejagnu@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /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).