From: Michael Snyder <msnyder@cygnus.com>
To: gdb-patches@sources.redhat.com
Cc: kettenis@wins.uva.nl
Subject: [PATCH RFA] Clean up spurious SIGSTOPS in lin-lwp
Date: Fri, 25 May 2001 15:57:00 -0000 [thread overview]
Message-ID: <3B0EE363.DA047C1B@cygnus.com> (raw)
Mark,
This patch will get rid of most of those "Delayed SIGSTOP" messages,
so that lin_lwp_wait will rarely if ever get a SIGSTOP that was generated
by gdb. It entails three basic changes:
* In lin_lwp_attach_lwp, consume the SIGSTOP that is generated by
PTHREAD_ATTACH.
* In stop_wait_callback, try again to consume the SIGSTOP after
"pushing back" a SIGTRAP for a thread other than the event thread.
* Similarly try again to consume a SIGSTOP after tossing away a
redundant SIGINT.
Michael
2001-05-25 Michael Snyder <msnyder@redhat.com>
* lin-lwp.c (lin_lwp_attach_lwp): Call stop_wait_callback,
to consume the SIGSTOP generated by PTRACE_ATTACH.
(stop_wait_callback): If a SIGTRAP or a SIGINT event is consumed,
try again to get the SIGSTOP event.
(lin_lwp_wait): Resume all threads when ignoring a signal.
This will insure that newly attached threads get resumed.
*** lin-lwp.sigint.c Fri May 25 15:23:46 2001
--- lin-lwp.c Fri May 25 15:26:52 2001
*************** lin_lwp_attach_lwp (ptid_t ptid, int ver
*** 327,333 ****
lp = add_lwp (ptid);
if (is_cloned (ptid))
! lp->signalled = 1;
}
static void
--- 327,336 ----
lp = add_lwp (ptid);
if (is_cloned (ptid))
! {
! lp->signalled = 1;
! stop_wait_callback (lp, NULL);
! }
}
static void
*************** stop_callback (struct lwp_info *lp, void
*** 539,544 ****
--- 542,548 ----
static int
stop_wait_callback (struct lwp_info *lp, void *data)
{
+ get_another_event:
if (! lp->stopped && lp->signalled)
{
pid_t pid;
*************** stop_wait_callback (struct lwp_info *lp,
*** 609,614 ****
--- 613,624 ----
write_pc_pid (read_pc_pid (pid_to_ptid (pid))
- DECR_PC_AFTER_BREAK,
pid_to_ptid (pid));
+
+ /* Now resume this LWP and get the SIGSTOP event. */
+ lp->stopped = 1;
+ lp->step = 0;
+ resume_callback (lp, NULL);
+ goto get_another_event;
}
else if (WSTOPSIG (status) == SIGINT)
{
*************** stop_wait_callback (struct lwp_info *lp,
*** 616,622 ****
(in the case where ^C/BREAK is typed at the tty/console),
just ignore all SIGINT events from all lwp's except for
the one that was caught by lin_lwp_wait. */
! ; /* Don't save. Signal will disappear into oblivion. */
}
else
{
--- 626,637 ----
(in the case where ^C/BREAK is typed at the tty/console),
just ignore all SIGINT events from all lwp's except for
the one that was caught by lin_lwp_wait. */
!
! /* Now resume this LWP and get the SIGSTP event. */
! lp->stopped = 1;
! lp->step = 0;
! resume_callback (lp, NULL);
! goto get_another_event;
}
else
{
*************** lin_lwp_wait (ptid_t ptid, struct target
*** 867,874 ****
&& signal_print_state (signo) == 0
&& signal_pass_state (signo) == 1)
{
- child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, signo);
lp->stopped = 0;
status = 0;
goto retry;
}
--- 882,893 ----
&& signal_print_state (signo) == 0
&& signal_pass_state (signo) == 1)
{
lp->stopped = 0;
+ /* Resume all threads except this one
+ (mainly to get the newly attached ones). */
+ iterate_over_lwps (resume_callback, NULL);
+ /* Now resume this thread, forwarding the signal to it. */
+ child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, signo);
status = 0;
goto retry;
}
From kevinb@cygnus.com Fri May 25 16:33:00 2001
From: Kevin Buettner <kevinb@cygnus.com>
To: Nick Duffek <nsd@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] solib-osf.c: reimplement osfsolib.c as solib.c backend
Date: Fri, 25 May 2001 16:33:00 -0000
Message-id: <1010525233258.ZM16610@ocotillo.lan>
References: <200105250215.f4P2FCs07063@rtl.cygnus.com> <nsd@redhat.com>
X-SW-Source: 2001-05/msg00469.html
Content-length: 1268
On May 24, 10:15pm, Nick Duffek wrote:
> The appended patch reimplements osfsolib.c as a back end to the generic
> shared library support framework in solib.c.
>
> For consistency with other such back ends, I renamed it to solib-osf.c.
>
> ChangeLog:
>
> * Makefile.in (osfsolib.c, osfsolib.o): Rename to solib-osf.c and
> solib-osf.o.
> * config/alpha/alpha-osf1.mh (NATDEPFILES): Replace osfsolib.o
> with solib-osf.o and solib.o.
> * config/alpha/alpha-osf2.mh: Likewise.
> * config/alpha/alpha-osf3.mh: Likewise.
> * solib-osf.c: New file, renamed and largely rewritten from
> osfsolib.c.
>
> Tested on alphaev6-dec-osf5.1 and alpha-dec-osf4.0 with preceding patch to
> solib.c. Okay to apply?
Yes, approved. (I *can* approve this, can't I?)
A couple of comments though...
1) I see some code disabled with #if 0 in solib-osf.c. Is there a
reason for retaining this code? (I did read your comment and if
you think someone might want to reenable ldr_read_memory() at some
time in the future, then by all means keep it.)
2) _initialize_osf_solib() should probably have an extern declaration
at the top of the file. I realize that this shouldn't be necessary,
but it eliminates the warning when using -Wmissing-prototypes.
Kevin
next reply other threads:[~2001-05-25 15:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-05-25 15:57 Michael Snyder [this message]
2001-05-26 2:15 ` Mark Kettenis
2001-05-30 16:03 ` Michael Snyder
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=3B0EE363.DA047C1B@cygnus.com \
--to=msnyder@cygnus.com \
--cc=gdb-patches@sources.redhat.com \
--cc=kettenis@wins.uva.nl \
/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