gdbsupport: convert FILEIO_* macros to an enum
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 26 Aug 2022 19:38:26 +0000 (15:38 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Wed, 21 Sep 2022 18:11:03 +0000 (14:11 -0400)
commitb872057a63c53106e4bf6033a52d53b988f30dfd
tree0178e5e9ae12af553f15c2e13cac0eb61e1cdafc
parent198f946ffe9fbfeeb187531e57cab6c3fd9d8b3d
gdbsupport: convert FILEIO_* macros to an enum

Converting from free-form macros to an enum gives a bit of type-safety.
This caught places where we would assign host error numbers to what
should contain a target fileio error number, for instance in
target_fileio_pread.

I added the FILEIO_SUCCESS enumerator, because
remote.c:remote_hostio_parse_result initializes the remote_errno output
variable to 0.  It seems better to have an explicit enumerator than to
assign a value for which there is no enumerator.  I considered
initializing this variable to FILEIO_EUNKNOWN instead, such that if the
remote side replies with an error and omits the errno value, we'll get
an errno that represents an error instead of 0 (which reprensents no
error).  But it's not clear what the consequences of that change would
be, so I prefer to err on the side of caution and just keep the existing
behavior (there is no intended change in behavior with this patch).

Note that remote_hostio_parse_resul still reads blindly what the remote
side sends as a target errno into this variable, so we can still end up
with a nonsensical value here.  It's not good, but out of the scope of
this patch.

Convert host_to_fileio_error and fileio_errno_to_host to return / accept
a fileio_error instead of an int, and cascade the change in the whole
chain that uses that.

Change-Id: I454b0e3fcf0732447bc872252fa8e57d138b0e03
12 files changed:
gdb/gdb_bfd.c
gdb/inf-child.c
gdb/inf-child.h
gdb/linux-nat.c
gdb/linux-nat.h
gdb/linux-tdep.c
gdb/remote.c
gdb/sparc64-tdep.c
gdb/target.c
gdb/target.h
gdbsupport/fileio.cc
gdbsupport/fileio.h