Make improvements

- This commit mints a new release of APE Loader v1.2 which supports
  loading ELF programs with a non-contiguous virtual address layout
  even though we've never been able to take advantage of it, due to
  how `objcopy -SO binary` fills any holes left by PT_LOAD. This'll
  change soon, since we'll have a new way of creating APE binaries.

- The undiamonding trick with our ioctl() implementation is removed
  since POSIX has been killing ioctl() for years and they've done a
  much better job. One problem it resolves, is that ioctl(FIONREAD)
  wasn't working earlier and that caused issues when building Emacs
This commit is contained in:
Justine Tunney 2023-07-11 04:29:33 -07:00
parent a1b1fdd1a4
commit 1ee2e89326
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
53 changed files with 1155 additions and 1255 deletions

View file

@ -3,6 +3,11 @@
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
/*
* full set of fcntl() commands
* many are only provided by a single platform
* will be equal to -1 when not available on host
*/
extern const int F_BARRIERFSYNC;
extern const int F_DUPFD;
extern const int F_DUPFD_CLOEXEC;
@ -42,34 +47,28 @@ extern const int F_WRLCK;
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_GETFL 3
#define F_SETFL 4
/*
* portable fcntl() commands
*/
#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_GETFL 3
#define F_SETFL 4
#define F_DUPFD_CLOEXEC F_DUPFD_CLOEXEC
#define F_GETLEASE F_GETLEASE
#define F_GETLK F_GETLK
#define F_GETLK64 F_GETLK64
#define F_GETOWN F_GETOWN
#define F_GETPATH F_GETPATH
#define F_GETPIPE_SZ F_GETPIPE_SZ
#define F_GETSIG F_GETSIG
#define F_MAXFD F_MAXFD
#define F_NOCACHE F_NOCACHE
#define F_NOTIFY F_NOTIFY
#define F_RDLCK F_RDLCK
#define F_SETLEASE F_SETLEASE
#define F_SETLK F_SETLK
#define F_SETLK64 F_SETLK64
#define F_SETLKW F_SETLKW
#define F_SETLKW64 F_SETLKW64
#define F_SETOWN F_SETOWN
#define F_SETPIPE_SZ F_SETPIPE_SZ
#define F_SETSIG F_SETSIG
#define F_UNLCK F_UNLCK
#define F_WRLCK F_WRLCK
/*
* posix advisory locks
* polyfilled poorly on windows
*/
#define F_SETLK F_SETLK
#define F_SETLK64 F_SETLK64
#define F_SETLKW F_SETLKW
#define F_SETLKW64 F_SETLKW64
#define F_GETLK F_GETLK
#define F_GETLK64 F_GETLK64
#define F_RDLCK F_RDLCK
#define F_UNLCK F_UNLCK
#define F_WRLCK F_WRLCK
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_F_H_ */