From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1651 invoked by alias); 8 Jan 2008 16:40:44 -0000 Received: (qmail 1626 invoked by uid 22791); 8 Jan 2008 16:40:41 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO brahms.sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 08 Jan 2008 16:40:11 +0000 Received: from brahms.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by brahms.sibelius.xs4all.nl (8.14.1/8.14.0) with ESMTP id m08GdZOi022393; Tue, 8 Jan 2008 17:39:35 +0100 (CET) Received: (from kettenis@localhost) by brahms.sibelius.xs4all.nl (8.14.1/8.14.1/Submit) id m08GdZQS023156; Tue, 8 Jan 2008 17:39:35 +0100 (CET) Date: Tue, 08 Jan 2008 16:40:00 -0000 Message-Id: <200801081639.m08GdZQS023156@brahms.sibelius.xs4all.nl> From: Mark Kettenis To: ARistovski@qnx.com CC: brobecker@adacore.com, dje@google.com, gdb@sourceware.org, RMansfield@qnx.com In-reply-to: <2F6320727174C448A52CEB63D85D11F40A5F@nova.ott.qnx.com> (message from Aleksandar Ristovski on Tue, 8 Jan 2008 11:11:33 -0500) Subject: Re: gdb_realpath: dealing with ./ and ../ References: <2F6320727174C448A52CEB63D85D11F40A5F@nova.ott.qnx.com> 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/msg00052.txt.bz2 > From: Aleksandar Ristovski > Date: Tue, 8 Jan 2008 11:11:33 -0500 Dropping in late, so excuse me if I'm saying things that already have been said. But I really want to make sure that any changes are no going to hurt people that develop free software on POSIX systems where they do have all source files available. > If we can confirm for sure that "normalize_path" is safe, I think the idea > is good (please read my comment about normalize_path here: > http://sourceware.org/ml/gdb-patches/2008-01/msg00138.html) > > Example > DW_AT_name=../main.cc > DW_AT_comp_dir=/foo/bar/obj > The Directory Table: > .. > The File Name Table:$ > Entry>Dir>~~~~Time>~~~Size>~~~Name$ > 1>~~~~1>~~~~~~0>~~~~~~0>~~~~~~main.cc$ > > Now we get rid of the comp_dir information (this is what effectively > happens): > > NAME=main.cc > DIR=/foo/bar > > And there is no info about /foo/bar/obj. > > > I would think that this is safe. Unfortunately it isn't. If /foo/bar/obj is a symlink to /bar/foo/obj, then ../main.cc actually refers to /bar/foo/main.cc, and not /foo/bar/main.cc. So just "normalizing" names is defenitely unsafe. The big question here is, whether a compiler will actually set DW_AT_comp_dir to /foo/bar/obj in that case. One can argue that the compilation directory really is /bar/foo/obj in that case and that DW_AT_comp_dir should be set to /bar/foo/obj.