Skip to content

Commit

Permalink
semihosting: add O_BINARY flag in host_open for NT compatibility
Browse files Browse the repository at this point in the history
Windows open(2) implementation opens files in text mode by default and
needs a Windows-only O_BINARY flag to open files as binary. QEMU already
knows about that flag in osdep and it is defined to 0 on non-Windows,
so we can just add it to the host_flags for better compatibility.

Signed-off-by: Evgeny Iakovlev <eiakovlev@linux.microsoft.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Message-Id: <20230106102018.20520-1-eiakovlev@linux.microsoft.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230124180127.1881110-25-alex.bennee@linaro.org>
  • Loading branch information
Evgeny Iakovlev authored and stsquad committed Feb 2, 2023
1 parent 978c2bf commit 0bccdb4
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions semihosting/syscalls.c
Expand Up @@ -253,7 +253,7 @@ static void host_open(CPUState *cs, gdb_syscall_complete_cb complete,
{
CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
char *p;
int ret, host_flags;
int ret, host_flags = O_BINARY;

ret = validate_lock_user_string(&p, cs, fname, fname_len);
if (ret < 0) {
Expand All @@ -262,11 +262,11 @@ static void host_open(CPUState *cs, gdb_syscall_complete_cb complete,
}

if (gdb_flags & GDB_O_WRONLY) {
host_flags = O_WRONLY;
host_flags |= O_WRONLY;
} else if (gdb_flags & GDB_O_RDWR) {
host_flags = O_RDWR;
host_flags |= O_RDWR;
} else {
host_flags = O_RDONLY;
host_flags |= O_RDONLY;
}
if (gdb_flags & GDB_O_CREAT) {
host_flags |= O_CREAT;
Expand Down

0 comments on commit 0bccdb4

Please sign in to comment.