This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: right way to_post_attach ?
- To: Andrew Cagney <ac131313 at cygnus dot com>
- Subject: Re: right way to_post_attach ?
- From: Duncan Coutts <dcoutts at cray dot com>
- Date: Thu, 6 Sep 2001 09:23:42 -0500
- cc: <gdb at sources dot redhat dot com>
Hi,
On Thu, 6 Sep 2001, Andrew Cagney wrote:
> > Hi,
> >
> > I can't quite figure out what the right way to setup a
> > target_ops.to_post_attach hook. I'm not defining a whole new target (am
> > I?), I'm using the procfs target. I just need to hook the to_post_attach
> > so I can do some random symbol fiddling just after the attach.
> >
> > I notice that several targets do a push_target during their attach, so
> > that their operations become avaliable, but presumably I still want to
> > use the procfs target so I can't have the attach operation push my extra
> > target vector.
> >
> > In oop terms, I just want to 'override' the to_post_attach
> > method. I can't find anywhere that uses the to_post_attach in any
> > substantial way, so I'm rather short on clues.
> >
> > What's the way to do this, or is to_post_attach not the tool to be using
> > here?
> >
> > Thank's for any tips.
>
>
> i cant comment on post attach but i can comment on the underlying
> problem. yes, the push / pop mechanism and gdb's target stack is
> primative at best - little wonder you're having problems. the oo
> concept is simple, what gdb did to it is not, sigh,
Well as a simple hack, I've done to procfs what the child target does,
which is to #define some flag CHILD[/PROCFS]_POST_ATTACH which indicates
that the to_post_attach hook should be set to an externally defined
function child[/procfs]_post_attach.
So I've modified procfs but done it in a similar way to how the child
target provides it's own hook. If there's a better way that doesn't
invlove changing generic code I'd be happy to use it.
To be more specific here's what I did:
Comments welcome.
Duncan
Index: procfs.c
===================================================================
diff -c -r1.7 procfs.c
*** procfs.c 2001/08/27 17:32:52 1.7
--- procfs.c 2001/09/04 17:03:09
***************
*** 93,98 ****
--- 93,101 ----
static void procfs_open PARAMS((char *, int));
static void procfs_attach PARAMS ((char *, int));
+ #if defined(PROCFS_POST_ATTACH)
+ extern void procfs_post_attach PARAMS ((int));
+ #endif
static void procfs_detach PARAMS ((char *, int));
static void procfs_resume PARAMS ((int, int, enum target_signal));
static int procfs_can_run PARAMS ((void));
***************
*** 131,136 ****
--- 134,142 ----
procfs_ops.to_kill = procfs_kill_inferior;
procfs_ops.to_mourn_inferior = procfs_mourn_inferior;
procfs_ops.to_attach = procfs_attach;
+ #if defined(PROCFS_POST_ATTACH)
+ procfs_ops.to_post_attach = procfs_post_attach;
+ #endif
procfs_ops.to_detach = procfs_detach;
procfs_ops.to_wait = procfs_wait;
procfs_ops.to_resume = procfs_resume;