This is the mail archive of the gdb-prs@sources.redhat.com 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: gdb/633: fully qualified pathnames in solib_map_sections() and remote debugging


The following reply was made to PR gdb/633; it has been noted by GNATS.

From: Daniel Jacobowitz <drow@mvista.com>
To: jorma.laaksonen@hut.fi
Cc: gdb-gnats@sources.redhat.com, gdb@sources.redhat.com
Subject: Re: gdb/633: fully qualified pathnames in solib_map_sections() and remote debugging
Date: Tue, 6 Aug 2002 09:20:47 -0400

 On Tue, Aug 06, 2002 at 10:06:34AM -0000, jorma.laaksonen@hut.fi wrote:
 > 
 > >Number:         633
 > >Category:       gdb
 > >Synopsis:       fully qualified pathnames in solib_map_sections() and remote debugging
 > >Confidential:   no
 > >Severity:       non-critical
 > >Priority:       medium
 > >Responsible:    unassigned
 > >State:          open
 > >Class:          sw-bug
 > >Submitter-Id:   net
 > >Arrival-Date:   Tue Aug 06 03:08:01 PDT 2002
 > >Closed-Date:
 > >Last-Modified:
 > >Originator:     jorma.laaksonen@hut.fi
 > >Release:        gdb-5.2
 > >Organization:
 > >Environment:
 > --host=i686-pc-linux-gnu --target=arm-linux
 > >Description:
 > When debugging remotely an application that runs
 > in another type of platform, solib_map_sections() of solib.c gets called with fully qualified pathnames
 > that are correct in the target system but not necessarily
 > in the host system.  Or, the host system's solib versions
 > are of incorrect file format for the cross-target gdb.
 > 
 > When such a solib doesn't exist in host's filesystem,
 > a loop of errors like
 > 
 > > Error while mapping shared library sections:
 > > /usr/lib/libxxx.so.1: No such file or directory.
 > 
 > is entered.
 > >How-To-Repeat:
 > 
 > >Fix:
 > Add a variable that specifies search path for solibs
 > while debugging remotely ???
 
 There already is one :)  Two in fact.  The normal solution to this is
 to set solib-absolute-prefix to point at an image of the target
 filesystem.
 
    GLOBAL FUNCTION
 
    solib_open -- Find a shared library file and open it.
 
    SYNOPSIS
 
    int solib_open (char *in_patname, char **found_pathname);
 
    DESCRIPTION
 
    Global variable SOLIB_ABSOLUTE_PREFIX is used as a prefix directory
    to search for shared libraries if they have an absolute path.
 
    Global variable SOLIB_SEARCH_PATH is used as a prefix directory
    (or set of directories, as in LD_LIBRARY_PATH) to search for all
    shared libraries if not found in SOLIB_ABSOLUTE_PREFIX.
 
    Search order:
    * If path is absolute, look in SOLIB_ABSOLUTE_PREFIX.
    * If path is absolute or relative, look for it literally (unmodified).
    * Look in SOLIB_SEARCH_PATH.
    * Look in inferior's $PATH.
    * Look in inferior's $LD_LIBRARY_PATH.
 
 
 I think the search order needs some revision though:
  - A cross debugger should not search $PATH or $LD_LIBRARY_PATH
  - A cross debugger may, or may not, want to look for the unmodified
 path; I suspect that we only want to look for unmodified relative
 paths, not unmodified absolute ones.
 
 With those changes you would have to explicitly specify the path to
 DSOs in a cross debugger via solib-absolute-prefix and
 solib-search-path, and GDB would stop picking up the host libpthread.so
 and making gdbserver segfault...  any comments from the list?
 
 -- 
 Daniel Jacobowitz                           Carnegie Mellon University
 MontaVista Software                         Debian GNU/Linux Developer


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