This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Add FR-V Linux core file support


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]