Re: [PATCH] Do not clear the value of st_dev in File I/O's stat()

Corinna Vinschen
2018-05-28T10:41:58Z

Hi Pedro,

On May 17 15:36, Pedro Alves wrote:
> [Hi Corinna, adding you in case you still happen to remember
> any of this and have any input. If not, that's fine.]

Sorry for the late reply, just back from vacation. I remember this
stuff patially only, but in terms of st_dev, I recall some discussion.

> On 05/17/2018 09:28 AM, Julio Guerra wrote:
> > Do not clear the value of st_dev in the fileio stat structure sent to the
> > target. It prevents from being able to check the file type on the target.
> > Note that the fileio function fstat `remote_fileio_func_fstat()` doesn't clear
> > this field.
>
> Curious. This looked like was written in a way like you'd write if you
> had a reason to so I did some archaeology to try to find what it was, see
> if the reason is still valid.
>
> I found the original File I/O protocol proposal here:
>
> https://www.sourceware.org/ml/gdb/2002-11/msg00107.html
>
> and in there, in the intro, it said:
>
> ~~~~~
> The protocol is only used for files on the host file system and
> for I/O on the console. Character or block special devices, pipes,
> named pipes or sockets or any other communication method on the host
> system are not supported by this protocol.
> ~~~~~
>
> and further below, in "B.3 struct stat", it says:
>
> ~~~~~
> The values of several fields have a restricted meaning and/or
> range of values.
>
> st_dev: 0 file
> 1 console
> ~~~~~
>
> And the current manual also says:
>
> @item st_dev
> A value of 0 represents a file, 1 the console.
> [...]

The idea was that st_dev values on one system don't make sense on
another system. Also, st_dev values for files reflect the underlying
partition on the inferior system, which doesn't mean anything to the GDB
host system.

I don't know how important backward compat is here, but there may
be code out there which still relies on the simple file vs. console
st_dev from stat(). Version check?

Other than that, if you think that this is an outdated approach, just
make sure to change the docs as well.

HTH,
Corinna