Hi Andrew,
I've implemented the two-struct approach with qSupported negotiation as you described,
and it works - gdb.server/fileio-packets.exp now passes on the xfs filesystem where it was failing,
and there are no unexpected failures in the full testsuite on two machines.
One thing before I post the patch. I've only changed the vFile packets, not the F-packet path.
The two uses of fio_stat look quite different once you follow them through.

vFile sends the struct as packet data between GDB and gdbserver
(hostio_reply_with_data and fileio_process_fstat_and_lstat_reply), so qSupported negotiation works there.
The F-packet path writes the struct directly into inferior memory (remote_fileio_func_stat, target_write_memory),
where the inferior reads it as the 64-byte layout documented in the manual under "struct stat".

I don't see a way to change that layout without breaking existing targets,
and the manual describes st_ino there as having "no valid meaning for the target,
transmitted unchanged", and says members "could eventually get truncated on the target".
So my reading is that the F-packet layout should stay as it is. 
I will share the patch soon.

Thanks
Abhay

    
On 27/08/26 12:13, Abhay Kandpal wrote:
th directions.