This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Add FR-V Linux core file support
- From: Kevin Buettner <kevinb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Wed, 1 Mar 2006 17:01:23 -0700
- Subject: Re: [RFC] Add FR-V Linux core file support
- References: <20060214141016.4e2e56d8@ironwood.lan> <20060220153046.GD14155@nevyn.them.org>
On Mon, 20 Feb 2006 10:30:46 -0500
Daniel Jacobowitz <drow@false.org> wrote:
> > @@ -421,6 +421,14 @@ frv_current_sos (void)
> > struct so_list *sos_head = NULL;
> > struct so_list **sos_next_ptr = &sos_head;
> >
> > + /* Make sure that the main executable has been relocated. Normally
> > + this is done by SOLIB_CREATE_INFERIOR_HOOK(), however, this hook
> > + is not run when loading core files. Rather than create a new hook,
> > + we'll do it here if necessary. */
> > + if (main_executable_lm_info == 0 && core_bfd != NULL)
> > + frv_relocate_main_executable ();
> > +
> > + /* Fetch the GOT corresponding to the main executable. */
> > mgot = main_got ();
> >
> > /* Locate the address of the first link map struct. */
>
> Was this patch written recently, or forward ported from something a
> bit older? I'm thinking 2006-01-24 here. The new post_create_inferior
> is called when loading core files, and in turn calls
> solib_create_inferior_hook.
FYI, I just revisited this. post_create_inferior() does indeed cause
the main executable to be relocated. However, the shared libraries
associated with the post mortem aren't being loaded. (My revised
comment below explains why.) Thus, I'm strongly considering retaining
the call to solib_relocate_main_executable() (within the current_sos
function) and revising the comment as follows:
/* Make sure that the main executable has been relocated. This is
required in order to find the address of the global offset table,
which in turn is used to find the link map info. (See lm_base()
for details.)
Note that the relocation of the main executable is also performed
by SOLIB_CREATE_INFERIOR_HOOK(), however, in the case of core
files, this hook is called too late in order to be of benefit to
SOLIB_ADD. SOLIB_ADD eventually calls this this function,
frv_current_sos, and also precedes the call to
SOLIB_CREATE_INFERIOR_HOOK(). (See post_create_inferior() in
infcmd.c.) */
The other alternative is to rework post_create_inferior() so that
SOLIB_ADD is called after SOLIB_CREATE_INFERIOR_HOOK. According to
the comments in post_create_inferior() though, this would not be
desirable since SOLIB_ADD might be called without the correct FROM_TTY
values.
Opinions?
Kevin