Cleaning up historical portability baggage
Thomas Munro <thomas.munro@gmail.com>
Attachments
- 0001-Remove-dead-pg_pread-and-pg_pwrite-replacement-code.patch (text/x-patch) patch 0001
- 0002-Remove-dead-getrusage-replacement-code.patch (text/x-patch) patch 0002
- 0003-Remove-dead-setenv-unsetenv-replacement-code.patch (text/x-patch) patch 0003
- 0004-Remove-dead-handling-for-pre-POSIX-sigwait.patch (text/x-patch) patch 0004
- 0005-Remove-dead-getpwuid_r-replacement-code.patch (text/x-patch) patch 0005
- 0006-Remove-disable-thread-safety.patch (text/x-patch) patch 0006
Hello, I wonder how much dead code for ancient operating systems we could now drop. Here are some easier cases, I think, and one tricky one that might take some debate. I think it makes a lot of sense to say that we expect at least POSIX-1:2001, because that corresponds to C99, with the thread option because every targeted system has that. 0001-Remove-dead-pg_pread-and-pg_pwrite-replacement-code.patch 0002-Remove-dead-getrusage-replacement-code.patch 0003-Remove-dead-setenv-unsetenv-replacement-code.patch 0004-Remove-dead-handling-for-pre-POSIX-sigwait.patch 0005-Remove-dead-getpwuid_r-replacement-code.patch 0006-Remove-disable-thread-safety.patch Clearly there is more stuff like this (eg more _r functions, they're just a touch more complicated), but this is a start. I mention these now in case it's helpful for the Meson work, and just generally because I wanted to clean up after the retirement of ancient HP-UX. The threads patch probably needs more polish and is extracted from another series I'll propose in a later CF to do some more constructive work on threads where it'd be helpful not to have to deal with 'no threads' builds, but I figured it could also pitch this part along with the other basic POSIX modernisation stuff. I pulled the configure output from the oldest releases of each supported target OS, namely: * hornet, AIX 7.1 * wrasse, Solaris 11.3 * pollock, illumos rolling * loach, FreeBSD 12.2 * conchuela, DragonflyBSD 6.0 * morepork, OpenBSD 6.9 * sidewinder, NetBSD 9.2 * prairiedog, macOS 10.4 (vintage system most likely to cause problems) * clam, Linux 3.10/RHEL 7 * fairiewren, Windows/Mingw with configure I checked for HAVE_PREAD HAVE_PWRITE HAVE_GETRUSAGE HAVE_SETENV HAVE_UNSETENV HAVE_GETPWUID_R, and the only missing ones were: HAVE_PREAD is missing on windows HAVE_PWRITE is missing on windows HAVE_GETRUSAGE is missing on windows HAVE_GETPWUID_R is missing on windows We either have completely separate code paths or replacement functions for these. The pwritev/preadv functions are unfortunately not standardised by POSIX (I dunno why, it's the obvious combination of the p* and *v functions) despite every OS in the list having them except for Solaris and old macOS. Oh well.
Commits
-
Make sure IOV_MAX is defined.
- d25d392e8944 16.10 landed
- 581305a4659d 18.0 landed
- 1fd772d19290 19 (unreleased) landed
- 0991249d7ab5 17.6 landed
-
Doc: Abstract AF_UNIX sockets don't work on Windows.
- 36c910f03783 14.7 landed
- d54e1fcaa5f2 15.2 landed
- 117d2604c2a5 16.0 landed
-
Clean up inconsistent use of fflush().
- 7fed801135ba 16.0 landed
-
Remove configure probe for sockaddr_in6 and require AF_INET6.
- bcc8b14ef630 16.0 landed
-
Remove configure probes for sockaddr_storage members.
- 64ef572c068f 16.0 landed
-
Remove configure probe for netinet/tcp.h.
- 2492fe49dcb5 16.0 landed
-
Fix macro problem with gai_strerror on Windows.
- cce28f62680c 16.0 landed
-
Remove configure probe for net/if.h.
- 2f8d918359cc 16.0 landed
-
mstcpip.h is not missing on MinGW.
- f340f97a13b1 16.0 landed
-
Remove dead ifaddr.c fallback code.
- a717cddcac51 16.0 landed
-
Remove configure probe for gethostbyname_r.
- 52ea29045b79 16.0 landed
-
Remove replacement code for getaddrinfo.
- 5579388d2dda 16.0 landed
-
Remove configure probe for struct sockaddr_storage.
- de42bc3ac8f7 16.0 landed
-
Remove HAVE_UNIX_SOCKETS.
- f55808828569 16.0 landed
-
Remove configurability of PPC spinlock assembly code.
- 8ded65682bee 16.0 landed
-
Remove configure probe for shl_load library.
- adee0df127e0 16.0 landed
-
Remove configure probe for sys/select.h.
- 7e50b4e3c52a 16.0 landed
-
Remove configure probes for sys/un.h and struct sockaddr_un.
- 077bf2f27500 16.0 landed
-
Remove configure probes for sys/ipc.h, sys/sem.h, sys/shm.h.
- 37a65d1db146 16.0 landed
-
Remove configure probe for sys/resource.h and refactor.
- 36b3d52459ae 16.0 landed
-
Remove configure probe for sys/uio.h.
- 75357ab94034 16.0 landed
-
Fix obsolete comments in instr_time.h.
- 01126dc8cf2c 16.0 landed
-
aix: fix misreading of condition in 8f12a4e7add
- 7e29a79a46d3 16.0 landed
-
aix: Remove checks for very old OS versions
- 8f12a4e7addc 16.0 landed
-
windows: Remove HAVE_MINIDUMP_TYPE test
- 9ddb870bd479 16.0 landed
-
solaris: Remove unnecessary gcc / gnu ld vs sun studio differences
- 20c105c4db56 16.0 landed
-
Trust a few system headers to stand on their own
- a2a36d56b96f 16.0 landed
-
Rely on __func__ being supported
- 320f92b744b4 16.0 landed
-
Simplify replacement code for strtof.
- cbf440313473 16.0 landed
-
Simplify gettimeofday for Windows.
- 24c3ce8f1c70 16.0 landed
-
Simplify gettimeofday() fallback logic.
- 922a8fa09840 16.0 landed
-
Remove fallbacks for strtoll, strtoull.
- feb593506b9b 16.0 landed
-
Remove configure probe for fdatasync.
- d2e150831af8 16.0 landed
-
Remove configure probe for clock_gettime.
- 623cc67347cc 16.0 landed
-
Simplify replacement code for preadv and pwritev.
- a0dc82711221 16.0 landed
-
Remove dead pread and pwrite replacement code.
- cf112c122060 16.0 landed
-
Remove dead setenv, unsetenv replacement code.
- 71f5dc6dfb3d 16.0 landed
-
Remove configure probes for poll and poll.h.
- b79ec732d29f 16.0 landed
-
Remove configure probe for link.
- 5963c9a154bd 16.0 landed
-
Remove configure probes for symlink/readlink, and dead code.
- 2b1f580ee2ca 16.0 landed
-
Remove configure probe for setsid.
- adeef67834cc 16.0 landed
-
Remove configure probe for shm_open.
- 098f4d813b69 16.0 landed
-
Remove configure probe and related tests for getrlimit.
- bdb657edd6db 16.0 landed
-
Remove configure probe for dlopen, and refactor.
- ca1e85513e1c 16.0 landed
-
Remove dead getpwuid_r replacement code.
- e757cdd6ad1b 16.0 landed
-
Remove dead handling for pre-POSIX sigwait().
- fb12becdfb89 16.0 landed
-
Remove dead getrusage replacement code.
- 86e5eb4f58a2 16.0 landed
-
Cygwin and Mingw floating-point fixes.
- 72880ac182c8 12.0 cited
-
Support platforms where strtoll/strtoull are spelled __strtoll/__strtoull.
- 06f66cff9e0b 11.0 cited
-
Arrange to supply declarations for strtoll/strtoull if needed.
- a6228128fc48 11.0 cited
-
Lock down regression testing temporary clusters on Windows.
- f6dc6dd5ba54 9.5.0 cited
-
Secure Unix-domain sockets of "make check" temporary clusters.
- be76a6d39e28 9.5.0 cited
-
Add configure checks for strtoll, strtoull (or strto[u]q). Disable
- 9394d391b803 7.1.1 cited
-
Portability fix for old SunOS releases: fflush(NULL)
- 79fcde48b229 7.1.1 cited