From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4121 invoked by alias); 12 Jan 2012 23:12:01 -0000 Received: (qmail 4112 invoked by uid 22791); 12 Jan 2012 23:12:00 -0000 X-SWARE-Spam-Status: No, hits=-6.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Jan 2012 23:11:47 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q0CNBkRL022746 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 12 Jan 2012 18:11:46 -0500 Received: from host2.jankratochvil.net (ovpn-116-21.ams2.redhat.com [10.36.116.21]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q0CNBgm6031694 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 12 Jan 2012 18:11:44 -0500 Date: Thu, 12 Jan 2012 23:18:00 -0000 From: Jan Kratochvil To: Paul Pluzhnikov Cc: Doug Evans , gdb-patches@sourceware.org Subject: Re: [patch] Fix for PR gdb/9538 (loading of separate debuginfo and symlinks). Message-ID: <20120112231141.GA24146@host2.jankratochvil.net> References: <20120112030648.14DBE190AFD@elbrus2.mtv.corp.google.com> <20120112212959.GA24491@host2.jankratochvil.net> <20120112224039.GA13385@host2.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00447.txt.bz2 On Fri, 13 Jan 2012 00:05:06 +0100, Paul Pluzhnikov wrote: > On Thu, Jan 12, 2012 at 2:40 PM, Jan Kratochvil > wrote: > > > There exists lstat in gnulib > > There doesn't appear to be one in my (freshly sync'd) copy: > > grep -r lstat gnulib > gnulib/Makefile.in:localstatedir = @localstatedir@ I meant upstream gnulib. GDB contains only several pieces of it already in use by GDB. We could import more of them, if needed. > > Still you call there: > > +  dir1 = xstrdup (objfile->name); > > +  canon_dir = lrealpath (dir1); > > and later: > > +  dir2 = lrealpath (objfile->name); > > If objfile->name is "/foo/bar/baz", and is a symlink to "/zork/zark/baz" > (and nothing else is a symlink) then the two realpath() calls will return > "/foo/bar" and "/zork/zark/baz" and (I think) are unavoidable. But in this case "baz" is a symlink. So `lstat (objfile->name)' would report it is a symlink. This would indicate we should run second lrealpath. In most cases `lstat (objfile->name)' will report is is a regular file. In such case the second (new) part of the function can be IMO skipped as it cannot find anything more. Thanks, Jan