Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Simon Marchi <simon.marchi@ericsson.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH v2 1/2] Add dprintf and detach test (PR breakpoints/17012)
Date: Tue, 15 Jul 2014 17:19:00 -0000	[thread overview]
Message-ID: <53C56233.8000904@redhat.com> (raw)
In-Reply-To: <1404760664-17289-1-git-send-email-simon.marchi@ericsson.com>

On 07/07/2014 08:17 PM, Simon Marchi wrote:

> +#include <stdlib.h>
> +
> +static void
> +function (void)
> +{
> +  sleep (1);

'sleep' needs unistd.h, not stdlib.h.

> +}
> +
> +int
> +main (void)
> +{
> +  int i;
> +
> +  for (i = 0; i < 30; i++)
> +  {
> +    function ();
> +  }

Could you please make this follow the same coding standard
as GDB?  That is, a single statement doesn't need braces.

> +}

> +# Only GNU/Linux is known to support (dprintf and detach).
> +if { ! [istarget "*-*-linux*"] } {
> +  return 0
> +}

dprintf call-style should has no target dependencies, so please
remove this making it run on all targets/archs.

> +
> +# Are we on a target board?
> +if [is_remote target] then {
> +    return 0
> +}

This should be a $use_gdb_stub check instead, and give out
an explanation for why we need to skip the test:

# The test relies on "detach/attach".
if [$use_gdb_stub] then {
    return 0
}

> +
> +standard_testfile
> +set escapedbinfile  [string_to_regexp ${binfile}]

Spurious double space.

> +
> +if [prepare_for_testing "failed to prepare for dprintf-detach" \
> +    ${testfile} ${srcfile} {debug}] {
> +    return -1
> +}
> +
> +# The problem was showing up in non-stop mode, since it enables
> +# "breakpoint always-inserted", so this could also be
> +# "set breakpoint always-inserted on".
> +gdb_test_no_output "set non-stop on"

It's best to make it so then.  That'll expand the coverage
of the test to more targets.  All targets can do always-inserted,
but only a few can do non-stop.  For extra coverage, I'd even
make the test exercise with both always-inserted on and off.
See bottom of break-unload-file.exp, for example.

> +
> +if ![runto_main] {
> +    fail "Can't run to main"
> +    return -1
> +}
> +
> +# Get PID of test program.
> +set inferior_pid -1
> +set test "get inferior process ID"
> +gdb_test_multiple "call getpid ()" $test {
> +    -re ".* = ($decimal).*$gdb_prompt $" {
> +	set inferior_pid $expect_out(1,string)
> +	pass $test
> +    }
> +}
> +

Add a:

if {$inferior_pid == -1} {
   return
}

after gdb_test_multiple, so that if the test fails, we don't
try to use a bogus pid.

> +# Add a dprintf and detach.
> +gdb_test "dprintf function, \"hello\"" "Dprintf .*" "dprintf insertion"
> +gdb_test "detach" "Detaching from program: .*$escapedbinfile, .*" "detach program"
> +
> +gdb_exit
> +
> +# Give some time for the ex-inferior to run and hopefully not crash.
> +sleep 1
> +
> +# Check that the process still exists by attaching a new gdb to it.
> +gdb_start
> +gdb_test "attach $inferior_pid" "Attaching to process $inferior_pid.*Reading symbols from $escapedbinfile.*" "re-attach to inferior"

I think that as is, this fails with --target_board=native-extended-gdbserver,
because with that, "attach" won't know which binary the program is running.
A gdb_load/clean_restart be missing too -- I think you might get
a complain about not knowing how to attach, as auto-connecting to
native target is force-disabled with that board (to catch these issues exactly).

Thanks,
-- 
Pedro Alves


      parent reply	other threads:[~2014-07-15 17:17 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-07 19:17 Simon Marchi
2014-07-07 19:17 ` [PATCH v2 2/2] Only leave dprintf inserted if it is marked as persistent " Simon Marchi
2014-07-15 16:08   ` Joel Brobecker
2014-07-15 19:27   ` Pedro Alves
2014-07-16  2:02     ` Pedro Alves
2014-07-15 17:19 ` Pedro Alves [this message]

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=53C56233.8000904@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@ericsson.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