This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 0/2] Better handling of slow remote transfers
- From: Gary Benson <gbenson at redhat dot com>
- To: Pedro Alves <palves at redhat dot com>
- Cc: Joel Brobecker <brobecker at adacore dot com>, Doug Evans <dje at google dot com>, Jan Kratochvil <jan dot kratochvil at redhat dot com>, gdb-patches <gdb-patches at sourceware dot org>, Sandra Loosemore <sandra at codesourcery dot com>, André Pönitz <apoenitz at t-online dot de>, Paul Koning <Paul_Koning at dell dot com>
- Date: Wed, 12 Aug 2015 13:32:54 +0100
- Subject: Re: [PATCH 0/2] Better handling of slow remote transfers
- Authentication-results: sourceware.org; auth=none
- References: <001a11c301b0388ac5051d0c5ab8 at google dot com> <20150811185519 dot GA28644 at host1 dot jankratochvil dot net> <CADPb22TM42jGif4PqOgpvDxb7RhzS=vBgGJijcB7h9-3rCbH7A at mail dot gmail dot com> <20150811195943 dot GC22245 at adacore dot com> <20150812094831 dot GD11096 at blade dot nx> <55CB1B8D dot 6010501 at redhat dot com> <20150812103831 dot GA12792 at blade dot nx> <55CB2DF8 dot 2050506 at redhat dot com>
Pedro Alves wrote:
> On 08/12/2015 11:38 AM, Gary Benson wrote:
> > It seems like you're saying this series is a big change, but it's
> > really not: the core of it is that little snippet of logic, which
> > is easy enough to reason about:
> >
> > IF target filesystem is remote
> > AND auto_target_prefix is enabled
> > AND no sysroot is set
> > AND (we're looking for an executable
> > OR we're looking for a solib loaded by a target-prefixed executable):
> > Prefix the filename with "target:"
> >
>
> IIUC, it still auto fetches the executable and then the solibs from
> the target by default (e.g., after "attach"), so still subject to
> lack of interruptibility?
Yes and no. It will fetch the executable from the remote iff one has
not been otherwise specified (i.e. by "file", or on the command line).
It will *only* fetch libraries from the remote if the parent executable
has a target prefix. So:
(gdb) file a.out
(gdb) target remote :9999
- exec_filename is "a.out"
- exec_filename has no "target:" prefix
- "target:" prefix is NOT applied to shared libraries
- solib paths end up as "/path/to/libsolib.so.1"
- solibs are NOT fetched over RSP
But:
(gdb) target remote :9999
- exec_filename is set to, e.g., "target:/path/to/a.out"
- exec_filename HAS a "target:" prefix
- "target:" prefix IS applied to shared libraries
- solib paths end up as "target:/path/to/libsolib.so.1"
- solibs ARE fetched over RSP
Basically it fetches the libraries over RSP if and only if the
executable was fetched over RSP. So it works as Sandra expects
when she uses GDB her way, but it still has the automatic
executable filename discovery and automatic fetch-from-remote
for users who just do "target remote ..." on it's own (which is
something that doesn't make much sense in 7.9).
> > It's certainly way less invasive a change than making transfers
> > interruptible would be.
>
> I was only OK with trying to make transfers interruptible in the
> branch assuming it was something non-invasive, like a missing QUIT
> here and there.
No, gdbserver sends the data in PBUFSIZ chunks, but GDB reads the
data a character at a time.
Cheers,
Gary
--
http://gbenson.net/