From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21466 invoked by alias); 4 Jan 2008 19:52:49 -0000 Received: (qmail 21220 invoked by uid 22791); 4 Jan 2008 19:52:49 -0000 X-Spam-Check-By: sourceware.org Received: from qnxmail.qnx.com (HELO nimbus.ott.qnx.com) (209.226.137.76) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 04 Jan 2008 19:52:17 +0000 Received: by nimbus.ott.qnx.com with Internet Mail Service (5.5.2653.19) id ; Fri, 4 Jan 2008 14:52:13 -0500 Message-ID: <2F6320727174C448A52CEB63D85D11F40A4E@nova.ott.qnx.com> From: Aleksandar Ristovski To: Daniel Jacobowitz Cc: gdb@sourceware.org, Ryan Mansfield , Joel Brobecker Subject: RE: gdb_realpath: dealing with ./ and ../ Date: Fri, 04 Jan 2008 19:52:00 -0000 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain 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/msg00024.txt.bz2 > > Yes, this is something I've been meaning to fix for ages, but never > had time. We need versions of IS_ABSOLUTE_PATH, FILENAME_CMP, and the > other related macros which handle DOS pathnames regardless of the host > system. We should give them different names, though, so that both are > available (sometimes we need to manipulate host paths). > Submitted a patch: http://sourceware.org/ml/gdb-patches/2008-01/msg00062.html > It would help a lot if you could write test cases. We can use > gdb.dwarf2/ to construct arbitrary DWARF-2 contents, with relative or > absolute paths as needed. If you have trouble writing the test cases, > I can do it if you send me a couple of example binaries, and the > before and after expected results. It is a good idea to have test cases. I, unfortunately, know very little about writing tests, and would really appreciate if you wrote the tests. Attached is a binary that illustrates the problem I talked about, but to summarize and break-down the problem into independent pieces I will list test cases I can think of. We need combinations of DW_AT_name, DW_AT_comp_dir, and directory table (in .debug_line section). I am not 100% sure how are you going to test this, but my testcase is to set a breakpoint using file name, i.e. (gdb) break main.c:11 Or something like that. I expect testcase 2 to fail. Test 1 and 3 should be o.k. When testing Na) versions of testcases (DOS paths, linux host), I would expect all of them to fail. 1. Currently covered case: DW_AT_name = /foo/bar/main.c No DW_AT_comp_dir or DW_AT_comp_dir equal to DW_AT_name The Directory Table: (empty) The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c 2. Case where DW_AT_name is absolute path, DW_AT_comp_dir is given as a different absolute path and line info is given relative to comp_dir: DW_AT_name = /foo/bar/main.c DW_AT_comp_dir = /foo/bar/Debug The Directory Table: .. The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c 3. DW_AT_name relative to DW_AT_comp_dir DW_AT_name = ../main.c DW_AT_comp_dir = /foo/bar/Debug The Directory Table: .. The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c ========= Cross-compiled on windows case ============= The following testcases are basically the same as above, except now we use DOS style paths. The tests are meaningful only when testing on POSIX host. Otherwise they default to the above tests. 1a. Currently covered case: DW_AT_name = C:/foo/bar/main.c No DW_AT_comp_dir or DW_AT_comp_dir equal to DW_AT_name The Directory Table: (empty) The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c 2a. Case where DW_AT_name is absolute path, DW_AT_comp_dir is given as a different absolute path and line info is given relative to comp_dir: DW_AT_name = C:/foo/bar/main.c DW_AT_comp_dir = C:/foo/bar/Debug The Directory Table: .. The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c 3a. DW_AT_name relative to DW_AT_comp_dir DW_AT_name = ../main.c DW_AT_comp_dir = C:/foo/bar/Debug The Directory Table: .. The File Name Table: Entry Dir Time Size Name 1 1 0 0 main.c Thank you, Aleksandar Ristovski QNX Software Systems