gh-95174: Handle missing dup() and constants in WASI (GH-95229)

- check for ``dup()`` libc function
- handle missing ``F_DUPFD`` in ``dup2()`` replacement function
- add workaround for WASI libc bug in MSG_TRUNC
- ESHUTDOWN is missing, use EPIPE instead
- POLLPRI is missing, define as 0 (no-op)
This commit is contained in:
Christian Heimes 2022-07-26 11:16:51 +02:00 committed by GitHub
parent e8f3e8f0ab
commit 0d35a59ce3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 47 additions and 5 deletions

View file

@ -9316,7 +9316,9 @@ os_dup_impl(PyObject *module, int fd)
return _Py_dup(fd);
}
// dup2() is either provided by libc or dup2.c with AC_REPLACE_FUNCS().
// dup2.c provides working dup2() if and only if F_DUPFD is available.
#if (defined(HAVE_DUP3) || defined(F_DUPFD) || defined(MS_WINDOWS))
/*[clinic input]
os.dup2 -> int
fd: int
@ -9416,6 +9418,7 @@ os_dup2_impl(PyObject *module, int fd, int fd2, int inheritable)
return res;
}
#endif
#ifdef HAVE_LOCKF