From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30200 invoked by alias); 30 Jan 2008 16:53:02 -0000 Received: (qmail 30188 invoked by uid 22791); 30 Jan 2008 16:53:01 -0000 X-Spam-Check-By: sourceware.org Received: from shell4.BAYAREA.NET (HELO shell4.bayarea.net) (209.128.82.1) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 30 Jan 2008 16:52:43 +0000 Received: (qmail 32199 invoked from network); 30 Jan 2008 08:52:41 -0800 Received: from 209-128-106-254.bayarea.net (HELO ?192.168.20.7?) (209.128.106.254) by shell4.bayarea.net with SMTP; 30 Jan 2008 08:52:41 -0800 Message-ID: <47A0AB58.7050003@eagercon.com> Date: Wed, 30 Jan 2008 16:53:00 -0000 From: Michael Eager User-Agent: Thunderbird 1.5.0.9 (X11/20070102) MIME-Version: 1.0 To: gdb@sourceware.org Subject: Re: Finding ld.so dynamic loader References: <47A0A8D8.7090508@eagercon.com> In-Reply-To: <47A0A8D8.7090508@eagercon.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2008-01/txt/msg00335.txt.bz2 It seems that as soon as I ask a question, the answer drops into my lap. There's a "set solib-absolute-prefix" command which sets the prefix to use to find the shared libraries. Michael Eager wrote: > I've been reading through solib_open() in solib.c and the way > that the code searches for the dynamic loader doesn't make sense > to me, especially when using gdbserver to debug a program on > a remote system. Perhaps someone can explain to me why it is correct. > > solib_open() is called by enable_break() with the name of > the dynamic loader, say, "/lib/ld.so.1". The comments at > the top of solib_open() say: > > 125 * If there is a solib_absolute_prefix and path is absolute: > 126 * Search for solib_absolute_prefix/path. > 127 * else > 128 * Look for it literally (unmodified). > 129 * Look in SOLIB_SEARCH_PATH. > 130 * If available, use target defined search function. > 131 * If solib_absolute_prefix is NOT set, perform the following two > searches: > 132 * Look in inferior's $PATH. > 133 * Look in inferior's $LD_LIBRARY_PATH. > > If solib_absolute_prefix is empty (true for almost all targets) and > /lib/ld.so.1 exists on the host system, this will be opened in > preference to either one specified on the SOLIB_SEARCH_PATH or using a > target search path. > > This seems incorrect. The dynamic loader on the host system > may not be the same as on the target system, and in the case > of cross development, may not even have the same architecture. > Shouldn't the search using the unmodified name be the last choice, > not the first? > > Can someone explain to me how gdb is supposed to find the correct > ld.so or why I'm looking at this incorrectly? > -- Michael Eager eager@eagercon.com 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077