diff options
author | Gary Benson <gbenson@redhat.com> | 2015-03-11 17:53:57 +0000 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2015-03-11 17:53:57 +0000 |
commit | 0a93529c56714b1da3d7106d3e0300764f8bb81c (patch) | |
tree | ca2c7189bcd064a370e9f2f52f9531c2ae72c592 /gdb/symfile.c | |
parent | 791c00567a7ccbae3d71e3b63ac43c0b555079dc (diff) | |
download | gdb-0a93529c56714b1da3d7106d3e0300764f8bb81c.zip gdb-0a93529c56714b1da3d7106d3e0300764f8bb81c.tar.gz gdb-0a93529c56714b1da3d7106d3e0300764f8bb81c.tar.bz2 |
Implement remote_bfd_iovec_stat
This commit adds a new packet "vFile:fstat:" to the remote protocol
that can be used by to retrieve information about files that have
been previously opened using vFile:open. vFile:fstat: support is
added to GDB, and remote_bfd_iovec_stat is implemented using it. If
vFile:fstat: is not supported by the remote GDB creates a dummy result
by zeroing the supplied stat structure and setting its st_size field
to INT_MAX. This mimics GDB's previous behaviour, with the exception
that GDB did not previously zero the structure so all other fields
would have been returned unchanged, which is to say very likely
populated with random values from the stack.
gdb/ChangeLog:
* remote-fileio.h (remote_fileio_to_host_stat): New declaration.
* remote-fileio.c (remote_fileio_to_host_uint): New function.
(remote_fileio_to_host_ulong): Likewise.
(remote_fileio_to_host_mode): Likewise.
(remote_fileio_to_host_time): Likewise.
(remote_fileio_to_host_stat): Likewise.
* remote.c (PACKET_vFile_fstat): New enum value.
(remote_protocol_features): Register the "vFile:fstat" feature.
(remote_hostio_fstat): New function.
(remote_bfd_iovec_stat): Use the above.
(_initialize_remote): Register new "set/show remote
hostio-fstat-packet" command.
* symfile.c (separate_debug_file_exists): Update comment.
* NEWS: Announce new vFile:fstat packet.
gdb/doc/ChangeLog:
* gdb.texinfo (Remote Configuration): Document the
"set/show remote hostio-fstat-packet" command.
(General Query Packets): Document the vFile:fstat
qSupported features.
(Host I/O Packets): Document the vFile:fstat packet.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index c2a71ec..ba099d3 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1377,11 +1377,12 @@ separate_debug_file_exists (const char *name, unsigned long crc, Some operating systems, e.g. Windows, do not provide a meaningful st_ino; they always set it to zero. (Windows does provide a - meaningful st_dev.) Do not indicate a duplicate library in that - case. While there is no guarantee that a system that provides - meaningful inode numbers will never set st_ino to zero, this is - merely an optimization, so we do not need to worry about false - negatives. */ + meaningful st_dev.) Files accessed from gdbservers that do not + support the vFile:fstat packet will also have st_ino set to zero. + Do not indicate a duplicate library in either case. While there + is no guarantee that a system that provides meaningful inode + numbers will never set st_ino to zero, this is merely an + optimization, so we do not need to worry about false negatives. */ if (bfd_stat (abfd, &abfd_stat) == 0 && abfd_stat.st_ino != 0 @@ -1409,9 +1410,9 @@ separate_debug_file_exists (const char *name, unsigned long crc, { unsigned long parent_crc; - /* If one (or both) the files are accessed for example the via "remote:" - gdbserver way it does not support the bfd_stat operation. Verify - whether those two files are not the same manually. */ + /* If the files could not be verified as different with + bfd_stat then we need to calculate the parent's CRC + to verify whether the files are different or not. */ if (!verified_as_different) { |