This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Remote debugging without a binary (regression)
- From: Pedro Alves <palves at redhat dot com>
- To: Gary Benson <gbenson at redhat dot com>
- Cc: Luis Machado <lgustavo at codesourcery dot com>, gdb-patches at sourceware dot org
- Date: Wed, 17 Feb 2016 14:40:54 +0000
- Subject: Re: [PATCH] Remote debugging without a binary (regression)
- Authentication-results: sourceware.org; auth=none
- References: <1455200365-5270-1-git-send-email-lgustavo at codesourcery dot com> <20160211163510 dot GA21352 at blade dot nx> <56BCBF8F dot 8040601 at codesourcery dot com> <20160212103144 dot GB12352 at blade dot nx> <56BDF92B dot 50107 at redhat dot com> <20160217135324 dot GC24631 at blade dot nx>
On 02/17/2016 01:53 PM, Gary Benson wrote:
> Pedro Alves wrote:
>> On 02/12/2016 10:31 AM, Gary Benson wrote:
>>> FWIW I tried this (both on the same machine):
>>>
>>> gdbserver :9999 /bin/ls
>>> gdb -q -ex "set sysroot /whatever" -ex "target remote :9999"
>>>
>>> and got this:
>>>
>>> Reading symbols from /bin/ls...(no debugging symbols found)...done.
>>>
>>> which I think is an error: the sysroot is being ignored.
>>
>> I agree. If you tell gdb about a sysroot, then I can't think why
>> you'd want it to try opening an absolute filename on the host,
>> outside the sysroot.
>>
>> (caching and buildid matching aside)
>
> There isn't any caching or buildid matching, the logic in
> exec_file_locate_attach is wrong.
Yes, what I meant was -- a valid reason I'd see gdb trying to open a file
on the host outside the sysroot would be for smarter buildid matching and
local caching of (hunks of) files. But we don't have that.
> It might even be the cause
> of the exception Luis is seeing so with luck we can avoid a
> try-catch in remote_add_inferior. I'm putting together a patch
> now.
Yes, if GDB ends up not trying to open any file, then it'll mask off
the exception Luis is seeing.
However, even if the sysroot points at the location with a
valid copy of the file, if the file is NOT readable, then we'll
still throw and close the connection.
Wait, actually, that's actually a good way to add a test to the testsuite
to cover Luis's use case, even without separate filesystems:
gdbserver:
$ ./gdbserver/gdbserver :9999 ~/gdb/tests/threads&
$ chmod 000 ~/gdb/tests/threads
gdb:
(gdb) tar remote :9999
Remote debugging using :9999
Reading /home/pedro/gdb/tests/threads from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
"target:/home/pedro/gdb/tests/threads": could not open as an executable file: Permission denied.
(gdb) maint print target-stack
The current target stack is:
- None (None)
(gdb)
Above we dropped the connection...
Thanks,
Pedro Alves