Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@redhat.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: Eli Zaretskii <eliz@gnu.org>, gdb-patches@sources.redhat.com
Subject: Re: [RFA]: Modified Watchthreads Patch
Date: Thu, 13 Jan 2005 19:22:00 -0000	[thread overview]
Message-ID: <41E6CA85.5090407@redhat.com> (raw)
In-Reply-To: <20041211173256.GA15506@nevyn.them.org>

Daniel Jacobowitz wrote:
> On Sat, Dec 11, 2004 at 06:54:53PM +0200, Eli Zaretskii wrote:
> 
>>>Date: Sat, 11 Dec 2004 11:11:37 -0500
>>>From: Daniel Jacobowitz <drow@false.org>
>>>Cc: jjohnstn@redhat.com, gdb-patches@sources.redhat.com
>>>
>>>Are there really any current uses of observers which meet your
>>>definition above?
>>
>>I'm unsure which definition you refer to.
> 
> 
> Let me try to clarify then... this is what you said:
> 
> 
>>Basically, I think that observers are a last-resort mechanism for
>>anything that is part of the GDB infrastructure.  It's like hooks or
>>callbacks--you don't normally expect a program internals to use
>>callbacks that it provides for higher-level application code.
>>
>>Put another way, using a mechanism such as observers for internal code
>>means we leave our internal structure not entirely defined.  We design
>>the internals, so we ought to know what needs to be done where and
>>when.  For example, this particular usage of an observer means that we
>>don't really know in advance that watchpoint insertion needs to be
>>done for each thread when it is being attached.  Do we really want to
>>say that we don't know what we are doing in our own program?
> 
> 
> I think that every current use of observers is in this sense "we don't
> really know in advance what needs to be done".  For instance, we've got
> observer_notify_inferior_created, which is uesd for actions that we
> don't know statically will be necessary at inferior creation - vsyscall
> DSO loading on targets which have one, and some HP/UX specific code
> that I don't recall the purpose of.
> 
> Or consider target_changed, which is attached by the frame code (always
> part of GDB!) and the regcache (likewise!) and notified by valops.c
> (likewise!).
> 
> I think this is a fine use of observers; one "module" of GDB wants to
> be notified when an event occurs in another.
> 
> 
>>>1)  Wait for my target vector inheritance patch to go in.  Have the
>>>target override either to_wait or to_resume - probably to_resume.  In
>>>the overridden version, iterate over all LWPs and make sure
>>>watchpoints are correctly inserted for them all.  Disadvantage: we
>>>shouldn't need to iterate over the entire LWP list for this.  But there
>>>are enough places in GDB that don't scale easily to huge LWP lists that
>>>I can't imagine this one being a problem in the next ten years.
>>>
>>>2) Provide a GNU/Linux specific hook, not using the observer mechanism,
>>>in the same way we've been connecting architectures to other individual
>>>modules of GDB.  Implement linux_set_new_thread_watchpoints_callback,
>>>which would be functionally similar to this observer, but have a better
>>>defined purpose and use.
>>>
>>>Are either of these better?
>>
>>Either one of them is better.
> 
> 
> Great!  Jeff, Mark, do you have opinions on either (or other
> suggestions)?
> 
> Observe, we're back to the core question of the role of observers here.
> I prefer #2 to #1.  But #2 is _functionally_ equivalent to providing an
> observer named linux_enable_watchpoints_for_new_threads.  In one case
> it would have to be documented in observers.texi and support functions
> would be autogenerated; in the other case it would probably be
> documented in comments, and bunch of support functions would have to be
> written by hand, instead of being generated by the observers shell script.
> 

Sorry, I should have responded to this ages ago.  I prefer #2.  I assume the 
hook resides in the target vector or have you got some other idea in mind?

-- Jeff J.


  parent reply	other threads:[~2005-01-13 19:22 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-10  4:24 Jeff Johnston
2004-12-10 13:31 ` Eli Zaretskii
2004-12-10 14:21   ` Daniel Jacobowitz
2004-12-10 18:01     ` Jeff Johnston
2004-12-24 11:05       ` Michael Snyder
2005-01-07  0:23         ` jjohnstn
2004-12-10 23:01     ` Eli Zaretskii
2004-12-10 23:31       ` Daniel Jacobowitz
2004-12-10 19:10   ` Jeff Johnston
2004-12-10 22:51     ` Eli Zaretskii
2004-12-23 22:32   ` Michael Snyder
2004-12-24 14:46     ` Eli Zaretskii
2004-12-10 20:03 ` Daniel Jacobowitz
2004-12-10 20:30   ` Jeff Johnston
2004-12-10 20:47     ` Daniel Jacobowitz
2004-12-10 22:18       ` Jeff Johnston
2004-12-10 23:57         ` Jeff Johnston
2004-12-11  0:31           ` Daniel Jacobowitz
2004-12-11  1:28             ` Jeff Johnston
2004-12-11 14:34           ` Eli Zaretskii
2004-12-11 16:56             ` Daniel Jacobowitz
2004-12-11 18:01               ` Eli Zaretskii
2004-12-11 18:06                 ` Daniel Jacobowitz
2004-12-11 19:08                   ` Eli Zaretskii
2004-12-11 19:30                     ` Daniel Jacobowitz
2004-12-12  5:22                       ` Eli Zaretskii
2004-12-11 21:54                   ` Mark Kettenis
2004-12-11 14:53           ` Mark Kettenis
2004-12-11 16:52             ` Eli Zaretskii
2004-12-11  2:04       ` Daniel Jacobowitz
2004-12-11 16:11         ` Mark Kettenis
2004-12-10 23:06   ` Eli Zaretskii
2004-12-10 23:10     ` Daniel Jacobowitz
2004-12-10 23:37       ` Eli Zaretskii
2004-12-10 23:52         ` Daniel Jacobowitz
2004-12-11 11:32           ` Eli Zaretskii
2004-12-11 14:49             ` Mark Kettenis
2004-12-11 16:48               ` Daniel Jacobowitz
2004-12-11 17:33                 ` Eli Zaretskii
2004-12-11 17:53                   ` Daniel Jacobowitz
2004-12-11 18:07                     ` Eli Zaretskii
2004-12-11 18:50                       ` Daniel Jacobowitz
2004-12-11 19:06                 ` Mark Kettenis
2004-12-11 19:07                   ` Daniel Jacobowitz
2004-12-11 16:49               ` Eli Zaretskii
2004-12-11 16:37             ` Daniel Jacobowitz
2004-12-11 17:30               ` Eli Zaretskii
2004-12-11 17:38                 ` Daniel Jacobowitz
2004-12-11 18:02                   ` Eli Zaretskii
2004-12-11 18:10                     ` Daniel Jacobowitz
2005-01-13 19:22                   ` Jeff Johnston [this message]
2005-02-11  1:57                     ` Daniel Jacobowitz
2005-02-11 18:18                       ` Eli Zaretskii
2005-02-11 18:31                         ` Daniel Jacobowitz
2005-02-12 21:50                           ` Eli Zaretskii
2004-12-11 19:35 Ulrich Weigand

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=41E6CA85.5090407@redhat.com \
    --to=jjohnstn@redhat.com \
    --cc=drow@false.org \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sources.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