* Re: remote/1832: spaces in directory names
@ 2006-02-13 17:46 Brendan Kehoe
2006-02-14 10:08 ` Andrew STUBBS
2006-03-01 23:55 ` Michael Snyder
0 siblings, 2 replies; 3+ messages in thread
From: Brendan Kehoe @ 2006-02-13 17:46 UTC (permalink / raw)
To: gdb-gnats, nobody, harada, gdb-prs, gdb-patches
This change makes GDB a little more willing to debug an application on a
remote target when the file or its path happens to have one or more
spaces in it. Among other things, this makes paths like
C:/Documents and Settings/Joe Smith/My Documents/hack/mytest
usable when you want to debug mytest on a remote target via 'load'.
Two bits I'll try to bring up elsewhere but want to write down here:
- I think it'd be better to pass the ARGS part of the on_load callback
function as an array of pointers similar to ARGV, so you don't have to
try to tokenize in places it might matter; and
- I'm curious about the mystical second argument to the LOAD command
in GDB; it's only mentioned in the docs related to the Sparlet, and even
then only in passing.
Hope this helps,
B
2006-02-13 Brendan Kehoe <brendan@zen.org>
* symfile.c (generic_load): Adjust the handling of finding any
second/offset argument so we can properly use filenames and paths
that use spaces, like "/home/foo/my hacks/code". Since the
LOAD_OFFSET is already initialized to 0 at the beginning, we
don't need an else stmt.
--- gdb/symfile.c.~1~ 2005-08-31 22:07:33.000000000 +0100
+++ gdb/symfile.c 2006-02-13 17:21:16.000000000 +0000
@@ -1626,6 +1626,23 @@ generic_load (char *args, int from_tty)
old_cleanups = make_cleanup (xfree, filename);
strcpy (filename, args);
- offptr = strchr (filename, ' ');
+ offptr = strrchr (filename, ' '); /* find the last space char */
if (offptr != NULL)
+ {
+ /* Note where the space was, since that's effectively the end
+ of the filename if we have to insert the null char.
+ This implies we won't grok filenames that end in a space. :) */
+ char* end_of_filename = offptr++;
+
+ /* As per ISO 9899 (C99) $7.20.1.4/3 and POSIX 1003.1-2001,
+ strtoul expects a string meeting this sort of expression
+ for an integer-constant:
+ [\s]*[+\-]?(0[xX][0-9a-fA-F]*|[0-9]*)
+ This will be true when its third argument, BASE, is zero.
+ So having skipped the whitespace, we either have to have
+ a '+' or '-', or a valid digit character. Anything else
+ has to be considered part of the filename.
+ */
+ if ((offptr[0] == '+' || offptr[0] == '-')
+ || (isdigit (offptr[0])))
{
char *endptr;
@@ -1634,8 +1651,7 @@ generic_load (char *args, int from_tty)
if (offptr == endptr)
error (_("Invalid download offset:%s."), offptr);
- *offptr = '\0';
+ *end_of_filename = '\0';
}
- else
- cbdata.load_offset = 0;
+ }
/* Open the file for loading. */
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: remote/1832: spaces in directory names
2006-02-13 17:46 remote/1832: spaces in directory names Brendan Kehoe
@ 2006-02-14 10:08 ` Andrew STUBBS
2006-03-01 23:55 ` Michael Snyder
1 sibling, 0 replies; 3+ messages in thread
From: Andrew STUBBS @ 2006-02-14 10:08 UTC (permalink / raw)
To: Brendan Kehoe; +Cc: gdb-gnats, nobody, harada, gdb-prs, gdb-patches
Brendan Kehoe wrote:
> This change makes GDB a little more willing to debug an application on a
> remote target when the file or its path happens to have one or more
> spaces in it. Among other things, this makes paths like
> C:/Documents and Settings/Joe Smith/My Documents/hack/mytest
> usable when you want to debug mytest on a remote target via 'load'.
I already have a patch for this awaiting approval.
See http://sources.redhat.com/ml/gdb-patches/2005-12/msg00127.html
Mine allows/required proper quoting and supports tilde expansion.
I also have two related patches waiting:
directory command patch:
http://sources.redhat.com/ml/gdb-patches/2005-12/msg00104.html
add-symbol-file command patch:
http://sources.redhat.com/ml/gdb-patches/2005-12/msg00106.html
Andrew Stubbs
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: remote/1832: spaces in directory names
2006-02-13 17:46 remote/1832: spaces in directory names Brendan Kehoe
2006-02-14 10:08 ` Andrew STUBBS
@ 2006-03-01 23:55 ` Michael Snyder
1 sibling, 0 replies; 3+ messages in thread
From: Michael Snyder @ 2006-03-01 23:55 UTC (permalink / raw)
To: Brendan Kehoe; +Cc: gdb-gnats, nobody, harada, gdb-prs, gdb-patches
Brendan Kehoe wrote:
> - I'm curious about the mystical second argument to the LOAD command
> in GDB; it's only mentioned in the docs related to the Sparlet, and even
> then only in passing.
It's ancient, and mostly not used any more.
One place that does still use it is monitor.c::monitor_load (q.v.)
The second argument was a base address or offset where
you wanted the load to be relocated. This was basically
a hold-over from the days of a.out (in which the sections
were assumed to start at zero).
There was once a GNU extension called b.out, which was
a.out plus a section load offset.
Everything since coff has allowed an individual offset
per section to be specified.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-03-01 23:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-13 17:46 remote/1832: spaces in directory names Brendan Kehoe
2006-02-14 10:08 ` Andrew STUBBS
2006-03-01 23:55 ` Michael Snyder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox