From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14331 invoked by alias); 11 Jul 2008 17:12:28 -0000 Received: (qmail 14321 invoked by uid 22791); 11 Jul 2008 17:12:27 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 11 Jul 2008 17:12:04 +0000 Received: (qmail 4514 invoked from network); 11 Jul 2008 17:12:02 -0000 Received: from unknown (HELO orlando.local) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 11 Jul 2008 17:12:02 -0000 From: Pedro Alves To: Daniel Jacobowitz Subject: Re: [gdbserver] Fix attaching notices Date: Fri, 11 Jul 2008 17:12:00 -0000 User-Agent: KMail/1.9.9 Cc: gdb-patches@sourceware.org References: <200806280011.12868.pedro@codesourcery.com> <200807080258.34187.pedro@codesourcery.com> <20080711141326.GA5455@caradoc.them.org> In-Reply-To: <20080711141326.GA5455@caradoc.them.org> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_iR5dIfmlKV/7egD" Message-Id: <200807111812.02067.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-07/txt/msg00216.txt.bz2 --Boundary-00=_iR5dIfmlKV/7egD Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1007 A Friday 11 July 2008 15:13:26, Daniel Jacobowitz wrote: > On Tue, Jul 08, 2008 at 02:58:33AM +0100, Pedro Alves wrote: > > 2) change the test to: > > > > if (stop_soon == STOP_QUIETLY_NO_SIGSTOP > > && stop_signal == TARGET_SIGNAL_STOP > > && stop_signal == TARGET_SIGNAL_TRAP) > > Ought to be some || in there :-) > No kidding! No more posting at 3AM for me. :-) > > { > > stop_stepping (ecs); > > stop_signal = TARGET_SIGNAL_0; > > return; > > } > > > > Or even add a `&& stop_signal == TARGET_SIGNAL_0', and merge > > this stop_soon with STOP_QUIETLY_REMOTE. > > I don't think I understand. > I think this is the same insanity as above :-) > Allowing both stop and trap sounds reasonable to me. We already rely > on there not being other sources of SIGTRAP. Here a patch for that. I confirmed that the SIGTRAP notice is gone against gdbserver, and ran the the attaching into signals tests, and the attach.exp test nativelly, and all pass cleanly. -- Pedro Alves --Boundary-00=_iR5dIfmlKV/7egD Content-Type: text/x-diff; charset="iso-8859-1"; name="stop_soon_no_sigstop.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="stop_soon_no_sigstop.diff" Content-length: 1691 2008-07-11 Pedro Alves * infrun.c (handle_inferior_event): Also ignore a TARGET_SIGNAL_TRAP on a STOP_QUIETLY_NO_SIGSTOP. --- gdb/infrun.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) Index: src/gdb/infrun.c =================================================================== --- src.orig/gdb/infrun.c 2008-07-11 16:33:00.000000000 +0100 +++ src/gdb/infrun.c 2008-07-11 16:41:51.000000000 +0100 @@ -2543,13 +2543,20 @@ targets should add new threads to the th } /* This originates from attach_command(). We need to overwrite - the stop_signal here, because some kernels don't ignore a - SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call. - See more comments in inferior.h. On the other hand, if we + the stop_signal here, because some kernels don't ignore a + SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call. + See more comments in inferior.h. On the other hand, if we get a non-SIGSTOP, report it to the user - assume the backend - will handle the SIGSTOP if it should show up later. */ + will handle the SIGSTOP if it should show up later. + + Also consider that the attach is complete when we see a + SIGTRAP. Some systems (e.g. Windows), and stubs supporting + target extended-remote report it instead of a SIGSTOP + (e.g. gdbserver). We already rely on SIGTRAP being our + signal, so this is no exception. */ if (stop_soon == STOP_QUIETLY_NO_SIGSTOP - && stop_signal == TARGET_SIGNAL_STOP) + && (stop_signal == TARGET_SIGNAL_STOP + || stop_signal == TARGET_SIGNAL_TRAP)) { stop_stepping (ecs); stop_signal = TARGET_SIGNAL_0; --Boundary-00=_iR5dIfmlKV/7egD--