mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-28 13:30:29 +00:00
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:
parent
a1b1fdd1a4
commit
1ee2e89326
53 changed files with 1155 additions and 1255 deletions
|
@ -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_ */
|
||||
|
|
|
@ -3,126 +3,88 @@
|
|||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
extern const uint64_t SIOCADDDLCI;
|
||||
extern const uint64_t SIOCADDMULTI;
|
||||
extern const uint64_t SIOCADDRT;
|
||||
extern const uint64_t SIOCATMARK;
|
||||
extern const uint64_t SIOCDARP;
|
||||
extern const uint64_t SIOCDELDLCI;
|
||||
extern const uint64_t SIOCDELMULTI;
|
||||
extern const uint64_t SIOCDELRT;
|
||||
extern const uint64_t SIOCDEVPRIVATE;
|
||||
extern const uint64_t SIOCDIFADDR;
|
||||
extern const uint64_t SIOCDRARP;
|
||||
extern const uint64_t SIOCGARP;
|
||||
extern const uint64_t SIOCGIFADDR;
|
||||
extern const uint64_t SIOCGIFBR;
|
||||
extern const uint64_t SIOCGIFBRDADDR;
|
||||
extern const uint64_t SIOCGIFCONF;
|
||||
extern const uint64_t SIOCGIFCOUNT;
|
||||
extern const uint64_t SIOCGIFDSTADDR;
|
||||
extern const uint64_t SIOCGIFENCAP;
|
||||
extern const uint64_t SIOCGIFFLAGS;
|
||||
extern const uint64_t SIOCGIFHWADDR;
|
||||
extern const uint64_t SIOCGIFINDEX;
|
||||
extern const uint64_t SIOCGIFMAP;
|
||||
extern const uint64_t SIOCGIFMEM;
|
||||
extern const uint64_t SIOCGIFMETRIC;
|
||||
extern const uint64_t SIOCGIFMTU;
|
||||
extern const uint64_t SIOCGIFNAME;
|
||||
extern const uint64_t SIOCGIFNETMASK;
|
||||
extern const uint64_t SIOCGIFPFLAGS;
|
||||
extern const uint64_t SIOCGIFSLAVE;
|
||||
extern const uint64_t SIOCGIFTXQLEN;
|
||||
extern const uint64_t SIOCGPGRP;
|
||||
extern const uint64_t SIOCGRARP;
|
||||
extern const uint64_t SIOCGSTAMP;
|
||||
extern const uint64_t SIOCGSTAMPNS;
|
||||
extern const uint64_t SIOCPROTOPRIVATE;
|
||||
extern const uint64_t SIOCRTMSG;
|
||||
extern const uint64_t SIOCSARP;
|
||||
extern const uint64_t SIOCSIFADDR;
|
||||
extern const uint64_t SIOCSIFBR;
|
||||
extern const uint64_t SIOCSIFBRDADDR;
|
||||
extern const uint64_t SIOCSIFDSTADDR;
|
||||
extern const uint64_t SIOCSIFENCAP;
|
||||
extern const uint64_t SIOCSIFFLAGS;
|
||||
extern const uint64_t SIOCSIFHWADDR;
|
||||
extern const uint64_t SIOCSIFHWBROADCAST;
|
||||
extern const uint64_t SIOCSIFLINK;
|
||||
extern const uint64_t SIOCSIFMAP;
|
||||
extern const uint64_t SIOCSIFMEM;
|
||||
extern const uint64_t SIOCSIFMETRIC;
|
||||
extern const uint64_t SIOCSIFMTU;
|
||||
extern const uint64_t SIOCSIFNAME;
|
||||
extern const uint64_t SIOCSIFNETMASK;
|
||||
extern const uint64_t SIOCSIFPFLAGS;
|
||||
extern const uint64_t SIOCSIFSLAVE;
|
||||
extern const uint64_t SIOCSIFTXQLEN;
|
||||
extern const uint64_t SIOCSPGRP;
|
||||
extern const uint64_t SIOCSRARP;
|
||||
extern const uint64_t SIOGIFINDEX;
|
||||
extern const unsigned long SIOCADDDLCI;
|
||||
extern const unsigned long SIOCADDMULTI;
|
||||
extern const unsigned long SIOCADDRT;
|
||||
extern const unsigned long SIOCATMARK; /* use sockatmark() */
|
||||
extern const unsigned long SIOCDARP;
|
||||
extern const unsigned long SIOCDELDLCI;
|
||||
extern const unsigned long SIOCDELMULTI;
|
||||
extern const unsigned long SIOCDELRT;
|
||||
extern const unsigned long SIOCDEVPRIVATE;
|
||||
extern const unsigned long SIOCDIFADDR;
|
||||
extern const unsigned long SIOCDRARP;
|
||||
extern const unsigned long SIOCGARP;
|
||||
extern const unsigned long SIOCGIFADDR;
|
||||
extern const unsigned long SIOCGIFBR;
|
||||
extern const unsigned long SIOCGIFBRDADDR;
|
||||
extern const unsigned long SIOCGIFCONF;
|
||||
extern const unsigned long SIOCGIFCOUNT;
|
||||
extern const unsigned long SIOCGIFDSTADDR;
|
||||
extern const unsigned long SIOCGIFENCAP;
|
||||
extern const unsigned long SIOCGIFFLAGS;
|
||||
extern const unsigned long SIOCGIFHWADDR;
|
||||
extern const unsigned long SIOCGIFINDEX;
|
||||
extern const unsigned long SIOCGIFMAP;
|
||||
extern const unsigned long SIOCGIFMEM;
|
||||
extern const unsigned long SIOCGIFMETRIC;
|
||||
extern const unsigned long SIOCGIFMTU;
|
||||
extern const unsigned long SIOCGIFNAME;
|
||||
extern const unsigned long SIOCGIFNETMASK;
|
||||
extern const unsigned long SIOCGIFPFLAGS;
|
||||
extern const unsigned long SIOCGIFSLAVE;
|
||||
extern const unsigned long SIOCGIFTXQLEN;
|
||||
extern const unsigned long SIOCGPGRP;
|
||||
extern const unsigned long SIOCGRARP;
|
||||
extern const unsigned long SIOCGSTAMP;
|
||||
extern const unsigned long SIOCGSTAMPNS;
|
||||
extern const unsigned long SIOCPROTOPRIVATE;
|
||||
extern const unsigned long SIOCRTMSG;
|
||||
extern const unsigned long SIOCSARP;
|
||||
extern const unsigned long SIOCSIFADDR;
|
||||
extern const unsigned long SIOCSIFBR;
|
||||
extern const unsigned long SIOCSIFBRDADDR;
|
||||
extern const unsigned long SIOCSIFDSTADDR;
|
||||
extern const unsigned long SIOCSIFENCAP;
|
||||
extern const unsigned long SIOCSIFFLAGS;
|
||||
extern const unsigned long SIOCSIFHWADDR;
|
||||
extern const unsigned long SIOCSIFHWBROADCAST;
|
||||
extern const unsigned long SIOCSIFLINK;
|
||||
extern const unsigned long SIOCSIFMAP;
|
||||
extern const unsigned long SIOCSIFMEM;
|
||||
extern const unsigned long SIOCSIFMETRIC;
|
||||
extern const unsigned long SIOCSIFMTU;
|
||||
extern const unsigned long SIOCSIFNAME;
|
||||
extern const unsigned long SIOCSIFNETMASK;
|
||||
extern const unsigned long SIOCSIFPFLAGS;
|
||||
extern const unsigned long SIOCSIFSLAVE;
|
||||
extern const unsigned long SIOCSIFTXQLEN;
|
||||
extern const unsigned long SIOCSPGRP;
|
||||
extern const unsigned long SIOCSRARP;
|
||||
extern const unsigned long SIOGIFINDEX;
|
||||
|
||||
#define SIOCADDDLCI SIOCADDDLCI
|
||||
#define SIOCADDMULTI SIOCADDMULTI
|
||||
#define SIOCADDRT SIOCADDRT
|
||||
#define SIOCATMARK SIOCATMARK
|
||||
#define SIOCDARP SIOCDARP
|
||||
#define SIOCDELDLCI SIOCDELDLCI
|
||||
#define SIOCDELMULTI SIOCDELMULTI
|
||||
#define SIOCDELRT SIOCDELRT
|
||||
#define SIOCDEVPRIVATE SIOCDEVPRIVATE
|
||||
#define SIOCDIFADDR SIOCDIFADDR
|
||||
#define SIOCDRARP SIOCDRARP
|
||||
#define SIOCGARP SIOCGARP
|
||||
#define SIOCGIFADDR SIOCGIFADDR
|
||||
#define SIOCGIFBR SIOCGIFBR
|
||||
#define SIOCGIFBRDADDR SIOCGIFBRDADDR
|
||||
#define SIOCGIFCONF SIOCGIFCONF
|
||||
#define SIOCGIFCOUNT SIOCGIFCOUNT
|
||||
#define SIOCGIFDSTADDR SIOCGIFDSTADDR
|
||||
#define SIOCGIFENCAP SIOCGIFENCAP
|
||||
#define SIOCGIFFLAGS SIOCGIFFLAGS
|
||||
#define SIOCGIFHWADDR SIOCGIFHWADDR
|
||||
#define SIOCGIFINDEX SIOCGIFINDEX
|
||||
#define SIOCGIFMAP SIOCGIFMAP
|
||||
#define SIOCGIFMEM SIOCGIFMEM
|
||||
#define SIOCGIFMETRIC SIOCGIFMETRIC
|
||||
#define SIOCGIFMTU SIOCGIFMTU
|
||||
#define SIOCGIFNAME SIOCGIFNAME
|
||||
#define SIOCGIFNETMASK SIOCGIFNETMASK
|
||||
#define SIOCGIFPFLAGS SIOCGIFPFLAGS
|
||||
#define SIOCGIFSLAVE SIOCGIFSLAVE
|
||||
#define SIOCGIFTXQLEN SIOCGIFTXQLEN
|
||||
#define SIOCGPGRP SIOCGPGRP
|
||||
#define SIOCGRARP SIOCGRARP
|
||||
#define SIOCGSTAMP SIOCGSTAMP
|
||||
#define SIOCGSTAMPNS SIOCGSTAMPNS
|
||||
#define SIOCPROTOPRIVATE SIOCPROTOPRIVATE
|
||||
#define SIOCRTMSG SIOCRTMSG
|
||||
#define SIOCSARP SIOCSARP
|
||||
#define SIOCSIFADDR SIOCSIFADDR
|
||||
#define SIOCSIFBR SIOCSIFBR
|
||||
#define SIOCSIFBRDADDR SIOCSIFBRDADDR
|
||||
#define SIOCSIFDSTADDR SIOCSIFDSTADDR
|
||||
#define SIOCSIFENCAP SIOCSIFENCAP
|
||||
#define SIOCSIFFLAGS SIOCSIFFLAGS
|
||||
#define SIOCSIFHWADDR SIOCSIFHWADDR
|
||||
#define SIOCSIFHWBROADCAST SIOCSIFHWBROADCAST
|
||||
#define SIOCSIFLINK SIOCSIFLINK
|
||||
#define SIOCSIFMAP SIOCSIFMAP
|
||||
#define SIOCSIFMEM SIOCSIFMEM
|
||||
#define SIOCSIFMETRIC SIOCSIFMETRIC
|
||||
#define SIOCSIFMTU SIOCSIFMTU
|
||||
#define SIOCSIFNAME SIOCSIFNAME
|
||||
#define SIOCSIFNETMASK SIOCSIFNETMASK
|
||||
#define SIOCSIFPFLAGS SIOCSIFPFLAGS
|
||||
#define SIOCSIFSLAVE SIOCSIFSLAVE
|
||||
#define SIOCSIFTXQLEN SIOCSIFTXQLEN
|
||||
#define SIOCSPGRP SIOCSPGRP
|
||||
#define SIOCSRARP SIOCSRARP
|
||||
#define SIOGIFINDEX SIOGIFINDEX
|
||||
#define SIOCGIFCONF SIOCGIFCONF
|
||||
#define SIOCGIFADDR SIOCGIFADDR
|
||||
#define SIOCSIFADDR SIOCSIFADDR
|
||||
#define SIOCDIFADDR SIOCDIFADDR
|
||||
#define SIOCGIFBRDADDR SIOCGIFBRDADDR
|
||||
#define SIOCGIFNETMASK SIOCGIFNETMASK
|
||||
#define SIOCGIFFLAGS SIOCGIFFLAGS
|
||||
#define SIOCSIFFLAGS SIOCSIFFLAGS
|
||||
#define SIOCGIFMETRIC SIOCGIFMETRIC
|
||||
#define SIOCSIFMETRIC SIOCSIFMETRIC
|
||||
#define SIOCSIFBRDADDR SIOCSIFBRDADDR
|
||||
#define SIOCSIFNETMASK SIOCSIFNETMASK
|
||||
#define SIOCGIFDSTADDR SIOCGIFDSTADDR
|
||||
#define SIOCSIFDSTADDR SIOCSIFDSTADDR
|
||||
#define SIOCGIFMTU SIOCGIFMTU
|
||||
#define SIOCSIFMTU SIOCSIFMTU
|
||||
|
||||
#define SIOCGPGRP SIOCGPGRP
|
||||
#define SIOCSPGRP SIOCSPGRP
|
||||
|
||||
#define SIOCADDMULTI SIOCADDMULTI
|
||||
#define SIOCDELMULTI SIOCDELMULTI
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
|
|
|
@ -155,73 +155,74 @@ extern const uint32_t CRTSCTS;
|
|||
#define FF1 FF1
|
||||
#define FF2 FF2
|
||||
|
||||
#define CLOCAL CLOCAL
|
||||
#define CREAD CREAD
|
||||
#define CS5 CS5
|
||||
#define CS6 CS6
|
||||
#define CS7 CS7
|
||||
#define CS8 CS8
|
||||
#define CSIZE CSIZE
|
||||
#define CSTOPB CSTOPB
|
||||
#define ECHO 8
|
||||
#define ECHOCTL ECHOCTL
|
||||
#define ECHOE ECHOE
|
||||
#define ECHOK ECHOK
|
||||
#define ECHOKE ECHOKE
|
||||
#define ECHONL ECHONL
|
||||
#define ECHOPRT ECHOPRT
|
||||
#define EXTPROC EXTPROC
|
||||
#define FLUSHO FLUSHO
|
||||
#define HUPCL HUPCL
|
||||
#define ICANON ICANON
|
||||
#define IEXTEN IEXTEN
|
||||
#define ISIG ISIG
|
||||
#define IUCLC IUCLC
|
||||
#define IUTF8 IUTF8
|
||||
#define IXOFF IXOFF
|
||||
#define IXON IXON
|
||||
#define NOFLSH NOFLSH
|
||||
#define OCRNL OCRNL
|
||||
#define OFDEL OFDEL
|
||||
#define OFILL OFILL
|
||||
#define OLCUC OLCUC
|
||||
#define ONLCR ONLCR
|
||||
#define ONLRET ONLRET
|
||||
#define ONOCR ONOCR
|
||||
#define PARENB PARENB
|
||||
#define PARODD PARODD
|
||||
#define PENDIN PENDIN
|
||||
#define TIOCCONS TIOCCONS
|
||||
#define TIOCGETD TIOCGETD
|
||||
#define TIOCGWINSZ TIOCGWINSZ
|
||||
#define TIOCNOTTY TIOCNOTTY
|
||||
#define TIOCNXCL TIOCNXCL
|
||||
#define TIOCOUTQ TIOCOUTQ
|
||||
#define TIOCSCTTY TIOCSCTTY
|
||||
#define TIOCSETD TIOCSETD
|
||||
#define TIOCSIG TIOCSIG
|
||||
#define TIOCSPGRP TIOCSPGRP
|
||||
#define TIOCSTI TIOCSTI
|
||||
#define TIOCSWINSZ TIOCSWINSZ
|
||||
#define TOSTOP TOSTOP
|
||||
#define VDISCARD VDISCARD
|
||||
#define VEOF VEOF
|
||||
#define VEOL VEOL
|
||||
#define VEOL2 VEOL2
|
||||
#define VERASE VERASE
|
||||
#define VINTR VINTR
|
||||
#define VKILL VKILL
|
||||
#define VLNEXT VLNEXT
|
||||
#define VMIN VMIN
|
||||
#define VQUIT VQUIT
|
||||
#define VREPRINT VREPRINT
|
||||
#define VSTART VSTART
|
||||
#define VSTOP VSTOP
|
||||
#define VSUSP VSUSP
|
||||
#define VSWTC VSWTC
|
||||
#define VTIME VTIME
|
||||
#define VWERASE VWERASE
|
||||
#define XCASE XCASE
|
||||
#define CLOCAL CLOCAL
|
||||
#define CREAD CREAD
|
||||
#define CS5 CS5
|
||||
#define CS6 CS6
|
||||
#define CS7 CS7
|
||||
#define CS8 CS8
|
||||
#define CSIZE CSIZE
|
||||
#define CSTOPB CSTOPB
|
||||
#define ECHO 8
|
||||
#define ECHOCTL ECHOCTL
|
||||
#define ECHOE ECHOE
|
||||
#define ECHOK ECHOK
|
||||
#define ECHOKE ECHOKE
|
||||
#define ECHONL ECHONL
|
||||
#define ECHOPRT ECHOPRT
|
||||
#define EXTPROC EXTPROC
|
||||
#define FLUSHO FLUSHO
|
||||
#define HUPCL HUPCL
|
||||
#define ICANON ICANON
|
||||
#define IEXTEN IEXTEN
|
||||
#define ISIG ISIG
|
||||
#define IUCLC IUCLC
|
||||
#define IUTF8 IUTF8
|
||||
#define IXOFF IXOFF
|
||||
#define IXON IXON
|
||||
#define NOFLSH NOFLSH
|
||||
#define OCRNL OCRNL
|
||||
#define OFDEL OFDEL
|
||||
#define OFILL OFILL
|
||||
#define OLCUC OLCUC
|
||||
#define ONLCR ONLCR
|
||||
#define ONLRET ONLRET
|
||||
#define ONOCR ONOCR
|
||||
#define PARENB PARENB
|
||||
#define PARODD PARODD
|
||||
#define PENDIN PENDIN
|
||||
#define TOSTOP TOSTOP
|
||||
#define VDISCARD VDISCARD
|
||||
#define VEOF VEOF
|
||||
#define VEOL VEOL
|
||||
#define VEOL2 VEOL2
|
||||
#define VERASE VERASE
|
||||
#define VINTR VINTR
|
||||
#define VKILL VKILL
|
||||
#define VLNEXT VLNEXT
|
||||
#define VMIN VMIN
|
||||
#define VQUIT VQUIT
|
||||
#define VREPRINT VREPRINT
|
||||
#define VSTART VSTART
|
||||
#define VSTOP VSTOP
|
||||
#define VSUSP VSUSP
|
||||
#define VSWTC VSWTC
|
||||
#define VTIME VTIME
|
||||
#define VWERASE VWERASE
|
||||
#define XCASE XCASE
|
||||
|
||||
/* terminal ioctls */
|
||||
#define TIOCGWINSZ TIOCGWINSZ /* get tty dimensions */
|
||||
#define TIOCSWINSZ TIOCSWINSZ /* set tty dimensions */
|
||||
#define TIOCCONS TIOCCONS /* redirect terminal */
|
||||
#define TIOCGETD TIOCGETD /* get line discipline */
|
||||
#define TIOCSETD TIOCSETD /* set line discipline */
|
||||
#define TIOCNOTTY TIOCNOTTY /* give up terminal */
|
||||
#define TIOCNXCL TIOCNXCL /* disable exclusive mode */
|
||||
#define TIOCOUTQ TIOCOUTQ /* bytes in output buffer */
|
||||
#define TIOCSCTTY TIOCSCTTY /* make controlling terminal */
|
||||
#define TIOCSIG TIOCSIG /* generate pty signal */
|
||||
#define TIOCSTI TIOCSTI /* insert fake tty input */
|
||||
|
||||
/* tcsetattr() */
|
||||
#define TCSANOW 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue