This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[RFC PATCH] Finding files in source trees (was Re: Finding source files under Cygwin)
- From: Earl Chew <earl_chew at agilent dot com>
- To: gdb-patches at sources dot redhat dot com, cgf at redhat dot com
- Date: Mon, 16 Sep 2002 13:37:21 -0700
- Subject: [RFC PATCH] Finding files in source trees (was Re: Finding source files under Cygwin)
- Organization: Agilent Technologies
- References: <3D82897C.81376AD6@agilent.com> <3D862BD0.A5298600@agilent.com>
Christopher Faylor wrote:
> I'm sorry but it is rarely a good idea to mix functionality like this.
> You're mixing an (arguable) bug fix with an (arguable) gdb enhancement.
>
> Please submit each as a separate patch.
Ok. This patch allows files to be found in source trees.
The motivation for this addition is to accommodate large projects
where source files are scattered in large source trees. I want to
be able to point gdb at the root of the source tree, rather than have
to specify each leaf directory. Thus I can write:
gdb> dir /myproject/source
instead of:
gdb> dir /myproject/source/a/b/c:/myproject/source/z/b/d: etc
Earl
ChangeLog:
* source.c: Source file lookup changes.
(open_source_file): If the source file
/w/x/y/z.c cannot be found, try using w/x/y/z.c,
x/y/z.c, y/z.c in addition to z.c (the basename).
--- gdb-5.2.1\gdb\source.c 2002-09-16 13:08:17.000000000 -0700
+++ source.c 2002-09-16 13:09:31.000000000 -0700
@@ -753,6 +753,25 @@
result = openp_1 (path, pathlen, sep, 0, p, OPEN_MODE, 0,
&s->fullname);
}
+ if (result < 0)
+ {
+ /* Didn't work. Try lopping off prefixes from the full name. */
+ p = s->filename;
+
+ do
+ {
+ while (*p && ! IS_DIR_SEPARATOR (*p))
+ p++;
+ if (*p && *++p)
+ {
+ result = openp_1 (path, pathlen, sep, 0,
+ p, OPEN_MODE, 0, &s->fullname);
+ if (result >= 0)
+ break;
+ }
+ } while (*p);
+ }
+
if (result >= 0)
{
fullname = s->fullname;