Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Carl Love via Gdb-patches <gdb-patches@sourceware.org>
To: Simon Marchi <simark@simark.ca>, John Baldwin <jhb@FreeBSD.org>,
	gdb-patches@sourceware.org
Cc: Rogerio Alves <rogealve@br.ibm.com>
Subject: Re: [PATCH v2] gdb fix for catch-syscall.exp
Date: Fri, 10 Dec 2021 11:59:54 -0800	[thread overview]
Message-ID: <5644a7484e2b2024166cd7a7d091d11052f96cc6.camel@us.ibm.com> (raw)
In-Reply-To: <5f745078-cb28-86ae-1edd-bff0333283b6@simark.ca>

Simon:

On Fri, 2021-12-10 at 13:36 -0500, Simon Marchi wrote:
> > +         -re -wrap ".*Breakpoint $decimal, main .*" {
> > +             # On Powerpc kernel does not report the returned from
> > syscall
> > +             # as expected by the test.  GDB bugzilla 28623.
> > +             xfail $thistest
> > +             return 0
> 
> This should check that the target is powerpc before doing the xfail,
> because
> getting that result on any other architecture should result in a
> FAIL.  Probably
> "[istarget "powerpc*-*-*"]".
> 

I added a check for istarget "powerpc64*-linux*".

< snip>

> >   
> >   # Internal procedure that performs two 'continue' commands and
> > checks if
> > @@ -142,7 +159,11 @@ proc check_continue { syscall { pattern "" } }
> > {
> >       # Testing if the inferior has called the syscall.
> >       check_call_to_syscall $syscall $pattern
> >       # And now, that the syscall has returned.
> > -    check_return_from_syscall $syscall $pattern
> > +    if [check_return_from_syscall $syscall $pattern] {
> > +     return 1
> > +    } else {
> > +     return 0
> > +    }
> 
> Can this just be
> 
>   return [check_return_from_syscall $syscall $pattern] ?
> 
Yup, that works for me.

The updated patch is below.  It has been retested on PowerPC and Intel
with no new regressions.

Please let me know if it is OK to commit to gdb mainline.  Thanks.

                     Carl 
-----------------------------------------------------
gdb: Powerpc mark xfail in gdb.base/catch-syscall.exp

Powerpc is not reporting the

  Catchpoint 1 (returned from syscall execve),  ....

as expected.  The issue appears to be with the kernel not returning the
expected result.  This patch marks the test failure as an xfail.

See gdb bugzilla https://sourceware.org/bugzilla/show_bug.cgi?id=28623
---
 gdb/testsuite/gdb.base/catch-syscall.exp | 38 ++++++++++++++++++++----
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp
index cdd5e2aec47..76c5cfbc6d6 100644
--- a/gdb/testsuite/gdb.base/catch-syscall.exp
+++ b/gdb/testsuite/gdb.base/catch-syscall.exp
@@ -127,7 +127,29 @@ proc check_return_from_syscall { syscall { pattern "" } } {
     }
 
     set thistest "syscall $syscall has returned"
-    gdb_test "continue" "Catchpoint $decimal \\(returned from syscall ${pattern}\\).*" $thistest
+    if { $pattern eq "execve" } {
+	gdb_test_multiple "continue" $thistest {
+	    -re -wrap "Catchpoint $decimal \\(returned from syscall ${pattern}\\).*" {
+		pass $thistest
+		return 1
+	    }
+	    -re -wrap ".*Breakpoint $decimal, main .*" {
+		# On Powerpc kernel does not report the returned from syscall
+		# as expected by the test.  GDB bugzilla 28623.
+		puts "CARLL test failed"
+		if { [istarget "powerpc64*-linux*"] } {
+		    xfail $thistest
+		} else {
+		    fail $thistest
+		}
+		return 0
+	    }
+	}
+
+    } else {
+	gdb_test "continue" "Catchpoint $decimal \\(returned from syscall ${pattern}\\).*" $thistest
+	return 1
+    }
 }
 
 # Internal procedure that performs two 'continue' commands and checks if
@@ -142,7 +164,7 @@ proc check_continue { syscall { pattern "" } } {
     # Testing if the inferior has called the syscall.
     check_call_to_syscall $syscall $pattern
     # And now, that the syscall has returned.
-    check_return_from_syscall $syscall $pattern
+    return [check_return_from_syscall $syscall $pattern]
 }
 
 # Inserts a syscall catchpoint with an argument.
@@ -348,11 +370,15 @@ proc test_catch_syscall_execve {} {
 	# Check for entry/return across the execve, making sure that the
 	# syscall_state isn't lost when turning into a new process.
 	insert_catch_syscall_with_arg "execve"
-	check_continue "execve"
+	if [check_continue "execve"] {
+	    # The check_continue test generates an XFAIL on Powerpc.  In
+	    # that case, gdb is already at main so don't do the continue.
+
 
-	# Continue to main so extended-remote can read files as needed.
-	# (Otherwise that "Reading" output confuses gdb_continue_to_end.)
-	gdb_continue "main"
+	    # Continue to main so extended-remote can read files as needed.
+	    # (Otherwise that "Reading" output confuses gdb_continue_to_end.)
+	    gdb_continue "main"
+	}
 
 	# Now can we finish?
 	check_for_program_end
-- 
2.30.2




  reply	other threads:[~2021-12-10 20:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-17 23:30 [PATCH] " Carl Love via Gdb-patches
2021-11-18 15:23 ` Tom Tromey
2021-11-18 18:10 ` Simon Marchi
2021-11-20  0:27   ` Carl Love via Gdb-patches
2021-11-22  1:07     ` Simon Marchi via Gdb-patches
2021-11-22 18:16       ` Carl Love via Gdb-patches
2021-11-22 17:01     ` John Baldwin
2021-11-23 20:34       ` Simon Marchi
2021-11-23 22:34         ` John Baldwin
2021-11-24 17:46           ` Carl Love via Gdb-patches
2021-11-24 17:51             ` John Baldwin
2021-11-24  1:15         ` Carl Love via Gdb-patches
2021-11-24 19:29           ` Simon Marchi
2021-11-29 16:46             ` Carl Love via Gdb-patches
2021-12-02 16:32               ` Ping " Carl Love via Gdb-patches
2021-12-10 18:36               ` Simon Marchi
2021-12-10 19:59                 ` Carl Love via Gdb-patches [this message]
2021-12-11  0:21                   ` [PATCH v2] " Simon Marchi via Gdb-patches

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=5644a7484e2b2024166cd7a7d091d11052f96cc6.camel@us.ibm.com \
    --to=gdb-patches@sourceware.org \
    --cc=cel@us.ibm.com \
    --cc=jhb@FreeBSD.org \
    --cc=rogealve@br.ibm.com \
    --cc=simark@simark.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