diff options
author | jbeich <jbeich@FreeBSD.org> | 2017-06-29 23:43:50 +0800 |
---|---|---|
committer | jbeich <jbeich@FreeBSD.org> | 2017-06-29 23:43:50 +0800 |
commit | bcc4dac832c7c51858e55d59d54d1496c80e0d9a (patch) | |
tree | 11b96992c530e5f6237deb18986a37112bfc9810 /www/firefox | |
parent | 015150443d7c84504e6e75ecc25351d4ff727a2e (diff) | |
download | freebsd-ports-gnome-bcc4dac832c7c51858e55d59d54d1496c80e0d9a.tar.gz freebsd-ports-gnome-bcc4dac832c7c51858e55d59d54d1496c80e0d9a.tar.zst freebsd-ports-gnome-bcc4dac832c7c51858e55d59d54d1496c80e0d9a.zip |
www/firefox: unbreak aarch64 after r444090
error[E0412]: cannot find type `c_long` in this scope
--> third_party/rust/libc/src/lib.rs:192:45
|
192 | pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
| ^^^^^^ not found in this scope
|
= help: possible candidate is found in another module, you can import it into scope:
`use core::os::raw::c_long;`
Reported by: pkg-fallout
Diffstat (limited to 'www/firefox')
-rw-r--r-- | www/firefox/Makefile | 1 | ||||
-rw-r--r-- | www/firefox/files/patch-bug1376411 | 9687 |
2 files changed, 9688 insertions, 0 deletions
diff --git a/www/firefox/Makefile b/www/firefox/Makefile index b1aa687d56ef..5bca600e7a7e 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -4,6 +4,7 @@ PORTNAME= firefox DISTVERSION= 54.0.1 DISTVERSIONSUFFIX=.source +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ diff --git a/www/firefox/files/patch-bug1376411 b/www/firefox/files/patch-bug1376411 new file mode 100644 index 000000000000..fe4d6ab7b44d --- /dev/null +++ b/www/firefox/files/patch-bug1376411 @@ -0,0 +1,9687 @@ +Update libc crate to 0.2.24 for FreeBSD aarch64 support. + +diff --git js/src/Cargo.lock js/src/Cargo.lock +index 8466b5f1a9e5..438516496682 100644 +--- js/src/Cargo.lock ++++ js/src/Cargo.lock +@@ -2,7 +2,7 @@ + name = "mozjs_sys" + version = "0.0.0" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -13,7 +13,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] + name = "libc" +-version = "0.2.20" ++version = "0.2.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] +@@ -22,7 +22,7 @@ version = "1.0.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "gcc 0.3.42 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -33,6 +33,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + + [metadata] + "checksum gcc 0.3.42 (registry+https://github.com/rust-lang/crates.io-index)" = "291055c78f59ca3d84c99026c9501c469413d386bb46be1e1cf1d285cd1db3b0" +-"checksum libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5" ++"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc" + "checksum libz-sys 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "7616099a575493da60cddc1174b686fcfb00ece89dc6f61f31ff47c35f07bbe8" + "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" +diff --git third_party/rust/libc/.cargo-checksum.json third_party/rust/libc/.cargo-checksum.json +index e1e2ea34c5e4..3514e55b4293 100644 +--- third_party/rust/libc/.cargo-checksum.json ++++ third_party/rust/libc/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"7cdd02047a3044fcc50a43aacede564cfbe061bab9ccd143a58e7e92e64750c2","Cargo.toml":"00205808e35bc6a436829e57222639e63a899330cd2fd6303a37d5b2f2335667","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"4222225ac1d974faee08172b0b0773dfe2b312a13054f090f04c651aa1d1e6ef","appveyor.yml":"c0d70c650b6231e6ff78a352224f1a522a9be69d9da4251adbaddb3f0393294d","ci/README.md":"be804f15e2128e5fd4b160cb0b13cff5f19e7d77b55ec5254aa6fd8731c84f0d","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"62ca7317439f9c303990e897450a91cd467be05eb75dfc01456d417932ac8672","ci/docker/arm-linux-androideabi/Dockerfile":"172bac5a76024737847ffdac49f68e2b3d890cb2fc1b5e3f7aaaf19b46916830","ci/docker/arm-linux-androideabi/accept-licenses.sh":"84ad00815f628005ed22c5d6cd14990ebc97812a7163bd275b2877904eddab53","ci/docker/arm-linux-androideabi/install-ndk.sh":"eef063bb01a16c0f90471dbce1b5a395b53141d7704e15a3c9a1c4fc5e06d4b1","ci/docker/arm-linux-androideabi/install-sdk.sh":"42c04b17c4a35bef58757332e960a6e4aba1b5e41f8fc0182265163ff93f6182","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"e349f7caa463adbde8d6ec4d2b9f7720ed81c77f48d75bbfb78c89751f55c2dc","ci/docker/i686-unknown-linux-gnu/Dockerfile":"07e9df6ba91025cbec7ae81ade63f8cfb8a54c5e1e5a8f8def0617e17bd59db0","ci/docker/i686-unknown-linux-musl/Dockerfile":"1a4d064adff4a8f58773305567cfe5d915bcd0762bcb0e101cf6f4ca628a96da","ci/docker/mips-unknown-linux-gnu/Dockerfile":"860299d96ee50ebdbd788e65eb6ba1f561ef66107647bddffcb2567ac350896b","ci/docker/mips-unknown-linux-musl/Dockerfile":"711c43122fa34cee83a69944493213924b0ff1fccd78c7a141cb2b2127526484","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"163776e0fd38f66df7415421202ac29efc7d345a628947434e573c3885594ab5","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"aef213df08da03ab6a723c3e6e5594a0586251950d81482cf53179d8e64e95c7","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"08b846a338c2ee70100f4e80db812668dc58bfb536c44a95cd1cf004d965186b","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"4da285ffd035d16f5da9e3701841eb86049c8cfa417fa81e53da4ef74152eac0","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"44c3107fb30380785aaed6ff73fa334017a5bb4e3b5c7d4876154f09023a2b99","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ef0f9f63065218728d2daafaa5ba71b17e4ccc23d72e859e0a7133fc64c0815e","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"67fabbc8c6ac02376cf9344251ad49ecdac396b71accb572fd1ae65225325bc0","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"f71019fed5204b950843ef5e56144161fda7e27fad68ed0e8bc4353c388c7bcf","ci/docker/x86_64-unknown-openbsd/Dockerfile":"dfa5c23a6cff8c7a9a846668118c71a8406a360801fd3632fb12e8fbda6b7338","ci/dox.sh":"9ea240a4a607036235fd68c01b5d2a59f365768d103d3be774dcf34aa3ff563e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/run-docker.sh":"7f6c68dbca93788111170ac4678608957a179e76cfe8c5a51d11dfea1742d7f2","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"b6a6307ea989b6a84bad0fd7d46c3206b30f7aa06d0b3e92d6cb1c855f4e0c42","ci/style.rs":"60564abc1d5197ed1598426dd0d6ee9939a16d2875b03373538f58843bb616c4","src/dox.rs":"f732d3c0dcd6ace854ee32d8f898b96ac42204a799c6e386c4ba88f6e58673dc","src/lib.rs":"cc328e10a4c2879e7de1858aabc30e667cb07398e021e0d2d002f4195632127a","src/macros.rs":"bd9802772b0e5c8b3c550d1c24307f06c0d1e4ce656b4ae1cf092142bbe5412c","src/redox.rs":"3dd158ba9fbbabe96ce2607e91dbf07b93b37c0427734118702dcb4901fe8964","src/unix/bsd/apple/b32.rs":"110ecff78da0e8d405d861447904da403d8b3f6da1f0f9dc9987633f3f04fe46","src/unix/bsd/apple/b64.rs":"e6808081c0b276cca3189628716f507c7c0d00b62417cd44addbdaefe848cec7","src/unix/bsd/apple/mod.rs":"1e854694c38e8eee8ce17e93c4c92755b4b4838cf002a7740108605f58e7d029","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"2c65314cfb38c540979facaea9f97596446dffbc0a2efa29db7c1ace5243f6ee","src/unix/bsd/freebsdlike/freebsd/mod.rs":"77b6c96a8b30761c9ed77f55fd39778fa2248b57ca60c59c8a1035c2821ec5ca","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"c7f46b9ae23fde5a9e245a28ed1380066e67f081323b4d253a18e9da3b97b860","src/unix/bsd/freebsdlike/mod.rs":"66ba7ca5a09a893776e955f7632e5c3cb9457bf39e3823f1b337ec841569b776","src/unix/bsd/mod.rs":"55bf99b86abf3149f2b03f73f3dad3b67f6d11e5ddca4adfb550f6f116449fe0","src/unix/bsd/netbsdlike/mod.rs":"b19e7f839bfeb6ae83fcd73574083d80a5b1b90dbd168b33a6ed0e94a5f5e2b3","src/unix/bsd/netbsdlike/netbsd/mod.rs":"d8539c69d1db8e2e8e3126b3dd6f175eb8157530cec21a05578bed66b55efe5b","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs":"f8cd05dacd3a3136c58da5a2fbe26f703767823b28e74fe8a2b57a7bd98d6d5c","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"48a32d25326ce03aec64ff0eaac4d921b1a1144f48d020a623306ecf986ea52a","src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs":"b1b9cf7be9f0e4d294a57092594074ad03a65fe0eeac9d1104fa874c313e7900","src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs":"f5d8db6f54efd05520b31b764a6bacbf612e1aebce097d2d5bfaaef3b91f37b5","src/unix/haiku/b32.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/haiku/b64.rs":"b422430c550c0ba833c9206d1350861e344e3a2eb33d7d58693efb35044be1cc","src/unix/haiku/mod.rs":"245d5500a1d836974ef407edeadee36a51a486bf9d5566d129aaa8f51741e966","src/unix/mod.rs":"1dd0ac155b99862e2368618e16ceb071a2a9b525e7a02dea5ef91d624b21f7ce","src/unix/notbsd/android/b32.rs":"148e1b4ed8b4f700d5aa24178af925164176e1c18b54db877ced4b55ba9f03d4","src/unix/notbsd/android/b64.rs":"302caf0aa95fa022030717c58de17d85d814b04350eca081a722ec435bc4f217","src/unix/notbsd/android/mod.rs":"d255ba6737efea3c4c3ef7ef499a54bc1875debdfec4233cbe8e2601afadc994","src/unix/notbsd/linux/mips/mips32.rs":"b268f603f71d854614c20cea00431812def9b683d43e6254ae62a8f88a14f7c3","src/unix/notbsd/linux/mips/mips64.rs":"8bce84a47a6ad7fc95234fdd3513ddb8c78634f4ac18209c0276ab705c092ebe","src/unix/notbsd/linux/mips/mod.rs":"5eaf645c3ce69860062adf2df6bf56bdcad955990401dee671d4f5b8fea755a4","src/unix/notbsd/linux/mod.rs":"ed2287e8a77f3c97ea1ae0497832984b1c3d5b306413428f1823d58490ed25bc","src/unix/notbsd/linux/musl/b32/arm.rs":"0ad8c97458743dc7d81200df0e1223f0a20936933ace77fe786477027597dd7b","src/unix/notbsd/linux/musl/b32/asmjs.rs":"085e410f990312de76f74cb9bbf9fcc27d686e94334143b34511f565d1b8bb91","src/unix/notbsd/linux/musl/b32/mips.rs":"01a92b5dc28ca67e41d7791e398f75210208368e53a848297186de5829d158ec","src/unix/notbsd/linux/musl/b32/mod.rs":"fc7e055edbe6fa170c2bda6b3415066c1871b3e60ebb70a6329d008f77100f0b","src/unix/notbsd/linux/musl/b32/x86.rs":"b47963c6bc5fceec96fded47d58e1c0466b190ec7ae207d666d23be35131c638","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4009c7eaf703472daef2a70bdac910d9fc395a33689ef2e8cf1c4e692445d3f0","src/unix/notbsd/linux/musl/b64/mod.rs":"3f7cc45104103ecff4f7ea6cfdc76d2b0132cff31f7e36a0da2f613ac076256c","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"dc28f5b7284235d6cf5519053cac59a1c16dc39223b71cca0871e4880755f852","src/unix/notbsd/linux/musl/b64/x86_64.rs":"43291acc0dfc92c2fec8ba6ce77ee9ca3c20bcdccec18e149f95ba911cee704b","src/unix/notbsd/linux/musl/mod.rs":"926a5e041377406ec3dc869fae42b1cba3b41e163aacbdbb8122f6a41756baaf","src/unix/notbsd/linux/other/b32/arm.rs":"f5cb989075fa3b5f997e7101495532c8d5c9f3577412d4c07e4c8c1a16f7b43c","src/unix/notbsd/linux/other/b32/mod.rs":"6122be151c5d85b9df6a3aaefc5cafd0657b371cafa9cb31ed9b1a394976af45","src/unix/notbsd/linux/other/b32/powerpc.rs":"3b62052bb9741afa5349098e6e9c675b60e822e41fed6b5e1b694be1872097b1","src/unix/notbsd/linux/other/b32/x86.rs":"1eda37736f5966c7968b594f74f5018f56b6b8c67bbdeb31fc3db1b6e4ac31b4","src/unix/notbsd/linux/other/b64/aarch64.rs":"e0637555c38346f264e666bb235e8c53ae2dfa79310eeaee6e7d916e8e9a7aff","src/unix/notbsd/linux/other/b64/mod.rs":"bee90e8d9217ee344d0e99fd483766a1b28e8b1ded930d44a0400a5e5224bb6a","src/unix/notbsd/linux/other/b64/powerpc64.rs":"3653528376afdd267aaa3ae0020d2e4aca16c28303dcf731cfa96a8ff5db1a5c","src/unix/notbsd/linux/other/b64/sparc64.rs":"fbfb3b17da347723ddf15fb490e51acdddc9ca7e6b4db072370ba2619cc2ff97","src/unix/notbsd/linux/other/b64/x86_64.rs":"8c9bad7d14fc787ec7aa943fd552b7f35b74548a122e53711708de809ef1148d","src/unix/notbsd/linux/other/mod.rs":"9d6643fddab3e68dafa1d34424ea04561d3b414530dd9ce0adde5bc6af828b3a","src/unix/notbsd/linux/s390x.rs":"0ed3108cca67cb731f334d6beecbb99fdfc16de475320007d354fe1c4571fbd8","src/unix/notbsd/mod.rs":"da50b86c6649c3dc12e23185def473d4562128470c3037fae648aeeb27eb5569","src/unix/solaris/mod.rs":"f3956d14342be8631806c56f677d8e14178131578bd26f92d5e90a3cf3f5f37d","src/windows.rs":"acccbd341e81206cb1dc66af41762c193ac0dd719d700b64f7e26c967ee7d670"},"package":"684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5"} +\ No newline at end of file ++{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"85d7a35a85a0653ea7072811fd0ba37cf00df4e0b2bcc3781bfc171220046001","Cargo.toml":"7ea5ce66ef7d756befcc155bdeb4135171920a934ecd384eb9f54359a4ce547a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"8a9859c60f78d9075e22bc9f85b40e0b0216cccaeb7025c9f464cc33dcddaf5c","appveyor.yml":"483ae27670e061eb91f055699a9ad88255050b7b300f183b8580340407751bb4","ci/README.md":"be804f15e2128e5fd4b160cb0b13cff5f19e7d77b55ec5254aa6fd8731c84f0d","ci/android-accept-licenses.sh":"84ad00815f628005ed22c5d6cd14990ebc97812a7163bd275b2877904eddab53","ci/android-install-ndk.sh":"73c5f21438c024ce1b8c793184447ff9aecd83c87cbde8de580b782842b3563f","ci/android-install-sdk.sh":"891900fe4e4ceb04717b91a253753858270defc6d6401936d08c09801c1de178","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"68f375c6e0b3716f8c0b6ed217bc6c3631fa2b86c578b983a0bf60d0344efd74","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"62ca7317439f9c303990e897450a91cd467be05eb75dfc01456d417932ac8672","ci/docker/arm-linux-androideabi/Dockerfile":"1193bf048efbeb9be3c9fac0836dcf6ae07e12cdf09b36b386dd4cbd62abbffa","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"e349f7caa463adbde8d6ec4d2b9f7720ed81c77f48d75bbfb78c89751f55c2dc","ci/docker/i686-linux-android/Dockerfile":"7c353aecdf0b21d8584392cc6ea31d455adad769034c3ea09191a1b26a2521e1","ci/docker/i686-unknown-linux-gnu/Dockerfile":"07e9df6ba91025cbec7ae81ade63f8cfb8a54c5e1e5a8f8def0617e17bd59db0","ci/docker/i686-unknown-linux-musl/Dockerfile":"fcaedc90fbb90375186b36b4324bff0a042aae70695be0f2b632e3cf7479eae6","ci/docker/mips-unknown-linux-gnu/Dockerfile":"860299d96ee50ebdbd788e65eb6ba1f561ef66107647bddffcb2567ac350896b","ci/docker/mips-unknown-linux-musl/Dockerfile":"711c43122fa34cee83a69944493213924b0ff1fccd78c7a141cb2b2127526484","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"163776e0fd38f66df7415421202ac29efc7d345a628947434e573c3885594ab5","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"aef213df08da03ab6a723c3e6e5594a0586251950d81482cf53179d8e64e95c7","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"08b846a338c2ee70100f4e80db812668dc58bfb536c44a95cd1cf004d965186b","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"4da285ffd035d16f5da9e3701841eb86049c8cfa417fa81e53da4ef74152eac0","ci/docker/x86_64-linux-android/Dockerfile":"a73a344c60575b8ef78b0178f93285ffa2e2d9aa5eb0d2e86d4bad3cab63276f","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"44c3107fb30380785aaed6ff73fa334017a5bb4e3b5c7d4876154f09023a2b99","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ef0f9f63065218728d2daafaa5ba71b17e4ccc23d72e859e0a7133fc64c0815e","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"67fabbc8c6ac02376cf9344251ad49ecdac396b71accb572fd1ae65225325bc0","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"f71019fed5204b950843ef5e56144161fda7e27fad68ed0e8bc4353c388c7bcf","ci/docker/x86_64-unknown-openbsd/Dockerfile":"dfa5c23a6cff8c7a9a846668118c71a8406a360801fd3632fb12e8fbda6b7338","ci/dox.sh":"9ea240a4a607036235fd68c01b5d2a59f365768d103d3be774dcf34aa3ff563e","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/run-docker.sh":"655712ba6127eb2efe2c641cf4cf1246f3e485096d72ec57b423e9d2bff6fb73","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"48c0318287f02889cb73a55e3e2058e79c556d11797d47a1ed66d7c55d1be12f","ci/style.rs":"60564abc1d5197ed1598426dd0d6ee9939a16d2875b03373538f58843bb616c4","src/dox.rs":"bb9a85519e0d4a8d3bfb81301759b9b938435d79da9ce2918248fb2b0df19638","src/lib.rs":"651696755aed40230cde8a505a2dfef61bea52d6349c9b9343497a5c7158ec92","src/macros.rs":"bd9802772b0e5c8b3c550d1c24307f06c0d1e4ce656b4ae1cf092142bbe5412c","src/redox.rs":"3dd158ba9fbbabe96ce2607e91dbf07b93b37c0427734118702dcb4901fe8964","src/unix/bsd/apple/b32.rs":"110ecff78da0e8d405d861447904da403d8b3f6da1f0f9dc9987633f3f04fe46","src/unix/bsd/apple/b64.rs":"2c51c1c063bfb5076ecf08fbc9371ce9473878d2e046c186eb9433955f6f8ba6","src/unix/bsd/apple/mod.rs":"8e437addefb32336671f46b93a5a8827260163abcf623c0f1613d4d685faca34","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"54b3b30c4cac35ced9197e7267f209b0f168de8a6899ab0cba290c5ae399f0e7","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"c7f46b9ae23fde5a9e245a28ed1380066e67f081323b4d253a18e9da3b97b860","src/unix/bsd/freebsdlike/freebsd/mod.rs":"ba1bd1487b41be91115a21e3968d15e4d877043ba4946cd11ed2be2ee66afc19","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"c7f46b9ae23fde5a9e245a28ed1380066e67f081323b4d253a18e9da3b97b860","src/unix/bsd/freebsdlike/mod.rs":"6b184872bf7979e5da042399a8aa3a46fff6716301f3d068912a2d6296c6ab94","src/unix/bsd/mod.rs":"c75c328dc62a621ce2a9408cb8764206e365e6f14db1bfe535a23c4728521d97","src/unix/bsd/netbsdlike/mod.rs":"50ca4e29f06669a0ebff72f2f24b2b08ff55478f580b1684e16a0cf6938a6a50","src/unix/bsd/netbsdlike/netbsd/mod.rs":"51f6f2309d59f8fb5dbd6b29ac4aa7ad431f1dddae151aef2db9f66c5f3362b0","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs":"f8cd05dacd3a3136c58da5a2fbe26f703767823b28e74fe8a2b57a7bd98d6d5c","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"97a7cdb8824949e6ca7202691bde4e1c46c2cfdeb5f3735a033448b52da1bb59","src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs":"31686679c2df5f11437a338b9281fa0dd4f8d061dcd895d67619992171e115c9","src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs":"f5d8db6f54efd05520b31b764a6bacbf612e1aebce097d2d5bfaaef3b91f37b5","src/unix/haiku/b32.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/haiku/b64.rs":"b422430c550c0ba833c9206d1350861e344e3a2eb33d7d58693efb35044be1cc","src/unix/haiku/mod.rs":"f0daa9910d2beade8be1d67bab652c239e779a27e4be54f93b7bceb7afe45d30","src/unix/mod.rs":"841d523014553865ee35355425da44fe1a31944a991831efc7c046263ad44a89","src/unix/notbsd/android/b32/arm.rs":"d63a234f3a2399bdef1fa13c6a209386cb5ddac04c90f2c6d42badc8235dc49d","src/unix/notbsd/android/b32/mod.rs":"c09b53e42b286a7ec56fb28d0a3e71ec42fecaec39b2015d1d4a3338b172c570","src/unix/notbsd/android/b32/x86.rs":"10e6879dcbf136f0e907337987a0609b357e27e0f24ccb907525fcad881c24c3","src/unix/notbsd/android/b64/aarch64.rs":"d0a25e73f8d02f8412fa9237e41d3f4993b45603a2a8f8d1690bc6624a190d42","src/unix/notbsd/android/b64/mod.rs":"172d704a50d6fb9f67683c7e66ff15b5c9f7b11e7064aa8bd129228ff074393f","src/unix/notbsd/android/b64/x86_64.rs":"a2b048dad18c60ede035645bbfea2ba3dd75197c1ee0d54fb5fcab14d6c35194","src/unix/notbsd/android/mod.rs":"25d09d308f0beb7925a3efdf1fae8412251ea04f595f6852e52114df51b6747e","src/unix/notbsd/linux/mips/mips32.rs":"003b4e204e13380cd7f1ce783a0eded0f520f4e7d25634738e8ee50fc09b07c9","src/unix/notbsd/linux/mips/mips64.rs":"a8d3e38e9f9359233db04c66d7a8de957530ad2b8596661d3ac25ea81ee44a78","src/unix/notbsd/linux/mips/mod.rs":"7157a427fabff6e970288c75cb246981e316f76f3c2bb59b254d613a8389f859","src/unix/notbsd/linux/mod.rs":"c200ff5e7c7ad5d0b4c01531384acd408057665cb49175fba0d453b08c166bcf","src/unix/notbsd/linux/musl/b32/arm.rs":"d43ba5c528926261b1ccd529ab55636254360a084ab84a7ec22a4eb5afddb8f8","src/unix/notbsd/linux/musl/b32/asmjs.rs":"085e410f990312de76f74cb9bbf9fcc27d686e94334143b34511f565d1b8bb91","src/unix/notbsd/linux/musl/b32/mips.rs":"941c88bc413ba2b87eb6a6cfe03355ee148b865f39598456965b3d04b3adbbe6","src/unix/notbsd/linux/musl/b32/mod.rs":"fc7e055edbe6fa170c2bda6b3415066c1871b3e60ebb70a6329d008f77100f0b","src/unix/notbsd/linux/musl/b32/x86.rs":"ffa5781b52a7d2774a34b1e3e2034a498b919fd96eb85e88098dba2e674a3797","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4009c7eaf703472daef2a70bdac910d9fc395a33689ef2e8cf1c4e692445d3f0","src/unix/notbsd/linux/musl/b64/mod.rs":"d9b03a59a54a568b07ffa4380103a926cbb45dbfd87745edef79cd971ef31283","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"dc28f5b7284235d6cf5519053cac59a1c16dc39223b71cca0871e4880755f852","src/unix/notbsd/linux/musl/b64/x86_64.rs":"43291acc0dfc92c2fec8ba6ce77ee9ca3c20bcdccec18e149f95ba911cee704b","src/unix/notbsd/linux/musl/mod.rs":"0bd97702f5c84181c53f45466fb04afb9441f6950580b6ad59257e5c73089796","src/unix/notbsd/linux/other/b32/arm.rs":"d373022fd152341ec8f5d106937c7898dd68fb4c0346bd94a37526542a605e9a","src/unix/notbsd/linux/other/b32/mod.rs":"6122be151c5d85b9df6a3aaefc5cafd0657b371cafa9cb31ed9b1a394976af45","src/unix/notbsd/linux/other/b32/powerpc.rs":"cc85e75675abc37414fc7701dda7c3f6396e7b2d3c52eea7febdc41f7b033ea9","src/unix/notbsd/linux/other/b32/x86.rs":"5a6c789355da5abf64c2a0c867d2dfd4f72f004d0bd6c476fd34172b340ea1c3","src/unix/notbsd/linux/other/b64/aarch64.rs":"ce342b37a4a60c216625c8e177a50b3f328bdfd5c527e32e06c73f4aa5926829","src/unix/notbsd/linux/other/b64/mod.rs":"bee90e8d9217ee344d0e99fd483766a1b28e8b1ded930d44a0400a5e5224bb6a","src/unix/notbsd/linux/other/b64/powerpc64.rs":"fc7131f39a75a9e35d474d70b0bc829c52590dadf472ae5785972a94ffb95f12","src/unix/notbsd/linux/other/b64/sparc64.rs":"0ba7f399349bc586ebb73d0caef5c67f195c9e3a942eabfb2efd133b4cea9872","src/unix/notbsd/linux/other/b64/x86_64.rs":"bf17645b237d8059da5e9cc0f6d2d56bc665b0946a6deb8aedf46e5b44578fa6","src/unix/notbsd/linux/other/mod.rs":"46b060787a60493e71406be35b77c24048cdc54326b65c9961fbb1fb9d354de3","src/unix/notbsd/linux/s390x.rs":"2dec96036cadd8354cd56ef8dd7018e75ae92326ec7b5963bc9cdbba0c7d694b","src/unix/notbsd/mod.rs":"bb4550e749328a3aebc450a1684c136821babc3fc161093eecb231f3998cfe8c","src/unix/solaris/mod.rs":"ba70c4ebd371f2580c1fb8f3f6cd32a391ec017e1eed9812137caa94e5149a03","src/unix/uclibc/mips/mips32.rs":"31b23e466cffb86116421ec9240b86e7419aacd84b0b1b04d23c7142c8717566","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"74817a9b1ee3998d8e0b751a555d57225f70fd979c283c94ada344a162a8b856","src/unix/uclibc/mod.rs":"3cef4087b743e5af239a8c699c2eeaeda4e19bb57a3683736c8bd87dc71e0a2d","src/unix/uclibc/x86_64/mod.rs":"98e6685519372f7b247e3bb0008ed2ee8d94fd7cca0ed2f0b9336485c734d8a9","src/windows.rs":"acccbd341e81206cb1dc66af41762c193ac0dd719d700b64f7e26c967ee7d670"},"package":"38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc"} +\ No newline at end of file +diff --git third_party/rust/libc/.travis.yml third_party/rust/libc/.travis.yml +index fa07ffc7c7b6..b7721b5e6049 100644 +--- third_party/rust/libc/.travis.yml ++++ third_party/rust/libc/.travis.yml +@@ -4,8 +4,7 @@ dist: trusty + services: + - docker + install: +- - curl https://static.rust-lang.org/rustup.sh | +- sh -s -- --add-target=$TARGET --disable-sudo -y --prefix=`rustc --print sysroot` ++ - if [ -z "$NO_ADD" ]; then rustup target add $TARGET; fi + script: + - cargo build + - cargo build --no-default-features +@@ -17,7 +16,6 @@ script: + sh ci/run.sh $TARGET; + fi + - rustc ci/style.rs && ./style src +-osx_image: xcode7.3 + env: + global: + secure: "e2/3QjgRN9atOuSHp22TrYG7QVKcYUWY48Hi9b60w+r1+BhPkTseIJLte7WefRhdXtqpjjUJTooKDhnurFOeHaCT+nmBgiv+FPU893sBl4bhesY4m0vgUJVbNZcs6lTImYekWVb+aqjGdgV/XAgCw7c3kPmrZV0MzGDWL64Xaps=" +@@ -25,26 +23,26 @@ matrix: + include: + # 1.0.0 compat + - os: linux +- env: TARGET=x86_64-unknown-linux-gnu ++ env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + rust: 1.0.0 + script: cargo build + install: + + # build documentation + - os: linux +- env: TARGET=x86_64-unknown-linux-gnu ++ env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + rust: nightly + script: sh ci/dox.sh + + # stable compat + - os: linux +- env: TARGET=x86_64-unknown-linux-gnu ++ env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + rust: stable + - os: linux + env: TARGET=i686-unknown-linux-gnu + rust: stable + - os: osx +- env: TARGET=x86_64-apple-darwin ++ env: TARGET=x86_64-apple-darwin NO_ADD=1 + rust: stable + - os: osx + env: TARGET=i686-apple-darwin +@@ -53,6 +51,16 @@ matrix: + env: TARGET=arm-linux-androideabi + rust: stable + - os: linux ++ env: TARGET=aarch64-linux-android ++ rust: stable ++ - os: linux ++ env: TARGET=i686-linux-android ++ rust: stable ++ # as of 2017/05/03 x86_64-linux-android are not on stable ++ - os: linux ++ env: TARGET=x86_64-linux-android ++ rust: beta ++ - os: linux + env: TARGET=x86_64-unknown-linux-musl + rust: stable + - os: linux +@@ -65,9 +73,11 @@ matrix: + env: TARGET=aarch64-unknown-linux-gnu + rust: stable + - os: osx ++ osx_image: xcode8.2 + env: TARGET=i386-apple-ios + rust: stable + - os: osx ++ osx_image: xcode8.2 + env: TARGET=x86_64-apple-ios + rust: stable + - os: linux +@@ -94,18 +104,18 @@ matrix: + + # beta + - os: linux +- env: TARGET=x86_64-unknown-linux-gnu ++ env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + rust: beta + - os: osx +- env: TARGET=x86_64-apple-darwin ++ env: TARGET=x86_64-apple-darwin NO_ADD=1 + rust: beta + + # nightly + - os: linux +- env: TARGET=x86_64-unknown-linux-gnu ++ env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + rust: nightly + - os: osx +- env: TARGET=x86_64-apple-darwin ++ env: TARGET=x86_64-apple-darwin NO_ADD=1 + rust: nightly + + # QEMU based targets that compile in an emulator +diff --git third_party/rust/libc/Cargo.toml third_party/rust/libc/Cargo.toml +index 084337e0d30f..ecebaed935bb 100644 +--- third_party/rust/libc/Cargo.toml ++++ third_party/rust/libc/Cargo.toml +@@ -1,7 +1,7 @@ + [package] + + name = "libc" +-version = "0.2.20" ++version = "0.2.24" + authors = ["The Rust Project Developers"] + license = "MIT/Apache-2.0" + readme = "README.md" +diff --git third_party/rust/libc/README.md third_party/rust/libc/README.md +index 255283643508..67535d211e9c 100644 +--- third_party/rust/libc/README.md ++++ third_party/rust/libc/README.md +@@ -98,6 +98,25 @@ We have two automated tests running on [Travis](https://travis-ci.org/rust-lang/ + 2. Style checker + - `rustc ci/style.rs && ./style src` + ++### Releasing your change to crates.io ++ ++Now that you've done the amazing job of landing your new API or your new ++platform in this crate, the next step is to get that sweet, sweet usage from ++crates.io! The only next step is to bump the version of libc and then publish ++it. If you'd like to get a release out ASAP you can follow these steps: ++ ++1. Update the version number in `Cargo.toml`, you'll just be bumping the patch ++ version number. ++2. Run `cargo update` to regenerate the lockfile to encode your version bump in ++ the lock file. You may pull in some other updated dependencies, that's ok. ++3. Send a PR to this repository. It should [look like this][example], but it'd ++ also be nice to fill out the description with a small rationale for the ++ release (any rationale is ok though!) ++4. Once merged the release will be tagged and published by one of the libc crate ++ maintainers. ++ ++[example]: https://github.com/rust-lang/libc/pull/583 ++ + ## Platforms and Documentation + + The following platforms are currently tested and have documentation available: +@@ -111,7 +130,7 @@ Tested: + * [`i686-apple-darwin`](https://doc.rust-lang.org/libc/i686-apple-darwin/libc/) + * [`x86_64-apple-darwin`](https://doc.rust-lang.org/libc/x86_64-apple-darwin/libc/) + (OSX) +- * `i686-apple-ios` ++ * `i386-apple-ios` + * `x86_64-apple-ios` + * [`i686-unknown-linux-gnu`](https://doc.rust-lang.org/libc/i686-unknown-linux-gnu/libc/) + * [`x86_64-unknown-linux-gnu`](https://doc.rust-lang.org/libc/x86_64-unknown-linux-gnu/libc/) +diff --git third_party/rust/libc/appveyor.yml third_party/rust/libc/appveyor.yml +index a851bb87b6c3..b6c666c8b538 100644 +--- third_party/rust/libc/appveyor.yml ++++ third_party/rust/libc/appveyor.yml +@@ -7,7 +7,7 @@ environment: + - TARGET: x86_64-pc-windows-msvc + - TARGET: i686-pc-windows-msvc + install: +- - curl -sSf -o rustup-init.exe https://win.rustup.rs/ ++ - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe + - rustup-init.exe -y --default-host %TARGET% + - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin + - if defined MSYS2_BITS set PATH=%PATH%;C:\msys64\mingw%MSYS2_BITS%\bin +diff --git third_party/rust/libc/ci/android-accept-licenses.sh third_party/rust/libc/ci/android-accept-licenses.sh +new file mode 100755 +index 000000000000..8d8f60a5ec26 +--- /dev/null ++++ third_party/rust/libc/ci/android-accept-licenses.sh +@@ -0,0 +1,15 @@ ++#!/usr/bin/expect -f ++# ignore-license ++ ++set timeout 1800 ++set cmd [lindex $argv 0] ++set licenses [lindex $argv 1] ++ ++spawn {*}$cmd ++expect { ++ "Do you accept the license '*'*" { ++ exp_send "y\r" ++ exp_continue ++ } ++ eof ++} +diff --git third_party/rust/libc/ci/android-install-ndk.sh third_party/rust/libc/ci/android-install-ndk.sh +new file mode 100644 +index 000000000000..75bcd20f2f77 +--- /dev/null ++++ third_party/rust/libc/ci/android-install-ndk.sh +@@ -0,0 +1,36 @@ ++#!/bin/sh ++# Copyright 2016 The Rust Project Developers. See the COPYRIGHT ++# file at the top-level directory of this distribution and at ++# http://rust-lang.org/COPYRIGHT. ++# ++# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or ++# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license ++# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your ++# option. This file may not be copied, modified, or distributed ++# except according to those terms. ++ ++set -ex ++ ++curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip ++unzip -q android-ndk-r13b-linux-x86_64.zip ++ ++case "$1" in ++ aarch64) ++ arch=arm64 ++ ;; ++ ++ i686) ++ arch=x86 ++ ;; ++ ++ *) ++ arch=$1 ++ ;; ++esac; ++ ++android-ndk-r13b/build/tools/make_standalone_toolchain.py \ ++ --install-dir /android/ndk-$1 \ ++ --arch $arch \ ++ --api 24 ++ ++rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b +diff --git third_party/rust/libc/ci/android-install-sdk.sh third_party/rust/libc/ci/android-install-sdk.sh +new file mode 100644 +index 000000000000..d03b7623bf78 +--- /dev/null ++++ third_party/rust/libc/ci/android-install-sdk.sh +@@ -0,0 +1,57 @@ ++#!/bin/sh ++# Copyright 2016 The Rust Project Developers. See the COPYRIGHT ++# file at the top-level directory of this distribution and at ++# http://rust-lang.org/COPYRIGHT. ++# ++# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or ++# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license ++# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your ++# option. This file may not be copied, modified, or distributed ++# except according to those terms. ++ ++set -ex ++ ++# Prep the SDK and emulator ++# ++# Note that the update process requires that we accept a bunch of licenses, and ++# we can't just pipe `yes` into it for some reason, so we take the same strategy ++# located in https://github.com/appunite/docker by just wrapping it in a script ++# which apparently magically accepts the licenses. ++ ++mkdir sdk ++curl https://dl.google.com/android/repository/tools_r25.2.5-linux.zip -O ++unzip -d sdk tools_r25.2.5-linux.zip ++ ++filter="platform-tools,android-24" ++ ++case "$1" in ++ arm | armv7) ++ abi=armeabi-v7a ++ ;; ++ ++ aarch64) ++ abi=arm64-v8a ++ ;; ++ ++ i686) ++ abi=x86 ++ ;; ++ ++ x86_64) ++ abi=x86_64 ++ ;; ++ ++ *) ++ echo "invalid arch: $1" ++ exit 1 ++ ;; ++esac; ++ ++filter="$filter,sys-img-$abi-android-24" ++ ++./android-accept-licenses.sh "android - update sdk -a --no-ui --filter $filter" ++ ++echo "no" | android create avd \ ++ --name $1 \ ++ --target android-24 \ ++ --abi $abi +diff --git third_party/rust/libc/ci/android-sysimage.sh third_party/rust/libc/ci/android-sysimage.sh +new file mode 100644 +index 000000000000..9611dfeb0d52 +--- /dev/null ++++ third_party/rust/libc/ci/android-sysimage.sh +@@ -0,0 +1,52 @@ ++# Copyright 2017 The Rust Project Developers. See the COPYRIGHT ++# file at the top-level directory of this distribution and at ++# http://rust-lang.org/COPYRIGHT. ++# ++# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or ++# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license ++# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your ++# option. This file may not be copied, modified, or distributed ++# except according to those terms. ++ ++set -ex ++ ++URL=https://dl.google.com/android/repository/sys-img/android ++ ++main() { ++ local arch=$1 ++ local name=$2 ++ local dest=/system ++ local td=$(mktemp -d) ++ ++ apt-get install --no-install-recommends e2tools ++ ++ pushd $td ++ curl -O $URL/$name ++ unzip -q $name ++ ++ local system=$(find . -name system.img) ++ mkdir -p $dest/{bin,lib,lib64} ++ ++ # Extract android linker and libraries to /system ++ # This allows android executables to be run directly (or with qemu) ++ if [ $arch = "x86_64" -o $arch = "arm64" ]; then ++ e2cp -p $system:/bin/linker64 $dest/bin/ ++ e2cp -p $system:/lib64/libdl.so $dest/lib64/ ++ e2cp -p $system:/lib64/libc.so $dest/lib64/ ++ e2cp -p $system:/lib64/libm.so $dest/lib64/ ++ else ++ e2cp -p $system:/bin/linker $dest/bin/ ++ e2cp -p $system:/lib/libdl.so $dest/lib/ ++ e2cp -p $system:/lib/libc.so $dest/lib/ ++ e2cp -p $system:/lib/libm.so $dest/lib/ ++ fi ++ ++ # clean up ++ apt-get purge --auto-remove -y e2tools ++ ++ popd ++ ++ rm -rf $td ++} ++ ++main "${@}" +diff --git third_party/rust/libc/ci/docker/aarch64-linux-android/Dockerfile third_party/rust/libc/ci/docker/aarch64-linux-android/Dockerfile +new file mode 100644 +index 000000000000..7ad84926bf82 +--- /dev/null ++++ third_party/rust/libc/ci/docker/aarch64-linux-android/Dockerfile +@@ -0,0 +1,32 @@ ++FROM ubuntu:16.04 ++ ++RUN dpkg --add-architecture i386 && \ ++ apt-get update && \ ++ apt-get install -y --no-install-recommends \ ++ file \ ++ curl \ ++ ca-certificates \ ++ python \ ++ unzip \ ++ expect \ ++ openjdk-9-jre \ ++ libstdc++6:i386 \ ++ libpulse0 \ ++ gcc \ ++ libc6-dev ++ ++WORKDIR /android/ ++COPY android* /android/ ++ ++ENV ANDROID_ARCH=aarch64 ++ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools ++ ++RUN sh /android/android-install-ndk.sh $ANDROID_ARCH ++RUN sh /android/android-install-sdk.sh $ANDROID_ARCH ++RUN mv /root/.android /tmp ++RUN chmod 777 -R /tmp/.android ++RUN chmod 755 /android/sdk/tools/* /android/sdk/tools/qemu/linux-x86_64/* ++ ++ENV PATH=$PATH:/rust/bin \ ++ CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc \ ++ HOME=/tmp +diff --git third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile +index 1911fbd87970..054941416dfb 100644 +--- third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile ++++ third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile +@@ -11,24 +11,22 @@ RUN dpkg --add-architecture i386 && \ + expect \ + openjdk-9-jre \ + libstdc++6:i386 \ ++ libpulse0 \ + gcc \ + libc6-dev + + WORKDIR /android/ ++COPY android* /android/ + +-COPY install-ndk.sh /android/ +-RUN sh /android/install-ndk.sh ++ENV ANDROID_ARCH=arm ++ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools + +-ENV PATH=$PATH:/android/ndk-arm/bin:/android/sdk/tools:/android/sdk/platform-tools +- +-COPY install-sdk.sh accept-licenses.sh /android/ +-RUN sh /android/install-sdk.sh ++RUN sh /android/android-install-ndk.sh $ANDROID_ARCH ++RUN sh /android/android-install-sdk.sh $ANDROID_ARCH ++RUN mv /root/.android /tmp ++RUN chmod 777 -R /tmp/.android ++RUN chmod 755 /android/sdk/tools/* /android/sdk/tools/qemu/linux-x86_64/* + + ENV PATH=$PATH:/rust/bin \ + CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ +- ANDROID_EMULATOR_FORCE_32BIT=1 \ + HOME=/tmp +-RUN chmod 755 /android/sdk/tools/* +- +-RUN cp -r /root/.android /tmp +-RUN chmod 777 -R /tmp/.android +diff --git third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh +deleted file mode 100755 +index 8d8f60a5ec26..000000000000 +--- third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh ++++ /dev/null +@@ -1,15 +0,0 @@ +-#!/usr/bin/expect -f +-# ignore-license +- +-set timeout 1800 +-set cmd [lindex $argv 0] +-set licenses [lindex $argv 1] +- +-spawn {*}$cmd +-expect { +- "Do you accept the license '*'*" { +- exp_send "y\r" +- exp_continue +- } +- eof +-} +diff --git third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh +deleted file mode 100644 +index 566a3191848a..000000000000 +--- third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh ++++ /dev/null +@@ -1,21 +0,0 @@ +-#!/bin/sh +-# Copyright 2016 The Rust Project Developers. See the COPYRIGHT +-# file at the top-level directory of this distribution and at +-# http://rust-lang.org/COPYRIGHT. +-# +-# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +-# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +-# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +-# option. This file may not be copied, modified, or distributed +-# except according to those terms. +- +-set -ex +- +-curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip +-unzip -q android-ndk-r13b-linux-x86_64.zip +-android-ndk-r13b/build/tools/make_standalone_toolchain.py \ +- --install-dir /android/ndk-arm \ +- --arch arm \ +- --api 24 +- +-rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b +diff --git third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh +deleted file mode 100644 +index 3f20837fe061..000000000000 +--- third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh ++++ /dev/null +@@ -1,33 +0,0 @@ +-#!/bin/sh +-# Copyright 2016 The Rust Project Developers. See the COPYRIGHT +-# file at the top-level directory of this distribution and at +-# http://rust-lang.org/COPYRIGHT. +-# +-# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +-# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +-# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +-# option. This file may not be copied, modified, or distributed +-# except according to those terms. +- +-set -ex +- +-# Prep the SDK and emulator +-# +-# Note that the update process requires that we accept a bunch of licenses, and +-# we can't just pipe `yes` into it for some reason, so we take the same strategy +-# located in https://github.com/appunite/docker by just wrapping it in a script +-# which apparently magically accepts the licenses. +- +-mkdir sdk +-curl https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz | \ +- tar xzf - -C sdk --strip-components=1 +- +-filter="platform-tools,android-21" +-filter="$filter,sys-img-armeabi-v7a-android-21" +- +-./accept-licenses.sh "android - update sdk -a --no-ui --filter $filter" +- +-echo "no" | android create avd \ +- --name arm-21 \ +- --target android-21 \ +- --abi armeabi-v7a +diff --git third_party/rust/libc/ci/docker/i686-linux-android/Dockerfile third_party/rust/libc/ci/docker/i686-linux-android/Dockerfile +new file mode 100644 +index 000000000000..bee904379645 +--- /dev/null ++++ third_party/rust/libc/ci/docker/i686-linux-android/Dockerfile +@@ -0,0 +1,32 @@ ++FROM ubuntu:16.04 ++ ++RUN dpkg --add-architecture i386 && \ ++ apt-get update && \ ++ apt-get install -y --no-install-recommends \ ++ file \ ++ curl \ ++ ca-certificates \ ++ python \ ++ unzip \ ++ expect \ ++ openjdk-9-jre \ ++ libstdc++6:i386 \ ++ libpulse0 \ ++ gcc \ ++ libc6-dev ++ ++WORKDIR /android/ ++COPY android* /android/ ++ ++ENV ANDROID_ARCH=i686 ++ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools ++ ++RUN sh /android/android-install-ndk.sh $ANDROID_ARCH ++RUN sh /android/android-install-sdk.sh $ANDROID_ARCH ++RUN mv /root/.android /tmp ++RUN chmod 777 -R /tmp/.android ++RUN chmod 755 /android/sdk/tools/* /android/sdk/tools/qemu/linux-x86_64/* ++ ++ENV PATH=$PATH:/rust/bin \ ++ CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \ ++ HOME=/tmp +diff --git third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile +index 87459a1672bd..bdc2272a35dc 100644 +--- third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile ++++ third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile +@@ -1,8 +1,9 @@ + FROM ubuntu:16.10 + ++RUN dpkg --add-architecture i386 + RUN apt-get update + RUN apt-get install -y --no-install-recommends \ +- gcc make libc6-dev git curl ca-certificates ++ gcc-multilib make libc6-dev git curl ca-certificates libc6:i386 + # Below we're cross-compiling musl for i686 using the system compiler on an + # x86_64 system. This is an awkward thing to be doing and so we have to jump + # through a couple hoops to get musl to be happy. In particular: +diff --git third_party/rust/libc/ci/docker/x86_64-linux-android/Dockerfile third_party/rust/libc/ci/docker/x86_64-linux-android/Dockerfile +new file mode 100644 +index 000000000000..dfc0c83dae92 +--- /dev/null ++++ third_party/rust/libc/ci/docker/x86_64-linux-android/Dockerfile +@@ -0,0 +1,26 @@ ++FROM ubuntu:16.04 ++ ++RUN apt-get update && \ ++ apt-get install -y --no-install-recommends \ ++ ca-certificates \ ++ curl \ ++ gcc \ ++ libc-dev \ ++ python \ ++ unzip ++ ++WORKDIR /android/ ++ENV ANDROID_ARCH=x86_64 ++COPY android-install-ndk.sh /android/ ++RUN sh /android/android-install-ndk.sh $ANDROID_ARCH ++ ++# We do not run x86_64-linux-android tests on an android emulator. ++# See ci/android-sysimage.sh for informations about how tests are run. ++COPY android-sysimage.sh /android/ ++RUN bash /android/android-sysimage.sh x86_64 x86_64-21_r04.zip ++ ++ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \ ++ CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \ ++ CC_x86_64_linux_android=x86_64-linux-android-gcc \ ++ CXX_x86_64_linux_android=x86_64-linux-android-g++ \ ++ HOME=/tmp +diff --git third_party/rust/libc/ci/ios/deploy_and_run_on_ios_simulator.rs third_party/rust/libc/ci/ios/deploy_and_run_on_ios_simulator.rs +new file mode 100644 +index 000000000000..b14615036d02 +--- /dev/null ++++ third_party/rust/libc/ci/ios/deploy_and_run_on_ios_simulator.rs +@@ -0,0 +1,171 @@ ++// Copyright 2017 The Rust Project Developers. See the COPYRIGHT ++// file at the top-level directory of this distribution and at ++// http://rust-lang.org/COPYRIGHT. ++// ++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or ++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license ++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your ++// option. This file may not be copied, modified, or distributed ++// except according to those terms. ++ ++// This is a script to deploy and execute a binary on an iOS simulator. ++// The primary use of this is to be able to run unit tests on the simulator and ++// retrieve the results. ++// ++// To do this through Cargo instead, use Dinghy ++// (https://github.com/snipsco/dinghy): cargo dinghy install, then cargo dinghy ++// test. ++ ++use std::env; ++use std::fs::{self, File}; ++use std::io::Write; ++use std::path::Path; ++use std::process; ++use std::process::Command; ++ ++macro_rules! t { ++ ($e:expr) => (match $e { ++ Ok(e) => e, ++ Err(e) => panic!("{} failed with: {}", stringify!($e), e), ++ }) ++} ++ ++// Step one: Wrap as an app ++fn package_as_simulator_app(crate_name: &str, test_binary_path: &Path) { ++ println!("Packaging simulator app"); ++ drop(fs::remove_dir_all("ios_simulator_app")); ++ t!(fs::create_dir("ios_simulator_app")); ++ t!(fs::copy(test_binary_path, ++ Path::new("ios_simulator_app").join(crate_name))); ++ ++ let mut f = t!(File::create("ios_simulator_app/Info.plist")); ++ t!(f.write_all(format!(r#" ++ <?xml version="1.0" encoding="UTF-8"?> ++ <!DOCTYPE plist PUBLIC ++ "-//Apple//DTD PLIST 1.0//EN" ++ "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ++ <plist version="1.0"> ++ <dict> ++ <key>CFBundleExecutable</key> ++ <string>{}</string> ++ <key>CFBundleIdentifier</key> ++ <string>com.rust.unittests</string> ++ </dict> ++ </plist> ++ "#, crate_name).as_bytes())); ++} ++ ++// Step two: Start the iOS simulator ++fn start_simulator() { ++ println!("Looking for iOS simulator"); ++ let output = t!(Command::new("xcrun").arg("simctl").arg("list").output()); ++ assert!(output.status.success()); ++ let mut simulator_exists = false; ++ let mut simulator_booted = false; ++ let mut found_rust_sim = false; ++ let stdout = t!(String::from_utf8(output.stdout)); ++ for line in stdout.lines() { ++ if line.contains("rust_ios") { ++ if found_rust_sim { ++ panic!("Duplicate rust_ios simulators found. Please \ ++ double-check xcrun simctl list."); ++ } ++ simulator_exists = true; ++ simulator_booted = line.contains("(Booted)"); ++ found_rust_sim = true; ++ } ++ } ++ ++ if simulator_exists == false { ++ println!("Creating iOS simulator"); ++ Command::new("xcrun") ++ .arg("simctl") ++ .arg("create") ++ .arg("rust_ios") ++ .arg("com.apple.CoreSimulator.SimDeviceType.iPhone-SE") ++ .arg("com.apple.CoreSimulator.SimRuntime.iOS-10-2") ++ .check_status(); ++ } else if simulator_booted == true { ++ println!("Shutting down already-booted simulator"); ++ Command::new("xcrun") ++ .arg("simctl") ++ .arg("shutdown") ++ .arg("rust_ios") ++ .check_status(); ++ } ++ ++ println!("Starting iOS simulator"); ++ // We can't uninstall the app (if present) as that will hang if the ++ // simulator isn't completely booted; just erase the simulator instead. ++ Command::new("xcrun").arg("simctl").arg("erase").arg("rust_ios").check_status(); ++ Command::new("xcrun").arg("simctl").arg("boot").arg("rust_ios").check_status(); ++} ++ ++// Step three: Install the app ++fn install_app_to_simulator() { ++ println!("Installing app to simulator"); ++ Command::new("xcrun") ++ .arg("simctl") ++ .arg("install") ++ .arg("booted") ++ .arg("ios_simulator_app/") ++ .check_status(); ++} ++ ++// Step four: Run the app ++fn run_app_on_simulator() { ++ println!("Running app"); ++ let output = t!(Command::new("xcrun") ++ .arg("simctl") ++ .arg("launch") ++ .arg("--console") ++ .arg("booted") ++ .arg("com.rust.unittests") ++ .output()); ++ ++ println!("stdout --\n{}\n", String::from_utf8_lossy(&output.stdout)); ++ println!("stderr --\n{}\n", String::from_utf8_lossy(&output.stderr)); ++ ++ let stdout = String::from_utf8_lossy(&output.stdout); ++ let passed = stdout.lines() ++ .find(|l| l.contains("PASSED")) ++ .map(|l| l.contains("tests")) ++ .unwrap_or(false); ++ ++ println!("Shutting down simulator"); ++ Command::new("xcrun") ++ .arg("simctl") ++ .arg("shutdown") ++ .arg("rust_ios") ++ .check_status(); ++ if !passed { ++ panic!("tests didn't pass"); ++ } ++} ++ ++trait CheckStatus { ++ fn check_status(&mut self); ++} ++ ++impl CheckStatus for Command { ++ fn check_status(&mut self) { ++ println!("\trunning: {:?}", self); ++ assert!(t!(self.status()).success()); ++ } ++} ++ ++fn main() { ++ let args: Vec<String> = env::args().collect(); ++ if args.len() != 2 { ++ println!("Usage: {} <executable>", args[0]); ++ process::exit(-1); ++ } ++ ++ let test_binary_path = Path::new(&args[1]); ++ let crate_name = test_binary_path.file_name().unwrap(); ++ ++ package_as_simulator_app(crate_name.to_str().unwrap(), test_binary_path); ++ start_simulator(); ++ install_app_to_simulator(); ++ run_app_on_simulator(); ++} +diff --git third_party/rust/libc/ci/run-docker.sh third_party/rust/libc/ci/run-docker.sh +index a7702ae1dc51..e963078af8c1 100644 +--- third_party/rust/libc/ci/run-docker.sh ++++ third_party/rust/libc/ci/run-docker.sh +@@ -5,12 +5,17 @@ set -ex + + run() { + echo $1 +- docker build -t libc ci/docker/$1 ++ # use -f so we can use ci/ as build context ++ docker build -t libc -f ci/docker/$1/Dockerfile ci/ + mkdir -p target ++ if [ -w /dev/kvm ]; then ++ kvm="--volume /dev/kvm:/dev/kvm" ++ fi + docker run \ + --user `id -u`:`id -g` \ + --rm \ + --volume $HOME/.cargo:/cargo \ ++ $kvm \ + --env CARGO_HOME=/cargo \ + --volume `rustc --print sysroot`:/rust:ro \ + --volume `pwd`:/checkout:ro \ +@@ -18,8 +23,6 @@ run() { + --env CARGO_TARGET_DIR=/checkout/target \ + --workdir /checkout \ + --privileged \ +- --interactive \ +- --tty \ + libc \ + ci/run.sh $1 + } +diff --git third_party/rust/libc/ci/run.sh third_party/rust/libc/ci/run.sh +index 179fe7a88532..3ddc7b395476 100755 +--- third_party/rust/libc/ci/run.sh ++++ third_party/rust/libc/ci/run.sh +@@ -105,14 +105,36 @@ case "$TARGET" in + esac + + case "$TARGET" in +- arm-linux-androideabi) +- emulator @arm-21 -no-window & ++ # Android emulator for x86_64 does not work on travis (missing hardware ++ # acceleration). Tests are run on case *). See ci/android-sysimage.sh for ++ # informations about how tests are run. ++ arm-linux-androideabi | aarch64-linux-android | i686-linux-android) ++ # set SHELL so android can detect a 64bits system, see ++ # http://stackoverflow.com/a/41789144 ++ # https://issues.jenkins-ci.org/browse/JENKINS-26930?focusedCommentId=230791&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-230791 ++ export SHELL=/bin/dash ++ arch=$(echo $TARGET | cut -d- -f1) ++ accel="-no-accel" ++ if emulator -accel-check; then ++ accel="" ++ fi ++ emulator @$arch -no-window $accel & + adb wait-for-device +- adb push $CARGO_TARGET_DIR/$TARGET/debug/libc-test /data/libc-test +- adb shell /data/libc-test 2>&1 | tee /tmp/out ++ adb push $CARGO_TARGET_DIR/$TARGET/debug/libc-test /data/local/tmp/libc-test ++ adb shell /data/local/tmp/libc-test 2>&1 | tee /tmp/out + grep "^PASSED .* tests" /tmp/out + ;; + ++ i386-apple-ios) ++ rustc -O ./ci/ios/deploy_and_run_on_ios_simulator.rs ++ ./deploy_and_run_on_ios_simulator $CARGO_TARGET_DIR/$TARGET/debug/libc-test ++ ;; ++ ++ x86_64-apple-ios) ++ rustc -O ./ci/ios/deploy_and_run_on_ios_simulator.rs ++ ./deploy_and_run_on_ios_simulator $CARGO_TARGET_DIR/$TARGET/debug/libc-test ++ ;; ++ + arm-unknown-linux-gnueabihf) + qemu-arm -L /usr/arm-linux-gnueabihf $CARGO_TARGET_DIR/$TARGET/debug/libc-test + ;; +diff --git third_party/rust/libc/src/dox.rs third_party/rust/libc/src/dox.rs +index fbec3f2d4e69..41aac385f47b 100644 +--- third_party/rust/libc/src/dox.rs ++++ third_party/rust/libc/src/dox.rs +@@ -26,6 +26,9 @@ mod imp { + #[lang = "copy"] + pub trait Copy {} + ++ #[lang = "freeze"] ++ pub trait Freeze {} ++ + #[lang = "sync"] + pub trait Sync {} + impl<T> Sync for T {} +diff --git third_party/rust/libc/src/lib.rs third_party/rust/libc/src/lib.rs +index 5b80aca66c9d..c17a504787db 100644 +--- third_party/rust/libc/src/lib.rs ++++ third_party/rust/libc/src/lib.rs +@@ -243,6 +243,7 @@ extern { + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; ++ pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; +diff --git third_party/rust/libc/src/unix/bsd/apple/b64.rs third_party/rust/libc/src/unix/bsd/apple/b64.rs +index 327a4b63116b..3f83230805fe 100644 +--- third_party/rust/libc/src/unix/bsd/apple/b64.rs ++++ third_party/rust/libc/src/unix/bsd/apple/b64.rs +@@ -17,3 +17,5 @@ pub const __PTHREAD_RWLOCK_SIZE__: usize = 192; + + pub const TIOCTIMESTAMP: ::c_ulong = 0x40107459; + pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40107458; ++ ++pub const FIONREAD: ::c_ulong = 0x4004667f; +diff --git third_party/rust/libc/src/unix/bsd/apple/mod.rs third_party/rust/libc/src/unix/bsd/apple/mod.rs +index afd2610e1a0a..148188b10705 100644 +--- third_party/rust/libc/src/unix/bsd/apple/mod.rs ++++ third_party/rust/libc/src/unix/bsd/apple/mod.rs +@@ -665,6 +665,12 @@ pub const F_ALLOCATEALL: ::c_uint = 0x04; + pub const F_PEOFPOSMODE: ::c_int = 3; + pub const F_VOLPOSMODE: ::c_int = 4; + ++pub const AT_FDCWD: ::c_int = -2; ++pub const AT_EACCESS: ::c_int = 0x0010; ++pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x0020; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x0040; ++pub const AT_REMOVEDIR: ::c_int = 0x0080; ++ + pub const O_ACCMODE: ::c_int = 3; + + pub const TIOCMODG: ::c_ulong = 0x40047403; +@@ -731,6 +737,32 @@ pub const TIOCPTYGRANT: ::c_uint = 0x20007454; + pub const TIOCPTYGNAME: ::c_uint = 0x40807453; + pub const TIOCPTYUNLK: ::c_uint = 0x20007452; + ++pub const B0: speed_t = 0; ++pub const B50: speed_t = 50; ++pub const B75: speed_t = 75; ++pub const B110: speed_t = 110; ++pub const B134: speed_t = 134; ++pub const B150: speed_t = 150; ++pub const B200: speed_t = 200; ++pub const B300: speed_t = 300; ++pub const B600: speed_t = 600; ++pub const B1200: speed_t = 1200; ++pub const B1800: speed_t = 1800; ++pub const B2400: speed_t = 2400; ++pub const B4800: speed_t = 4800; ++pub const B9600: speed_t = 9600; ++pub const B19200: speed_t = 19200; ++pub const B38400: speed_t = 38400; ++pub const B7200: speed_t = 7200; ++pub const B14400: speed_t = 14400; ++pub const B28800: speed_t = 28800; ++pub const B57600: speed_t = 57600; ++pub const B76800: speed_t = 76800; ++pub const B115200: speed_t = 115200; ++pub const B230400: speed_t = 230400; ++pub const EXTA: speed_t = 19200; ++pub const EXTB: speed_t = 38400; ++ + pub const SIGTRAP: ::c_int = 5; + + pub const GLOB_APPEND : ::c_int = 0x0001; +@@ -819,13 +851,104 @@ pub const MINCORE_MODIFIED: ::c_int = 0x4; + pub const MINCORE_REFERENCED_OTHER: ::c_int = 0x8; + pub const MINCORE_MODIFIED_OTHER: ::c_int = 0x10; + +-pub const AF_UNIX: ::c_int = 1; ++pub const AF_UNSPEC: ::c_int = 0; ++pub const AF_LOCAL: ::c_int = 1; ++pub const AF_UNIX: ::c_int = AF_LOCAL; + pub const AF_INET: ::c_int = 2; ++pub const AF_IMPLINK: ::c_int = 3; ++pub const AF_PUP: ::c_int = 4; ++pub const AF_CHAOS: ::c_int = 5; ++pub const AF_NS: ::c_int = 6; ++pub const AF_ISO: ::c_int = 7; ++pub const AF_OSI: ::c_int = AF_ISO; ++pub const AF_ECMA: ::c_int = 8; ++pub const AF_DATAKIT: ::c_int = 9; ++pub const AF_CCITT: ::c_int = 10; ++pub const AF_SNA: ::c_int = 11; ++pub const AF_DECnet: ::c_int = 12; ++pub const AF_DLI: ::c_int = 13; ++pub const AF_LAT: ::c_int = 14; ++pub const AF_HYLINK: ::c_int = 15; ++pub const AF_APPLETALK: ::c_int = 16; ++pub const AF_ROUTE: ::c_int = 17; ++pub const AF_LINK: ::c_int = 18; ++pub const pseudo_AF_XTP: ::c_int = 19; ++pub const AF_COIP: ::c_int = 20; ++pub const AF_CNT: ::c_int = 21; ++pub const pseudo_AF_RTIP: ::c_int = 22; ++pub const AF_IPX: ::c_int = 23; ++pub const AF_SIP: ::c_int = 24; ++pub const pseudo_AF_PIP: ::c_int = 25; ++pub const AF_ISDN: ::c_int = 28; ++pub const AF_E164: ::c_int = AF_ISDN; ++pub const pseudo_AF_KEY: ::c_int = 29; + pub const AF_INET6: ::c_int = 30; ++pub const AF_NATM: ::c_int = 31; ++pub const AF_SYSTEM: ::c_int = 32; ++pub const AF_NETBIOS: ::c_int = 33; ++pub const AF_PPP: ::c_int = 34; ++pub const pseudo_AF_HDRCMPLT: ::c_int = 35; ++#[doc(hidden)] ++pub const AF_MAX: ::c_int = 40; ++ ++pub const PF_UNSPEC: ::c_int = AF_UNSPEC; ++pub const PF_LOCAL: ::c_int = AF_LOCAL; ++pub const PF_UNIX: ::c_int = PF_LOCAL; ++pub const PF_INET: ::c_int = AF_INET; ++pub const PF_IMPLINK: ::c_int = AF_IMPLINK; ++pub const PF_PUP: ::c_int = AF_PUP; ++pub const PF_CHAOS: ::c_int = AF_CHAOS; ++pub const PF_NS: ::c_int = AF_NS; ++pub const PF_ISO: ::c_int = AF_ISO; ++pub const PF_OSI: ::c_int = AF_ISO; ++pub const PF_ECMA: ::c_int = AF_ECMA; ++pub const PF_DATAKIT: ::c_int = AF_DATAKIT; ++pub const PF_CCITT: ::c_int = AF_CCITT; ++pub const PF_SNA: ::c_int = AF_SNA; ++pub const PF_DECnet: ::c_int = AF_DECnet; ++pub const PF_DLI: ::c_int = AF_DLI; ++pub const PF_LAT: ::c_int = AF_LAT; ++pub const PF_HYLINK: ::c_int = AF_HYLINK; ++pub const PF_APPLETALK: ::c_int = AF_APPLETALK; ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_LINK: ::c_int = AF_LINK; ++pub const PF_XTP: ::c_int = pseudo_AF_XTP; ++pub const PF_COIP: ::c_int = AF_COIP; ++pub const PF_CNT: ::c_int = AF_CNT; ++pub const PF_SIP: ::c_int = AF_SIP; ++pub const PF_IPX: ::c_int = AF_IPX; ++pub const PF_RTIP: ::c_int = pseudo_AF_RTIP; ++pub const PF_PIP: ::c_int = pseudo_AF_PIP; ++pub const PF_ISDN: ::c_int = AF_ISDN; ++pub const PF_KEY: ::c_int = pseudo_AF_KEY; ++pub const PF_INET6: ::c_int = AF_INET6; ++pub const PF_NATM: ::c_int = AF_NATM; ++pub const PF_SYSTEM: ::c_int = AF_SYSTEM; ++pub const PF_NETBIOS: ::c_int = AF_NETBIOS; ++pub const PF_PPP: ::c_int = AF_PPP; ++#[doc(hidden)] ++pub const PF_MAX: ::c_int = AF_MAX; ++ ++#[doc(hidden)] ++pub const NET_MAXID: ::c_int = AF_MAX; ++ ++pub const NET_RT_DUMP: ::c_int = 1; ++pub const NET_RT_FLAGS: ::c_int = 2; ++pub const NET_RT_IFLIST: ::c_int = 3; ++#[doc(hidden)] ++pub const NET_RT_MAXID: ::c_int = 10; ++ ++pub const SOMAXCONN: ::c_int = 128; ++ ++pub const SOCK_MAXADDRLEN: ::c_int = 255; ++ + pub const SOCK_STREAM: ::c_int = 1; + pub const SOCK_DGRAM: ::c_int = 2; + pub const SOCK_RAW: ::c_int = 3; ++pub const SOCK_RDM: ::c_int = 4; + pub const SOCK_SEQPACKET: ::c_int = 5; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -852,6 +975,10 @@ pub const SO_USELOOPBACK: ::c_int = 0x0040; + pub const SO_LINGER: ::c_int = 0x0080; + pub const SO_OOBINLINE: ::c_int = 0x0100; + pub const SO_REUSEPORT: ::c_int = 0x0200; ++pub const SO_TIMESTAMP: ::c_int = 0x0400; ++pub const SO_DONTTRUNC: ::c_int = 0x2000; ++pub const SO_WANTMORE: ::c_int = 0x4000; ++pub const SO_WANTOOBFLAG: ::c_int = 0x8000; + pub const SO_SNDBUF: ::c_int = 0x1001; + pub const SO_RCVBUF: ::c_int = 0x1002; + pub const SO_SNDLOWAT: ::c_int = 0x1003; +@@ -860,8 +987,31 @@ pub const SO_SNDTIMEO: ::c_int = 0x1005; + pub const SO_RCVTIMEO: ::c_int = 0x1006; + pub const SO_ERROR: ::c_int = 0x1007; + pub const SO_TYPE: ::c_int = 0x1008; ++pub const SO_NREAD: ::c_int = 0x1020; ++pub const SO_NKE: ::c_int = 0x1021; ++pub const SO_NOSIGPIPE: ::c_int = 0x1022; ++pub const SO_NOADDRERR: ::c_int = 0x1023; ++pub const SO_NWRITE: ::c_int = 0x1024; + ++pub const MSG_OOB: ::c_int = 0x1; + pub const MSG_PEEK: ::c_int = 0x2; ++pub const MSG_DONTROUTE: ::c_int = 0x4; ++pub const MSG_EOR: ::c_int = 0x8; ++pub const MSG_TRUNC: ::c_int = 0x10; ++pub const MSG_CTRUNC: ::c_int = 0x20; ++pub const MSG_WAITALL: ::c_int = 0x40; ++pub const MSG_DONTWAIT: ::c_int = 0x80; ++pub const MSG_EOF: ::c_int = 0x100; ++pub const MSG_FLUSH: ::c_int = 0x400; ++pub const MSG_HOLD: ::c_int = 0x800; ++pub const MSG_SEND: ::c_int = 0x1000; ++pub const MSG_HAVEMORE: ::c_int = 0x2000; ++pub const MSG_RCVMORE: ::c_int = 0x4000; ++// pub const MSG_COMPAT: ::c_int = 0x8000; ++ ++pub const SCM_RIGHTS: ::c_int = 0x01; ++pub const SCM_TIMESTAMP: ::c_int = 0x02; ++pub const SCM_CREDS: ::c_int = 0x03; + + pub const IFF_LOOPBACK: ::c_int = 0x8; + +@@ -888,15 +1038,6 @@ pub const MAP_JIT: ::c_int = 0x0800; + + pub const IPPROTO_RAW: ::c_int = 255; + +-pub const SO_NREAD: ::c_int = 0x1020; +-pub const SO_NKE: ::c_int = 0x1021; +-pub const SO_NOSIGPIPE: ::c_int = 0x1022; +-pub const SO_NOADDRERR: ::c_int = 0x1023; +-pub const SO_NWRITE: ::c_int = 0x1024; +-pub const SO_DONTTRUNC: ::c_int = 0x2000; +-pub const SO_WANTMORE: ::c_int = 0x4000; +-pub const SO_WANTOOBFLAG: ::c_int = 0x8000; +- + pub const _SC_ARG_MAX: ::c_int = 1; + pub const _SC_CHILD_MAX: ::c_int = 2; + pub const _SC_CLK_TCK: ::c_int = 3; +@@ -1375,6 +1516,13 @@ pub const P_ALL: idtype_t = 0; + pub const P_PID: idtype_t = 1; + pub const P_PGID: idtype_t = 2; + ++pub const XATTR_NOFOLLOW: ::c_int = 0x0001; ++pub const XATTR_CREATE: ::c_int = 0x0002; ++pub const XATTR_REPLACE: ::c_int = 0x0004; ++pub const XATTR_NOSECURITY: ::c_int = 0x0008; ++pub const XATTR_NODEFAULT: ::c_int = 0x0010; ++pub const XATTR_SHOWCOMPRESSION: ::c_int = 0x0020; ++ + f! { + pub fn WSTOPSIG(status: ::c_int) -> ::c_int { + status >> 8 +@@ -1411,6 +1559,8 @@ extern { + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; ++ + pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; + + pub fn getutxent() -> *mut utmpx; +@@ -1457,6 +1607,14 @@ extern { + pub fn pthread_setname_np(name: *const ::c_char) -> ::c_int; + pub fn pthread_get_stackaddr_np(thread: ::pthread_t) -> *mut ::c_void; + pub fn pthread_get_stacksize_np(thread: ::pthread_t) -> ::size_t; ++ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, ++ pshared: *mut ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, ++ pshared: *mut ::c_int) -> ::c_int; + pub fn __error() -> *mut ::c_int; + pub fn backtrace(buf: *mut *mut ::c_void, + sz: ::c_int) -> ::c_int; +@@ -1516,32 +1674,26 @@ extern { + pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int; + +- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int, ...) -> ::c_int; +- pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::c_int, flags: ::c_int) -> ::c_int; +- pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, flags: ::c_int) -> ::c_int; +- pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, +- owner: ::uid_t, group: ::gid_t, ++ pub fn getxattr(path: *const ::c_char, name: *const ::c_char, ++ value: *mut ::c_void, size: ::size_t, position: u32, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn fgetxattr(filedes: ::c_int, name: *const ::c_char, ++ value: *mut ::c_void, size: ::size_t, position: u32, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn setxattr(path: *const ::c_char, name: *const ::c_char, ++ value: *const ::c_void, size: ::size_t, position: u32, + flags: ::c_int) -> ::c_int; +- #[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")] +- pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut stat, flags: ::c_int) -> ::c_int; +- pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; +- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; +- pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char) +- -> ::c_int; +- pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, +- linkpath: *const ::c_char) -> ::c_int; +- pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int) -> ::c_int; ++ pub fn fsetxattr(filedes: ::c_int, name: *const ::c_char, ++ value: *const ::c_void, size: ::size_t, position: u32, ++ flags: ::c_int) -> ::c_int; ++ pub fn listxattr(path: *const ::c_char, list: *mut ::c_char, ++ size: ::size_t, flags: ::c_int) -> ::ssize_t; ++ pub fn flistxattr(filedes: ::c_int, list: *mut ::c_char, ++ size: ::size_t, flags: ::c_int) -> ::ssize_t; ++ pub fn removexattr(path: *const ::c_char, name: *const ::c_char, ++ flags: ::c_int) -> ::c_int; ++ pub fn fremovexattr(filedes: ::c_int, name: *const ::c_char, ++ flags: ::c_int) -> ::c_int; + + pub fn initgroups(user: *const ::c_char, basegroup: ::c_int) -> ::c_int; + +@@ -1549,7 +1701,9 @@ extern { + link_name = "waitid$UNIX2003")] + pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, + options: ::c_int) -> ::c_int; +- ++ pub fn brk(addr: *const ::c_void) -> *mut ::c_void; ++ pub fn sbrk(increment: ::c_int) -> *mut ::c_void; ++ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs +index 926cd20af831..e60825a5226a 100644 +--- third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs ++++ third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs +@@ -344,8 +344,34 @@ pub const NOTE_TRACK: ::uint32_t = 0x00000001; + pub const NOTE_TRACKERR: ::uint32_t = 0x00000002; + pub const NOTE_CHILD: ::uint32_t = 0x00000004; + +-pub const MSG_PEEK: ::c_int = 0x2; +-pub const MSG_NOSIGNAL: ::c_int = 0x400; ++pub const SO_SNDSPACE: ::c_int = 0x100a; ++pub const SO_CPUHINT: ::c_int = 0x1030; ++ ++pub const AF_BLUETOOTH: ::c_int = 33; ++pub const AF_MPLS: ::c_int = 34; ++pub const AF_IEEE80211: ::c_int = 35; ++pub const AF_MAX: ::c_int = 36; ++ ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_MAX: ::c_int = AF_MAX; ++ ++pub const NET_RT_DUMP: ::c_int = 1; ++pub const NET_RT_FLAGS: ::c_int = 2; ++pub const NET_RT_IFLIST: ::c_int = 3; ++pub const NET_RT_MAXID: ::c_int = 4; ++ ++pub const SOMAXOPT_SIZE: ::c_int = 65536; ++ ++#[doc(hidden)] ++pub const NET_MAXID: ::c_int = AF_MAX; ++ ++pub const MSG_UNUSED09: ::c_int = 0x00000200; ++pub const MSG_NOSIGNAL: ::c_int = 0x00000400; ++pub const MSG_SYNC: ::c_int = 0x00000800; ++pub const MSG_CMSG_CLOEXEC: ::c_int = 0x00001000; ++pub const MSG_FBLOCKING: ::c_int = 0x00010000; ++pub const MSG_FNONBLOCKING: ::c_int = 0x00020000; ++pub const MSG_FMASK: ::c_int = 0xFFFF0000; + + pub const EMPTY: ::c_short = 0; + pub const RUN_LVL: ::c_short = 1; +diff --git third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs +new file mode 100644 +index 000000000000..a2da8452c4d3 +--- /dev/null ++++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs +@@ -0,0 +1,30 @@ ++pub type c_long = i64; ++pub type c_ulong = u64; ++pub type time_t = i64; ++pub type suseconds_t = i64; ++ ++s! { ++ pub struct stat { ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_size: ::off_t, ++ pub st_blocks: ::blkcnt_t, ++ pub st_blksize: ::blksize_t, ++ pub st_flags: ::fflags_t, ++ pub st_gen: ::uint32_t, ++ pub st_lspare: ::int32_t, ++ pub st_birthtime: ::time_t, ++ pub st_birthtime_nsec: ::c_long, ++ } ++} +diff --git third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs +index 3c454859d6a2..fb113ded33aa 100644 +--- third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs ++++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs +@@ -11,6 +11,10 @@ pub type fsblkcnt_t = ::uint64_t; + pub type fsfilcnt_t = ::uint64_t; + pub type idtype_t = ::c_uint; + ++pub type key_t = ::c_long; ++pub type msglen_t = ::c_ulong; ++pub type msgqnum_t = ::c_ulong; ++ + s! { + pub struct utmpx { + pub ut_type: ::c_short, +@@ -47,6 +51,17 @@ s! { + pub d_name: [::c_char; 256], + } + ++ pub struct jail { ++ pub version: u32, ++ pub path: *mut ::c_char, ++ pub hostname: *mut ::c_char, ++ pub jailname: *mut ::c_char, ++ pub ip4s: ::c_uint, ++ pub ip6s: ::c_uint, ++ pub ip4: *mut ::in_addr, ++ pub ip6: *mut ::in6_addr, ++ } ++ + pub struct sigevent { + pub sigev_notify: ::c_int, + pub sigev_signo: ::c_int, +@@ -77,6 +92,41 @@ s! { + pub struct _sem { + data: [u32; 4], + } ++ ++ pub struct ipc_perm { ++ pub cuid: ::uid_t, ++ pub cgid: ::gid_t, ++ pub uid: ::uid_t, ++ pub gid: ::gid_t, ++ pub mode: ::mode_t, ++ pub seq: ::c_ushort, ++ pub key: ::key_t, ++ } ++ ++ pub struct msqid_ds { ++ pub msg_perm: ::ipc_perm, ++ __unused1: *mut ::c_void, ++ __unused2: *mut ::c_void, ++ pub msg_cbytes: ::msglen_t, ++ pub msg_qnum: ::msgqnum_t, ++ pub msg_qbytes: ::msglen_t, ++ pub msg_lspid: ::pid_t, ++ pub msg_lrpid: ::pid_t, ++ pub msg_stime: ::time_t, ++ pub msg_rtime: ::time_t, ++ pub msg_ctime: ::time_t, ++ } ++ ++ pub struct shmid_ds { ++ pub shm_perm: ::ipc_perm, ++ pub shm_segsz: ::size_t, ++ pub shm_lpid: ::pid_t, ++ pub shm_cpid: ::pid_t, ++ pub shm_nattch: ::c_int, ++ pub shm_atime: ::time_t, ++ pub shm_dtime: ::time_t, ++ pub shm_ctime: ::time_t, ++ } + } + + pub const SIGEV_THREAD_ID: ::c_int = 4; +@@ -322,11 +372,88 @@ pub const TIOCSIG: ::c_uint = 0x2004745f; + pub const TIOCM_DCD: ::c_int = 0x40; + pub const H4DISC: ::c_int = 0x7; + ++pub const JAIL_API_VERSION: u32 = 2; ++pub const JAIL_CREATE: ::c_int = 0x01; ++pub const JAIL_UPDATE: ::c_int = 0x02; ++pub const JAIL_ATTACH: ::c_int = 0x04; ++pub const JAIL_DYING: ::c_int = 0x08; ++pub const JAIL_SET_MASK: ::c_int = 0x0f; ++pub const JAIL_GET_MASK: ::c_int = 0x08; ++pub const JAIL_SYS_DISABLE: ::c_int = 0; ++pub const JAIL_SYS_NEW: ::c_int = 1; ++pub const JAIL_SYS_INHERIT: ::c_int = 2; ++ ++pub const SO_BINTIME: ::c_int = 0x2000; ++pub const SO_NO_OFFLOAD: ::c_int = 0x4000; ++pub const SO_NO_DDP: ::c_int = 0x8000; ++pub const SO_LABEL: ::c_int = 0x1009; ++pub const SO_PEERLABEL: ::c_int = 0x1010; ++pub const SO_LISTENQLIMIT: ::c_int = 0x1011; ++pub const SO_LISTENQLEN: ::c_int = 0x1012; ++pub const SO_LISTENINCQLEN: ::c_int = 0x1013; ++pub const SO_SETFIB: ::c_int = 0x1014; ++pub const SO_USER_COOKIE: ::c_int = 0x1015; ++pub const SO_PROTOCOL: ::c_int = 0x1016; ++pub const SO_PROTOTYPE: ::c_int = SO_PROTOCOL; ++pub const SO_VENDOR: ::c_int = 0x80000000; ++ ++pub const AF_SLOW: ::c_int = 33; ++pub const AF_SCLUSTER: ::c_int = 34; ++pub const AF_ARP: ::c_int = 35; ++pub const AF_BLUETOOTH: ::c_int = 36; ++pub const AF_IEEE80211: ::c_int = 37; ++pub const AF_INET_SDP: ::c_int = 40; ++pub const AF_INET6_SDP: ::c_int = 42; ++#[doc(hidden)] ++pub const AF_MAX: ::c_int = 42; ++ ++pub const IPPROTO_DIVERT: ::c_int = 258; ++ ++pub const PF_SLOW: ::c_int = AF_SLOW; ++pub const PF_SCLUSTER: ::c_int = AF_SCLUSTER; ++pub const PF_ARP: ::c_int = AF_ARP; ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_IEEE80211: ::c_int = AF_IEEE80211; ++pub const PF_INET_SDP: ::c_int = AF_INET_SDP; ++pub const PF_INET6_SDP: ::c_int = AF_INET6_SDP; ++#[doc(hidden)] ++pub const PF_MAX: ::c_int = AF_MAX; ++ ++pub const NET_RT_DUMP: ::c_int = 1; ++pub const NET_RT_FLAGS: ::c_int = 2; ++pub const NET_RT_IFLIST: ::c_int = 3; ++pub const NET_RT_IFMALIST: ::c_int = 4; ++pub const NET_RT_IFLISTL: ::c_int = 5; ++ ++// System V IPC ++pub const IPC_PRIVATE: ::key_t = 0; ++pub const IPC_CREAT: ::c_int = 0o1000; ++pub const IPC_EXCL: ::c_int = 0o2000; ++pub const IPC_NOWAIT: ::c_int = 0o4000; ++pub const IPC_RMID: ::c_int = 0; ++pub const IPC_SET: ::c_int = 1; ++pub const IPC_STAT: ::c_int = 2; ++pub const IPC_INFO: ::c_int = 3; ++pub const IPC_R : ::c_int = 0o400; ++pub const IPC_W : ::c_int = 0o200; ++pub const IPC_M : ::c_int = 0o10000; ++pub const MSG_NOERROR: ::c_int = 0o10000; ++pub const SHM_RDONLY: ::c_int = 0o10000; ++pub const SHM_RND: ::c_int = 0o20000; ++pub const SHM_R: ::c_int = 0o400; ++pub const SHM_W: ::c_int = 0o200; ++pub const SHM_LOCK: ::c_int = 11; ++pub const SHM_UNLOCK: ::c_int = 12; ++pub const SHM_STAT: ::c_int = 13; ++pub const SHM_INFO: ::c_int = 14; ++ + // The *_MAXID constants never should've been used outside of the + // FreeBSD base system. And with the exception of CTL_P1003_1B_MAXID, + // they were all removed in svn r262489. They remain here for backwards + // compatibility only, and are scheduled to be removed in libc 1.0.0. + #[doc(hidden)] ++pub const NET_MAXID: ::c_int = AF_MAX; ++#[doc(hidden)] + pub const CTL_MAXID: ::c_int = 10; + #[doc(hidden)] + pub const KERN_MAXID: ::c_int = 38; +@@ -337,7 +464,10 @@ pub const USER_MAXID: ::c_int = 21; + #[doc(hidden)] + pub const CTL_P1003_1B_MAXID: ::c_int = 26; + +-pub const MSG_PEEK: ::c_int = 0x2; ++pub const MSG_NOTIFICATION: ::c_int = 0x00002000; ++pub const MSG_NBIO: ::c_int = 0x00004000; ++pub const MSG_COMPAT: ::c_int = 0x00008000; ++pub const MSG_CMSG_CLOEXEC: ::c_int = 0x00040000; + pub const MSG_NOSIGNAL: ::c_int = 0x20000; + + pub const EMPTY: ::c_short = 0; +@@ -375,6 +505,9 @@ pub const P_PID: idtype_t = 0; + pub const P_PGID: idtype_t = 2; + pub const P_ALL: idtype_t = 7; + ++pub const B460800: ::speed_t = 460800; ++pub const B921600: ::speed_t = 921600; ++ + extern { + pub fn __error() -> *mut ::c_int; + +@@ -385,6 +518,14 @@ extern { + pub fn clock_gettime(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int; + pub fn clock_settime(clk_id: clockid_t, tp: *const ::timespec) -> ::c_int; + ++ pub fn jail(jail: *mut ::jail) -> ::c_int; ++ pub fn jail_attach(jid: ::c_int) -> ::c_int; ++ pub fn jail_remove(jid: ::c_int) -> ::c_int; ++ pub fn jail_get(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int) ++ -> ::c_int; ++ pub fn jail_set(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int) ++ -> ::c_int; ++ + pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, + len: ::off_t) -> ::c_int; + pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, +@@ -403,6 +544,21 @@ extern { + pub fn freelocale(loc: ::locale_t) -> ::c_int; + pub fn waitid(idtype: idtype_t, id: ::id_t, infop: *mut ::siginfo_t, + options: ::c_int) -> ::c_int; ++ ++ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t; ++ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int; ++ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, ++ shmflg: ::c_int) -> *mut ::c_void; ++ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int; ++ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, ++ buf: *mut ::shmid_ds) -> ::c_int; ++ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, ++ buf: *mut ::msqid_ds) -> ::c_int; ++ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int; ++ pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t, ++ msgtyp: ::c_long, msgflg: ::c_int) -> ::c_int; ++ pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t, ++ msgflg: ::c_int) -> ::c_int; + } + + cfg_if! { +@@ -412,6 +568,9 @@ cfg_if! { + } else if #[cfg(target_arch = "x86_64")] { + mod x86_64; + pub use self::x86_64::*; ++ } else if #[cfg(target_arch = "aarch64")] { ++ mod aarch64; ++ pub use self::aarch64::*; + } else { + // Unknown target_arch + } +diff --git third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs +index 875aa8f8ff10..4e635ffbfda0 100644 +--- third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs ++++ third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs +@@ -452,6 +452,11 @@ pub const F_SETFD: ::c_int = 2; + pub const F_GETFL: ::c_int = 3; + pub const F_SETFL: ::c_int = 4; + ++pub const AT_EACCESS: ::c_int = 0x100; ++pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x200; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; ++pub const AT_REMOVEDIR: ::c_int = 0x800; ++ + pub const SIGTRAP: ::c_int = 5; + + pub const GLOB_APPEND : ::c_int = 0x0001; +@@ -540,13 +545,100 @@ pub const MINCORE_REFERENCED_OTHER: ::c_int = 0x8; + pub const MINCORE_MODIFIED_OTHER: ::c_int = 0x10; + pub const MINCORE_SUPER: ::c_int = 0x20; + ++pub const AF_UNSPEC: ::c_int = 0; ++pub const AF_LOCAL: ::c_int = 1; ++pub const AF_UNIX: ::c_int = AF_LOCAL; + pub const AF_INET: ::c_int = 2; ++pub const AF_IMPLINK: ::c_int = 3; ++pub const AF_PUP: ::c_int = 4; ++pub const AF_CHAOS: ::c_int = 5; ++pub const AF_NETBIOS: ::c_int = 6; ++pub const AF_ISO: ::c_int = 7; ++pub const AF_OSI: ::c_int = AF_ISO; ++pub const AF_ECMA: ::c_int = 8; ++pub const AF_DATAKIT: ::c_int = 9; ++pub const AF_CCITT: ::c_int = 10; ++pub const AF_SNA: ::c_int = 11; ++pub const AF_DECnet: ::c_int = 12; ++pub const AF_DLI: ::c_int = 13; ++pub const AF_LAT: ::c_int = 14; ++pub const AF_HYLINK: ::c_int = 15; ++pub const AF_APPLETALK: ::c_int = 16; ++pub const AF_ROUTE: ::c_int = 17; ++pub const AF_LINK: ::c_int = 18; ++pub const pseudo_AF_XTP: ::c_int = 19; ++pub const AF_COIP: ::c_int = 20; ++pub const AF_CNT: ::c_int = 21; ++pub const pseudo_AF_RTIP: ::c_int = 22; ++pub const AF_IPX: ::c_int = 23; ++pub const AF_SIP: ::c_int = 24; ++pub const pseudo_AF_PIP: ::c_int = 25; ++pub const AF_ISDN: ::c_int = 26; ++pub const AF_E164: ::c_int = AF_ISDN; ++pub const pseudo_AF_KEY: ::c_int = 27; + pub const AF_INET6: ::c_int = 28; +-pub const AF_UNIX: ::c_int = 1; ++pub const AF_NATM: ::c_int = 29; ++pub const AF_ATM: ::c_int = 30; ++pub const pseudo_AF_HDRCMPLT: ::c_int = 31; ++pub const AF_NETGRAPH: ::c_int = 32; ++ ++pub const PF_UNSPEC: ::c_int = AF_UNSPEC; ++pub const PF_LOCAL: ::c_int = AF_LOCAL; ++pub const PF_UNIX: ::c_int = PF_LOCAL; ++pub const PF_INET: ::c_int = AF_INET; ++pub const PF_IMPLINK: ::c_int = AF_IMPLINK; ++pub const PF_PUP: ::c_int = AF_PUP; ++pub const PF_CHAOS: ::c_int = AF_CHAOS; ++pub const PF_NETBIOS: ::c_int = AF_NETBIOS; ++pub const PF_ISO: ::c_int = AF_ISO; ++pub const PF_OSI: ::c_int = AF_ISO; ++pub const PF_ECMA: ::c_int = AF_ECMA; ++pub const PF_DATAKIT: ::c_int = AF_DATAKIT; ++pub const PF_CCITT: ::c_int = AF_CCITT; ++pub const PF_SNA: ::c_int = AF_SNA; ++pub const PF_DECnet: ::c_int = AF_DECnet; ++pub const PF_DLI: ::c_int = AF_DLI; ++pub const PF_LAT: ::c_int = AF_LAT; ++pub const PF_HYLINK: ::c_int = AF_HYLINK; ++pub const PF_APPLETALK: ::c_int = AF_APPLETALK; ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_LINK: ::c_int = AF_LINK; ++pub const PF_XTP: ::c_int = pseudo_AF_XTP; ++pub const PF_COIP: ::c_int = AF_COIP; ++pub const PF_CNT: ::c_int = AF_CNT; ++pub const PF_SIP: ::c_int = AF_SIP; ++pub const PF_IPX: ::c_int = AF_IPX; ++pub const PF_RTIP: ::c_int = pseudo_AF_RTIP; ++pub const PF_PIP: ::c_int = pseudo_AF_PIP; ++pub const PF_ISDN: ::c_int = AF_ISDN; ++pub const PF_KEY: ::c_int = pseudo_AF_KEY; ++pub const PF_INET6: ::c_int = AF_INET6; ++pub const PF_NATM: ::c_int = AF_NATM; ++pub const PF_ATM: ::c_int = AF_ATM; ++pub const PF_NETGRAPH: ::c_int = AF_NETGRAPH; ++ ++pub const SOMAXCONN: ::c_int = 128; ++ ++pub const MSG_OOB: ::c_int = 0x00000001; ++pub const MSG_PEEK: ::c_int = 0x00000002; ++pub const MSG_DONTROUTE: ::c_int = 0x00000004; ++pub const MSG_EOR: ::c_int = 0x00000008; ++pub const MSG_TRUNC: ::c_int = 0x00000010; ++pub const MSG_CTRUNC: ::c_int = 0x00000020; ++pub const MSG_WAITALL: ::c_int = 0x00000040; ++pub const MSG_DONTWAIT: ::c_int = 0x00000080; ++pub const MSG_EOF: ::c_int = 0x00000100; ++ + pub const SOCK_STREAM: ::c_int = 1; + pub const SOCK_DGRAM: ::c_int = 2; + pub const SOCK_RAW: ::c_int = 3; ++pub const SOCK_RDM: ::c_int = 4; + pub const SOCK_SEQPACKET: ::c_int = 5; ++pub const SOCK_CLOEXEC: ::c_int = 0x10000000; ++pub const SOCK_NONBLOCK: ::c_int = 0x20000000; ++pub const SOCK_MAXADDRLEN: ::c_int = 255; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -572,6 +664,9 @@ pub const SO_USELOOPBACK: ::c_int = 0x0040; + pub const SO_LINGER: ::c_int = 0x0080; + pub const SO_OOBINLINE: ::c_int = 0x0100; + pub const SO_REUSEPORT: ::c_int = 0x0200; ++pub const SO_TIMESTAMP: ::c_int = 0x0400; ++pub const SO_NOSIGPIPE: ::c_int = 0x0800; ++pub const SO_ACCEPTFILTER: ::c_int = 0x1000; + pub const SO_SNDBUF: ::c_int = 0x1001; + pub const SO_RCVBUF: ::c_int = 0x1002; + pub const SO_SNDLOWAT: ::c_int = 0x1003; +@@ -751,9 +846,43 @@ pub const SLIPDISC: ::c_int = 0x4; + pub const PPPDISC: ::c_int = 0x5; + pub const NETGRAPHDISC: ::c_int = 0x6; + ++pub const B0: speed_t = 0; ++pub const B50: speed_t = 50; ++pub const B75: speed_t = 75; ++pub const B110: speed_t = 110; ++pub const B134: speed_t = 134; ++pub const B150: speed_t = 150; ++pub const B200: speed_t = 200; ++pub const B300: speed_t = 300; ++pub const B600: speed_t = 600; ++pub const B1200: speed_t = 1200; ++pub const B1800: speed_t = 1800; ++pub const B2400: speed_t = 2400; ++pub const B4800: speed_t = 4800; ++pub const B9600: speed_t = 9600; ++pub const B19200: speed_t = 19200; ++pub const B38400: speed_t = 38400; ++pub const B7200: speed_t = 7200; ++pub const B14400: speed_t = 14400; ++pub const B28800: speed_t = 28800; ++pub const B57600: speed_t = 57600; ++pub const B76800: speed_t = 76800; ++pub const B115200: speed_t = 115200; ++pub const B230400: speed_t = 230400; ++pub const EXTA: speed_t = 19200; ++pub const EXTB: speed_t = 38400; ++ + pub const SEM_FAILED: *mut sem_t = 0 as *mut sem_t; + ++pub const CRTSCTS: ::tcflag_t = 0x00030000; ++ ++pub const AT_FDCWD: ::c_int = -100; ++ + f! { ++ pub fn WIFCONTINUED(status: ::c_int) -> bool { ++ status == 0x13 ++ } ++ + pub fn WSTOPSIG(status: ::c_int) -> ::c_int { + status >> 8 + } +@@ -789,6 +918,7 @@ extern { + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; + pub fn getnameinfo(sa: *const ::sockaddr, + salen: ::socklen_t, + host: *mut ::c_char, +@@ -858,6 +988,8 @@ extern { + base: ::locale_t) -> ::locale_t; + pub fn uselocale(loc: ::locale_t) -> ::locale_t; + pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char; ++ pub fn accept4(s: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int; + pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char); + pub fn pthread_attr_get_np(tid: ::pthread_t, + attr: *mut ::pthread_attr_t) -> ::c_int; +@@ -866,38 +998,23 @@ extern { + pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t, + stackaddr: *mut *mut ::c_void, + stacksize: *mut ::size_t) -> ::c_int; ++ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, ++ pshared: *mut ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, ++ pshared: *mut ::c_int) -> ::c_int; + pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int; + +- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int, ...) -> ::c_int; +- pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::c_int, flags: ::c_int) -> ::c_int; +- pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, flags: ::c_int) -> ::c_int; +- pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, +- owner: ::uid_t, group: ::gid_t, +- flags: ::c_int) -> ::c_int; +- pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut stat, flags: ::c_int) -> ::c_int; +- pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; +- pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, dev: dev_t) -> ::c_int; +- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; +- pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char) +- -> ::c_int; +- pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, +- linkpath: *const ::c_char) -> ::c_int; +- pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ ++ pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t, dev: dev_t) -> ::c_int; ++ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t) -> ::c_int; + pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, + clock_id: *mut clockid_t) -> ::c_int; + pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, +@@ -907,6 +1024,12 @@ extern { + abstime: *const ::timespec) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; ++ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int; ++ pub fn ppoll(fds: *mut ::pollfd, ++ nfds: ::nfds_t, ++ timeout: *const ::timespec, ++ sigmask: *const sigset_t) -> ::c_int; ++ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/bsd/mod.rs third_party/rust/libc/src/unix/bsd/mod.rs +index 2f7024f8276a..deddca042dc4 100644 +--- third_party/rust/libc/src/unix/bsd/mod.rs ++++ third_party/rust/libc/src/unix/bsd/mod.rs +@@ -1,4 +1,4 @@ +-use dox::mem; ++use dox::{mem, Option}; + + pub type c_char = i8; + pub type wchar_t = i32; +@@ -242,6 +242,8 @@ pub const IXANY: ::tcflag_t = 0x00000800; + pub const IMAXBEL: ::tcflag_t = 0x00002000; + pub const OPOST: ::tcflag_t = 0x1; + pub const ONLCR: ::tcflag_t = 0x2; ++pub const OXTABS: ::tcflag_t = 0x4; ++pub const ONOEOT: ::tcflag_t = 0x8; + pub const CSIZE: ::tcflag_t = 0x00000300; + pub const CS5: ::tcflag_t = 0x00000000; + pub const CS6: ::tcflag_t = 0x00000100; +@@ -273,7 +275,9 @@ pub const WNOHANG: ::c_int = 0x00000001; + pub const WUNTRACED: ::c_int = 0x00000002; + + pub const RTLD_NOW: ::c_int = 0x2; ++pub const RTLD_NEXT: *mut ::c_void = -1isize as *mut ::c_void; + pub const RTLD_DEFAULT: *mut ::c_void = -2isize as *mut ::c_void; ++pub const RTLD_SELF: *mut ::c_void = -3isize as *mut ::c_void; + + pub const LOG_CRON: ::c_int = 9 << 3; + pub const LOG_AUTHPRIV: ::c_int = 10 << 3; +@@ -359,6 +363,77 @@ extern { + pub fn getpeereid(socket: ::c_int, + euid: *mut ::uid_t, + egid: *mut ::gid_t) -> ::c_int; ++ ++ #[cfg_attr(target_os = "macos", link_name = "glob$INODE64")] ++ #[cfg_attr(target_os = "netbsd", link_name = "__glob30")] ++ pub fn glob(pattern: *const ::c_char, ++ flags: ::c_int, ++ errfunc: Option<extern fn(epath: *const ::c_char, ++ errno: ::c_int) -> ::c_int>, ++ pglob: *mut ::glob_t) -> ::c_int; ++ #[cfg_attr(target_os = "netbsd", link_name = "__globfree30")] ++ pub fn globfree(pglob: *mut ::glob_t); ++ ++ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn shm_unlink(name: *const ::c_char) -> ::c_int; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), ++ link_name = "seekdir$INODE64")] ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "seekdir$INODE64$UNIX2003")] ++ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), ++ link_name = "telldir$INODE64")] ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "telldir$INODE64$UNIX2003")] ++ pub fn telldir(dirp: *mut ::DIR) -> ::c_long; ++ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "msync$UNIX2003")] ++ #[cfg_attr(target_os = "netbsd", link_name = "__msync13")] ++ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "recvfrom$UNIX2003")] ++ pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, ++ flags: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t) -> ::ssize_t; ++ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; ++ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; ++ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "bind$UNIX2003")] ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::socklen_t) -> ::c_int; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "writev$UNIX2003")] ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "readv$UNIX2003")] ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "sendmsg$UNIX2003")] ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86"), ++ link_name = "recvmsg$UNIX2003")] ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; ++ ++ pub fn sync(); + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs +index e8c82883d2bb..1471e6f3841e 100644 +--- third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs ++++ third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs +@@ -356,13 +356,71 @@ pub const MADV_WILLNEED : ::c_int = 3; + pub const MADV_DONTNEED : ::c_int = 4; + pub const MADV_FREE : ::c_int = 6; + +-pub const AF_UNIX: ::c_int = 1; ++pub const AF_UNSPEC: ::c_int = 0; ++pub const AF_LOCAL: ::c_int = 1; ++pub const AF_UNIX: ::c_int = AF_LOCAL; + pub const AF_INET: ::c_int = 2; ++pub const AF_IMPLINK: ::c_int = 3; ++pub const AF_PUP: ::c_int = 4; ++pub const AF_CHAOS: ::c_int = 5; ++pub const AF_NS: ::c_int = 6; ++pub const AF_ISO: ::c_int = 7; ++pub const AF_OSI: ::c_int = AF_ISO; ++pub const AF_DATAKIT: ::c_int = 9; ++pub const AF_CCITT: ::c_int = 10; ++pub const AF_SNA: ::c_int = 11; ++pub const AF_DECnet: ::c_int = 12; ++pub const AF_DLI: ::c_int = 13; ++pub const AF_LAT: ::c_int = 14; ++pub const AF_HYLINK: ::c_int = 15; ++pub const AF_APPLETALK: ::c_int = 16; ++pub const AF_LINK: ::c_int = 18; ++pub const pseudo_AF_XTP: ::c_int = 19; ++pub const AF_COIP: ::c_int = 20; ++pub const AF_CNT: ::c_int = 21; ++pub const pseudo_AF_RTIP: ::c_int = 22; ++pub const AF_IPX: ::c_int = 23; + pub const AF_INET6: ::c_int = 24; ++pub const pseudo_AF_PIP: ::c_int = 25; ++pub const AF_ISDN: ::c_int = 26; ++pub const AF_E164: ::c_int = AF_ISDN; ++pub const AF_NATM: ::c_int = 27; ++ ++pub const PF_UNSPEC: ::c_int = AF_UNSPEC; ++pub const PF_LOCAL: ::c_int = AF_LOCAL; ++pub const PF_UNIX: ::c_int = PF_LOCAL; ++pub const PF_INET: ::c_int = AF_INET; ++pub const PF_IMPLINK: ::c_int = AF_IMPLINK; ++pub const PF_PUP: ::c_int = AF_PUP; ++pub const PF_CHAOS: ::c_int = AF_CHAOS; ++pub const PF_NS: ::c_int = AF_NS; ++pub const PF_ISO: ::c_int = AF_ISO; ++pub const PF_OSI: ::c_int = AF_ISO; ++pub const PF_DATAKIT: ::c_int = AF_DATAKIT; ++pub const PF_CCITT: ::c_int = AF_CCITT; ++pub const PF_SNA: ::c_int = AF_SNA; ++pub const PF_DECnet: ::c_int = AF_DECnet; ++pub const PF_DLI: ::c_int = AF_DLI; ++pub const PF_LAT: ::c_int = AF_LAT; ++pub const PF_HYLINK: ::c_int = AF_HYLINK; ++pub const PF_APPLETALK: ::c_int = AF_APPLETALK; ++pub const PF_LINK: ::c_int = AF_LINK; ++pub const PF_XTP: ::c_int = pseudo_AF_XTP; ++pub const PF_COIP: ::c_int = AF_COIP; ++pub const PF_CNT: ::c_int = AF_CNT; ++pub const PF_IPX: ::c_int = AF_IPX; ++pub const PF_INET6: ::c_int = AF_INET6; ++pub const PF_RTIP: ::c_int = pseudo_AF_RTIP; ++pub const PF_PIP: ::c_int = pseudo_AF_PIP; ++pub const PF_ISDN: ::c_int = AF_ISDN; ++pub const PF_NATM: ::c_int = AF_NATM; ++ + pub const SOCK_STREAM: ::c_int = 1; + pub const SOCK_DGRAM: ::c_int = 2; + pub const SOCK_RAW: ::c_int = 3; + pub const SOCK_SEQPACKET: ::c_int = 5; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -392,8 +450,22 @@ pub const SO_RCVLOWAT: ::c_int = 0x1004; + pub const SO_ERROR: ::c_int = 0x1007; + pub const SO_TYPE: ::c_int = 0x1008; + ++pub const SOMAXCONN: ::c_int = 128; ++ ++pub const MSG_OOB: ::c_int = 0x1; + pub const MSG_PEEK: ::c_int = 0x2; ++pub const MSG_DONTROUTE: ::c_int = 0x4; ++pub const MSG_EOR: ::c_int = 0x8; ++pub const MSG_TRUNC: ::c_int = 0x10; ++pub const MSG_CTRUNC: ::c_int = 0x20; ++pub const MSG_WAITALL: ::c_int = 0x40; ++pub const MSG_DONTWAIT: ::c_int = 0x80; ++pub const MSG_BCAST: ::c_int = 0x100; ++pub const MSG_MCAST: ::c_int = 0x200; + pub const MSG_NOSIGNAL: ::c_int = 0x400; ++pub const MSG_CMSG_CLOEXEC: ::c_int = 0x800; ++ ++pub const SCM_RIGHTS: ::c_int = 0x01; + + pub const IFF_LOOPBACK: ::c_int = 0x8; + +@@ -449,6 +521,32 @@ pub const LOG_NFACILITIES: ::c_int = 24; + + pub const HW_NCPU: ::c_int = 3; + ++pub const B0: speed_t = 0; ++pub const B50: speed_t = 50; ++pub const B75: speed_t = 75; ++pub const B110: speed_t = 110; ++pub const B134: speed_t = 134; ++pub const B150: speed_t = 150; ++pub const B200: speed_t = 200; ++pub const B300: speed_t = 300; ++pub const B600: speed_t = 600; ++pub const B1200: speed_t = 1200; ++pub const B1800: speed_t = 1800; ++pub const B2400: speed_t = 2400; ++pub const B4800: speed_t = 4800; ++pub const B9600: speed_t = 9600; ++pub const B19200: speed_t = 19200; ++pub const B38400: speed_t = 38400; ++pub const B7200: speed_t = 7200; ++pub const B14400: speed_t = 14400; ++pub const B28800: speed_t = 28800; ++pub const B57600: speed_t = 57600; ++pub const B76800: speed_t = 76800; ++pub const B115200: speed_t = 115200; ++pub const B230400: speed_t = 230400; ++pub const EXTA: speed_t = 19200; ++pub const EXTB: speed_t = 38400; ++ + pub const SEM_FAILED: *mut sem_t = 0 as *mut sem_t; + + f! { +@@ -499,42 +597,20 @@ extern { + pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int; + +- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int, ...) -> ::c_int; +- pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::c_int, flags: ::c_int) -> ::c_int; +- pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, flags: ::c_int) -> ::c_int; +- pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, +- owner: ::uid_t, group: ::gid_t, +- flags: ::c_int) -> ::c_int; +- pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut stat, flags: ::c_int) -> ::c_int; +- pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; +- pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, dev: dev_t) -> ::c_int; +- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; +- pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char) +- -> ::c_int; +- pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, +- linkpath: *const ::c_char) -> ::c_int; +- pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; +- pub fn sem_timedwait(sem: *mut sem_t, +- abstime: *const ::timespec) -> ::c_int; +- pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, +- clock_id: clockid_t) -> ::c_int; ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ ++ pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t, dev: dev_t) -> ::c_int; ++ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t) -> ::c_int; ++ pub fn sem_timedwait(sem: *mut sem_t, ++ abstime: *const ::timespec) -> ::c_int; ++ pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, ++ clock_id: clockid_t) -> ::c_int; + pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; ++ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs +index 2f85513408b2..a02616792b07 100644 +--- third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs ++++ third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs +@@ -246,6 +246,12 @@ s! { + } + } + ++pub const AT_FDCWD: ::c_int = -100; ++pub const AT_EACCESS: ::c_int = 0x100; ++pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x200; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; ++pub const AT_REMOVEDIR: ::c_int = 0x800; ++ + pub const LC_COLLATE_MASK: ::c_int = (1 << ::LC_COLLATE); + pub const LC_CTYPE_MASK: ::c_int = (1 << ::LC_CTYPE); + pub const LC_MONETARY_MASK: ::c_int = (1 << ::LC_MONETARY); +@@ -291,8 +297,50 @@ pub const F_MAXFD: ::c_int = 11; + pub const IPV6_JOIN_GROUP: ::c_int = 12; + pub const IPV6_LEAVE_GROUP: ::c_int = 13; + ++pub const SOCK_CONN_DGRAM: ::c_int = 6; ++pub const SOCK_DCCP: ::c_int = SOCK_CONN_DGRAM; ++pub const SOCK_NOSIGPIPE: ::c_int = 0x40000000; ++pub const SOCK_FLAGS_MASK: ::c_int = 0xf0000000; ++ + pub const SO_SNDTIMEO: ::c_int = 0x100b; + pub const SO_RCVTIMEO: ::c_int = 0x100c; ++pub const SO_ACCEPTFILTER: ::c_int = 0x1000; ++pub const SO_TIMESTAMP: ::c_int = 0x2000; ++pub const SO_OVERFLOWED: ::c_int = 0x1009; ++pub const SO_NOHEADER: ::c_int = 0x100a; ++ ++pub const AF_OROUTE: ::c_int = 17; ++pub const AF_ARP: ::c_int = 28; ++pub const pseudo_AF_KEY: ::c_int = 29; ++pub const pseudo_AF_HDRCMPLT: ::c_int = 30; ++pub const AF_BLUETOOTH: ::c_int = 31; ++pub const AF_IEEE80211: ::c_int = 32; ++pub const AF_MPLS: ::c_int = 33; ++pub const AF_ROUTE: ::c_int = 34; ++pub const AF_MAX: ::c_int = 35; ++ ++pub const NET_MAXID: ::c_int = AF_MAX; ++pub const NET_RT_DUMP: ::c_int = 1; ++pub const NET_RT_FLAGS: ::c_int = 2; ++pub const NET_RT_OOIFLIST: ::c_int = 3; ++pub const NET_RT_OIFLIST: ::c_int = 4; ++pub const NET_RT_IFLIST: ::c_int = 5; ++pub const NET_RT_MAXID: ::c_int = 6; ++ ++pub const PF_OROUTE: ::c_int = AF_OROUTE; ++pub const PF_ARP: ::c_int = AF_ARP; ++pub const PF_KEY: ::c_int = pseudo_AF_KEY; ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_MPLS: ::c_int = AF_MPLS; ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_MAX: ::c_int = AF_MAX; ++ ++pub const MSG_NBIO: ::c_int = 0x1000; ++pub const MSG_WAITFORONE: ::c_int = 0x2000; ++pub const MSG_NOTIFICATION: ::c_int = 0x4000; ++ ++pub const SCM_TIMESTAMP: ::c_int = 0x08; ++pub const SCM_CREDS: ::c_int = 0x10; + + pub const O_DSYNC : ::c_int = 0x10000; + +@@ -593,6 +641,18 @@ pub const P_ALL: idtype_t = 0; + pub const P_PID: idtype_t = 1; + pub const P_PGID: idtype_t = 4; + ++pub const B460800: ::speed_t = 460800; ++pub const B921600: ::speed_t = 921600; ++ ++// dirfd() is a macro on netbsd to access ++// the first field of the struct where dirp points to: ++// http://cvsweb.netbsd.org/bsdweb.cgi/src/include/dirent.h?rev=1.36 ++f! { ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int { ++ unsafe { *(dirp as *const ::c_int) } ++ } ++} ++ + extern { + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; +@@ -668,6 +728,8 @@ extern { + pub fn newlocale(mask: ::c_int, + locale: *const ::c_char, + base: ::locale_t) -> ::locale_t; ++ #[link_name = "__settimeofday50"] ++ pub fn settimeofday(tv: *const ::timeval, tz: *const ::c_void) -> ::c_int; + } + + mod other; +diff --git third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs +index 9d4925083318..76e458c4757e 100644 +--- third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs ++++ third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs +@@ -157,14 +157,64 @@ pub const ELAST : ::c_int = 91; + + pub const F_DUPFD_CLOEXEC : ::c_int = 10; + ++pub const AT_FDCWD: ::c_int = -100; ++pub const AT_EACCESS: ::c_int = 0x01; ++pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x02; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x04; ++pub const AT_REMOVEDIR: ::c_int = 0x08; ++ + pub const RLIM_NLIMITS: ::c_int = 9; + + pub const SO_SNDTIMEO: ::c_int = 0x1005; + pub const SO_RCVTIMEO: ::c_int = 0x1006; ++pub const SO_BINDANY: ::c_int = 0x1000; ++pub const SO_NETPROC: ::c_int = 0x1020; ++pub const SO_RTABLE: ::c_int = 0x1021; ++pub const SO_PEERCRED: ::c_int = 0x1022; ++pub const SO_SPLICE: ::c_int = 0x1023; ++ ++pub const AF_ECMA: ::c_int = 8; ++pub const AF_ROUTE: ::c_int = 17; ++pub const AF_ENCAP: ::c_int = 28; ++pub const AF_SIP: ::c_int = 29; ++pub const AF_KEY: ::c_int = 30; ++pub const pseudo_AF_HDRCMPLT: ::c_int = 31; ++pub const AF_BLUETOOTH: ::c_int = 32; ++pub const AF_MPLS: ::c_int = 33; ++pub const pseudo_AF_PFLOW: ::c_int = 34; ++pub const pseudo_AF_PIPEX: ::c_int = 35; ++#[doc(hidden)] ++pub const AF_MAX: ::c_int = 36; ++ ++#[doc(hidden)] ++pub const NET_MAXID: ::c_int = AF_MAX; ++pub const NET_RT_DUMP: ::c_int = 1; ++pub const NET_RT_FLAGS: ::c_int = 2; ++pub const NET_RT_IFLIST: ::c_int = 3; ++pub const NET_RT_STATS: ::c_int = 4; ++pub const NET_RT_TABLE: ::c_int = 5; ++pub const NET_RT_IFNAMES: ::c_int = 6; ++#[doc(hidden)] ++pub const NET_RT_MAXID: ::c_int = 7; + + pub const IPV6_JOIN_GROUP: ::c_int = 12; + pub const IPV6_LEAVE_GROUP: ::c_int = 13; + ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_ECMA: ::c_int = AF_ECMA; ++pub const PF_ENCAP: ::c_int = AF_ENCAP; ++pub const PF_SIP: ::c_int = AF_SIP; ++pub const PF_KEY: ::c_int = AF_KEY; ++pub const PF_BPF: ::c_int = pseudo_AF_HDRCMPLT; ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_MPLS: ::c_int = AF_MPLS; ++pub const PF_PFLOW: ::c_int = pseudo_AF_PFLOW; ++pub const PF_PIPEX: ::c_int = pseudo_AF_PIPEX; ++#[doc(hidden)] ++pub const PF_MAX: ::c_int = AF_MAX; ++ ++pub const SCM_TIMESTAMP: ::c_int = 0x04; ++ + pub const O_DSYNC : ::c_int = 128; + + pub const MAP_RENAME : ::c_int = 0x0000; +@@ -407,6 +457,7 @@ pub const KI_MAXLOGNAME: ::c_int = 32; + pub const KI_EMULNAMELEN: ::c_int = 8; + + extern { ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; + pub fn getnameinfo(sa: *const ::sockaddr, + salen: ::socklen_t, + host: *mut ::c_char, +diff --git third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs +index b7fed64ede5b..8b36ee5ce6bd 100644 +--- third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs ++++ third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs +@@ -26,3 +26,8 @@ s! { + pub int_n_sign_posn: ::c_char, + } + } ++ ++extern { ++ pub fn accept4(s: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int; ++} +diff --git third_party/rust/libc/src/unix/haiku/mod.rs third_party/rust/libc/src/unix/haiku/mod.rs +index d62a31ed2d19..e90aa306fddc 100644 +--- third_party/rust/libc/src/unix/haiku/mod.rs ++++ third_party/rust/libc/src/unix/haiku/mod.rs +@@ -1,4 +1,4 @@ +-use dox::mem; ++use dox::{mem, Option}; + + pub type rlim_t = ::uintptr_t; + pub type sa_family_t = u8; +@@ -536,6 +536,8 @@ pub const AF_UNIX: ::c_int = 9; + pub const AF_INET: ::c_int = 1; + pub const AF_INET6: ::c_int = 6; + pub const SOCK_RAW: ::c_int = 3; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -747,6 +749,7 @@ extern { + pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; + pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) + -> ::c_int; ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; + pub fn getnameinfo(sa: *const ::sockaddr, + salen: ::socklen_t, + host: *mut ::c_char, +@@ -758,6 +761,50 @@ extern { + abstime: *const ::timespec) -> ::c_int; + pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, + options: ::c_int) -> ::c_int; ++ ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ pub fn glob(pattern: *const ::c_char, ++ flags: ::c_int, ++ errfunc: Option<extern fn(epath: *const ::c_char, ++ errno: ::c_int) -> ::c_int>, ++ pglob: *mut ::glob_t) -> ::c_int; ++ pub fn globfree(pglob: *mut ::glob_t); ++ ++ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn shm_unlink(name: *const ::c_char) -> ::c_int; ++ ++ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); ++ ++ pub fn telldir(dirp: *mut ::DIR) -> ::c_long; ++ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; ++ ++ pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, ++ flags: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t) -> ::ssize_t; ++ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; ++ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; ++ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::socklen_t) -> ::c_int; ++ ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/mod.rs third_party/rust/libc/src/unix/mod.rs +index 427553d13ebf..14bf9c5393e2 100644 +--- third_party/rust/libc/src/unix/mod.rs ++++ third_party/rust/libc/src/unix/mod.rs +@@ -124,6 +124,20 @@ s! { + // Actually a union of an int and a void* + pub sival_ptr: *mut ::c_void + } ++ ++ // <sys/time.h> ++ pub struct itimerval { ++ pub it_interval: ::timeval, ++ pub it_value: ::timeval, ++ } ++ ++ // <sys/times.h> ++ pub struct tms { ++ pub tms_utime: ::clock_t, ++ pub tms_stime: ::clock_t, ++ pub tms_cutime: ::clock_t, ++ pub tms_cstime: ::clock_t, ++ } + } + + pub const SIG_DFL: sighandler_t = 0 as sighandler_t; +@@ -242,6 +256,7 @@ cfg_if! { + #[link(name = "c")] + #[link(name = "m")] + #[link(name = "rt")] ++ #[link(name = "pthread")] + extern {} + } + } +@@ -275,10 +290,6 @@ extern { + pub fn connect(socket: ::c_int, address: *const sockaddr, + len: socklen_t) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "bind$UNIX2003")] +- pub fn bind(socket: ::c_int, address: *const sockaddr, +- address_len: socklen_t) -> ::c_int; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), + link_name = "listen$UNIX2003")] + pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +@@ -350,8 +361,12 @@ extern { + link_name = "opendir$INODE64$UNIX2003")] + #[cfg_attr(target_os = "netbsd", link_name = "__opendir30")] + pub fn opendir(dirname: *const c_char) -> *mut ::DIR; ++ #[cfg_attr(target_os = "macos", link_name = "readdir$INODE64")] ++ #[cfg_attr(target_os = "netbsd", link_name = "__readdir30")] ++ pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent; + #[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")] + #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")] ++ #[cfg_attr(target_os = "solaris", link_name = "__posix_readdir_r")] + pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent, + result: *mut *mut ::dirent) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +@@ -363,6 +378,36 @@ extern { + link_name = "rewinddir$INODE64$UNIX2003")] + pub fn rewinddir(dirp: *mut ::DIR); + ++ pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, ++ flags: ::c_int, ...) -> ::c_int; ++ pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::c_int, flags: ::c_int) -> ::c_int; ++ pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t, flags: ::c_int) -> ::c_int; ++ pub fn fchown(fd: ::c_int, ++ owner: ::uid_t, ++ group: ::gid_t) -> ::c_int; ++ pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, ++ owner: ::uid_t, group: ::gid_t, ++ flags: ::c_int) -> ::c_int; ++ #[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")] ++ pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, ++ buf: *mut stat, flags: ::c_int) -> ::c_int; ++ pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, ++ newdirfd: ::c_int, newpath: *const ::c_char, ++ flags: ::c_int) -> ::c_int; ++ pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t) -> ::c_int; ++ pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, ++ buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; ++ pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, ++ newdirfd: ::c_int, newpath: *const ::c_char) ++ -> ::c_int; ++ pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, ++ linkpath: *const ::c_char) -> ::c_int; ++ pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, ++ flags: ::c_int) -> ::c_int; ++ + pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int; + pub fn alarm(seconds: ::c_uint) -> ::c_uint; + pub fn chdir(dir: *const c_char) -> ::c_int; +@@ -374,7 +419,9 @@ extern { + pub fn lchown(path: *const c_char, uid: uid_t, + gid: gid_t) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "close$UNIX2003")] ++ link_name = "close$NOCANCEL$UNIX2003")] ++ #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), ++ link_name = "close$NOCANCEL")] + pub fn close(fd: ::c_int) -> ::c_int; + pub fn dup(fd: ::c_int) -> ::c_int; + pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int; +@@ -425,6 +472,7 @@ extern { + pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) + -> ::ssize_t; + pub fn rmdir(path: *const c_char) -> ::c_int; ++ pub fn seteuid(uid: uid_t) -> ::c_int; + pub fn setgid(gid: gid_t) -> ::c_int; + pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int; + pub fn setsid() -> pid_t; +@@ -535,6 +583,8 @@ extern { + #[cfg_attr(target_os = "netbsd", link_name = "__gettimeofday50")] + pub fn gettimeofday(tp: *mut ::timeval, + tz: *mut ::c_void) -> ::c_int; ++ #[cfg_attr(target_os = "netbsd", link_name = "__times13")] ++ pub fn times(buf: *mut ::tms) -> ::clock_t; + + pub fn pthread_self() -> ::pthread_t; + pub fn pthread_create(native: *mut ::pthread_t, +@@ -545,6 +595,10 @@ extern { + link_name = "pthread_join$UNIX2003")] + pub fn pthread_join(native: ::pthread_t, + value: *mut *mut ::c_void) -> ::c_int; ++ pub fn pthread_atfork(prepare: Option<unsafe extern fn()>, ++ parent: Option<unsafe extern fn()>, ++ child: Option<unsafe extern fn()>) -> ::c_int; ++ pub fn pthread_exit(value: *mut ::c_void); + pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int; + pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int; + pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, +@@ -638,6 +692,7 @@ extern { + oss: *mut stack_t) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch ="x86"), + link_name = "sigwait$UNIX2003")] ++ #[cfg_attr(target_os = "solaris", link_name = "__posix_sigwait")] + pub fn sigwait(set: *const sigset_t, + sig: *mut ::c_int) -> ::c_int; + +@@ -658,6 +713,14 @@ extern { + res: *mut *mut addrinfo) -> ::c_int; + pub fn freeaddrinfo(res: *mut addrinfo); + pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char; ++ #[cfg_attr(any( ++ all(target_os = "linux", not(target_env = "musl")), ++ target_os = "freebsd", ++ target_os = "dragonfly"), ++ link_name = "__res_init")] ++ #[cfg_attr(any(target_os = "macos", target_os = "ios"), ++ link_name = "res_9_init")] ++ pub fn res_init() -> ::c_int; + + #[cfg_attr(target_os = "netbsd", link_name = "__gmtime_r50")] + pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm; +@@ -669,22 +732,14 @@ extern { + pub fn mktime(tm: *mut tm) -> time_t; + #[cfg_attr(target_os = "netbsd", link_name = "__time50")] + pub fn time(time: *mut time_t) -> time_t; ++ #[cfg_attr(target_os = "netbsd", link_name = "__gmtime50")] ++ pub fn gmtime(time_p: *const time_t) -> *mut tm; + #[cfg_attr(target_os = "netbsd", link_name = "__locatime50")] +- pub fn localtime(time: *const time_t) -> *mut tm; ++ pub fn localtime(time_p: *const time_t) -> *mut tm; + + #[cfg_attr(target_os = "netbsd", link_name = "__mknod50")] + pub fn mknod(pathname: *const ::c_char, mode: ::mode_t, + dev: ::dev_t) -> ::c_int; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "writev$UNIX2003")] +- pub fn writev(fd: ::c_int, +- iov: *const ::iovec, +- iovcnt: ::c_int) -> ::ssize_t; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "readv$UNIX2003")] +- pub fn readv(fd: ::c_int, +- iov: *const ::iovec, +- iovcnt: ::c_int) -> ::ssize_t; + pub fn uname(buf: *mut ::utsname) -> ::c_int; + pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int; + pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int; +@@ -705,14 +760,6 @@ extern { + #[cfg_attr(target_os = "netbsd", link_name = "__putenv50")] + pub fn putenv(string: *mut c_char) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "sendmsg$UNIX2003")] +- pub fn sendmsg(fd: ::c_int, +- msg: *const msghdr, +- flags: ::c_int) -> ::ssize_t; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "recvmsg$UNIX2003")] +- pub fn recvmsg(fd: ::c_int, msg: *mut msghdr, flags: ::c_int) -> ::ssize_t; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), + link_name = "poll$UNIX2003")] + pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), +@@ -743,58 +790,14 @@ extern { + pshared: ::c_int, + value: ::c_uint) + -> ::c_int; +-} +- +-// TODO: get rid of this cfg(not(...)) +-#[cfg(not(target_os = "android"))] // " if " -- appease style checker +-extern { +- #[cfg_attr(target_os = "macos", link_name = "glob$INODE64")] +- #[cfg_attr(target_os = "netbsd", link_name = "__glob30")] +- pub fn glob(pattern: *const c_char, +- flags: ::c_int, +- errfunc: Option<extern fn(epath: *const c_char, +- errno: ::c_int) -> ::c_int>, +- pglob: *mut glob_t) -> ::c_int; +- #[cfg_attr(target_os = "netbsd", link_name = "__globfree30")] +- pub fn globfree(pglob: *mut glob_t); +- +- pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) +- -> ::c_int; +- +- pub fn shm_unlink(name: *const c_char) -> ::c_int; +- +- #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), +- link_name = "seekdir$INODE64")] +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "seekdir$INODE64$UNIX2003")] +- pub fn seekdir(dirp: *mut ::DIR, loc: c_long); +- +- #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), +- link_name = "telldir$INODE64")] +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "telldir$INODE64$UNIX2003")] +- pub fn telldir(dirp: *mut ::DIR) -> c_long; ++ pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int; ++ pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int; + +- pub fn getsid(pid: pid_t) -> pid_t; +- pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) +- -> ::c_int; + pub fn readlink(path: *const c_char, + buf: *mut c_char, + bufsz: ::size_t) + -> ::ssize_t; + +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "msync$UNIX2003")] +- #[cfg_attr(target_os = "netbsd", link_name = "__msync13")] +- pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; +- pub fn sysconf(name: ::c_int) -> c_long; +- #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +- link_name = "recvfrom$UNIX2003")] +- pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, +- flags: ::c_int, addr: *mut sockaddr, +- addrlen: *mut socklen_t) -> ::ssize_t; +- pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int; +- + #[cfg_attr(target_os = "netbsd", link_name = "__sigemptyset14")] + pub fn sigemptyset(set: *mut sigset_t) -> ::c_int; + #[cfg_attr(target_os = "netbsd", link_name = "__sigaddset14")] +@@ -805,6 +808,24 @@ extern { + pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int; + #[cfg_attr(target_os = "netbsd", link_name = "__sigismember14")] + pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int; ++ ++ #[cfg_attr(target_os = "netbsd", link_name = "__sigprocmask14")] ++ pub fn sigprocmask(how: ::c_int, ++ set: *const sigset_t, ++ oldset: *mut sigset_t) ++ -> ::c_int; ++ #[cfg_attr(target_os = "netbsd", link_name = "__sigpending14")] ++ pub fn sigpending(set: *mut sigset_t) -> ::c_int; ++ ++ #[cfg_attr(target_os = "netbsd", link_name = "__timegm50")] ++ pub fn timegm(tm: *mut ::tm) -> time_t; ++ ++ pub fn getsid(pid: pid_t) -> pid_t; ++ ++ pub fn sysconf(name: ::c_int) -> ::c_long; ++ ++ pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int; ++ + #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"), + link_name = "pselect$1050")] + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), +@@ -820,17 +841,15 @@ extern { + offset: ::off_t, + whence: ::c_int) -> ::c_int; + pub fn ftello(stream: *mut ::FILE) -> ::off_t; +- #[cfg_attr(target_os = "netbsd", link_name = "__timegm50")] +- pub fn timegm(tm: *mut ::tm) -> time_t; +- pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int; +- pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), + link_name = "tcdrain$UNIX2003")] + pub fn tcdrain(fd: ::c_int) -> ::c_int; + pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t; + pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t; ++ pub fn cfmakeraw(termios: *mut ::termios); + pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int; + pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int; ++ pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int; + pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int; + pub fn tcsetattr(fd: ::c_int, + optional_actions: ::c_int, +@@ -839,10 +858,9 @@ extern { + pub fn tcflush(fd: ::c_int, action: ::c_int) -> ::c_int; + pub fn tcsendbreak(fd: ::c_int, duration: ::c_int) -> ::c_int; + pub fn mkstemp(template: *mut ::c_char) -> ::c_int; +- pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; + pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char; +- pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; +- pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char; + + pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int); + pub fn closelog(); +@@ -859,10 +877,13 @@ extern { + } + + cfg_if! { +- if #[cfg(any(target_os = "linux", +- target_os = "android", +- target_os = "emscripten", +- target_os = "fuchsia"))] { ++ if #[cfg(target_env = "uclibc")] { ++ mod uclibc; ++ pub use self::uclibc::*; ++ } else if #[cfg(any(target_os = "linux", ++ target_os = "android", ++ target_os = "emscripten", ++ target_os = "fuchsia"))] { + mod notbsd; + pub use self::notbsd::*; + } else if #[cfg(any(target_os = "macos", +diff --git third_party/rust/libc/src/unix/notbsd/android/b32.rs third_party/rust/libc/src/unix/notbsd/android/b32.rs +deleted file mode 100644 +index bd69ccf37d57..000000000000 +--- third_party/rust/libc/src/unix/notbsd/android/b32.rs ++++ /dev/null +@@ -1,151 +0,0 @@ +-pub type c_long = i32; +-pub type c_ulong = u32; +-pub type mode_t = u16; +-pub type off64_t = ::c_longlong; +- +-s! { +- pub struct sigaction { +- pub sa_sigaction: ::sighandler_t, +- pub sa_mask: ::sigset_t, +- pub sa_flags: ::c_ulong, +- pub sa_restorer: ::dox::Option<extern fn()>, +- } +- +- pub struct stat { +- pub st_dev: ::c_ulonglong, +- __pad0: [::c_uchar; 4], +- __st_ino: ::ino_t, +- pub st_mode: ::c_uint, +- pub st_nlink: ::c_uint, +- pub st_uid: ::uid_t, +- pub st_gid: ::gid_t, +- pub st_rdev: ::c_ulonglong, +- __pad3: [::c_uchar; 4], +- pub st_size: ::c_longlong, +- pub st_blksize: ::blksize_t, +- pub st_blocks: ::c_ulonglong, +- pub st_atime: ::c_ulong, +- pub st_atime_nsec: ::c_ulong, +- pub st_mtime: ::c_ulong, +- pub st_mtime_nsec: ::c_ulong, +- pub st_ctime: ::c_ulong, +- pub st_ctime_nsec: ::c_ulong, +- pub st_ino: ::c_ulonglong, +- } +- +- pub struct stat64 { +- pub st_dev: ::c_ulonglong, +- __pad0: [::c_uchar; 4], +- __st_ino: ::ino_t, +- pub st_mode: ::c_uint, +- pub st_nlink: ::c_uint, +- pub st_uid: ::uid_t, +- pub st_gid: ::gid_t, +- pub st_rdev: ::c_ulonglong, +- __pad3: [::c_uchar; 4], +- pub st_size: ::c_longlong, +- pub st_blksize: ::blksize_t, +- pub st_blocks: ::c_ulonglong, +- pub st_atime: ::c_ulong, +- pub st_atime_nsec: ::c_ulong, +- pub st_mtime: ::c_ulong, +- pub st_mtime_nsec: ::c_ulong, +- pub st_ctime: ::c_ulong, +- pub st_ctime_nsec: ::c_ulong, +- pub st_ino: ::c_ulonglong, +- } +- +- pub struct pthread_attr_t { +- pub flags: ::uint32_t, +- pub stack_base: *mut ::c_void, +- pub stack_size: ::size_t, +- pub guard_size: ::size_t, +- pub sched_policy: ::int32_t, +- pub sched_priority: ::int32_t, +- } +- +- pub struct pthread_mutex_t { value: ::c_int } +- +- pub struct pthread_cond_t { value: ::c_int } +- +- pub struct pthread_rwlock_t { +- lock: pthread_mutex_t, +- cond: pthread_cond_t, +- numLocks: ::c_int, +- writerThreadId: ::c_int, +- pendingReaders: ::c_int, +- pendingWriters: ::c_int, +- attr: i32, +- __reserved: [::c_char; 12], +- } +- +- pub struct passwd { +- pub pw_name: *mut ::c_char, +- pub pw_passwd: *mut ::c_char, +- pub pw_uid: ::uid_t, +- pub pw_gid: ::gid_t, +- pub pw_dir: *mut ::c_char, +- pub pw_shell: *mut ::c_char, +- } +- +- pub struct statfs { +- pub f_type: ::uint32_t, +- pub f_bsize: ::uint32_t, +- pub f_blocks: ::uint64_t, +- pub f_bfree: ::uint64_t, +- pub f_bavail: ::uint64_t, +- pub f_files: ::uint64_t, +- pub f_ffree: ::uint64_t, +- pub f_fsid: ::__fsid_t, +- pub f_namelen: ::uint32_t, +- pub f_frsize: ::uint32_t, +- pub f_flags: ::uint32_t, +- pub f_spare: [::uint32_t; 4], +- } +- +- pub struct sysinfo { +- pub uptime: ::c_long, +- pub loads: [::c_ulong; 3], +- pub totalram: ::c_ulong, +- pub freeram: ::c_ulong, +- pub sharedram: ::c_ulong, +- pub bufferram: ::c_ulong, +- pub totalswap: ::c_ulong, +- pub freeswap: ::c_ulong, +- pub procs: ::c_ushort, +- pub pad: ::c_ushort, +- pub totalhigh: ::c_ulong, +- pub freehigh: ::c_ulong, +- pub mem_unit: ::c_uint, +- pub _f: [::c_char; 8], +- } +-} +- +-pub const SYS_gettid: ::c_long = 224; +-pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { +- value: 0, +-}; +-pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { +- value: 0, +-}; +-pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { +- lock: PTHREAD_MUTEX_INITIALIZER, +- cond: PTHREAD_COND_INITIALIZER, +- numLocks: 0, +- writerThreadId: 0, +- pendingReaders: 0, +- pendingWriters: 0, +- attr: 0, +- __reserved: [0; 12], +-}; +-pub const PTHREAD_STACK_MIN: ::size_t = 4096 * 2; +-pub const CPU_SETSIZE: ::size_t = 32; +-pub const __CPU_BITS: ::size_t = 32; +- +-pub const UT_LINESIZE: usize = 8; +-pub const UT_NAMESIZE: usize = 8; +-pub const UT_HOSTSIZE: usize = 16; +- +-extern { +- pub fn timegm64(tm: *const ::tm) -> ::time64_t; +-} +diff --git third_party/rust/libc/src/unix/notbsd/android/b32/arm.rs third_party/rust/libc/src/unix/notbsd/android/b32/arm.rs +new file mode 100644 +index 000000000000..1c9d033d17db +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b32/arm.rs +@@ -0,0 +1,6 @@ ++pub type c_char = u8; ++pub type wchar_t = u32; ++ ++pub const O_DIRECT: ::c_int = 0x10000; ++pub const O_DIRECTORY: ::c_int = 0x4000; ++pub const O_NOFOLLOW: ::c_int = 0x8000; +diff --git third_party/rust/libc/src/unix/notbsd/android/b32/mod.rs third_party/rust/libc/src/unix/notbsd/android/b32/mod.rs +new file mode 100644 +index 000000000000..32f88e4987ba +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b32/mod.rs +@@ -0,0 +1,199 @@ ++// The following definitions are correct for arm and i686, ++// but may be wrong for mips ++ ++pub type c_long = i32; ++pub type c_ulong = u32; ++pub type mode_t = u16; ++pub type off64_t = ::c_longlong; ++pub type sigset_t = ::c_ulong; ++pub type socklen_t = i32; ++pub type time64_t = i64; ++ ++s! { ++ pub struct sigaction { ++ pub sa_sigaction: ::sighandler_t, ++ pub sa_mask: ::sigset_t, ++ pub sa_flags: ::c_ulong, ++ pub sa_restorer: ::dox::Option<extern fn()>, ++ } ++ ++ pub struct rlimit64 { ++ pub rlim_cur: u64, ++ pub rlim_max: u64, ++ } ++ ++ pub struct stat { ++ pub st_dev: ::c_ulonglong, ++ __pad0: [::c_uchar; 4], ++ __st_ino: ::ino_t, ++ pub st_mode: ::c_uint, ++ pub st_nlink: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::c_ulonglong, ++ __pad3: [::c_uchar; 4], ++ pub st_size: ::c_longlong, ++ pub st_blksize: ::blksize_t, ++ pub st_blocks: ::c_ulonglong, ++ pub st_atime: ::c_ulong, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::c_ulong, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::c_ulong, ++ pub st_ctime_nsec: ::c_ulong, ++ pub st_ino: ::c_ulonglong, ++ } ++ ++ pub struct stat64 { ++ pub st_dev: ::c_ulonglong, ++ __pad0: [::c_uchar; 4], ++ __st_ino: ::ino_t, ++ pub st_mode: ::c_uint, ++ pub st_nlink: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::c_ulonglong, ++ __pad3: [::c_uchar; 4], ++ pub st_size: ::c_longlong, ++ pub st_blksize: ::blksize_t, ++ pub st_blocks: ::c_ulonglong, ++ pub st_atime: ::c_ulong, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::c_ulong, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::c_ulong, ++ pub st_ctime_nsec: ::c_ulong, ++ pub st_ino: ::c_ulonglong, ++ } ++ ++ pub struct pthread_attr_t { ++ pub flags: ::uint32_t, ++ pub stack_base: *mut ::c_void, ++ pub stack_size: ::size_t, ++ pub guard_size: ::size_t, ++ pub sched_policy: ::int32_t, ++ pub sched_priority: ::int32_t, ++ } ++ ++ pub struct pthread_mutex_t { value: ::c_int } ++ ++ pub struct pthread_cond_t { value: ::c_int } ++ ++ pub struct pthread_rwlock_t { ++ lock: pthread_mutex_t, ++ cond: pthread_cond_t, ++ numLocks: ::c_int, ++ writerThreadId: ::c_int, ++ pendingReaders: ::c_int, ++ pendingWriters: ::c_int, ++ attr: i32, ++ __reserved: [::c_char; 12], ++ } ++ ++ pub struct passwd { ++ pub pw_name: *mut ::c_char, ++ pub pw_passwd: *mut ::c_char, ++ pub pw_uid: ::uid_t, ++ pub pw_gid: ::gid_t, ++ pub pw_dir: *mut ::c_char, ++ pub pw_shell: *mut ::c_char, ++ } ++ ++ pub struct statfs { ++ pub f_type: ::uint32_t, ++ pub f_bsize: ::uint32_t, ++ pub f_blocks: ::uint64_t, ++ pub f_bfree: ::uint64_t, ++ pub f_bavail: ::uint64_t, ++ pub f_files: ::uint64_t, ++ pub f_ffree: ::uint64_t, ++ pub f_fsid: ::__fsid_t, ++ pub f_namelen: ::uint32_t, ++ pub f_frsize: ::uint32_t, ++ pub f_flags: ::uint32_t, ++ pub f_spare: [::uint32_t; 4], ++ } ++ ++ pub struct sysinfo { ++ pub uptime: ::c_long, ++ pub loads: [::c_ulong; 3], ++ pub totalram: ::c_ulong, ++ pub freeram: ::c_ulong, ++ pub sharedram: ::c_ulong, ++ pub bufferram: ::c_ulong, ++ pub totalswap: ::c_ulong, ++ pub freeswap: ::c_ulong, ++ pub procs: ::c_ushort, ++ pub pad: ::c_ushort, ++ pub totalhigh: ::c_ulong, ++ pub freehigh: ::c_ulong, ++ pub mem_unit: ::c_uint, ++ pub _f: [::c_char; 8], ++ } ++} ++ ++pub const RTLD_GLOBAL: ::c_int = 2; ++pub const RTLD_NOW: ::c_int = 0; ++pub const RTLD_DEFAULT: *mut ::c_void = -1isize as *mut ::c_void; ++ ++pub const PTRACE_GETFPREGS: ::c_int = 14; ++pub const PTRACE_SETFPREGS: ::c_int = 15; ++pub const PTRACE_GETREGS: ::c_int = 12; ++pub const PTRACE_SETREGS: ::c_int = 13; ++ ++pub const SYS_gettid: ::c_long = 224; ++pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ++ value: 0, ++}; ++pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { ++ value: 0, ++}; ++pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { ++ lock: PTHREAD_MUTEX_INITIALIZER, ++ cond: PTHREAD_COND_INITIALIZER, ++ numLocks: 0, ++ writerThreadId: 0, ++ pendingReaders: 0, ++ pendingWriters: 0, ++ attr: 0, ++ __reserved: [0; 12], ++}; ++pub const PTHREAD_STACK_MIN: ::size_t = 4096 * 2; ++pub const CPU_SETSIZE: ::size_t = 32; ++pub const __CPU_BITS: ::size_t = 32; ++ ++pub const UT_LINESIZE: usize = 8; ++pub const UT_NAMESIZE: usize = 8; ++pub const UT_HOSTSIZE: usize = 16; ++ ++extern { ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: socklen_t) -> ::c_int; ++ ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; ++ ++ pub fn timegm64(tm: *const ::tm) -> ::time64_t; ++} ++ ++cfg_if! { ++ if #[cfg(target_arch = "x86")] { ++ mod x86; ++ pub use self::x86::*; ++ } else if #[cfg(target_arch = "arm")] { ++ mod arm; ++ pub use self::arm::*; ++ } else { ++ // Unknown target_arch ++ } ++} +diff --git third_party/rust/libc/src/unix/notbsd/android/b32/x86.rs third_party/rust/libc/src/unix/notbsd/android/b32/x86.rs +new file mode 100644 +index 000000000000..c4b8197de55b +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b32/x86.rs +@@ -0,0 +1,6 @@ ++pub type c_char = i8; ++pub type wchar_t = i32; ++ ++pub const O_DIRECT: ::c_int = 0x4000; ++pub const O_DIRECTORY: ::c_int = 0x10000; ++pub const O_NOFOLLOW: ::c_int = 0x20000; +diff --git third_party/rust/libc/src/unix/notbsd/android/b64.rs third_party/rust/libc/src/unix/notbsd/android/b64.rs +deleted file mode 100644 +index b35dde421605..000000000000 +--- third_party/rust/libc/src/unix/notbsd/android/b64.rs ++++ /dev/null +@@ -1,161 +0,0 @@ +-// The following definitions are correct for aarch64 and may be wrong for x86_64 +- +-pub type c_long = i64; +-pub type c_ulong = u64; +-pub type mode_t = u32; +-pub type off64_t = i64; +- +-s! { +- pub struct sigaction { +- pub sa_flags: ::c_uint, +- pub sa_sigaction: ::sighandler_t, +- pub sa_mask: ::sigset_t, +- _restorer: *mut ::c_void, +- } +- +- pub struct stat { +- pub st_dev: ::dev_t, +- pub st_ino: ::ino_t, +- pub st_mode: ::c_uint, +- pub st_nlink: ::c_uint, +- pub st_uid: ::uid_t, +- pub st_gid: ::gid_t, +- pub st_rdev: ::dev_t, +- __pad1: ::c_ulong, +- pub st_size: ::off64_t, +- pub st_blksize: ::c_int, +- __pad2: ::c_int, +- pub st_blocks: ::c_long, +- pub st_atime: ::time_t, +- pub st_atime_nsec: ::c_ulong, +- pub st_mtime: ::time_t, +- pub st_mtime_nsec: ::c_ulong, +- pub st_ctime: ::time_t, +- pub st_ctime_nsec: ::c_ulong, +- __unused4: ::c_uint, +- __unused5: ::c_uint, +- } +- +- pub struct stat64 { +- pub st_dev: ::dev_t, +- pub st_ino: ::ino_t, +- pub st_mode: ::c_uint, +- pub st_nlink: ::c_uint, +- pub st_uid: ::uid_t, +- pub st_gid: ::gid_t, +- pub st_rdev: ::dev_t, +- __pad1: ::c_ulong, +- pub st_size: ::off64_t, +- pub st_blksize: ::c_int, +- __pad2: ::c_int, +- pub st_blocks: ::c_long, +- pub st_atime: ::time_t, +- pub st_atime_nsec: ::c_ulong, +- pub st_mtime: ::time_t, +- pub st_mtime_nsec: ::c_ulong, +- pub st_ctime: ::time_t, +- pub st_ctime_nsec: ::c_ulong, +- __unused4: ::c_uint, +- __unused5: ::c_uint, +- } +- +- pub struct pthread_attr_t { +- pub flags: ::uint32_t, +- pub stack_base: *mut ::c_void, +- pub stack_size: ::size_t, +- pub guard_size: ::size_t, +- pub sched_policy: ::int32_t, +- pub sched_priority: ::int32_t, +- __reserved: [::c_char; 16], +- } +- +- pub struct pthread_mutex_t { +- value: ::c_int, +- __reserved: [::c_char; 36], +- } +- +- pub struct pthread_cond_t { +- value: ::c_int, +- __reserved: [::c_char; 44], +- } +- +- pub struct pthread_rwlock_t { +- numLocks: ::c_int, +- writerThreadId: ::c_int, +- pendingReaders: ::c_int, +- pendingWriters: ::c_int, +- attr: i32, +- __reserved: [::c_char; 36], +- } +- +- pub struct passwd { +- pub pw_name: *mut ::c_char, +- pub pw_passwd: *mut ::c_char, +- pub pw_uid: ::uid_t, +- pub pw_gid: ::gid_t, +- pub pw_gecos: *mut ::c_char, +- pub pw_dir: *mut ::c_char, +- pub pw_shell: *mut ::c_char, +- } +- +- pub struct statfs { +- pub f_type: ::uint64_t, +- pub f_bsize: ::uint64_t, +- pub f_blocks: ::uint64_t, +- pub f_bfree: ::uint64_t, +- pub f_bavail: ::uint64_t, +- pub f_files: ::uint64_t, +- pub f_ffree: ::uint64_t, +- pub f_fsid: ::__fsid_t, +- pub f_namelen: ::uint64_t, +- pub f_frsize: ::uint64_t, +- pub f_flags: ::uint64_t, +- pub f_spare: [::uint64_t; 4], +- } +- +- pub struct sysinfo { +- pub uptime: ::c_long, +- pub loads: [::c_ulong; 3], +- pub totalram: ::c_ulong, +- pub freeram: ::c_ulong, +- pub sharedram: ::c_ulong, +- pub bufferram: ::c_ulong, +- pub totalswap: ::c_ulong, +- pub freeswap: ::c_ulong, +- pub procs: ::c_ushort, +- pub pad: ::c_ushort, +- pub totalhigh: ::c_ulong, +- pub freehigh: ::c_ulong, +- pub mem_unit: ::c_uint, +- pub _f: [::c_char; 0], +- } +-} +- +-pub const SYS_gettid: ::c_long = 178; +-pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { +- value: 0, +- __reserved: [0; 36], +-}; +-pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { +- value: 0, +- __reserved: [0; 44], +-}; +-pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { +- numLocks: 0, +- writerThreadId: 0, +- pendingReaders: 0, +- pendingWriters: 0, +- attr: 0, +- __reserved: [0; 36], +-}; +-pub const PTHREAD_STACK_MIN: ::size_t = 4096 * 4; +-pub const CPU_SETSIZE: ::size_t = 1024; +-pub const __CPU_BITS: ::size_t = 64; +- +-pub const UT_LINESIZE: usize = 32; +-pub const UT_NAMESIZE: usize = 32; +-pub const UT_HOSTSIZE: usize = 256; +- +-extern { +- pub fn timegm(tm: *const ::tm) -> ::time64_t; +-} +diff --git third_party/rust/libc/src/unix/notbsd/android/b64/aarch64.rs third_party/rust/libc/src/unix/notbsd/android/b64/aarch64.rs +new file mode 100644 +index 000000000000..89c505d06f2e +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b64/aarch64.rs +@@ -0,0 +1,56 @@ ++pub type c_char = u8; ++pub type wchar_t = u32; ++ ++s! { ++ pub struct stat { ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino_t, ++ pub st_mode: ::c_uint, ++ pub st_nlink: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ __pad1: ::c_ulong, ++ pub st_size: ::off64_t, ++ pub st_blksize: ::c_int, ++ __pad2: ::c_int, ++ pub st_blocks: ::c_long, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_ulong, ++ __unused4: ::c_uint, ++ __unused5: ::c_uint, ++ } ++ ++ pub struct stat64 { ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino_t, ++ pub st_mode: ::c_uint, ++ pub st_nlink: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ __pad1: ::c_ulong, ++ pub st_size: ::off64_t, ++ pub st_blksize: ::c_int, ++ __pad2: ::c_int, ++ pub st_blocks: ::c_long, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_ulong, ++ __unused4: ::c_uint, ++ __unused5: ::c_uint, ++ } ++} ++ ++pub const O_DIRECT: ::c_int = 0x10000; ++pub const O_DIRECTORY: ::c_int = 0x4000; ++pub const O_NOFOLLOW: ::c_int = 0x8000; ++ ++pub const SYS_gettid: ::c_long = 178; +diff --git third_party/rust/libc/src/unix/notbsd/android/b64/mod.rs third_party/rust/libc/src/unix/notbsd/android/b64/mod.rs +new file mode 100644 +index 000000000000..98a2f39fbd20 +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b64/mod.rs +@@ -0,0 +1,162 @@ ++// The following definitions are correct for aarch64 and x86_64, ++// but may be wrong for mips64 ++ ++pub type c_long = i64; ++pub type c_ulong = u64; ++pub type mode_t = u32; ++pub type off64_t = i64; ++pub type socklen_t = u32; ++ ++s! { ++ pub struct sigset_t { ++ __val: [::c_ulong; 1], ++ } ++ ++ pub struct sigaction { ++ pub sa_flags: ::c_uint, ++ pub sa_sigaction: ::sighandler_t, ++ pub sa_mask: ::sigset_t, ++ pub sa_restorer: ::dox::Option<extern fn()>, ++ } ++ ++ pub struct rlimit64 { ++ pub rlim_cur: ::c_ulonglong, ++ pub rlim_max: ::c_ulonglong, ++ } ++ ++ pub struct pthread_attr_t { ++ pub flags: ::uint32_t, ++ pub stack_base: *mut ::c_void, ++ pub stack_size: ::size_t, ++ pub guard_size: ::size_t, ++ pub sched_policy: ::int32_t, ++ pub sched_priority: ::int32_t, ++ __reserved: [::c_char; 16], ++ } ++ ++ pub struct pthread_mutex_t { ++ value: ::c_int, ++ __reserved: [::c_char; 36], ++ } ++ ++ pub struct pthread_cond_t { ++ value: ::c_int, ++ __reserved: [::c_char; 44], ++ } ++ ++ pub struct pthread_rwlock_t { ++ numLocks: ::c_int, ++ writerThreadId: ::c_int, ++ pendingReaders: ::c_int, ++ pendingWriters: ::c_int, ++ attr: i32, ++ __reserved: [::c_char; 36], ++ } ++ ++ pub struct passwd { ++ pub pw_name: *mut ::c_char, ++ pub pw_passwd: *mut ::c_char, ++ pub pw_uid: ::uid_t, ++ pub pw_gid: ::gid_t, ++ pub pw_gecos: *mut ::c_char, ++ pub pw_dir: *mut ::c_char, ++ pub pw_shell: *mut ::c_char, ++ } ++ ++ pub struct statfs { ++ pub f_type: ::uint64_t, ++ pub f_bsize: ::uint64_t, ++ pub f_blocks: ::uint64_t, ++ pub f_bfree: ::uint64_t, ++ pub f_bavail: ::uint64_t, ++ pub f_files: ::uint64_t, ++ pub f_ffree: ::uint64_t, ++ pub f_fsid: ::__fsid_t, ++ pub f_namelen: ::uint64_t, ++ pub f_frsize: ::uint64_t, ++ pub f_flags: ::uint64_t, ++ pub f_spare: [::uint64_t; 4], ++ } ++ ++ pub struct sysinfo { ++ pub uptime: ::c_long, ++ pub loads: [::c_ulong; 3], ++ pub totalram: ::c_ulong, ++ pub freeram: ::c_ulong, ++ pub sharedram: ::c_ulong, ++ pub bufferram: ::c_ulong, ++ pub totalswap: ::c_ulong, ++ pub freeswap: ::c_ulong, ++ pub procs: ::c_ushort, ++ pub pad: ::c_ushort, ++ pub totalhigh: ::c_ulong, ++ pub freehigh: ::c_ulong, ++ pub mem_unit: ::c_uint, ++ pub _f: [::c_char; 0], ++ } ++} ++ ++pub const RTLD_GLOBAL: ::c_int = 0x00100; ++pub const RTLD_NOW: ::c_int = 2; ++pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void; ++ ++pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ++ value: 0, ++ __reserved: [0; 36], ++}; ++pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { ++ value: 0, ++ __reserved: [0; 44], ++}; ++pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { ++ numLocks: 0, ++ writerThreadId: 0, ++ pendingReaders: 0, ++ pendingWriters: 0, ++ attr: 0, ++ __reserved: [0; 36], ++}; ++pub const PTHREAD_STACK_MIN: ::size_t = 4096 * 4; ++pub const CPU_SETSIZE: ::size_t = 1024; ++pub const __CPU_BITS: ::size_t = 64; ++ ++pub const UT_LINESIZE: usize = 32; ++pub const UT_NAMESIZE: usize = 32; ++pub const UT_HOSTSIZE: usize = 256; ++ ++// Some weirdness in Android ++extern { ++ // address_len should be socklen_t, but it is c_int! ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::c_int) -> ::c_int; ++ ++ // the return type should be ::ssize_t, but it is c_int! ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::c_int; ++ ++ // the return type should be ::ssize_t, but it is c_int! ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::c_int; ++ ++ // the return type should be ::ssize_t, but it is c_int! ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::c_int; ++ ++ // the return type should be ::ssize_t, but it is c_int! ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::c_int; ++} ++ ++cfg_if! { ++ if #[cfg(target_arch = "x86_64")] { ++ mod x86_64; ++ pub use self::x86_64::*; ++ } else if #[cfg(target_arch = "aarch64")] { ++ mod aarch64; ++ pub use self::aarch64::*; ++ } else { ++ // Unknown target_arch ++ } ++} +diff --git third_party/rust/libc/src/unix/notbsd/android/b64/x86_64.rs third_party/rust/libc/src/unix/notbsd/android/b64/x86_64.rs +new file mode 100644 +index 000000000000..58d07e104dba +--- /dev/null ++++ third_party/rust/libc/src/unix/notbsd/android/b64/x86_64.rs +@@ -0,0 +1,50 @@ ++pub type c_char = i8; ++pub type wchar_t = i32; ++ ++s! { ++ pub struct stat { ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino_t, ++ pub st_nlink: ::c_ulong, ++ pub st_mode: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ pub st_size: ::off64_t, ++ pub st_blksize: ::c_long, ++ pub st_blocks: ::c_long, ++ pub st_atime: ::c_ulong, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::c_ulong, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::c_ulong, ++ pub st_ctime_nsec: ::c_ulong, ++ __unused: [::c_long; 3], ++ } ++ ++ pub struct stat64 { ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino_t, ++ pub st_nlink: ::c_ulong, ++ pub st_mode: ::c_uint, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ pub st_size: ::off64_t, ++ pub st_blksize: ::c_long, ++ pub st_blocks: ::c_long, ++ pub st_atime: ::c_ulong, ++ pub st_atime_nsec: ::c_ulong, ++ pub st_mtime: ::c_ulong, ++ pub st_mtime_nsec: ::c_ulong, ++ pub st_ctime: ::c_ulong, ++ pub st_ctime_nsec: ::c_ulong, ++ __unused: [::c_long; 3], ++ } ++} ++ ++pub const O_DIRECT: ::c_int = 0x4000; ++pub const O_DIRECTORY: ::c_int = 0x10000; ++pub const O_NOFOLLOW: ::c_int = 0x20000; ++ ++pub const SYS_gettid: ::c_long = 186; +diff --git third_party/rust/libc/src/unix/notbsd/android/mod.rs third_party/rust/libc/src/unix/notbsd/android/mod.rs +index 4b4e26222ad6..2a7d572dc5cc 100644 +--- third_party/rust/libc/src/unix/notbsd/android/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/android/mod.rs +@@ -2,22 +2,17 @@ + + use dox::mem; + +-pub type c_char = u8; + pub type clock_t = ::c_long; + pub type time_t = ::c_long; + pub type suseconds_t = ::c_long; +-pub type wchar_t = u32; + pub type off_t = ::c_long; + pub type blkcnt_t = ::c_ulong; + pub type blksize_t = ::c_ulong; + pub type nlink_t = u32; + pub type useconds_t = u32; +-pub type socklen_t = i32; + pub type pthread_t = ::c_long; + pub type pthread_mutexattr_t = ::c_long; + pub type pthread_condattr_t = ::c_long; +-pub type sigset_t = ::c_ulong; +-pub type time64_t = i64; // N/A on android + pub type fsfilcnt_t = ::c_ulong; + pub type fsblkcnt_t = ::c_ulong; + pub type nfds_t = ::c_uint; +@@ -44,11 +39,6 @@ s! { + pub d_name: [::c_char; 256], + } + +- pub struct rlimit64 { +- pub rlim_cur: u64, +- pub rlim_max: u64, +- } +- + pub struct stack_t { + pub ss_sp: *mut ::c_void, + pub ss_flags: ::c_int, +@@ -60,6 +50,7 @@ s! { + pub si_errno: ::c_int, + pub si_code: ::c_int, + pub _pad: [::c_int; 29], ++ _align: [usize; 0], + } + + pub struct __fsid_t { +@@ -68,7 +59,7 @@ s! { + + pub struct msghdr { + pub msg_name: *mut ::c_void, +- pub msg_namelen: ::c_int, ++ pub msg_namelen: ::socklen_t, + pub msg_iov: *mut ::iovec, + pub msg_iovlen: ::size_t, + pub msg_control: *mut ::c_void, +@@ -108,6 +99,8 @@ s! { + + pub struct sem_t { + count: ::c_uint, ++ #[cfg(target_pointer_width = "64")] ++ __reserved: [::c_int; 3], + } + + pub struct lastlog { +@@ -136,6 +129,22 @@ s! { + pub ut_addr_v6: [::int32_t; 4], + unused: [::c_char; 20], + } ++ ++ pub struct statvfs { ++ pub f_bsize: ::c_ulong, ++ pub f_frsize: ::c_ulong, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_files: ::fsfilcnt_t, ++ pub f_ffree: ::fsfilcnt_t, ++ pub f_favail: ::fsfilcnt_t, ++ pub f_fsid: ::c_ulong, ++ pub f_flag: ::c_ulong, ++ pub f_namemax: ::c_ulong, ++ #[cfg(target_pointer_width = "64")] ++ __f_reserved: [u32; 6], ++ } + } + + pub const O_TRUNC: ::c_int = 512; +@@ -163,6 +172,7 @@ pub const SA_RESTART: ::c_int = 0x10000000; + pub const SA_NOCLDSTOP: ::c_int = 0x00000001; + + pub const EPOLL_CLOEXEC: ::c_int = 0x80000; ++pub const EPOLLONESHOT: ::c_int = 0x40000000; + + pub const EFD_CLOEXEC: ::c_int = 0x80000; + +@@ -408,6 +418,18 @@ pub const SOCK_DGRAM: ::c_int = 2; + pub const SOCK_SEQPACKET: ::c_int = 5; + + pub const SOL_SOCKET: ::c_int = 1; ++pub const SOL_UDP: ::c_int = 17; ++pub const SOL_SCTP: ::c_int = 132; ++pub const SOL_IPX: ::c_int = 256; ++pub const SOL_AX25: ::c_int = 257; ++pub const SOL_ATALK: ::c_int = 258; ++pub const SOL_NETROM: ::c_int = 259; ++pub const SOL_ROSE: ::c_int = 260; ++ ++#[doc(hidden)] ++pub const AF_MAX: ::c_int = 39; ++#[doc(hidden)] ++pub const PF_MAX: ::c_int = AF_MAX; + + pub const SO_REUSEADDR: ::c_int = 2; + pub const SO_TYPE: ::c_int = 3; +@@ -433,9 +455,6 @@ pub const O_EXCL: ::c_int = 128; + pub const O_NOCTTY: ::c_int = 256; + pub const O_NONBLOCK: ::c_int = 2048; + pub const O_SYNC: ::c_int = 0x101000; +-pub const O_DIRECT: ::c_int = 0x10000; +-pub const O_DIRECTORY: ::c_int = 0x4000; +-pub const O_NOFOLLOW: ::c_int = 0x8000; + pub const O_ASYNC: ::c_int = 0x2000; + pub const O_NDELAY: ::c_int = 0x800; + +@@ -446,7 +465,6 @@ pub const TCSBRKP: ::c_int = 0x5425; + pub const TCSANOW: ::c_int = 0; + pub const TCSADRAIN: ::c_int = 0x1; + pub const TCSAFLUSH: ::c_int = 0x2; +-pub const IUTF8: ::tcflag_t = 0x00004000; + pub const VEOF: usize = 4; + pub const VEOL: usize = 11; + pub const VEOL2: usize = 16; +@@ -503,10 +521,6 @@ pub const PTRACE_SETOPTIONS: ::c_int = 0x4200; + pub const PTRACE_GETEVENTMSG: ::c_int = 0x4201; + pub const PTRACE_GETSIGINFO: ::c_int = 0x4202; + pub const PTRACE_SETSIGINFO: ::c_int = 0x4203; +-pub const PTRACE_GETFPREGS: ::c_int = 14; +-pub const PTRACE_SETFPREGS: ::c_int = 15; +-pub const PTRACE_GETREGS: ::c_int = 12; +-pub const PTRACE_SETREGS: ::c_int = 13; + + pub const EFD_NONBLOCK: ::c_int = 0x800; + +@@ -548,10 +562,7 @@ pub const TIOCMSET: ::c_int = 0x5418; + pub const FIONREAD: ::c_int = 0x541B; + pub const TIOCCONS: ::c_int = 0x541D; + +-pub const RTLD_GLOBAL: ::c_int = 0x2; + pub const RTLD_NOLOAD: ::c_int = 0x4; +-pub const RTLD_NOW: ::c_int = 0; +-pub const RTLD_DEFAULT: *mut ::c_void = -1isize as *mut ::c_void; + + pub const SEM_FAILED: *mut sem_t = 0 as *mut sem_t; + +@@ -574,6 +585,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -615,6 +627,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + pub const EAI_SYSTEM: ::c_int = 11; + + pub const NETLINK_ROUTE: ::c_int = 0; +@@ -679,59 +725,6 @@ pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER); + pub const SIGEV_THREAD_ID: ::c_int = 4; + + f! { +- pub fn sigemptyset(set: *mut sigset_t) -> ::c_int { +- *set = 0; +- return 0 +- } +- pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int { +- *set |= signum as sigset_t; +- return 0 +- } +- pub fn sigfillset(set: *mut sigset_t) -> ::c_int { +- *set = !0; +- return 0 +- } +- pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int { +- *set &= !(signum as sigset_t); +- return 0 +- } +- pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int { +- (*set & (signum as sigset_t)) as ::c_int +- } +- pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t { +- (*termios).c_cflag & ::CBAUD +- } +- pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t { +- (*termios).c_cflag & ::CBAUD +- } +- pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int { +- let cbaud = ::CBAUD; +- (*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud); +- return 0 +- } +- pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int { +- let cbaud = ::CBAUD; +- (*termios).c_cflag = ((*termios).c_cflag & !cbaud) | (speed & cbaud); +- return 0 +- } +- pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int { +- ioctl(fd, ::TCGETS, termios) +- } +- pub fn tcsetattr(fd: ::c_int, +- optional_actions: ::c_int, +- termios: *const ::termios) -> ::c_int { +- ioctl(fd, optional_actions, termios) +- } +- pub fn tcflow(fd: ::c_int, action: ::c_int) -> ::c_int { +- ioctl(fd, ::TCXONC, action as *mut ::c_void) +- } +- pub fn tcflush(fd: ::c_int, action: ::c_int) -> ::c_int { +- ioctl(fd, ::TCFLSH, action as *mut ::c_void) +- } +- pub fn tcsendbreak(fd: ::c_int, duration: ::c_int) -> ::c_int { +- ioctl(fd, TCSBRKP, duration as *mut ::c_void) +- } +- + pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { + for slot in cpuset.__bits.iter_mut() { + *slot = 0; +@@ -761,6 +754,17 @@ f! { + pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { + set1.__bits == set2.__bits + } ++ pub fn major(dev: ::dev_t) -> ::c_int { ++ ((dev >> 8) & 0xfff) as ::c_int ++ } ++ pub fn minor(dev: ::dev_t) -> ::c_int { ++ ((dev & 0xff) | ((dev >> 12) & 0xfff00)) as ::c_int ++ } ++ pub fn makedev(ma: ::c_int, mi: ::c_int) -> ::dev_t { ++ let ma = ma as ::dev_t; ++ let mi = mi as ::dev_t; ++ ((ma & 0xfff) << 8) | (mi & 0xff) | ((mi & 0xfff00) << 12) ++ } + } + + extern { +@@ -771,15 +775,10 @@ extern { + pub fn madvise(addr: *const ::c_void, len: ::size_t, advice: ::c_int) + -> ::c_int; + pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; +- pub fn readlink(path: *const ::c_char, +- buf: *mut ::c_char, +- bufsz: ::size_t) +- -> ::c_int; + pub fn msync(addr: *const ::c_void, len: ::size_t, + flags: ::c_int) -> ::c_int; + pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) + -> ::c_int; +- pub fn sysconf(name: ::c_int) -> ::c_long; + pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, + flags: ::c_int, addr: *const ::sockaddr, + addrlen: *mut ::socklen_t) -> ::ssize_t; +@@ -801,6 +800,9 @@ extern { + pub fn utmpname(name: *const ::c_char) -> ::c_int; + pub fn setutent(); + pub fn getutent() -> *mut utmp; ++ ++ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, ++ len: ::off_t) -> ::c_int; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs +index 22bb33b7231f..59c2486efefe 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs +@@ -10,9 +10,6 @@ pub type ino_t = u32; + pub type blkcnt_t = i32; + pub type blksize_t = i32; + pub type nlink_t = u32; +-pub type fsblkcnt_t = ::c_ulong; +-pub type fsfilcnt_t = ::c_ulong; +-pub type rlim_t = c_ulong; + + s! { + pub struct aiocb { +@@ -86,7 +83,7 @@ s! { + pub sa_flags: ::c_int, + pub sa_sigaction: ::sighandler_t, + pub sa_mask: sigset_t, +- _restorer: *mut ::c_void, ++ pub sa_restorer: ::dox::Option<extern fn()>, + _resv: [::c_int; 1], + } + +@@ -107,19 +104,6 @@ s! { + pub _pad: [::c_int; 29], + } + +- pub struct glob64_t { +- pub gl_pathc: ::size_t, +- pub gl_pathv: *mut *mut ::c_char, +- pub gl_offs: ::size_t, +- pub gl_flags: ::c_int, +- +- __unused1: *mut ::c_void, +- __unused2: *mut ::c_void, +- __unused3: *mut ::c_void, +- __unused4: *mut ::c_void, +- __unused5: *mut ::c_void, +- } +- + pub struct ipc_perm { + pub __key: ::key_t, + pub uid: ::uid_t, +@@ -238,15 +222,6 @@ s! { + pub mem_unit: ::c_uint, + pub _f: [::c_char; 8], + } +- +- // FIXME this is actually a union +- pub struct sem_t { +- #[cfg(target_pointer_width = "32")] +- __size: [::c_char; 16], +- #[cfg(target_pointer_width = "64")] +- __size: [::c_char; 32], +- __align: [::c_long; 0], +- } + } + + pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; +@@ -257,31 +232,3 @@ pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; + pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff; + + pub const SYS_gettid: ::c_long = 4222; // Valid for O32 +- +-#[link(name = "util")] +-extern { +- pub fn sysctl(name: *mut ::c_int, +- namelen: ::c_int, +- oldp: *mut ::c_void, +- oldlenp: *mut ::size_t, +- newp: *mut ::c_void, +- newlen: ::size_t) +- -> ::c_int; +- pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; +- pub fn backtrace(buf: *mut *mut ::c_void, +- sz: ::c_int) -> ::c_int; +- pub fn glob64(pattern: *const ::c_char, +- flags: ::c_int, +- errfunc: ::dox::Option<extern fn(epath: *const ::c_char, +- errno: ::c_int) +- -> ::c_int>, +- pglob: *mut glob64_t) -> ::c_int; +- pub fn globfree64(pglob: *mut glob64_t); +- pub fn ptrace(request: ::c_uint, ...) -> ::c_long; +- pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t, +- cpusetsize: ::size_t, +- cpuset: *mut ::cpu_set_t) -> ::c_int; +- pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t, +- cpusetsize: ::size_t, +- cpuset: *const ::cpu_set_t) -> ::c_int; +-} +diff --git third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs +index 947859998d33..1f28ea81f003 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs +@@ -3,15 +3,13 @@ pub type blksize_t = i64; + pub type c_char = i8; + pub type c_long = i64; + pub type c_ulong = u64; +-pub type fsblkcnt_t = ::c_ulong; +-pub type fsfilcnt_t = ::c_ulong; + pub type ino_t = u64; + pub type nlink_t = u64; + pub type off_t = i64; +-pub type rlim_t = ::c_ulong; + pub type suseconds_t = i64; + pub type time_t = i64; + pub type wchar_t = i32; ++pub type clock_t = i64; + + s! { + pub struct aiocb { +@@ -85,7 +83,7 @@ s! { + pub sa_flags: ::c_int, + pub sa_sigaction: ::sighandler_t, + pub sa_mask: sigset_t, +- _restorer: *mut ::c_void, ++ pub sa_restorer: ::dox::Option<extern fn()>, + } + + pub struct stack_t { +@@ -186,6 +184,14 @@ s! { + pub c_cc: [::cc_t; ::NCCS], + } + ++ pub struct flock { ++ pub l_type: ::c_short, ++ pub l_whence: ::c_short, ++ pub l_start: ::off_t, ++ pub l_len: ::off_t, ++ pub l_pid: ::pid_t, ++ } ++ + pub struct sysinfo { + pub uptime: ::c_long, + pub loads: [::c_ulong; 3], +@@ -202,12 +208,6 @@ s! { + pub mem_unit: ::c_uint, + pub _f: [::c_char; 0], + } +- +- // FIXME this is actually a union +- pub struct sem_t { +- __size: [::c_char; 32], +- __align: [::c_long; 0], +- } + } + + pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; +@@ -218,8 +218,3 @@ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56; + pub const RLIM_INFINITY: ::rlim_t = 0xffff_ffff_ffff_ffff; + + pub const SYS_gettid: ::c_long = 5178; // Valid for n64 +- +-#[link(name = "util")] +-extern { +- pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; +-} +diff --git third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs +index 48e773088e79..b2ad107caedf 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs +@@ -1,3 +1,32 @@ ++pub type fsblkcnt_t = ::c_ulong; ++pub type fsfilcnt_t = ::c_ulong; ++pub type rlim_t = c_ulong; ++pub type __priority_which_t = ::c_uint; ++ ++s! { ++ pub struct glob64_t { ++ pub gl_pathc: ::size_t, ++ pub gl_pathv: *mut *mut ::c_char, ++ pub gl_offs: ::size_t, ++ pub gl_flags: ::c_int, ++ ++ __unused1: *mut ::c_void, ++ __unused2: *mut ::c_void, ++ __unused3: *mut ::c_void, ++ __unused4: *mut ::c_void, ++ __unused5: *mut ::c_void, ++ } ++ ++ // FIXME this is actually a union ++ pub struct sem_t { ++ #[cfg(target_pointer_width = "32")] ++ __size: [::c_char; 16], ++ #[cfg(target_pointer_width = "64")] ++ __size: [::c_char; 32], ++ __align: [::c_long; 0], ++ } ++} ++ + pub const CLONE_NEWCGROUP: ::c_int = 0x02000000; + + pub const SFD_CLOEXEC: ::c_int = 0x080000; +@@ -194,22 +223,62 @@ pub const SOCK_SEQPACKET: ::c_int = 5; + + pub const SOL_SOCKET: ::c_int = 0xffff; + +-pub const SO_REUSEADDR: ::c_int = 4; +-pub const SO_REUSEPORT: ::c_int = 0x200; +-pub const SO_TYPE: ::c_int = 4104; +-pub const SO_ERROR: ::c_int = 4103; +-pub const SO_DONTROUTE: ::c_int = 16; +-pub const SO_BROADCAST: ::c_int = 32; +-pub const SO_SNDBUF: ::c_int = 4097; +-pub const SO_RCVBUF: ::c_int = 4098; +-pub const SO_KEEPALIVE: ::c_int = 8; +-pub const SO_OOBINLINE: ::c_int = 256; +-pub const SO_LINGER: ::c_int = 128; +-pub const SO_RCVLOWAT: ::c_int = 4100; +-pub const SO_SNDLOWAT: ::c_int = 4099; +-pub const SO_RCVTIMEO: ::c_int = 4102; +-pub const SO_SNDTIMEO: ::c_int = 4101; +-pub const SO_ACCEPTCONN: ::c_int = 4105; ++pub const SO_REUSEADDR: ::c_int = 0x0004; ++pub const SO_KEEPALIVE: ::c_int = 0x0008; ++pub const SO_DONTROUTE: ::c_int = 0x0010; ++pub const SO_BROADCAST: ::c_int = 0x0020; ++pub const SO_LINGER: ::c_int = 0x0080; ++pub const SO_OOBINLINE: ::c_int = 0x0100; ++pub const SO_REUSEPORT: ::c_int = 0x0200; ++pub const SO_TYPE: ::c_int = 0x1008; ++pub const SO_STYLE: ::c_int = SO_TYPE; ++pub const SO_ERROR: ::c_int = 0x1007; ++pub const SO_SNDBUF: ::c_int = 0x1001; ++pub const SO_RCVBUF: ::c_int = 0x1002; ++pub const SO_SNDLOWAT: ::c_int = 0x1003; ++pub const SO_RCVLOWAT: ::c_int = 0x1004; ++pub const SO_SNDTIMEO: ::c_int = 0x1005; ++pub const SO_RCVTIMEO: ::c_int = 0x1006; ++pub const SO_ACCEPTCONN: ::c_int = 0x1009; ++pub const SO_PROTOCOL: ::c_int = 0x1028; ++pub const SO_DOMAIN: ::c_int = 0x1029; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; ++pub const SO_BSDCOMPAT: ::c_int = 14; ++pub const SO_PASSCRED: ::c_int = 17; ++pub const SO_PEERCRED: ::c_int = 18; ++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24; ++pub const SO_BINDTODEVICE: ::c_int = 25; ++pub const SO_ATTACH_FILTER: ::c_int = 26; ++pub const SO_DETACH_FILTER: ::c_int = 27; ++pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER; ++pub const SO_PEERNAME: ::c_int = 28; ++pub const SO_TIMESTAMP: ::c_int = 29; ++pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP; ++pub const SO_PEERSEC: ::c_int = 30; ++pub const SO_SNDBUFFORCE: ::c_int = 31; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_PASSSEC: ::c_int = 34; ++pub const SO_TIMESTAMPNS: ::c_int = 35; ++pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; ++pub const SO_MARK: ::c_int = 36; ++pub const SO_TIMESTAMPING: ::c_int = 37; ++pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; ++pub const SO_RXQ_OVFL: ::c_int = 40; ++pub const SO_WIFI_STATUS: ::c_int = 41; ++pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; ++pub const SO_PEEK_OFF: ::c_int = 42; ++pub const SO_NOFCS: ::c_int = 43; ++pub const SO_LOCK_FILTER: ::c_int = 44; ++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45; ++pub const SO_BUSY_POLL: ::c_int = 46; ++pub const SO_MAX_PACING_RATE: ::c_int = 47; ++pub const SO_BPF_EXTENSIONS: ::c_int = 48; ++pub const SO_INCOMING_CPU: ::c_int = 49; ++pub const SO_ATTACH_BPF: ::c_int = 50; ++pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER; + + pub const FIOCLEX: ::c_ulong = 0x6601; + pub const FIONBIO: ::c_ulong = 0x667e; +@@ -282,7 +351,7 @@ pub const VMIN: usize = 4; + pub const IEXTEN: ::tcflag_t = 0x00000100; + pub const TOSTOP: ::tcflag_t = 0x00008000; + pub const FLUSHO: ::tcflag_t = 0x00002000; +-pub const IUTF8: ::tcflag_t = 0x00004000; ++pub const EXTPROC: ::tcflag_t = 0o200000; + pub const TCSANOW: ::c_int = 0x540e; + pub const TCSADRAIN: ::c_int = 0x540f; + pub const TCSAFLUSH: ::c_int = 0x5410; +@@ -380,6 +449,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -421,6 +491,78 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ ++#[link(name = "util")] ++extern { ++ pub fn sysctl(name: *mut ::c_int, ++ namelen: ::c_int, ++ oldp: *mut ::c_void, ++ oldlenp: *mut ::size_t, ++ newp: *mut ::c_void, ++ newlen: ::size_t) ++ -> ::c_int; ++ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; ++ pub fn backtrace(buf: *mut *mut ::c_void, ++ sz: ::c_int) -> ::c_int; ++ pub fn glob64(pattern: *const ::c_char, ++ flags: ::c_int, ++ errfunc: ::dox::Option<extern fn(epath: *const ::c_char, ++ errno: ::c_int) ++ -> ::c_int>, ++ pglob: *mut glob64_t) -> ::c_int; ++ pub fn globfree64(pglob: *mut glob64_t); ++ pub fn ptrace(request: ::c_uint, ...) -> ::c_long; ++ pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t, ++ cpusetsize: ::size_t, ++ cpuset: *mut ::cpu_set_t) -> ::c_int; ++ pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t, ++ cpusetsize: ::size_t, ++ cpuset: *const ::cpu_set_t) -> ::c_int; ++ pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int; ++ pub fn setpriority(which: ::__priority_which_t, who: ::id_t, ++ prio: ::c_int) -> ::c_int; ++ pub fn pthread_getaffinity_np(thread: ::pthread_t, ++ cpusetsize: ::size_t, ++ cpuset: *mut ::cpu_set_t) -> ::c_int; ++ pub fn pthread_setaffinity_np(thread: ::pthread_t, ++ cpusetsize: ::size_t, ++ cpuset: *const ::cpu_set_t) -> ::c_int; ++ pub fn sched_getcpu() -> ::c_int; ++} ++ + cfg_if! { + if #[cfg(target_arch = "mips")] { + mod mips32; +diff --git third_party/rust/libc/src/unix/notbsd/linux/mod.rs third_party/rust/libc/src/unix/notbsd/linux/mod.rs +index 13b61df2cde0..7404f2ce43af 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/mod.rs +@@ -1,6 +1,6 @@ + //! Linux-specific definitions for linux-like values + +-use dox::mem; ++use dox::{mem, Option}; + + pub type useconds_t = u32; + pub type dev_t = u64; +@@ -220,6 +220,17 @@ s! { + pub msgtql: ::c_int, + pub msgseg: ::c_ushort, + } ++ ++ pub struct mmsghdr { ++ pub msg_hdr: ::msghdr, ++ pub msg_len: ::c_uint, ++ } ++ ++ pub struct sembuf { ++ pub sem_num: ::c_ushort, ++ pub sem_op: ::c_short, ++ pub sem_flg: ::c_short, ++ } + } + + pub const ABDAY_1: ::nl_item = 0x20000; +@@ -373,6 +384,7 @@ pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78; + pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79; + pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80; + pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81; ++pub const _SC_NPROCESSORS_CONF: ::c_int = 83; + pub const _SC_NPROCESSORS_ONLN: ::c_int = 84; + pub const _SC_ATEXIT_MAX: ::c_int = 87; + pub const _SC_XOPEN_VERSION: ::c_int = 89; +@@ -463,6 +475,19 @@ pub const SCHED_RR: ::c_int = 2; + pub const SCHED_BATCH: ::c_int = 3; + pub const SCHED_IDLE: ::c_int = 5; + ++pub const AF_IB: ::c_int = 27; ++pub const AF_MPLS: ::c_int = 28; ++pub const AF_NFC: ::c_int = 39; ++pub const AF_VSOCK: ::c_int = 40; ++#[doc(hidden)] ++pub const AF_MAX: ::c_int = 42; ++pub const PF_IB: ::c_int = AF_IB; ++pub const PF_MPLS: ::c_int = AF_MPLS; ++pub const PF_NFC: ::c_int = AF_NFC; ++pub const PF_VSOCK: ::c_int = AF_VSOCK; ++#[doc(hidden)] ++pub const PF_MAX: ::c_int = AF_MAX; ++ + // System V IPC + pub const IPC_PRIVATE: ::key_t = 0; + +@@ -496,6 +521,7 @@ pub const SHM_HUGETLB: ::c_int = 0o4000; + pub const SHM_NORESERVE: ::c_int = 0o10000; + + pub const EPOLLRDHUP: ::c_int = 0x2000; ++pub const EPOLLEXCLUSIVE: ::c_int = 0x10000000; + pub const EPOLLONESHOT: ::c_int = 0x40000000; + + pub const QFMT_VFS_OLD: ::c_int = 1; +@@ -678,6 +704,18 @@ pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2; + pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3; + pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4; + ++pub const ITIMER_REAL: ::c_int = 0; ++pub const ITIMER_VIRTUAL: ::c_int = 1; ++pub const ITIMER_PROF: ::c_int = 2; ++ ++pub const XATTR_CREATE: ::c_int = 0x1; ++pub const XATTR_REPLACE: ::c_int = 0x2; ++ ++// On Linux, libc doesn't define this constant, libattr does instead. ++// We still define it for Linux as it's defined by libc on other platforms, ++// and it's mentioned in the man pages for getxattr and setxattr. ++pub const ENOATTR: ::c_int = ::ENODATA; ++ + f! { + pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { + for slot in cpuset.bits.iter_mut() { +@@ -708,6 +746,31 @@ f! { + pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { + set1.bits == set2.bits + } ++ ++ pub fn major(dev: ::dev_t) -> ::c_uint { ++ let mut major = 0; ++ major |= (dev & 0x00000000000fff00) >> 8; ++ major |= (dev & 0xfffff00000000000) >> 32; ++ major as ::c_uint ++ } ++ ++ pub fn minor(dev: ::dev_t) -> ::c_uint { ++ let mut minor = 0; ++ minor |= (dev & 0xfffff00000000000) >> 0; ++ minor |= (dev & 0x00000ffffff00000) >> 12; ++ minor as ::c_uint ++ } ++ ++ pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { ++ let major = major as ::dev_t; ++ let minor = minor as ::dev_t; ++ let mut dev = 0; ++ dev |= (major & 0x00000fff) << 8; ++ dev |= (major & 0xfffff000) << 32; ++ dev |= (minor & 0x000000ff) << 0; ++ dev |= (minor & 0xffffff00) << 12; ++ dev ++ } + } + + extern { +@@ -744,6 +807,11 @@ extern { + cmd: ::c_int, + buf: *mut ::shmid_ds) -> ::c_int; + pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t; ++ pub fn semget(key: ::key_t, nsems: ::c_int, semflag: ::c_int) -> ::c_int; ++ pub fn semop(semid: ::c_int, ++ sops: *mut ::sembuf, nsops: ::size_t) -> ::c_int; ++ pub fn semctl(semid: ::c_int, ++ semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int; + pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int; + pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int; + pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t, +@@ -859,6 +927,8 @@ extern { + serv: *mut ::c_char, + sevlen: ::socklen_t, + flags: ::c_int) -> ::c_int; ++ pub fn pthread_setschedprio(native: ::pthread_t, ++ priority: ::c_int) -> ::c_int; + pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit, + old_limit: *mut ::rlimit) -> ::c_int; + pub fn prlimit64(pid: ::pid_t, +@@ -899,6 +969,60 @@ extern { + new_len: ::size_t, + flags: ::c_int, + ...) -> *mut ::c_void; ++ ++ pub fn glob(pattern: *const c_char, ++ flags: ::c_int, ++ errfunc: Option<extern fn(epath: *const c_char, ++ errno: ::c_int) -> ::c_int>, ++ pglob: *mut ::glob_t) -> ::c_int; ++ pub fn globfree(pglob: *mut ::glob_t); ++ ++ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn shm_unlink(name: *const ::c_char) -> ::c_int; ++ ++ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); ++ ++ pub fn telldir(dirp: *mut ::DIR) -> ::c_long; ++ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; ++ ++ pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, ++ flags: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t) -> ::ssize_t; ++ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; ++ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; ++ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::socklen_t) -> ::c_int; ++ ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; ++ pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int; ++ pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int; ++ pub fn vhangup() -> ::c_int; ++} ++ ++extern { ++ pub fn sendmmsg(sockfd: ::c_int, msgvec: *mut mmsghdr, vlen: ::c_uint, ++ flags: ::c_int) -> ::c_int; ++ pub fn recvmmsg(sockfd: ::c_int, msgvec: *mut mmsghdr, vlen: ::c_uint, ++ flags: ::c_int, timeout: *mut ::timespec) -> ::c_int; ++ pub fn sync(); + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs +index 540c1abb5f69..ce198aca9285 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs +@@ -245,13 +245,22 @@ pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; + pub const SO_RCVLOWAT: ::c_int = 18; + pub const SO_SNDLOWAT: ::c_int = 19; + pub const SO_RCVTIMEO: ::c_int = 20; + pub const SO_SNDTIMEO: ::c_int = 21; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +diff --git third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs +index 363d7c5d66f4..23c1a267e664 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs +@@ -245,21 +245,30 @@ pub const SOCK_SEQPACKET: ::c_int = 5; + pub const SOL_SOCKET: ::c_int = 65535; + + pub const SO_REUSEADDR: ::c_int = 0x0004; +-pub const SO_TYPE: ::c_int = 0x1008; +-pub const SO_ERROR: ::c_int = 0x1007; ++pub const SO_KEEPALIVE: ::c_int = 0x0008; + pub const SO_DONTROUTE: ::c_int = 0x0010; + pub const SO_BROADCAST: ::c_int = 0x0020; ++pub const SO_LINGER: ::c_int = 0x0080; ++pub const SO_OOBINLINE: ::c_int = 0x0100; ++pub const SO_REUSEPORT: ::c_int = 0x0200; + pub const SO_SNDBUF: ::c_int = 0x1001; + pub const SO_RCVBUF: ::c_int = 0x1002; +-pub const SO_KEEPALIVE: ::c_int = 0x0008; +-pub const SO_OOBINLINE: ::c_int = 0x0100; +-pub const SO_LINGER: ::c_int = 0x0080; +-pub const SO_REUSEPORT: ::c_int = 0x200; +-pub const SO_RCVLOWAT: ::c_int = 0x1004; + pub const SO_SNDLOWAT: ::c_int = 0x1003; ++pub const SO_RCVLOWAT: ::c_int = 0x1004; + pub const SO_RCVTIMEO: ::c_int = 0x1006; + pub const SO_SNDTIMEO: ::c_int = 0x1005; ++pub const SO_ERROR: ::c_int = 0x1007; ++pub const SO_TYPE: ::c_int = 0x1008; + pub const SO_ACCEPTCONN: ::c_int = 0x1009; ++pub const SO_PROTOCOL: ::c_int = 0x1028; ++pub const SO_DOMAIN: ::c_int = 0x1029; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; ++pub const SO_BSDCOMPAT: ::c_int = 14; ++pub const SO_PASSCRED: ::c_int = 17; ++pub const SO_PEERCRED: ::c_int = 18; ++pub const SO_SNDBUFFORCE: ::c_int = 31; ++pub const SO_RCVBUFFORCE: ::c_int = 33; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 8; +diff --git third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs +index dede8ffc5f9f..9daeb58b9986 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs +@@ -258,13 +258,22 @@ pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; + pub const SO_RCVLOWAT: ::c_int = 18; + pub const SO_SNDLOWAT: ::c_int = 19; + pub const SO_RCVTIMEO: ::c_int = 20; + pub const SO_SNDTIMEO: ::c_int = 21; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +diff --git third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs +index 2de34133fc3b..fab0b58fed9b 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs +@@ -274,13 +274,22 @@ pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; + pub const SO_RCVLOWAT: ::c_int = 18; + pub const SO_SNDLOWAT: ::c_int = 19; + pub const SO_RCVTIMEO: ::c_int = 20; + pub const SO_SNDTIMEO: ::c_int = 21; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +diff --git third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs +index ff8e59b08aeb..b365028b76ac 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs +@@ -35,7 +35,7 @@ s! { + pub sa_sigaction: ::sighandler_t, + pub sa_mask: ::sigset_t, + pub sa_flags: ::c_int, +- _restorer: *mut ::c_void, ++ pub sa_restorer: ::dox::Option<extern fn()>, + } + + pub struct ipc_perm { +@@ -124,6 +124,9 @@ pub const EFD_CLOEXEC: ::c_int = 0x80000; + pub const BUFSIZ: ::c_uint = 1024; + pub const TMP_MAX: ::c_uint = 10000; + pub const FOPEN_MAX: ::c_uint = 1000; ++pub const O_PATH: ::c_int = 0o10000000; ++pub const O_EXEC: ::c_int = 0o10000000; ++pub const O_SEARCH: ::c_int = 0o10000000; + pub const O_ACCMODE: ::c_int = 0o10000003; + pub const O_NDELAY: ::c_int = O_NONBLOCK; + pub const NI_MAXHOST: ::socklen_t = 255; +@@ -236,6 +239,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -277,6 +281,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + extern { + pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; + pub fn ptrace(request: ::c_int, ...) -> ::c_long; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs +index 2c6fbcd6e3f2..ee6d67403a1b 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs +@@ -100,6 +100,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -141,6 +142,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + pub const VEOL: usize = 11; + pub const VEOL2: usize = 16; + pub const VMIN: usize = 6; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs +index 3125e9f337dd..035bfe19cdc0 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs +@@ -81,11 +81,17 @@ pub const MAP_NORESERVE: ::c_int = 0x00040; + + pub const EDEADLOCK: ::c_int = 58; + +-pub const SO_PEERCRED: ::c_int = 21; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_RCVLOWAT: ::c_int = 16; + pub const SO_SNDLOWAT: ::c_int = 17; + pub const SO_RCVTIMEO: ::c_int = 18; + pub const SO_SNDTIMEO: ::c_int = 19; ++pub const SO_PASSCRED: ::c_int = 20; ++pub const SO_PEERCRED: ::c_int = 21; + + pub const FIOCLEX: ::c_ulong = 0x20006601; + pub const FIONBIO: ::c_ulong = 0x8004667e; +@@ -97,6 +103,7 @@ pub const MCL_CURRENT: ::c_int = 0x2000; + pub const MCL_FUTURE: ::c_int = 0x4000; + + pub const SIGSTKSZ: ::size_t = 0x4000; ++pub const MINSIGSTKSZ: ::size_t = 4096; + pub const CBAUD: ::tcflag_t = 0xff; + pub const TAB1: ::c_int = 0x400; + pub const TAB2: ::c_int = 0x800; +@@ -138,6 +145,41 @@ pub const ICANON: ::tcflag_t = 0x100; + pub const PENDIN: ::tcflag_t = 0x20000000; + pub const NOFLSH: ::tcflag_t = 0x80000000; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const CBAUDEX: ::speed_t = 0o000020; ++pub const B57600: ::speed_t = 0o0020; ++pub const B115200: ::speed_t = 0o0021; ++pub const B230400: ::speed_t = 0o0022; ++pub const B460800: ::speed_t = 0o0023; ++pub const B500000: ::speed_t = 0o0024; ++pub const B576000: ::speed_t = 0o0025; ++pub const B921600: ::speed_t = 0o0026; ++pub const B1000000: ::speed_t = 0o0027; ++pub const B1152000: ::speed_t = 0o0030; ++pub const B1500000: ::speed_t = 0o0031; ++pub const B2000000: ::speed_t = 0o0032; ++pub const B2500000: ::speed_t = 0o0033; ++pub const B3000000: ::speed_t = 0o0034; ++pub const B3500000: ::speed_t = 0o0035; ++pub const B4000000: ::speed_t = 0o0036; ++ + pub const VEOL: usize = 6; + pub const VEOL2: usize = 8; + pub const VMIN: usize = 5; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs +index 86abd1eb1035..04a3caad12ac 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs +@@ -20,6 +20,71 @@ s! { + pub status: ::c_ulong, + } + ++ pub struct user_fpregs_struct { ++ pub cwd: ::c_long, ++ pub swd: ::c_long, ++ pub twd: ::c_long, ++ pub fip: ::c_long, ++ pub fcs: ::c_long, ++ pub foo: ::c_long, ++ pub fos: ::c_long, ++ pub st_space: [::c_long; 20], ++ } ++ ++ pub struct user_fpxregs_struct { ++ pub cwd: ::c_ushort, ++ pub swd: ::c_ushort, ++ pub twd: ::c_ushort, ++ pub fop: ::c_ushort, ++ pub fip: ::c_long, ++ pub fcs: ::c_long, ++ pub foo: ::c_long, ++ pub fos: ::c_long, ++ pub mxcsr: ::c_long, ++ __reserved: ::c_long, ++ pub st_space: [::c_long; 32], ++ pub xmm_space: [::c_long; 32], ++ padding: [::c_long; 56], ++ } ++ ++ pub struct user_regs_struct { ++ pub ebx: ::c_long, ++ pub ecx: ::c_long, ++ pub edx: ::c_long, ++ pub esi: ::c_long, ++ pub edi: ::c_long, ++ pub ebp: ::c_long, ++ pub eax: ::c_long, ++ pub xds: ::c_long, ++ pub xes: ::c_long, ++ pub xfs: ::c_long, ++ pub xgs: ::c_long, ++ pub orig_eax: ::c_long, ++ pub eip: ::c_long, ++ pub xcs: ::c_long, ++ pub eflags: ::c_long, ++ pub esp: ::c_long, ++ pub xss: ::c_long, ++ } ++ ++ pub struct user { ++ pub regs: user_regs_struct, ++ pub u_fpvalid: ::c_int, ++ pub i387: user_fpregs_struct, ++ pub u_tsize: ::c_ulong, ++ pub u_dsize: ::c_ulong, ++ pub u_ssize: ::c_ulong, ++ pub start_code: ::c_ulong, ++ pub start_stack: ::c_ulong, ++ pub signal: ::c_long, ++ __reserved: ::c_int, ++ pub u_ar0: *mut user_regs_struct, ++ pub u_fpstate: *mut user_fpregs_struct, ++ pub magic: ::c_ulong, ++ pub u_comm: [c_char; 32], ++ pub u_debugreg: [::c_int; 8], ++ } ++ + pub struct mcontext_t { + pub gregs: [greg_t; 19], + pub fpregs: *mut _libc_fpstate, +@@ -116,6 +181,12 @@ pub const MAP_32BIT: ::c_int = 0x0040; + + pub const EDEADLOCK: ::c_int = 35; + ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; ++pub const SO_BSDCOMPAT: ::c_int = 14; ++pub const SO_PASSCRED: ::c_int = 16; + pub const SO_PEERCRED: ::c_int = 17; + pub const SO_RCVLOWAT: ::c_int = 18; + pub const SO_SNDLOWAT: ::c_int = 19; +@@ -135,6 +206,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -176,6 +248,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + pub const VEOL: usize = 11; + pub const VEOL2: usize = 16; + pub const VMIN: usize = 6; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs +index cb0e1a6979e0..77cee3d21751 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs +@@ -188,11 +188,54 @@ pub const SO_DONTROUTE: ::c_int = 5; + pub const SO_BROADCAST: ::c_int = 6; + pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; ++pub const SO_RCVLOWAT: ::c_int = 18; ++pub const SO_SNDLOWAT: ::c_int = 19; ++pub const SO_RCVTIMEO: ::c_int = 20; ++pub const SO_SNDTIMEO: ::c_int = 21; ++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24; ++pub const SO_BINDTODEVICE: ::c_int = 25; ++pub const SO_ATTACH_FILTER: ::c_int = 26; ++pub const SO_DETACH_FILTER: ::c_int = 27; ++pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER; ++pub const SO_PEERNAME: ::c_int = 28; ++pub const SO_TIMESTAMP: ::c_int = 29; ++pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_PEERSEC: ::c_int = 31; ++pub const SO_PASSSEC: ::c_int = 34; ++pub const SO_TIMESTAMPNS: ::c_int = 35; ++pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; ++pub const SO_MARK: ::c_int = 36; ++pub const SO_TIMESTAMPING: ::c_int = 37; ++pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; ++pub const SO_RXQ_OVFL: ::c_int = 40; ++pub const SO_WIFI_STATUS: ::c_int = 41; ++pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; ++pub const SO_PEEK_OFF: ::c_int = 42; ++pub const SO_NOFCS: ::c_int = 43; ++pub const SO_LOCK_FILTER: ::c_int = 44; ++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45; ++pub const SO_BUSY_POLL: ::c_int = 46; ++pub const SO_MAX_PACING_RATE: ::c_int = 47; ++pub const SO_BPF_EXTENSIONS: ::c_int = 48; ++pub const SO_INCOMING_CPU: ::c_int = 49; ++pub const SO_ATTACH_BPF: ::c_int = 50; ++pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +@@ -291,12 +334,6 @@ pub const MAP_NORESERVE: ::c_int = 0x04000; + + pub const EDEADLOCK: ::c_int = 35; + +-pub const SO_PEERCRED: ::c_int = 17; +-pub const SO_RCVLOWAT: ::c_int = 18; +-pub const SO_SNDLOWAT: ::c_int = 19; +-pub const SO_RCVTIMEO: ::c_int = 20; +-pub const SO_SNDTIMEO: ::c_int = 21; +- + pub const FIOCLEX: ::c_ulong = 0x5451; + pub const FIONBIO: ::c_ulong = 0x5421; + +@@ -307,6 +344,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 16384; ++pub const MINSIGSTKSZ: ::size_t = 5120; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -348,6 +386,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + pub const VEOL: usize = 11; + pub const VEOL2: usize = 16; + pub const VMIN: usize = 6; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs third_party/rust/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs +index a5fad66dd1ea..8c19b0713dc5 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs +@@ -186,11 +186,54 @@ pub const SO_DONTROUTE: ::c_int = 5; + pub const SO_BROADCAST: ::c_int = 6; + pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 20; ++pub const SO_PEERCRED: ::c_int = 21; ++pub const SO_RCVLOWAT: ::c_int = 16; ++pub const SO_SNDLOWAT: ::c_int = 17; ++pub const SO_RCVTIMEO: ::c_int = 18; ++pub const SO_SNDTIMEO: ::c_int = 19; ++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24; ++pub const SO_BINDTODEVICE: ::c_int = 25; ++pub const SO_ATTACH_FILTER: ::c_int = 26; ++pub const SO_DETACH_FILTER: ::c_int = 27; ++pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER; ++pub const SO_PEERNAME: ::c_int = 28; ++pub const SO_TIMESTAMP: ::c_int = 29; ++pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_PEERSEC: ::c_int = 31; ++pub const SO_PASSSEC: ::c_int = 34; ++pub const SO_TIMESTAMPNS: ::c_int = 35; ++pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; ++pub const SO_MARK: ::c_int = 36; ++pub const SO_TIMESTAMPING: ::c_int = 37; ++pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; ++pub const SO_RXQ_OVFL: ::c_int = 40; ++pub const SO_WIFI_STATUS: ::c_int = 41; ++pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; ++pub const SO_PEEK_OFF: ::c_int = 42; ++pub const SO_NOFCS: ::c_int = 43; ++pub const SO_LOCK_FILTER: ::c_int = 44; ++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45; ++pub const SO_BUSY_POLL: ::c_int = 46; ++pub const SO_MAX_PACING_RATE: ::c_int = 47; ++pub const SO_BPF_EXTENSIONS: ::c_int = 48; ++pub const SO_INCOMING_CPU: ::c_int = 49; ++pub const SO_ATTACH_BPF: ::c_int = 50; ++pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +@@ -289,12 +332,6 @@ pub const MAP_NORESERVE: ::c_int = 0x00040; + + pub const EDEADLOCK: ::c_int = 58; + +-pub const SO_PEERCRED: ::c_int = 21; +-pub const SO_RCVLOWAT: ::c_int = 16; +-pub const SO_SNDLOWAT: ::c_int = 17; +-pub const SO_RCVTIMEO: ::c_int = 18; +-pub const SO_SNDTIMEO: ::c_int = 19; +- + pub const FIOCLEX: ::c_ulong = 0x20006601; + pub const FIONBIO: ::c_ulong = 0x8004667e; + +@@ -305,6 +342,7 @@ pub const MCL_CURRENT: ::c_int = 0x2000; + pub const MCL_FUTURE: ::c_int = 0x4000; + + pub const SIGSTKSZ: ::size_t = 0x4000; ++pub const MINSIGSTKSZ: ::size_t = 4096; + pub const CBAUD: ::tcflag_t = 0xff; + pub const TAB1: ::c_int = 0x400; + pub const TAB2: ::c_int = 0x800; +@@ -346,6 +384,41 @@ pub const ICANON: ::tcflag_t = 0x100; + pub const PENDIN: ::tcflag_t = 0x20000000; + pub const NOFLSH: ::tcflag_t = 0x80000000; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const CBAUDEX: ::speed_t = 0o000020; ++pub const B57600: ::speed_t = 0o0020; ++pub const B115200: ::speed_t = 0o0021; ++pub const B230400: ::speed_t = 0o0022; ++pub const B460800: ::speed_t = 0o0023; ++pub const B500000: ::speed_t = 0o0024; ++pub const B576000: ::speed_t = 0o0025; ++pub const B921600: ::speed_t = 0o0026; ++pub const B1000000: ::speed_t = 0o0027; ++pub const B1152000: ::speed_t = 0o0030; ++pub const B1500000: ::speed_t = 0o0031; ++pub const B2000000: ::speed_t = 0o0032; ++pub const B2500000: ::speed_t = 0o0033; ++pub const B3000000: ::speed_t = 0o0034; ++pub const B3500000: ::speed_t = 0o0035; ++pub const B4000000: ::speed_t = 0o0036; ++ + pub const VEOL: usize = 6; + pub const VEOL2: usize = 8; + pub const VMIN: usize = 5; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b64/sparc64.rs third_party/rust/libc/src/unix/notbsd/linux/other/b64/sparc64.rs +index a1ac4f5389de..12598e052294 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b64/sparc64.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b64/sparc64.rs +@@ -301,6 +301,7 @@ pub const MCL_CURRENT: ::c_int = 0x2000; + pub const MCL_FUTURE: ::c_int = 0x4000; + + pub const SIGSTKSZ: ::size_t = 16384; ++pub const MINSIGSTKSZ: ::size_t = 4096; + pub const CBAUD: ::tcflag_t = 0x0000100f; + pub const TAB1: ::c_int = 0x800; + pub const TAB2: ::c_int = 0x1000; +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs +index d7bf149caa7e..e1b65e8e71be 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs +@@ -78,6 +78,68 @@ s! { + __private: [u64; 12], + } + ++ pub struct user_fpregs_struct { ++ pub cwd: ::c_ushort, ++ pub swd: ::c_ushort, ++ pub ftw: ::c_ushort, ++ pub fop: ::c_ushort, ++ pub rip: ::c_ulonglong, ++ pub rdp: ::c_ulonglong, ++ pub mxcsr: ::c_uint, ++ pub mxcr_mask: ::c_uint, ++ pub st_space: [::c_uint; 32], ++ pub xmm_space: [::c_uint; 64], ++ padding: [::c_uint; 24], ++ } ++ ++ pub struct user_regs_struct { ++ pub r15: ::c_ulonglong, ++ pub r14: ::c_ulonglong, ++ pub r13: ::c_ulonglong, ++ pub r12: ::c_ulonglong, ++ pub rbp: ::c_ulonglong, ++ pub rbx: ::c_ulonglong, ++ pub r11: ::c_ulonglong, ++ pub r10: ::c_ulonglong, ++ pub r9: ::c_ulonglong, ++ pub r8: ::c_ulonglong, ++ pub rax: ::c_ulonglong, ++ pub rcx: ::c_ulonglong, ++ pub rdx: ::c_ulonglong, ++ pub rsi: ::c_ulonglong, ++ pub rdi: ::c_ulonglong, ++ pub orig_rax: ::c_ulonglong, ++ pub rip: ::c_ulonglong, ++ pub cs: ::c_ulonglong, ++ pub eflags: ::c_ulonglong, ++ pub rsp: ::c_ulonglong, ++ pub ss: ::c_ulonglong, ++ pub fs_base: ::c_ulonglong, ++ pub gs_base: ::c_ulonglong, ++ pub ds: ::c_ulonglong, ++ pub es: ::c_ulonglong, ++ pub fs: ::c_ulonglong, ++ pub gs: ::c_ulonglong, ++ } ++ ++ pub struct user { ++ pub regs: user_regs_struct, ++ pub u_fpvalid: ::c_int, ++ pub i387: user_fpregs_struct, ++ pub u_tsize: ::c_ulonglong, ++ pub u_dsize: ::c_ulonglong, ++ pub u_ssize: ::c_ulonglong, ++ pub start_code: ::c_ulonglong, ++ pub start_stack: ::c_ulonglong, ++ pub signal: ::c_longlong, ++ __reserved: ::c_int, ++ pub u_ar0: *mut user_regs_struct, ++ pub u_fpstate: *mut user_fpregs_struct, ++ pub magic: ::c_ulonglong, ++ pub u_comm: [::c_char; 32], ++ pub u_debugreg: [::c_ulonglong; 8], ++ } ++ + pub struct mcontext_t { + pub gregs: [greg_t; 23], + pub fpregs: *mut _libc_fpstate, +@@ -227,11 +289,54 @@ pub const SO_DONTROUTE: ::c_int = 5; + pub const SO_BROADCAST: ::c_int = 6; + pub const SO_SNDBUF: ::c_int = 7; + pub const SO_RCVBUF: ::c_int = 8; ++pub const SO_SNDBUFFORCE: ::c_int = 32; ++pub const SO_RCVBUFFORCE: ::c_int = 33; + pub const SO_KEEPALIVE: ::c_int = 9; + pub const SO_OOBINLINE: ::c_int = 10; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; + pub const SO_LINGER: ::c_int = 13; ++pub const SO_BSDCOMPAT: ::c_int = 14; + pub const SO_REUSEPORT: ::c_int = 15; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; ++pub const SO_RCVLOWAT: ::c_int = 18; ++pub const SO_SNDLOWAT: ::c_int = 19; ++pub const SO_RCVTIMEO: ::c_int = 20; ++pub const SO_SNDTIMEO: ::c_int = 21; ++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24; ++pub const SO_BINDTODEVICE: ::c_int = 25; ++pub const SO_ATTACH_FILTER: ::c_int = 26; ++pub const SO_DETACH_FILTER: ::c_int = 27; ++pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER; ++pub const SO_PEERNAME: ::c_int = 28; ++pub const SO_TIMESTAMP: ::c_int = 29; ++pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP; + pub const SO_ACCEPTCONN: ::c_int = 30; ++pub const SO_PEERSEC: ::c_int = 31; ++pub const SO_PASSSEC: ::c_int = 34; ++pub const SO_TIMESTAMPNS: ::c_int = 35; ++pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; ++pub const SO_MARK: ::c_int = 36; ++pub const SO_TIMESTAMPING: ::c_int = 37; ++pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; ++pub const SO_PROTOCOL: ::c_int = 38; ++pub const SO_DOMAIN: ::c_int = 39; ++pub const SO_RXQ_OVFL: ::c_int = 40; ++pub const SO_WIFI_STATUS: ::c_int = 41; ++pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; ++pub const SO_PEEK_OFF: ::c_int = 42; ++pub const SO_NOFCS: ::c_int = 43; ++pub const SO_LOCK_FILTER: ::c_int = 44; ++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45; ++pub const SO_BUSY_POLL: ::c_int = 46; ++pub const SO_MAX_PACING_RATE: ::c_int = 47; ++pub const SO_BPF_EXTENSIONS: ::c_int = 48; ++pub const SO_INCOMING_CPU: ::c_int = 49; ++pub const SO_ATTACH_BPF: ::c_int = 50; ++pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER; + + pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 0x00000004; +@@ -331,12 +436,6 @@ pub const MAP_32BIT: ::c_int = 0x0040; + + pub const EDEADLOCK: ::c_int = 35; + +-pub const SO_PEERCRED: ::c_int = 17; +-pub const SO_RCVLOWAT: ::c_int = 18; +-pub const SO_SNDLOWAT: ::c_int = 19; +-pub const SO_RCVTIMEO: ::c_int = 20; +-pub const SO_SNDTIMEO: ::c_int = 21; +- + pub const FIOCLEX: ::c_ulong = 0x5451; + pub const FIONBIO: ::c_ulong = 0x5421; + +@@ -365,6 +464,7 @@ pub const MCL_CURRENT: ::c_int = 0x0001; + pub const MCL_FUTURE: ::c_int = 0x0002; + + pub const SIGSTKSZ: ::size_t = 8192; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const CBAUD: ::tcflag_t = 0o0010017; + pub const TAB1: ::c_int = 0x00000800; + pub const TAB2: ::c_int = 0x00001000; +@@ -406,6 +506,40 @@ pub const ICANON: ::tcflag_t = 0x00000002; + pub const PENDIN: ::tcflag_t = 0x00004000; + pub const NOFLSH: ::tcflag_t = 0x00000080; + ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ + pub const VEOL: usize = 11; + pub const VEOL2: usize = 16; + pub const VMIN: usize = 6; +@@ -440,4 +574,7 @@ extern { + argc: ::c_int, ...); + pub fn swapcontext(uocp: *mut ucontext_t, + ucp: *const ucontext_t) -> ::c_int; ++ pub fn iopl(level: ::c_int) -> ::c_int; ++ pub fn ioperm(from: ::c_ulong, num: ::c_ulong, ++ turn_on: ::c_int) -> ::c_int; + } +diff --git third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs +index 3beb7886f347..b7a11a85e962 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs +@@ -70,7 +70,7 @@ s! { + #[cfg(target_arch = "sparc64")] + __reserved0: ::c_int, + pub sa_flags: ::c_int, +- _restorer: *mut ::c_void, ++ pub sa_restorer: ::dox::Option<extern fn()>, + } + + pub struct stack_t { +@@ -192,6 +192,18 @@ pub const RLIMIT_NLIMITS: ::c_int = 16; + + pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK; + ++pub const SOL_RXRPC: ::c_int = 272; ++pub const SOL_PPPOL2TP: ::c_int = 273; ++pub const SOL_BLUETOOTH: ::c_int = 274; ++pub const SOL_PNPIPE: ::c_int = 275; ++pub const SOL_RDS: ::c_int = 276; ++pub const SOL_IUCV: ::c_int = 277; ++pub const SOL_CAIF: ::c_int = 278; ++pub const SOL_ALG: ::c_int = 279; ++pub const SOL_NFC: ::c_int = 280; ++ ++pub const MSG_TRYHARD: ::c_int = 4; ++ + pub const LC_PAPER: ::c_int = 7; + pub const LC_NAME: ::c_int = 8; + pub const LC_ADDRESS: ::c_int = 9; +@@ -302,7 +314,6 @@ pub const TMPFS_MAGIC: ::c_long = 0x01021994; + pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2; + + pub const VEOF: usize = 4; +-pub const IUTF8: ::tcflag_t = 0x00004000; + + pub const CPU_SETSIZE: ::c_int = 0x400; + +diff --git third_party/rust/libc/src/unix/notbsd/linux/s390x.rs third_party/rust/libc/src/unix/notbsd/linux/s390x.rs +index b646647b255d..1c0cd56d6f14 100644 +--- third_party/rust/libc/src/unix/notbsd/linux/s390x.rs ++++ third_party/rust/libc/src/unix/notbsd/linux/s390x.rs +@@ -86,7 +86,7 @@ s! { + pub sa_sigaction: ::sighandler_t, + __glibc_reserved0: ::c_int, + pub sa_flags: ::c_int, +- _restorer: *mut ::c_void, ++ pub sa_restorer: ::dox::Option<extern fn()>, + pub sa_mask: sigset_t, + } + +@@ -339,6 +339,7 @@ pub const SA_ONSTACK: ::c_int = 0x08000000; + pub const SA_SIGINFO: ::c_int = 4; + pub const SIGBUS: ::c_int = 7; + pub const SIGSTKSZ: ::size_t = 0x2000; ++pub const MINSIGSTKSZ: ::size_t = 2048; + pub const SIG_SETMASK: ::c_int = 2; + pub const SOCK_DGRAM: ::c_int = 2; + pub const SOCK_STREAM: ::c_int = 1; +@@ -576,7 +577,6 @@ pub const VMIN: usize = 6; + pub const IEXTEN: ::tcflag_t = 0x00008000; + pub const TOSTOP: ::tcflag_t = 0x00000100; + pub const FLUSHO: ::tcflag_t = 0x00001000; +-pub const IUTF8: ::tcflag_t = 0x00004000; + + pub const CPU_SETSIZE: ::c_int = 0x400; + +diff --git third_party/rust/libc/src/unix/notbsd/mod.rs third_party/rust/libc/src/unix/notbsd/mod.rs +index 9e0916a09eca..e10d28b304d7 100644 +--- third_party/rust/libc/src/unix/notbsd/mod.rs ++++ third_party/rust/libc/src/unix/notbsd/mod.rs +@@ -120,7 +120,9 @@ s! { + pub dli_saddr: *mut ::c_void, + } + +- #[cfg_attr(any(all(target_arch = "x86", not(target_env = "musl")), ++ #[cfg_attr(any(all(target_arch = "x86", ++ not(target_env = "musl"), ++ not(target_os = "android")), + target_arch = "x86_64"), + repr(packed))] + pub struct epoll_event { +@@ -253,6 +255,7 @@ pub const RUSAGE_SELF: ::c_int = 0; + pub const O_RDONLY: ::c_int = 0; + pub const O_WRONLY: ::c_int = 1; + pub const O_RDWR: ::c_int = 2; ++pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY; + + pub const SOCK_CLOEXEC: ::c_int = O_CLOEXEC; + +@@ -393,7 +396,9 @@ pub const EDOM: ::c_int = 33; + pub const ERANGE: ::c_int = 34; + pub const EWOULDBLOCK: ::c_int = EAGAIN; + +-pub const AF_PACKET: ::c_int = 17; ++pub const SCM_RIGHTS: ::c_int = 0x01; ++pub const SCM_CREDENTIALS: ::c_int = 0x02; ++ + pub const IPPROTO_RAW: ::c_int = 255; + + pub const PROT_GROWSDOWN: ::c_int = 0x1000000; +@@ -430,12 +435,127 @@ pub const IFF_PORTSEL: ::c_int = 0x2000; + pub const IFF_AUTOMEDIA: ::c_int = 0x4000; + pub const IFF_DYNAMIC: ::c_int = 0x8000; + ++pub const SOL_IP: ::c_int = 0; ++pub const SOL_TCP: ::c_int = 6; ++pub const SOL_IPV6: ::c_int = 41; ++pub const SOL_ICMPV6: ::c_int = 58; ++pub const SOL_RAW: ::c_int = 255; ++pub const SOL_DECNET: ::c_int = 261; ++pub const SOL_X25: ::c_int = 262; ++pub const SOL_PACKET: ::c_int = 263; ++pub const SOL_ATM: ::c_int = 264; ++pub const SOL_AAL: ::c_int = 265; ++pub const SOL_IRDA: ::c_int = 266; ++pub const SOL_NETBEUI: ::c_int = 267; ++pub const SOL_LLC: ::c_int = 268; ++pub const SOL_DCCP: ::c_int = 269; ++pub const SOL_NETLINK: ::c_int = 270; ++pub const SOL_TIPC: ::c_int = 271; ++ ++pub const AF_UNSPEC: ::c_int = 0; + pub const AF_UNIX: ::c_int = 1; ++pub const AF_LOCAL: ::c_int = 1; + pub const AF_INET: ::c_int = 2; ++pub const AF_AX25: ::c_int = 3; ++pub const AF_IPX: ::c_int = 4; ++pub const AF_APPLETALK: ::c_int = 5; ++pub const AF_NETROM: ::c_int = 6; ++pub const AF_BRIDGE: ::c_int = 7; ++pub const AF_ATMPVC: ::c_int = 8; ++pub const AF_X25: ::c_int = 9; + pub const AF_INET6: ::c_int = 10; +-pub const AF_UNSPEC: ::c_int = 0; ++pub const AF_ROSE: ::c_int = 11; ++pub const AF_DECnet: ::c_int = 12; ++pub const AF_NETBEUI: ::c_int = 13; ++pub const AF_SECURITY: ::c_int = 14; ++pub const AF_KEY: ::c_int = 15; + pub const AF_NETLINK: ::c_int = 16; ++pub const AF_ROUTE: ::c_int = AF_NETLINK; ++pub const AF_PACKET: ::c_int = 17; ++pub const AF_ASH: ::c_int = 18; ++pub const AF_ECONET: ::c_int = 19; ++pub const AF_ATMSVC: ::c_int = 20; ++pub const AF_RDS: ::c_int = 21; ++pub const AF_SNA: ::c_int = 22; ++pub const AF_IRDA: ::c_int = 23; ++pub const AF_PPPOX: ::c_int = 24; ++pub const AF_WANPIPE: ::c_int = 25; ++pub const AF_LLC: ::c_int = 26; ++pub const AF_CAN: ::c_int = 29; ++pub const AF_TIPC: ::c_int = 30; ++pub const AF_BLUETOOTH: ::c_int = 31; ++pub const AF_IUCV: ::c_int = 32; ++pub const AF_RXRPC: ::c_int = 33; ++pub const AF_ISDN: ::c_int = 34; ++pub const AF_PHONET: ::c_int = 35; ++pub const AF_IEEE802154: ::c_int = 36; ++pub const AF_CAIF: ::c_int = 37; ++pub const AF_ALG: ::c_int = 38; ++ ++pub const PF_UNSPEC: ::c_int = AF_UNSPEC; ++pub const PF_UNIX: ::c_int = AF_UNIX; ++pub const PF_LOCAL: ::c_int = AF_LOCAL; ++pub const PF_INET: ::c_int = AF_INET; ++pub const PF_AX25: ::c_int = AF_AX25; ++pub const PF_IPX: ::c_int = AF_IPX; ++pub const PF_APPLETALK: ::c_int = AF_APPLETALK; ++pub const PF_NETROM: ::c_int = AF_NETROM; ++pub const PF_BRIDGE: ::c_int = AF_BRIDGE; ++pub const PF_ATMPVC: ::c_int = AF_ATMPVC; ++pub const PF_X25: ::c_int = AF_X25; ++pub const PF_INET6: ::c_int = AF_INET6; ++pub const PF_ROSE: ::c_int = AF_ROSE; ++pub const PF_DECnet: ::c_int = AF_DECnet; ++pub const PF_NETBEUI: ::c_int = AF_NETBEUI; ++pub const PF_SECURITY: ::c_int = AF_SECURITY; ++pub const PF_KEY: ::c_int = AF_KEY; ++pub const PF_NETLINK: ::c_int = AF_NETLINK; ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_PACKET: ::c_int = AF_PACKET; ++pub const PF_ASH: ::c_int = AF_ASH; ++pub const PF_ECONET: ::c_int = AF_ECONET; ++pub const PF_ATMSVC: ::c_int = AF_ATMSVC; ++pub const PF_RDS: ::c_int = AF_RDS; ++pub const PF_SNA: ::c_int = AF_SNA; ++pub const PF_IRDA: ::c_int = AF_IRDA; ++pub const PF_PPPOX: ::c_int = AF_PPPOX; ++pub const PF_WANPIPE: ::c_int = AF_WANPIPE; ++pub const PF_LLC: ::c_int = AF_LLC; ++pub const PF_CAN: ::c_int = AF_CAN; ++pub const PF_TIPC: ::c_int = AF_TIPC; ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_IUCV: ::c_int = AF_IUCV; ++pub const PF_RXRPC: ::c_int = AF_RXRPC; ++pub const PF_ISDN: ::c_int = AF_ISDN; ++pub const PF_PHONET: ::c_int = AF_PHONET; ++pub const PF_IEEE802154: ::c_int = AF_IEEE802154; ++pub const PF_CAIF: ::c_int = AF_CAIF; ++pub const PF_ALG: ::c_int = AF_ALG; ++ ++pub const SOMAXCONN: ::c_int = 128; ++ ++pub const MSG_OOB: ::c_int = 1; ++pub const MSG_PEEK: ::c_int = 2; ++pub const MSG_DONTROUTE: ::c_int = 4; ++pub const MSG_CTRUNC: ::c_int = 8; ++pub const MSG_TRUNC: ::c_int = 0x20; ++pub const MSG_DONTWAIT: ::c_int = 0x40; ++pub const MSG_EOR: ::c_int = 0x80; ++pub const MSG_WAITALL: ::c_int = 0x100; ++pub const MSG_FIN: ::c_int = 0x200; ++pub const MSG_SYN: ::c_int = 0x400; ++pub const MSG_CONFIRM: ::c_int = 0x800; ++pub const MSG_RST: ::c_int = 0x1000; ++pub const MSG_ERRQUEUE: ::c_int = 0x2000; ++pub const MSG_NOSIGNAL: ::c_int = 0x4000; ++pub const MSG_MORE: ::c_int = 0x8000; ++pub const MSG_WAITFORONE: ::c_int = 0x10000; ++pub const MSG_FASTOPEN: ::c_int = 0x20000000; ++pub const MSG_CMSG_CLOEXEC: ::c_int = 0x40000000; ++ + pub const SOCK_RAW: ::c_int = 3; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -468,9 +588,6 @@ pub const IPV6_V6ONLY: ::c_int = 26; + + pub const SO_DEBUG: ::c_int = 1; + +-pub const MSG_PEEK: ::c_int = 0x2; +-pub const MSG_NOSIGNAL: ::c_int = 0x4000; +- + pub const SHUT_RD: ::c_int = 0; + pub const SHUT_WR: ::c_int = 1; + pub const SHUT_RDWR: ::c_int = 2; +@@ -558,6 +675,7 @@ pub const IGNCR: ::tcflag_t = 0x00000080; + pub const ICRNL: ::tcflag_t = 0x00000100; + pub const IXANY: ::tcflag_t = 0x00000800; + pub const IMAXBEL: ::tcflag_t = 0x00002000; ++pub const IUTF8: ::tcflag_t = 0x00004000; + pub const OPOST: ::tcflag_t = 0x1; + pub const CS5: ::tcflag_t = 0x00000000; + pub const CRTSCTS: ::tcflag_t = 0x80000000; +@@ -611,6 +729,10 @@ pub const POSIX_FADV_WILLNEED: ::c_int = 3; + + pub const AT_FDCWD: ::c_int = -100; + pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x100; ++pub const AT_REMOVEDIR: ::c_int = 0x200; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; ++pub const AT_NO_AUTOMOUNT: ::c_int = 0x800; ++pub const AT_EMPTY_PATH: ::c_int = 0x1000; + + pub const LOG_CRON: ::c_int = 9 << 3; + pub const LOG_AUTHPRIV: ::c_int = 10 << 3; +@@ -629,6 +751,9 @@ pub const P_ALL: idtype_t = 0; + pub const P_PID: idtype_t = 1; + pub const P_PGID: idtype_t = 2; + ++pub const UTIME_OMIT: c_long = 1073741822; ++pub const UTIME_NOW: c_long = 1073741823; ++ + f! { + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { + let fd = fd as usize; +@@ -664,6 +789,10 @@ f! { + (status >> 8) & 0xff + } + ++ pub fn WIFCONTINUED(status: ::c_int) -> bool { ++ status == 0xffff ++ } ++ + pub fn WIFSIGNALED(status: ::c_int) -> bool { + ((status & 0x7f) + 1) as i8 >= 2 + } +@@ -706,6 +835,9 @@ extern { + rqtp: *const ::timespec, + rmtp: *mut ::timespec) -> ::c_int; + pub fn clock_settime(clk_id: clockid_t, tp: *const ::timespec) -> ::c_int; ++ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; ++ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int; ++ + pub fn prctl(option: ::c_int, ...) -> ::c_int; + pub fn pthread_getattr_np(native: ::pthread_t, + attr: *mut ::pthread_attr_t) -> ::c_int; +@@ -724,6 +856,9 @@ extern { + pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int; + pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int; + pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; ++ pub fn sched_setparam(pid: ::pid_t, param: *const sched_param) -> ::c_int; ++ pub fn sched_getparam(pid: ::pid_t, param: *mut sched_param) -> ::c_int; ++ pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int; + pub fn epoll_create(size: ::c_int) -> ::c_int; + pub fn epoll_create1(flags: ::c_int) -> ::c_int; + pub fn epoll_ctl(epfd: ::c_int, +@@ -796,48 +931,44 @@ extern { + offset: off64_t) + -> *mut ::c_void; + pub fn open64(path: *const c_char, oflag: ::c_int, ...) -> ::c_int; ++ pub fn openat64(fd: ::c_int, ++ path: *const c_char, ++ oflag: ::c_int, ...) -> ::c_int; + pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, + offset: off64_t) -> ::ssize_t; + pub fn pwrite64(fd: ::c_int, buf: *const ::c_void, count: ::size_t, + offset: off64_t) -> ::ssize_t; ++ pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64; + pub fn readdir64_r(dirp: *mut ::DIR, entry: *mut ::dirent64, + result: *mut *mut ::dirent64) -> ::c_int; + pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int; + pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int; ++ pub fn truncate64(path: *const c_char, length: off64_t) -> ::c_int; + pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int; + pub fn sysinfo (info: *mut ::sysinfo) -> ::c_int; + +- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int, ...) -> ::c_int; +- pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::c_int, flags: ::c_int) -> ::c_int; +- pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, flags: ::c_int) -> ::c_int; +- pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, +- owner: ::uid_t, group: ::gid_t, +- flags: ::c_int) -> ::c_int; +- pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut stat, flags: ::c_int) -> ::c_int; +- pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ + pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, + mode: ::mode_t, dev: dev_t) -> ::c_int; +- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; +- pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char) +- -> ::c_int; +- pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, +- linkpath: *const ::c_char) -> ::c_int; +- pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int) -> ::c_int; ++ pub fn ppoll(fds: *mut ::pollfd, ++ nfds: nfds_t, ++ timeout: *const ::timespec, ++ sigmask: *const sigset_t) -> ::c_int; + pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, + clock_id: *mut clockid_t) -> ::c_int; + pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, + clock_id: clockid_t) -> ::c_int; ++ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, ++ pshared: *mut ::c_int) -> ::c_int; ++ pub fn pthread_getschedparam(native: ::pthread_t, ++ policy: *mut ::c_int, ++ param: *mut ::sched_param) -> ::c_int; ++ pub fn pthread_setschedparam(native: ::pthread_t, ++ policy: ::c_int, ++ param: *const ::sched_param) -> ::c_int; + pub fn sched_getaffinity(pid: ::pid_t, + cpusetsize: ::size_t, + cpuset: *mut cpu_set_t) -> ::c_int; +@@ -852,12 +983,32 @@ extern { + flg: ::c_int) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; ++ pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, ++ pshared: *mut ::c_int) -> ::c_int; + pub fn ptsname_r(fd: ::c_int, + buf: *mut ::c_char, + buflen: ::size_t) -> ::c_int; + pub fn clearenv() -> ::c_int; + pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, + options: ::c_int) -> ::c_int; ++ pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int; ++ pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int; ++ pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int; ++ pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, ++ suid: *mut ::uid_t) -> ::c_int; ++ pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, ++ sgid: *mut ::gid_t) -> ::c_int; ++ pub fn personality(persona: ::c_ulong) -> ::c_int; ++ pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int; ++ pub fn swapoff(puath: *const ::c_char) -> ::c_int; ++ pub fn acct(filename: *const ::c_char) -> ::c_int; ++ pub fn brk(addr: *mut ::c_void) -> ::c_int; ++ pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void; ++ pub fn vfork() -> ::pid_t; ++ pub fn wait4(pid: ::pid_t, status: *mut ::c_int, options: ::c_int, ++ rusage: *mut ::rusage) -> ::pid_t; + } + + cfg_if! { +diff --git third_party/rust/libc/src/unix/solaris/mod.rs third_party/rust/libc/src/unix/solaris/mod.rs +index b604208583a4..757d5817ed36 100644 +--- third_party/rust/libc/src/unix/solaris/mod.rs ++++ third_party/rust/libc/src/unix/solaris/mod.rs +@@ -1,36 +1,38 @@ ++use dox::{mem, Option}; ++ + pub type c_char = i8; + pub type c_long = i64; + pub type c_ulong = u64; +-pub type clockid_t = ::c_int; + +-pub type blkcnt_t = i64; +-pub type clock_t = i64; +-pub type daddr_t = i64; +-pub type dev_t = u64; +-pub type fsblkcnt_t = u64; +-pub type fsfilcnt_t = u64; +-pub type ino_t = i64; +-pub type key_t = i32; +-pub type major_t = u32; +-pub type minor_t = u32; +-pub type mode_t = u32; +-pub type nlink_t = u32; +-pub type rlim_t = u64; +-pub type speed_t = u32; +-pub type tcflag_t = u32; +-pub type time_t = i64; +-pub type wchar_t = i32; ++pub type clockid_t = ::c_int; ++pub type blkcnt_t = ::c_long; ++pub type clock_t = ::c_long; ++pub type daddr_t = ::c_long; ++pub type dev_t = ::c_ulong; ++pub type fsblkcnt_t = ::c_ulong; ++pub type fsfilcnt_t = ::c_ulong; ++pub type ino_t = ::c_ulong; ++pub type key_t = ::c_int; ++pub type major_t = ::c_uint; ++pub type minor_t = ::c_uint; ++pub type mode_t = ::c_uint; ++pub type nlink_t = ::c_uint; ++pub type rlim_t = ::c_ulong; ++pub type speed_t = ::c_uint; ++pub type tcflag_t = ::c_uint; ++pub type time_t = ::c_long; ++pub type wchar_t = ::c_int; + pub type nfds_t = ::c_ulong; + + pub type suseconds_t = ::c_long; +-pub type off_t = i64; ++pub type off_t = ::c_long; + pub type useconds_t = ::c_uint; +-pub type socklen_t = u32; +-pub type sa_family_t = u8; +-pub type pthread_t = ::uintptr_t; ++pub type socklen_t = ::c_uint; ++pub type sa_family_t = u16; ++pub type pthread_t = ::c_uint; + pub type pthread_key_t = ::c_uint; +-pub type blksize_t = u32; +-pub type fflags_t = u32; ++pub type blksize_t = ::c_int; ++pub type fflags_t = ::c_int; + pub type nl_item = ::c_int; + pub type id_t = ::c_int; + pub type idtype_t = ::c_uint; +@@ -123,6 +125,9 @@ s! { + } + + pub struct fd_set { ++ #[cfg(target_pointer_width = "64")] ++ fds_bits: [i64; FD_SETSIZE / 64], ++ #[cfg(target_pointer_width = "32")] + fds_bits: [i32; FD_SETSIZE / 32], + } + +@@ -335,6 +340,14 @@ s! { + pub if_index: ::c_uint, + pub if_name: *mut ::c_char, + } ++ ++ pub struct port_event { ++ pub portev_events: ::c_int, ++ pub portev_source: ::c_ushort, ++ pub portev_pad: ::c_ushort, ++ pub portev_object: ::uintptr_t, ++ pub portev_user: ::uintptr_t, ++ } + } + + pub const LC_CTYPE: ::c_int = 0; +@@ -436,7 +449,13 @@ pub const SA_NOCLDSTOP: ::c_int = 0x00020000; + pub const SS_ONSTACK: ::c_int = 1; + pub const SS_DISABLE: ::c_int = 2; + ++pub const FIOCLEX: ::c_int = 0x20006601; ++pub const FIONCLEX: ::c_int = 0x20006602; ++pub const FIONREAD: ::c_int = 0x4004667f; + pub const FIONBIO: ::c_int = 0x8004667e; ++pub const FIOASYNC: ::c_int = 0x8004667d; ++pub const FIOSETOWN: ::c_int = 0x8004667c; ++pub const FIOGETOWN: ::c_int = 0x4004667b; + + pub const SIGCHLD: ::c_int = 18; + pub const SIGBUS: ::c_int = 10; +@@ -448,7 +467,13 @@ pub const SIG_SETMASK: ::c_int = 3; + pub const IPV6_MULTICAST_LOOP: ::c_int = 0x8; + pub const IPV6_V6ONLY: ::c_int = 0x27; + +-pub const FD_SETSIZE: usize = 1024; ++cfg_if! { ++ if #[cfg(target_pointer_width = "64")] { ++ pub const FD_SETSIZE: usize = 65536; ++ } else { ++ pub const FD_SETSIZE: usize = 1024; ++ } ++} + + pub const ST_RDONLY: ::c_ulong = 1; + pub const ST_NOSUID: ::c_ulong = 2; +@@ -474,6 +499,8 @@ pub const TMP_MAX: ::c_uint = 17576; + pub const O_RDONLY: ::c_int = 0; + pub const O_WRONLY: ::c_int = 1; + pub const O_RDWR: ::c_int = 2; ++pub const O_SEARCH: ::c_int = 0x200000; ++pub const O_EXEC: ::c_int = 0x400000; + pub const O_APPEND: ::c_int = 8; + pub const O_CREAT: ::c_int = 256; + pub const O_EXCL: ::c_int = 1024; +@@ -598,7 +625,7 @@ pub const E2BIG: ::c_int = 7; + pub const ENOEXEC: ::c_int = 8; + pub const EBADF: ::c_int = 9; + pub const ECHILD: ::c_int = 10; +-pub const EDEADLK: ::c_int = 45; ++pub const EAGAIN: ::c_int = 11; + pub const ENOMEM: ::c_int = 12; + pub const EACCES: ::c_int = 13; + pub const EFAULT: ::c_int = 14; +@@ -622,11 +649,65 @@ pub const EMLINK: ::c_int = 31; + pub const EPIPE: ::c_int = 32; + pub const EDOM: ::c_int = 33; + pub const ERANGE: ::c_int = 34; ++pub const ENOMSG: ::c_int = 35; ++pub const EIDRM: ::c_int = 36; ++pub const ECHRNG: ::c_int = 37; ++pub const EL2NSYNC: ::c_int = 38; ++pub const EL3HLT: ::c_int = 39; ++pub const EL3RST: ::c_int = 40; ++pub const ELNRNG: ::c_int = 41; ++pub const EUNATCH: ::c_int = 42; ++pub const ENOCSI: ::c_int = 43; ++pub const EL2HLT: ::c_int = 44; ++pub const EDEADLK: ::c_int = 45; ++pub const ENOLCK: ::c_int = 46; ++pub const ECANCELED: ::c_int = 47; + pub const ENOTSUP: ::c_int = 48; +-pub const EAGAIN: ::c_int = 11; +-pub const EWOULDBLOCK: ::c_int = 11; +-pub const EINPROGRESS: ::c_int = 150; +-pub const EALREADY: ::c_int = 149; ++pub const EDQUOT: ::c_int = 49; ++pub const EBADE: ::c_int = 50; ++pub const EBADR: ::c_int = 51; ++pub const EXFULL: ::c_int = 52; ++pub const ENOANO: ::c_int = 53; ++pub const EBADRQC: ::c_int = 54; ++pub const EBADSLT: ::c_int = 55; ++pub const EDEADLOCK: ::c_int = 56; ++pub const EBFONT: ::c_int = 57; ++pub const EOWNERDEAD: ::c_int = 58; ++pub const ENOTRECOVERABLE: ::c_int = 59; ++pub const ENOSTR: ::c_int = 60; ++pub const ENODATA: ::c_int = 61; ++pub const ETIME: ::c_int = 62; ++pub const ENOSR: ::c_int = 63; ++pub const ENONET: ::c_int = 64; ++pub const ENOPKG: ::c_int = 65; ++pub const EREMOTE: ::c_int = 66; ++pub const ENOLINK: ::c_int = 67; ++pub const EADV: ::c_int = 68; ++pub const ESRMNT: ::c_int = 69; ++pub const ECOMM: ::c_int = 70; ++pub const EPROTO: ::c_int = 71; ++pub const ELOCKUNMAPPED: ::c_int = 72; ++pub const ENOTACTIVE: ::c_int = 73; ++pub const EMULTIHOP: ::c_int = 74; ++pub const EADI: ::c_int = 75; ++pub const EBADMSG: ::c_int = 77; ++pub const ENAMETOOLONG: ::c_int = 78; ++pub const EOVERFLOW: ::c_int = 79; ++pub const ENOTUNIQ: ::c_int = 80; ++pub const EBADFD: ::c_int = 81; ++pub const EREMCHG: ::c_int = 82; ++pub const ELIBACC: ::c_int = 83; ++pub const ELIBBAD: ::c_int = 84; ++pub const ELIBSCN: ::c_int = 85; ++pub const ELIBMAX: ::c_int = 86; ++pub const ELIBEXEC: ::c_int = 87; ++pub const EILSEQ: ::c_int = 88; ++pub const ENOSYS: ::c_int = 89; ++pub const ELOOP: ::c_int = 90; ++pub const ERESTART: ::c_int = 91; ++pub const ESTRPIPE: ::c_int = 92; ++pub const ENOTEMPTY: ::c_int = 93; ++pub const EUSERS: ::c_int = 94; + pub const ENOTSOCK: ::c_int = 95; + pub const EDESTADDRREQ: ::c_int = 96; + pub const EMSGSIZE: ::c_int = 97; +@@ -651,26 +732,11 @@ pub const ESHUTDOWN: ::c_int = 143; + pub const ETOOMANYREFS: ::c_int = 144; + pub const ETIMEDOUT: ::c_int = 145; + pub const ECONNREFUSED: ::c_int = 146; +-pub const ELOOP: ::c_int = 90; +-pub const ENAMETOOLONG: ::c_int = 78; + pub const EHOSTDOWN: ::c_int = 147; + pub const EHOSTUNREACH: ::c_int = 148; +-pub const ENOTEMPTY: ::c_int = 93; +-pub const EUSERS: ::c_int = 94; +-pub const EDQUOT: ::c_int = 49; +-pub const ESTALE: ::c_int = 151; +-pub const EREMOTE: ::c_int = 66; +-pub const ENOLCK: ::c_int = 46; +-pub const ENOSYS: ::c_int = 89; +-pub const EIDRM: ::c_int = 36; +-pub const ENOMSG: ::c_int = 35; +-pub const EOVERFLOW: ::c_int = 79; +-pub const ECANCELED: ::c_int = 47; +-pub const EILSEQ: ::c_int = 88; +-pub const EBADMSG: ::c_int = 77; +-pub const EMULTIHOP: ::c_int = 74; +-pub const ENOLINK: ::c_int = 67; +-pub const EPROTO: ::c_int = 71; ++pub const EWOULDBLOCK: ::c_int = EAGAIN; ++pub const EALREADY: ::c_int = 149; ++pub const EINPROGRESS: ::c_int = 150; + + pub const EAI_SYSTEM: ::c_int = 11; + +@@ -782,6 +848,8 @@ pub const SOCK_STREAM: ::c_int = 2; + pub const SOCK_RAW: ::c_int = 4; + pub const SOCK_RDM: ::c_int = 5; + pub const SOCK_SEQPACKET: ::c_int = 6; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; + pub const IPPROTO_TCP: ::c_int = 6; + pub const IPPROTO_IP: ::c_int = 0; + pub const IPPROTO_IPV6: ::c_int = 41; +@@ -815,6 +883,8 @@ pub const SO_RCVTIMEO: ::c_int = 0x1006; + pub const SO_ERROR: ::c_int = 0x1007; + pub const SO_TYPE: ::c_int = 0x1008; + ++pub const MSG_PEEK: ::c_int = 0x2; ++ + pub const IFF_LOOPBACK: ::c_int = 0x8; + + pub const SHUT_RD: ::c_int = 0; +@@ -942,21 +1012,34 @@ pub const RTLD_NODELETE: ::c_int = 0x1000; + pub const RTLD_FIRST: ::c_int = 0x2000; + pub const RTLD_CONFGEN: ::c_int = 0x10000; + ++pub const PORT_SOURCE_AIO: ::c_int = 1; ++pub const PORT_SOURCE_TIMER: ::c_int = 2; ++pub const PORT_SOURCE_USER: ::c_int = 3; ++pub const PORT_SOURCE_FD: ::c_int = 4; ++pub const PORT_SOURCE_ALERT: ::c_int = 5; ++pub const PORT_SOURCE_MQ: ::c_int = 6; ++pub const PORT_SOURCE_FILE: ::c_int = 7; ++pub const PORT_SOURCE_POSTWAIT: ::c_int = 8; ++pub const PORT_SOURCE_SIGNAL: ::c_int = 9; ++ + f! { + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { ++ let bits = mem::size_of_val(&(*set).fds_bits[0]) * 8; + let fd = fd as usize; +- (*set).fds_bits[fd / 32] &= !(1 << (fd % 32)); ++ (*set).fds_bits[fd / bits] &= !(1 << (fd % bits)); + return + } + + pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool { ++ let bits = mem::size_of_val(&(*set).fds_bits[0]) * 8; + let fd = fd as usize; +- return ((*set).fds_bits[fd / 32] & (1 << (fd % 32))) != 0 ++ return ((*set).fds_bits[fd / bits] & (1 << (fd % bits))) != 0 + } + + pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () { ++ let bits = mem::size_of_val(&(*set).fds_bits[0]) * 8; + let fd = fd as usize; +- (*set).fds_bits[fd / 32] |= 1 << (fd % 32); ++ (*set).fds_bits[fd / bits] |= 1 << (fd % bits); + return + } + +@@ -1005,17 +1088,21 @@ extern { + serv: *mut ::c_char, + sevlen: ::socklen_t, + flags: ::c_int) -> ::c_int; ++ #[link_name = "__posix_getpwnam_r"] + pub fn getpwnam_r(name: *const ::c_char, + pwd: *mut passwd, + buf: *mut ::c_char, +- buflen: ::c_int) -> *const passwd; ++ buflen: ::size_t, ++ result: *mut *mut passwd) -> ::c_int; ++ ++ #[link_name = "__posix_getpwuid_r"] + pub fn getpwuid_r(uid: ::uid_t, + pwd: *mut passwd, + buf: *mut ::c_char, +- buflen: ::c_int) -> *const passwd; ++ buflen: ::size_t, ++ result: *mut *mut passwd) -> ::c_int; + pub fn setpwent(); + pub fn getpwent() -> *mut passwd; +- pub fn readdir(dirp: *mut ::DIR) -> *const ::dirent; + pub fn fdatasync(fd: ::c_int) -> ::c_int; + pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; + pub fn duplocale(base: ::locale_t) -> ::locale_t; +@@ -1030,33 +1117,10 @@ extern { + pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int; + +- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int, ...) -> ::c_int; +- pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::c_int, flags: ::c_int) -> ::c_int; +- pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t, flags: ::c_int) -> ::c_int; +- pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char, +- owner: ::uid_t, group: ::gid_t, +- flags: ::c_int) -> ::c_int; +- pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut stat, flags: ::c_int) -> ::c_int; +- pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char, +- flags: ::c_int) -> ::c_int; +- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, +- mode: ::mode_t) -> ::c_int; ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ + pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, + mode: ::mode_t, dev: dev_t) -> ::c_int; +- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t; +- pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char, +- newdirfd: ::c_int, newpath: *const ::c_char) +- -> ::c_int; +- pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int, +- linkpath: *const ::c_char) -> ::c_int; +- pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char, +- flags: ::c_int) -> ::c_int; + pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, + mode: ::mode_t) -> ::c_int; + pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; +@@ -1072,4 +1136,59 @@ extern { + abstime: *const ::timespec) -> ::c_int; + pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, + options: ::c_int) -> ::c_int; ++ ++ pub fn glob(pattern: *const ::c_char, ++ flags: ::c_int, ++ errfunc: Option<extern fn(epath: *const ::c_char, ++ errno: ::c_int) -> ::c_int>, ++ pglob: *mut ::glob_t) -> ::c_int; ++ ++ pub fn globfree(pglob: *mut ::glob_t); ++ ++ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn shm_unlink(name: *const ::c_char) -> ::c_int; ++ ++ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); ++ ++ pub fn telldir(dirp: *mut ::DIR) -> ::c_long; ++ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; ++ ++ pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, ++ flags: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t) -> ::ssize_t; ++ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; ++ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; ++ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::socklen_t) -> ::c_int; ++ ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; ++ ++ pub fn port_create() -> ::c_int; ++ pub fn port_associate(port: ::c_int, source: ::c_int, object: ::uintptr_t, ++ events: ::c_int, user: ::uintptr_t) -> ::c_int; ++ pub fn port_dissociate(port: ::c_int, source: ::c_int, object: ::uintptr_t) ++ -> ::c_int; ++ pub fn port_get(port: ::c_int, pe: *mut port_event, ++ timeout: *const ::timespec) -> ::c_int; ++ pub fn port_getn(port: ::c_int, pe_list: *mut port_event, max: ::c_uint, ++ nget: *mut ::c_uint, timeout: *const ::timespec) ++ -> ::c_int; + } +diff --git third_party/rust/libc/src/unix/uclibc/mips/mips32.rs third_party/rust/libc/src/unix/uclibc/mips/mips32.rs +new file mode 100644 +index 000000000000..a81e884e0bc6 +--- /dev/null ++++ third_party/rust/libc/src/unix/uclibc/mips/mips32.rs +@@ -0,0 +1,269 @@ ++pub type c_char = i8; ++pub type c_long = i32; ++pub type c_ulong = u32; ++pub type clock_t = i32; ++pub type time_t = i32; ++pub type suseconds_t = i32; ++pub type wchar_t = i32; ++pub type off_t = i32; ++pub type ino_t = u32; ++pub type blkcnt_t = i32; ++pub type blksize_t = i32; ++pub type nlink_t = u32; ++pub type fsblkcnt_t = ::c_ulong; ++pub type fsfilcnt_t = ::c_ulong; ++pub type rlim_t = c_ulong; ++ ++s! { ++ pub struct stat { ++ pub st_dev: ::dev_t, ++ st_pad1: [::c_long; 2], ++ pub st_ino: ::ino_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ pub st_pad2: [::c_long; 1], ++ pub st_size: ::off_t, ++ st_pad3: ::c_long, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_blksize: ::blksize_t, ++ pub st_blocks: ::blkcnt_t, ++ st_pad5: [::c_long; 14], ++ } ++ ++ pub struct stat64 { ++ pub st_dev: ::dev_t, ++ st_pad1: [::c_long; 2], ++ pub st_ino: ::ino64_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ st_pad2: [::c_long; 2], ++ pub st_size: ::off64_t, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_blksize: ::blksize_t, ++ st_pad3: ::c_long, ++ pub st_blocks: ::blkcnt64_t, ++ st_pad5: [::c_long; 14], ++ } ++ ++ pub struct pthread_attr_t { ++ __size: [u32; 9] ++ } ++ ++ pub struct sigaction { ++ pub sa_flags: ::c_uint, ++ pub sa_sigaction: ::sighandler_t, ++ pub sa_mask: sigset_t, ++ _restorer: *mut ::c_void, ++ } ++ ++ pub struct stack_t { ++ pub ss_sp: *mut ::c_void, ++ pub ss_size: ::size_t, ++ pub ss_flags: ::c_int, ++ } ++ ++ pub struct sigset_t { ++ __val: [::c_ulong; 4], ++ } ++ ++ pub struct siginfo_t { ++ pub si_signo: ::c_int, ++ pub si_code: ::c_int, ++ pub si_errno: ::c_int, ++ pub _pad: [::c_int; 29], ++ } ++ ++ pub struct glob64_t { ++ pub gl_pathc: ::size_t, ++ pub gl_pathv: *mut *mut ::c_char, ++ pub gl_offs: ::size_t, ++ pub gl_flags: ::c_int, ++ ++ __unused1: *mut ::c_void, ++ __unused2: *mut ::c_void, ++ __unused3: *mut ::c_void, ++ __unused4: *mut ::c_void, ++ __unused5: *mut ::c_void, ++ } ++ ++ pub struct ipc_perm { ++ pub __key: ::key_t, ++ pub uid: ::uid_t, ++ pub gid: ::gid_t, ++ pub cuid: ::uid_t, ++ pub cgid: ::gid_t, ++ pub mode: ::c_uint, ++ pub __seq: ::c_ushort, ++ __pad1: ::c_ushort, ++ __unused1: ::c_ulong, ++ __unused2: ::c_ulong ++ } ++ ++ pub struct shmid_ds { ++ pub shm_perm: ::ipc_perm, ++ pub shm_segsz: ::size_t, ++ pub shm_atime: ::time_t, ++ pub shm_dtime: ::time_t, ++ pub shm_ctime: ::time_t, ++ pub shm_cpid: ::pid_t, ++ pub shm_lpid: ::pid_t, ++ pub shm_nattch: ::shmatt_t, ++ __unused4: ::c_ulong, ++ __unused5: ::c_ulong ++ } ++ ++ pub struct msqid_ds { ++ pub msg_perm: ::ipc_perm, ++ #[cfg(target_endian = "big")] ++ __glibc_reserved1: ::c_ulong, ++ pub msg_stime: ::time_t, ++ #[cfg(target_endian = "little")] ++ __glibc_reserved1: ::c_ulong, ++ #[cfg(target_endian = "big")] ++ __glibc_reserved2: ::c_ulong, ++ pub msg_rtime: ::time_t, ++ #[cfg(target_endian = "little")] ++ __glibc_reserved2: ::c_ulong, ++ #[cfg(target_endian = "big")] ++ __glibc_reserved3: ::c_ulong, ++ pub msg_ctime: ::time_t, ++ #[cfg(target_endian = "little")] ++ __glibc_reserved3: ::c_ulong, ++ __msg_cbytes: ::c_ulong, ++ pub msg_qnum: ::msgqnum_t, ++ pub msg_qbytes: ::msglen_t, ++ pub msg_lspid: ::pid_t, ++ pub msg_lrpid: ::pid_t, ++ __glibc_reserved4: ::c_ulong, ++ __glibc_reserved5: ::c_ulong, ++ } ++ ++ pub struct statfs { ++ pub f_type: ::c_long, ++ pub f_bsize: ::c_long, ++ pub f_frsize: ::c_long, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_files: ::fsblkcnt_t, ++ pub f_ffree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_fsid: ::fsid_t, ++ ++ pub f_namelen: ::c_long, ++ f_spare: [::c_long; 6], ++ } ++ ++ pub struct msghdr { ++ pub msg_name: *mut ::c_void, ++ pub msg_namelen: ::socklen_t, ++ pub msg_iov: *mut ::iovec, ++ pub msg_iovlen: ::c_int, ++ pub msg_control: *mut ::c_void, ++ pub msg_controllen: ::size_t, ++ pub msg_flags: ::c_int, ++ } ++ ++ pub struct cmsghdr { ++ pub cmsg_len: ::size_t, ++ pub cmsg_level: ::c_int, ++ pub cmsg_type: ::c_int, ++ } ++ ++ pub struct termios { ++ pub c_iflag: ::tcflag_t, ++ pub c_oflag: ::tcflag_t, ++ pub c_cflag: ::tcflag_t, ++ pub c_lflag: ::tcflag_t, ++ pub c_line: ::cc_t, ++ pub c_cc: [::cc_t; ::NCCS], ++ } ++ ++ pub struct flock { ++ pub l_type: ::c_short, ++ pub l_whence: ::c_short, ++ pub l_start: ::off_t, ++ pub l_len: ::off_t, ++ pub l_sysid: ::c_long, ++ pub l_pid: ::pid_t, ++ pad: [::c_long; 4], ++ } ++ ++ pub struct sysinfo { ++ pub uptime: ::c_long, ++ pub loads: [::c_ulong; 3], ++ pub totalram: ::c_ulong, ++ pub freeram: ::c_ulong, ++ pub sharedram: ::c_ulong, ++ pub bufferram: ::c_ulong, ++ pub totalswap: ::c_ulong, ++ pub freeswap: ::c_ulong, ++ pub procs: ::c_ushort, ++ pub pad: ::c_ushort, ++ pub totalhigh: ::c_ulong, ++ pub freehigh: ::c_ulong, ++ pub mem_unit: ::c_uint, ++ pub _f: [::c_char; 8], ++ } ++ ++ // FIXME this is actually a union ++ pub struct sem_t { ++ #[cfg(target_pointer_width = "32")] ++ __size: [::c_char; 16], ++ #[cfg(target_pointer_width = "64")] ++ __size: [::c_char; 32], ++ __align: [::c_long; 0], ++ } ++} ++ ++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; ++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24; ++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32; ++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; ++ ++pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff; ++ ++pub const SYS_gettid: ::c_long = 4222; // Valid for O32 ++ ++#[link(name = "util")] ++extern { ++ pub fn sysctl(name: *mut ::c_int, ++ namelen: ::c_int, ++ oldp: *mut ::c_void, ++ oldlenp: *mut ::size_t, ++ newp: *mut ::c_void, ++ newlen: ::size_t) ++ -> ::c_int; ++ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; ++ pub fn backtrace(buf: *mut *mut ::c_void, ++ sz: ::c_int) -> ::c_int; ++ pub fn glob64(pattern: *const ::c_char, ++ flags: ::c_int, ++ errfunc: ::dox::Option<extern fn(epath: *const ::c_char, ++ errno: ::c_int) ++ -> ::c_int>, ++ pglob: *mut glob64_t) -> ::c_int; ++ pub fn globfree64(pglob: *mut glob64_t); ++ pub fn ptrace(request: ::c_uint, ...) -> ::c_long; ++ pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t, ++ cpusetsize: ::size_t, ++ cpuset: *mut ::cpu_set_t) -> ::c_int; ++ pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t, ++ cpusetsize: ::size_t, ++ cpuset: *const ::cpu_set_t) -> ::c_int; ++} +diff --git third_party/rust/libc/src/unix/uclibc/mips/mips64.rs third_party/rust/libc/src/unix/uclibc/mips/mips64.rs +new file mode 100644 +index 000000000000..79bac1fa8a47 +--- /dev/null ++++ third_party/rust/libc/src/unix/uclibc/mips/mips64.rs +@@ -0,0 +1,209 @@ ++pub type blkcnt_t = i64; ++pub type blksize_t = i64; ++pub type c_char = i8; ++pub type c_long = i64; ++pub type c_ulong = u64; ++pub type fsblkcnt_t = ::c_ulong; ++pub type fsfilcnt_t = ::c_ulong; ++pub type ino_t = u64; ++pub type nlink_t = u64; ++pub type off_t = i64; ++pub type rlim_t = ::c_ulong; ++pub type suseconds_t = i64; ++pub type time_t = i64; ++pub type wchar_t = i32; ++ ++s! { ++ pub struct stat { ++ pub st_dev: ::c_ulong, ++ st_pad1: [::c_long; 2], ++ pub st_ino: ::ino_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::c_ulong, ++ st_pad2: [::c_ulong; 1], ++ pub st_size: ::off_t, ++ st_pad3: ::c_long, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_blksize: ::blksize_t, ++ st_pad4: ::c_long, ++ pub st_blocks: ::blkcnt_t, ++ st_pad5: [::c_long; 7], ++ } ++ ++ pub struct stat64 { ++ pub st_dev: ::c_ulong, ++ st_pad1: [::c_long; 2], ++ pub st_ino: ::ino64_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::c_ulong, ++ st_pad2: [::c_long; 2], ++ pub st_size: ::off64_t, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_blksize: ::blksize_t, ++ st_pad3: ::c_long, ++ pub st_blocks: ::blkcnt64_t, ++ st_pad5: [::c_long; 7], ++ } ++ ++ pub struct pthread_attr_t { ++ __size: [::c_ulong; 7] ++ } ++ ++ pub struct sigaction { ++ pub sa_flags: ::c_int, ++ pub sa_sigaction: ::sighandler_t, ++ pub sa_mask: sigset_t, ++ _restorer: *mut ::c_void, ++ } ++ ++ pub struct stack_t { ++ pub ss_sp: *mut ::c_void, ++ pub ss_size: ::size_t, ++ pub ss_flags: ::c_int, ++ } ++ ++ pub struct sigset_t { ++ __size: [::c_ulong; 16], ++ } ++ ++ pub struct siginfo_t { ++ pub si_signo: ::c_int, ++ pub si_code: ::c_int, ++ pub si_errno: ::c_int, ++ _pad: ::c_int, ++ _pad2: [::c_long; 14], ++ } ++ ++ pub struct ipc_perm { ++ pub __key: ::key_t, ++ pub uid: ::uid_t, ++ pub gid: ::gid_t, ++ pub cuid: ::uid_t, ++ pub cgid: ::gid_t, ++ pub mode: ::c_uint, ++ pub __seq: ::c_ushort, ++ __pad1: ::c_ushort, ++ __unused1: ::c_ulong, ++ __unused2: ::c_ulong ++ } ++ ++ pub struct shmid_ds { ++ pub shm_perm: ::ipc_perm, ++ pub shm_segsz: ::size_t, ++ pub shm_atime: ::time_t, ++ pub shm_dtime: ::time_t, ++ pub shm_ctime: ::time_t, ++ pub shm_cpid: ::pid_t, ++ pub shm_lpid: ::pid_t, ++ pub shm_nattch: ::shmatt_t, ++ __unused4: ::c_ulong, ++ __unused5: ::c_ulong ++ } ++ ++ pub struct msqid_ds { ++ pub msg_perm: ::ipc_perm, ++ pub msg_stime: ::time_t, ++ pub msg_rtime: ::time_t, ++ pub msg_ctime: ::time_t, ++ __msg_cbytes: ::c_ulong, ++ pub msg_qnum: ::msgqnum_t, ++ pub msg_qbytes: ::msglen_t, ++ pub msg_lspid: ::pid_t, ++ pub msg_lrpid: ::pid_t, ++ __glibc_reserved4: ::c_ulong, ++ __glibc_reserved5: ::c_ulong, ++ } ++ ++ pub struct statfs { ++ pub f_type: ::c_long, ++ pub f_bsize: ::c_long, ++ pub f_frsize: ::c_long, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_files: ::fsblkcnt_t, ++ pub f_ffree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_fsid: ::fsid_t, ++ ++ pub f_namelen: ::c_long, ++ f_spare: [::c_long; 6], ++ } ++ ++ pub struct msghdr { ++ pub msg_name: *mut ::c_void, ++ pub msg_namelen: ::socklen_t, ++ pub msg_iov: *mut ::iovec, ++ pub msg_iovlen: ::size_t, ++ pub msg_control: *mut ::c_void, ++ pub msg_controllen: ::size_t, ++ pub msg_flags: ::c_int, ++ } ++ ++ pub struct cmsghdr { ++ pub cmsg_len: ::size_t, ++ pub cmsg_level: ::c_int, ++ pub cmsg_type: ::c_int, ++ } ++ ++ pub struct termios { ++ pub c_iflag: ::tcflag_t, ++ pub c_oflag: ::tcflag_t, ++ pub c_cflag: ::tcflag_t, ++ pub c_lflag: ::tcflag_t, ++ pub c_line: ::cc_t, ++ pub c_cc: [::cc_t; ::NCCS], ++ } ++ ++ pub struct sysinfo { ++ pub uptime: ::c_long, ++ pub loads: [::c_ulong; 3], ++ pub totalram: ::c_ulong, ++ pub freeram: ::c_ulong, ++ pub sharedram: ::c_ulong, ++ pub bufferram: ::c_ulong, ++ pub totalswap: ::c_ulong, ++ pub freeswap: ::c_ulong, ++ pub procs: ::c_ushort, ++ pub pad: ::c_ushort, ++ pub totalhigh: ::c_ulong, ++ pub freehigh: ::c_ulong, ++ pub mem_unit: ::c_uint, ++ pub _f: [::c_char; 0], ++ } ++ ++ // FIXME this is actually a union ++ pub struct sem_t { ++ __size: [::c_char; 32], ++ __align: [::c_long; 0], ++ } ++} ++ ++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; ++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; ++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40; ++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56; ++ ++pub const RLIM_INFINITY: ::rlim_t = 0xffff_ffff_ffff_ffff; ++ ++pub const SYS_gettid: ::c_long = 5178; // Valid for n64 ++ ++#[link(name = "util")] ++extern { ++ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; ++} +diff --git third_party/rust/libc/src/unix/uclibc/mips/mod.rs third_party/rust/libc/src/unix/uclibc/mips/mod.rs +new file mode 100644 +index 000000000000..cc3ddf254d73 +--- /dev/null ++++ third_party/rust/libc/src/unix/uclibc/mips/mod.rs +@@ -0,0 +1,476 @@ ++pub const SFD_CLOEXEC: ::c_int = 0x080000; ++ ++pub const NCCS: usize = 32; ++ ++pub const O_TRUNC: ::c_int = 512; ++ ++pub const O_CLOEXEC: ::c_int = 0x80000; ++ ++pub const EBFONT: ::c_int = 59; ++pub const ENOSTR: ::c_int = 60; ++pub const ENODATA: ::c_int = 61; ++pub const ETIME: ::c_int = 62; ++pub const ENOSR: ::c_int = 63; ++pub const ENONET: ::c_int = 64; ++pub const ENOPKG: ::c_int = 65; ++pub const EREMOTE: ::c_int = 66; ++pub const ENOLINK: ::c_int = 67; ++pub const EADV: ::c_int = 68; ++pub const ESRMNT: ::c_int = 69; ++pub const ECOMM: ::c_int = 70; ++pub const EPROTO: ::c_int = 71; ++pub const EDOTDOT: ::c_int = 73; ++ ++pub const SA_NODEFER: ::c_int = 0x40000000; ++pub const SA_RESETHAND: ::c_int = 0x80000000; ++pub const SA_RESTART: ::c_int = 0x10000000; ++pub const SA_NOCLDSTOP: ::c_int = 0x00000001; ++ ++pub const EPOLL_CLOEXEC: ::c_int = 0x80000; ++ ++pub const EFD_CLOEXEC: ::c_int = 0x80000; ++ ++pub const BUFSIZ: ::c_uint = 4096; ++pub const TMP_MAX: ::c_uint = 238328; ++pub const FOPEN_MAX: ::c_uint = 16; ++pub const POSIX_FADV_DONTNEED: ::c_int = 4; ++pub const POSIX_FADV_NOREUSE: ::c_int = 5; ++pub const POSIX_MADV_DONTNEED: ::c_int = 4; ++pub const _SC_2_C_VERSION: ::c_int = 96; ++pub const O_ACCMODE: ::c_int = 3; ++pub const O_DIRECT: ::c_int = 0x8000; ++pub const O_DIRECTORY: ::c_int = 0x10000; ++pub const O_NOFOLLOW: ::c_int = 0x20000; ++pub const ST_RELATIME: ::c_ulong = 4096; ++pub const NI_MAXHOST: ::socklen_t = 1025; ++ ++pub const RLIMIT_NOFILE: ::c_int = 5; ++pub const RLIMIT_AS: ::c_int = 6; ++pub const RLIMIT_RSS: ::c_int = 7; ++pub const RLIMIT_NPROC: ::c_int = 8; ++pub const RLIMIT_MEMLOCK: ::c_int = 9; ++pub const RLIMIT_NLIMITS: ::c_int = 15; ++ ++pub const O_APPEND: ::c_int = 8; ++pub const O_CREAT: ::c_int = 256; ++pub const O_EXCL: ::c_int = 1024; ++pub const O_NOCTTY: ::c_int = 2048; ++pub const O_NONBLOCK: ::c_int = 128; ++pub const O_SYNC: ::c_int = 0x10; ++pub const O_RSYNC: ::c_int = 0x10; ++pub const O_DSYNC: ::c_int = 0x10; ++pub const O_FSYNC: ::c_int = 0x10; ++pub const O_ASYNC: ::c_int = 0x1000; ++pub const O_NDELAY: ::c_int = 0x80; ++ ++pub const SOCK_NONBLOCK: ::c_int = 128; ++ ++pub const EDEADLK: ::c_int = 45; ++pub const ENAMETOOLONG: ::c_int = 78; ++pub const ENOLCK: ::c_int = 46; ++pub const ENOSYS: ::c_int = 89; ++pub const ENOTEMPTY: ::c_int = 93; ++pub const ELOOP: ::c_int = 90; ++pub const ENOMSG: ::c_int = 35; ++pub const EIDRM: ::c_int = 36; ++pub const ECHRNG: ::c_int = 37; ++pub const EL2NSYNC: ::c_int = 38; ++pub const EL3HLT: ::c_int = 39; ++pub const EL3RST: ::c_int = 40; ++pub const ELNRNG: ::c_int = 41; ++pub const EUNATCH: ::c_int = 42; ++pub const ENOCSI: ::c_int = 43; ++pub const EL2HLT: ::c_int = 44; ++pub const EBADE: ::c_int = 50; ++pub const EBADR: ::c_int = 51; ++pub const EXFULL: ::c_int = 52; ++pub const ENOANO: ::c_int = 53; ++pub const EBADRQC: ::c_int = 54; ++pub const EBADSLT: ::c_int = 55; ++pub const EDEADLOCK: ::c_int = 56; ++pub const EMULTIHOP: ::c_int = 74; ++pub const EOVERFLOW: ::c_int = 79; ++pub const ENOTUNIQ: ::c_int = 80; ++pub const EBADFD: ::c_int = 81; ++pub const EBADMSG: ::c_int = 77; ++pub const EREMCHG: ::c_int = 82; ++pub const ELIBACC: ::c_int = 83; ++pub const ELIBBAD: ::c_int = 84; ++pub const ELIBSCN: ::c_int = 85; ++pub const ELIBMAX: ::c_int = 86; ++pub const ELIBEXEC: ::c_int = 87; ++pub const EILSEQ: ::c_int = 88; ++pub const ERESTART: ::c_int = 91; ++pub const ESTRPIPE: ::c_int = 92; ++pub const EUSERS: ::c_int = 94; ++pub const ENOTSOCK: ::c_int = 95; ++pub const EDESTADDRREQ: ::c_int = 96; ++pub const EMSGSIZE: ::c_int = 97; ++pub const EPROTOTYPE: ::c_int = 98; ++pub const ENOPROTOOPT: ::c_int = 99; ++pub const EPROTONOSUPPORT: ::c_int = 120; ++pub const ESOCKTNOSUPPORT: ::c_int = 121; ++pub const EOPNOTSUPP: ::c_int = 122; ++pub const ENOTSUP: ::c_int = EOPNOTSUPP; ++pub const EPFNOSUPPORT: ::c_int = 123; ++pub const EAFNOSUPPORT: ::c_int = 124; ++pub const EADDRINUSE: ::c_int = 125; ++pub const EADDRNOTAVAIL: ::c_int = 126; ++pub const ENETDOWN: ::c_int = 127; ++pub const ENETUNREACH: ::c_int = 128; ++pub const ENETRESET: ::c_int = 129; ++pub const ECONNABORTED: ::c_int = 130; ++pub const ECONNRESET: ::c_int = 131; ++pub const ENOBUFS: ::c_int = 132; ++pub const EISCONN: ::c_int = 133; ++pub const ENOTCONN: ::c_int = 134; ++pub const ESHUTDOWN: ::c_int = 143; ++pub const ETOOMANYREFS: ::c_int = 144; ++pub const ETIMEDOUT: ::c_int = 145; ++pub const ECONNREFUSED: ::c_int = 146; ++pub const EHOSTDOWN: ::c_int = 147; ++pub const EHOSTUNREACH: ::c_int = 148; ++pub const EALREADY: ::c_int = 149; ++pub const EINPROGRESS: ::c_int = 150; ++pub const ESTALE: ::c_int = 151; ++pub const EUCLEAN: ::c_int = 135; ++pub const ENOTNAM: ::c_int = 137; ++pub const ENAVAIL: ::c_int = 138; ++pub const EISNAM: ::c_int = 139; ++pub const EREMOTEIO: ::c_int = 140; ++pub const EDQUOT: ::c_int = 1133; ++pub const ENOMEDIUM: ::c_int = 159; ++pub const EMEDIUMTYPE: ::c_int = 160; ++pub const ECANCELED: ::c_int = 158; ++pub const ENOKEY: ::c_int = 161; ++pub const EKEYEXPIRED: ::c_int = 162; ++pub const EKEYREVOKED: ::c_int = 163; ++pub const EKEYREJECTED: ::c_int = 164; ++pub const EOWNERDEAD: ::c_int = 165; ++pub const ENOTRECOVERABLE: ::c_int = 166; ++pub const ERFKILL: ::c_int = 167; ++ ++pub const MAP_NORESERVE: ::c_int = 0x400; ++pub const MAP_ANON: ::c_int = 0x800; ++pub const MAP_ANONYMOUS: ::c_int = 0x800; ++pub const MAP_GROWSDOWN: ::c_int = 0x1000; ++pub const MAP_DENYWRITE: ::c_int = 0x2000; ++pub const MAP_EXECUTABLE: ::c_int = 0x4000; ++pub const MAP_LOCKED: ::c_int = 0x8000; ++pub const MAP_POPULATE: ::c_int = 0x10000; ++pub const MAP_NONBLOCK: ::c_int = 0x20000; ++pub const MAP_STACK: ::c_int = 0x40000; ++ ++pub const SOCK_STREAM: ::c_int = 2; ++pub const SOCK_DGRAM: ::c_int = 1; ++pub const SOCK_SEQPACKET: ::c_int = 5; ++ ++pub const SOL_SOCKET: ::c_int = 0xffff; ++ ++pub const SO_REUSEADDR: ::c_int = 0x0004; ++pub const SO_KEEPALIVE: ::c_int = 0x0008; ++pub const SO_DONTROUTE: ::c_int = 0x0010; ++pub const SO_BROADCAST: ::c_int = 0x0020; ++pub const SO_LINGER: ::c_int = 0x0080; ++pub const SO_OOBINLINE: ::c_int = 0x0100; ++pub const SO_REUSEPORT: ::c_int = 0x0200; ++pub const SO_TYPE: ::c_int = 0x1008; ++pub const SO_STYLE: ::c_int = SO_TYPE; ++pub const SO_ERROR: ::c_int = 0x1007; ++pub const SO_SNDBUF: ::c_int = 0x1001; ++pub const SO_RCVBUF: ::c_int = 0x1002; ++pub const SO_SNDLOWAT: ::c_int = 0x1003; ++pub const SO_RCVLOWAT: ::c_int = 0x1004; ++pub const SO_SNDTIMEO: ::c_int = 0x1005; ++pub const SO_RCVTIMEO: ::c_int = 0x1006; ++pub const SO_ACCEPTCONN: ::c_int = 0x1009; ++pub const SO_PROTOCOL: ::c_int = 0x1028; ++pub const SO_DOMAIN: ::c_int = 0x1029; ++pub const SO_NO_CHECK: ::c_int = 11; ++pub const SO_PRIORITY: ::c_int = 12; ++pub const SO_BSDCOMPAT: ::c_int = 14; ++pub const SO_PASSCRED: ::c_int = 17; ++pub const SO_PEERCRED: ::c_int = 18; ++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24; ++pub const SO_BINDTODEVICE: ::c_int = 25; ++pub const SO_ATTACH_FILTER: ::c_int = 26; ++pub const SO_DETACH_FILTER: ::c_int = 27; ++pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER; ++pub const SO_PEERNAME: ::c_int = 28; ++pub const SO_TIMESTAMP: ::c_int = 29; ++pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP; ++pub const SO_PEERSEC: ::c_int = 30; ++pub const SO_SNDBUFFORCE: ::c_int = 31; ++pub const SO_RCVBUFFORCE: ::c_int = 33; ++pub const SO_PASSSEC: ::c_int = 34; ++pub const SO_TIMESTAMPNS: ::c_int = 35; ++pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; ++pub const SO_MARK: ::c_int = 36; ++pub const SO_TIMESTAMPING: ::c_int = 37; ++pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; ++pub const SO_RXQ_OVFL: ::c_int = 40; ++pub const SO_WIFI_STATUS: ::c_int = 41; ++pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; ++pub const SO_PEEK_OFF: ::c_int = 42; ++pub const SO_NOFCS: ::c_int = 43; ++pub const SO_LOCK_FILTER: ::c_int = 44; ++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45; ++pub const SO_BUSY_POLL: ::c_int = 46; ++pub const SO_MAX_PACING_RATE: ::c_int = 47; ++pub const SO_BPF_EXTENSIONS: ::c_int = 48; ++ ++pub const FIOCLEX: ::c_ulong = 0x6601; ++pub const FIONBIO: ::c_ulong = 0x667e; ++ ++pub const SA_ONSTACK: ::c_int = 0x08000000; ++pub const SA_SIGINFO: ::c_int = 0x00000008; ++pub const SA_NOCLDWAIT: ::c_int = 0x00010000; ++ ++pub const SIGCHLD: ::c_int = 18; ++pub const SIGBUS: ::c_int = 10; ++pub const SIGTTIN: ::c_int = 26; ++pub const SIGTTOU: ::c_int = 27; ++pub const SIGXCPU: ::c_int = 30; ++pub const SIGXFSZ: ::c_int = 31; ++pub const SIGVTALRM: ::c_int = 28; ++pub const SIGPROF: ::c_int = 29; ++pub const SIGWINCH: ::c_int = 20; ++pub const SIGUSR1: ::c_int = 16; ++pub const SIGUSR2: ::c_int = 17; ++pub const SIGCONT: ::c_int = 25; ++pub const SIGSTOP: ::c_int = 23; ++pub const SIGTSTP: ::c_int = 24; ++pub const SIGURG: ::c_int = 21; ++pub const SIGIO: ::c_int = 22; ++pub const SIGSYS: ::c_int = 12; ++pub const SIGPOLL: ::c_int = 22; ++pub const SIGPWR: ::c_int = 19; ++pub const SIG_SETMASK: ::c_int = 3; ++pub const SIG_BLOCK: ::c_int = 0x1; ++pub const SIG_UNBLOCK: ::c_int = 0x2; ++ ++pub const POLLRDNORM: ::c_short = 0x040; ++pub const POLLWRNORM: ::c_short = 0x004; ++pub const POLLRDBAND: ::c_short = 0x080; ++pub const POLLWRBAND: ::c_short = 0x100; ++ ++pub const PTHREAD_STACK_MIN: ::size_t = 16384; ++ ++pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5; ++pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff; ++pub const CODA_SUPER_MAGIC: ::c_long = 0x73757245; ++pub const CRAMFS_MAGIC: ::c_long = 0x28cd3d45; ++pub const EFS_SUPER_MAGIC: ::c_long = 0x00414a53; ++pub const EXT2_SUPER_MAGIC: ::c_long = 0x0000ef53; ++pub const EXT3_SUPER_MAGIC: ::c_long = 0x0000ef53; ++pub const EXT4_SUPER_MAGIC: ::c_long = 0x0000ef53; ++pub const HPFS_SUPER_MAGIC: ::c_long = 0xf995e849; ++pub const HUGETLBFS_MAGIC: ::c_long = 0x958458f6; ++pub const ISOFS_SUPER_MAGIC: ::c_long = 0x00009660; ++pub const JFFS2_SUPER_MAGIC: ::c_long = 0x000072b6; ++pub const MINIX_SUPER_MAGIC: ::c_long = 0x0000137f; ++pub const MINIX_SUPER_MAGIC2: ::c_long = 0x0000138f; ++pub const MINIX2_SUPER_MAGIC: ::c_long = 0x00002468; ++pub const MINIX2_SUPER_MAGIC2: ::c_long = 0x00002478; ++pub const MSDOS_SUPER_MAGIC: ::c_long = 0x00004d44; ++pub const NCP_SUPER_MAGIC: ::c_long = 0x0000564c; ++pub const NFS_SUPER_MAGIC: ::c_long = 0x00006969; ++pub const OPENPROM_SUPER_MAGIC: ::c_long = 0x00009fa1; ++pub const PROC_SUPER_MAGIC: ::c_long = 0x00009fa0; ++pub const QNX4_SUPER_MAGIC: ::c_long = 0x0000002f; ++pub const REISERFS_SUPER_MAGIC: ::c_long = 0x52654973; ++pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b; ++pub const TMPFS_MAGIC: ::c_long = 0x01021994; ++pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2; ++ ++pub const VEOF: usize = 16; ++pub const VEOL: usize = 17; ++pub const VEOL2: usize = 6; ++pub const VMIN: usize = 4; ++pub const IEXTEN: ::tcflag_t = 0x00000100; ++pub const TOSTOP: ::tcflag_t = 0x00008000; ++pub const FLUSHO: ::tcflag_t = 0x00002000; ++pub const IUTF8: ::tcflag_t = 0x00004000; ++pub const TCSANOW: ::c_int = 0x540e; ++pub const TCSADRAIN: ::c_int = 0x540f; ++pub const TCSAFLUSH: ::c_int = 0x5410; ++ ++pub const CPU_SETSIZE: ::c_int = 0x400; ++ ++pub const PTRACE_TRACEME: ::c_uint = 0; ++pub const PTRACE_PEEKTEXT: ::c_uint = 1; ++pub const PTRACE_PEEKDATA: ::c_uint = 2; ++pub const PTRACE_PEEKUSER: ::c_uint = 3; ++pub const PTRACE_POKETEXT: ::c_uint = 4; ++pub const PTRACE_POKEDATA: ::c_uint = 5; ++pub const PTRACE_POKEUSER: ::c_uint = 6; ++pub const PTRACE_CONT: ::c_uint = 7; ++pub const PTRACE_KILL: ::c_uint = 8; ++pub const PTRACE_SINGLESTEP: ::c_uint = 9; ++pub const PTRACE_ATTACH: ::c_uint = 16; ++pub const PTRACE_DETACH: ::c_uint = 17; ++pub const PTRACE_SYSCALL: ::c_uint = 24; ++pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200; ++pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201; ++pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202; ++pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203; ++pub const PTRACE_GETFPREGS: ::c_uint = 14; ++pub const PTRACE_SETFPREGS: ::c_uint = 15; ++pub const PTRACE_GETFPXREGS: ::c_uint = 18; ++pub const PTRACE_SETFPXREGS: ::c_uint = 19; ++pub const PTRACE_GETREGS: ::c_uint = 12; ++pub const PTRACE_SETREGS: ::c_uint = 13; ++ ++pub const EFD_NONBLOCK: ::c_int = 0x80; ++ ++pub const F_GETLK: ::c_int = 14; ++pub const F_GETOWN: ::c_int = 23; ++pub const F_SETOWN: ::c_int = 24; ++pub const F_SETLK: ::c_int = 6; ++pub const F_SETLKW: ::c_int = 7; ++ ++pub const SFD_NONBLOCK: ::c_int = 0x80; ++ ++pub const TCGETS: ::c_ulong = 0x540d; ++pub const TCSETS: ::c_ulong = 0x540e; ++pub const TCSETSW: ::c_ulong = 0x540f; ++pub const TCSETSF: ::c_ulong = 0x5410; ++pub const TCGETA: ::c_ulong = 0x5401; ++pub const TCSETA: ::c_ulong = 0x5402; ++pub const TCSETAW: ::c_ulong = 0x5403; ++pub const TCSETAF: ::c_ulong = 0x5404; ++pub const TCSBRK: ::c_ulong = 0x5405; ++pub const TCXONC: ::c_ulong = 0x5406; ++pub const TCFLSH: ::c_ulong = 0x5407; ++pub const TIOCGSOFTCAR: ::c_ulong = 0x5481; ++pub const TIOCSSOFTCAR: ::c_ulong = 0x5482; ++pub const TIOCINQ: ::c_ulong = 0x467f; ++pub const TIOCLINUX: ::c_ulong = 0x5483; ++pub const TIOCGSERIAL: ::c_ulong = 0x5484; ++pub const TIOCEXCL: ::c_ulong = 0x740d; ++pub const TIOCNXCL: ::c_ulong = 0x740e; ++pub const TIOCSCTTY: ::c_ulong = 0x5480; ++pub const TIOCGPGRP: ::c_ulong = 0x40047477; ++pub const TIOCSPGRP: ::c_ulong = 0x80047476; ++pub const TIOCOUTQ: ::c_ulong = 0x7472; ++pub const TIOCSTI: ::c_ulong = 0x5472; ++pub const TIOCGWINSZ: ::c_ulong = 0x40087468; ++pub const TIOCSWINSZ: ::c_ulong = 0x80087467; ++pub const TIOCMGET: ::c_ulong = 0x741d; ++pub const TIOCMBIS: ::c_ulong = 0x741b; ++pub const TIOCMBIC: ::c_ulong = 0x741c; ++pub const TIOCMSET: ::c_ulong = 0x741a; ++pub const FIONREAD: ::c_ulong = 0x467f; ++pub const TIOCCONS: ::c_ulong = 0x80047478; ++ ++pub const RTLD_DEEPBIND: ::c_int = 0x10; ++pub const RTLD_GLOBAL: ::c_int = 0x4; ++pub const RTLD_NOLOAD: ::c_int = 0x8; ++ ++pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead; ++pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793; ++pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278; ++pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448; ++pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216; ++ ++pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567; ++pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123; ++pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF; ++pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000; ++pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC; ++pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4; ++pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2; ++pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543; ++ ++pub const MCL_CURRENT: ::c_int = 0x0001; ++pub const MCL_FUTURE: ::c_int = 0x0002; ++ ++pub const SIGSTKSZ: ::size_t = 8192; ++pub const CBAUD: ::tcflag_t = 0o0010017; ++pub const TAB1: ::c_int = 0x00000800; ++pub const TAB2: ::c_int = 0x00001000; ++pub const TAB3: ::c_int = 0x00001800; ++pub const CR1: ::c_int = 0x00000200; ++pub const CR2: ::c_int = 0x00000400; ++pub const CR3: ::c_int = 0x00000600; ++pub const FF1: ::c_int = 0x00008000; ++pub const BS1: ::c_int = 0x00002000; ++pub const VT1: ::c_int = 0x00004000; ++pub const VWERASE: usize = 14; ++pub const VREPRINT: usize = 12; ++pub const VSUSP: usize = 10; ++pub const VSTART: usize = 8; ++pub const VSTOP: usize = 9; ++pub const VDISCARD: usize = 13; ++pub const VTIME: usize = 5; ++pub const IXON: ::tcflag_t = 0x00000400; ++pub const IXOFF: ::tcflag_t = 0x00001000; ++pub const ONLCR: ::tcflag_t = 0x4; ++pub const CSIZE: ::tcflag_t = 0x00000030; ++pub const CS6: ::tcflag_t = 0x00000010; ++pub const CS7: ::tcflag_t = 0x00000020; ++pub const CS8: ::tcflag_t = 0x00000030; ++pub const CSTOPB: ::tcflag_t = 0x00000040; ++pub const CREAD: ::tcflag_t = 0x00000080; ++pub const PARENB: ::tcflag_t = 0x00000100; ++pub const PARODD: ::tcflag_t = 0x00000200; ++pub const HUPCL: ::tcflag_t = 0x00000400; ++pub const CLOCAL: ::tcflag_t = 0x00000800; ++pub const ECHOKE: ::tcflag_t = 0x00000800; ++pub const ECHOE: ::tcflag_t = 0x00000010; ++pub const ECHOK: ::tcflag_t = 0x00000020; ++pub const ECHONL: ::tcflag_t = 0x00000040; ++pub const ECHOPRT: ::tcflag_t = 0x00000400; ++pub const ECHOCTL: ::tcflag_t = 0x00000200; ++pub const ISIG: ::tcflag_t = 0x00000001; ++pub const ICANON: ::tcflag_t = 0x00000002; ++pub const PENDIN: ::tcflag_t = 0x00004000; ++pub const NOFLSH: ::tcflag_t = 0x00000080; ++ ++pub const B0: ::speed_t = 0o000000; ++pub const B50: ::speed_t = 0o000001; ++pub const B75: ::speed_t = 0o000002; ++pub const B110: ::speed_t = 0o000003; ++pub const B134: ::speed_t = 0o000004; ++pub const B150: ::speed_t = 0o000005; ++pub const B200: ::speed_t = 0o000006; ++pub const B300: ::speed_t = 0o000007; ++pub const B600: ::speed_t = 0o000010; ++pub const B1200: ::speed_t = 0o000011; ++pub const B1800: ::speed_t = 0o000012; ++pub const B2400: ::speed_t = 0o000013; ++pub const B4800: ::speed_t = 0o000014; ++pub const B9600: ::speed_t = 0o000015; ++pub const B19200: ::speed_t = 0o000016; ++pub const B38400: ::speed_t = 0o000017; ++pub const EXTA: ::speed_t = B19200; ++pub const EXTB: ::speed_t = B38400; ++pub const B57600: ::speed_t = 0o010001; ++pub const B115200: ::speed_t = 0o010002; ++pub const B230400: ::speed_t = 0o010003; ++pub const B460800: ::speed_t = 0o010004; ++pub const B500000: ::speed_t = 0o010005; ++pub const B576000: ::speed_t = 0o010006; ++pub const B921600: ::speed_t = 0o010007; ++pub const B1000000: ::speed_t = 0o010010; ++pub const B1152000: ::speed_t = 0o010011; ++pub const B1500000: ::speed_t = 0o010012; ++pub const B2000000: ::speed_t = 0o010013; ++pub const B2500000: ::speed_t = 0o010014; ++pub const B3000000: ::speed_t = 0o010015; ++pub const B3500000: ::speed_t = 0o010016; ++pub const B4000000: ::speed_t = 0o010017; ++ ++cfg_if! { ++ if #[cfg(target_arch = "mips")] { ++ mod mips32; ++ pub use self::mips32::*; ++ } else if #[cfg(target_arch = "mips64")] { ++ mod mips64; ++ pub use self::mips64::*; ++ } else { ++ // Unknown target_arch ++ } ++} +diff --git third_party/rust/libc/src/unix/uclibc/mod.rs third_party/rust/libc/src/unix/uclibc/mod.rs +new file mode 100644 +index 000000000000..09f7d055f3d0 +--- /dev/null ++++ third_party/rust/libc/src/unix/uclibc/mod.rs +@@ -0,0 +1,1769 @@ ++use dox::{mem, Option}; ++ ++pub type sa_family_t = u16; ++pub type pthread_key_t = ::c_uint; ++pub type speed_t = ::c_uint; ++pub type tcflag_t = ::c_uint; ++pub type loff_t = ::c_longlong; ++pub type clockid_t = ::c_int; ++pub type key_t = ::c_int; ++pub type id_t = ::c_uint; ++pub type useconds_t = u32; ++pub type dev_t = u64; ++pub type socklen_t = u32; ++pub type pthread_t = ::c_ulong; ++pub type mode_t = u32; ++pub type ino64_t = u64; ++pub type off64_t = i64; ++pub type blkcnt64_t = i64; ++pub type rlim64_t = u64; ++pub type shmatt_t = ::c_ulong; ++pub type mqd_t = ::c_int; ++pub type msgqnum_t = ::c_ulong; ++pub type msglen_t = ::c_ulong; ++pub type nfds_t = ::c_ulong; ++pub type nl_item = ::c_int; ++pub type idtype_t = ::c_uint; ++ ++pub enum fpos64_t {} // TODO: fill this out with a struct ++ ++pub enum timezone {} ++ ++s! { ++ pub struct sockaddr { ++ pub sa_family: sa_family_t, ++ pub sa_data: [::c_char; 14], ++ } ++ ++ pub struct sockaddr_in { ++ pub sin_family: sa_family_t, ++ pub sin_port: ::in_port_t, ++ pub sin_addr: ::in_addr, ++ pub sin_zero: [u8; 8], ++ } ++ ++ pub struct sockaddr_in6 { ++ pub sin6_family: sa_family_t, ++ pub sin6_port: ::in_port_t, ++ pub sin6_flowinfo: u32, ++ pub sin6_addr: ::in6_addr, ++ pub sin6_scope_id: u32, ++ } ++ ++ pub struct sockaddr_un { ++ pub sun_family: sa_family_t, ++ pub sun_path: [::c_char; 108] ++ } ++ ++ pub struct sockaddr_storage { ++ pub ss_family: sa_family_t, ++ __ss_align: ::size_t, ++ #[cfg(target_pointer_width = "32")] ++ __ss_pad2: [u8; 128 - 2 * 4], ++ #[cfg(target_pointer_width = "64")] ++ __ss_pad2: [u8; 128 - 2 * 8], ++ } ++ ++ pub struct addrinfo { ++ pub ai_flags: ::c_int, ++ pub ai_family: ::c_int, ++ pub ai_socktype: ::c_int, ++ pub ai_protocol: ::c_int, ++ pub ai_addrlen: socklen_t, ++ ++ pub ai_addr: *mut ::sockaddr, ++ ++ pub ai_canonname: *mut c_char, ++ ++ pub ai_next: *mut addrinfo, ++ } ++ ++ pub struct sockaddr_nl { ++ pub nl_family: ::sa_family_t, ++ nl_pad: ::c_ushort, ++ pub nl_pid: u32, ++ pub nl_groups: u32 ++ } ++ ++ pub struct sockaddr_ll { ++ pub sll_family: ::c_ushort, ++ pub sll_protocol: ::c_ushort, ++ pub sll_ifindex: ::c_int, ++ pub sll_hatype: ::c_ushort, ++ pub sll_pkttype: ::c_uchar, ++ pub sll_halen: ::c_uchar, ++ pub sll_addr: [::c_uchar; 8] ++ } ++ ++ pub struct fd_set { ++ fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE], ++ } ++ ++ pub struct tm { ++ pub tm_sec: ::c_int, ++ pub tm_min: ::c_int, ++ pub tm_hour: ::c_int, ++ pub tm_mday: ::c_int, ++ pub tm_mon: ::c_int, ++ pub tm_year: ::c_int, ++ pub tm_wday: ::c_int, ++ pub tm_yday: ::c_int, ++ pub tm_isdst: ::c_int, ++ pub tm_gmtoff: ::c_long, ++ pub tm_zone: *const ::c_char, ++ } ++ ++ pub struct sched_param { ++ pub sched_priority: ::c_int, ++ } ++ ++ pub struct Dl_info { ++ pub dli_fname: *const ::c_char, ++ pub dli_fbase: *mut ::c_void, ++ pub dli_sname: *const ::c_char, ++ pub dli_saddr: *mut ::c_void, ++ } ++ ++ #[cfg_attr(any(all(target_arch = "x86", ++ target_arch = "x86_64")), ++ repr(packed))] ++ pub struct epoll_event { ++ pub events: ::uint32_t, ++ pub u64: ::uint64_t, ++ } ++ ++ pub struct utsname { ++ pub sysname: [::c_char; 65], ++ pub nodename: [::c_char; 65], ++ pub release: [::c_char; 65], ++ pub version: [::c_char; 65], ++ pub machine: [::c_char; 65], ++ pub domainname: [::c_char; 65] ++ } ++ ++ pub struct lconv { ++ pub decimal_point: *mut ::c_char, ++ pub thousands_sep: *mut ::c_char, ++ pub grouping: *mut ::c_char, ++ pub int_curr_symbol: *mut ::c_char, ++ pub currency_symbol: *mut ::c_char, ++ pub mon_decimal_point: *mut ::c_char, ++ pub mon_thousands_sep: *mut ::c_char, ++ pub mon_grouping: *mut ::c_char, ++ pub positive_sign: *mut ::c_char, ++ pub negative_sign: *mut ::c_char, ++ pub int_frac_digits: ::c_char, ++ pub frac_digits: ::c_char, ++ pub p_cs_precedes: ::c_char, ++ pub p_sep_by_space: ::c_char, ++ pub n_cs_precedes: ::c_char, ++ pub n_sep_by_space: ::c_char, ++ pub p_sign_posn: ::c_char, ++ pub n_sign_posn: ::c_char, ++ pub int_p_cs_precedes: ::c_char, ++ pub int_p_sep_by_space: ::c_char, ++ pub int_n_cs_precedes: ::c_char, ++ pub int_n_sep_by_space: ::c_char, ++ pub int_p_sign_posn: ::c_char, ++ pub int_n_sign_posn: ::c_char, ++ } ++ ++ pub struct sigevent { ++ pub sigev_value: ::sigval, ++ pub sigev_signo: ::c_int, ++ pub sigev_notify: ::c_int, ++ // Actually a union. We only expose sigev_notify_thread_id because it's ++ // the most useful member ++ pub sigev_notify_thread_id: ::c_int, ++ #[cfg(target_pointer_width = "64")] ++ __unused1: [::c_int; 11], ++ #[cfg(target_pointer_width = "32")] ++ __unused1: [::c_int; 12] ++ } ++ ++ pub struct dirent { ++ pub d_ino: ::ino_t, ++ pub d_off: ::off_t, ++ pub d_reclen: ::c_ushort, ++ pub d_type: ::c_uchar, ++ pub d_name: [::c_char; 256], ++ } ++ ++ pub struct dirent64 { ++ pub d_ino: ::ino64_t, ++ pub d_off: ::off64_t, ++ pub d_reclen: ::c_ushort, ++ pub d_type: ::c_uchar, ++ pub d_name: [::c_char; 256], ++ } ++ ++ pub struct rlimit64 { ++ pub rlim_cur: rlim64_t, ++ pub rlim_max: rlim64_t, ++ } ++ ++ pub struct glob_t { ++ pub gl_pathc: ::size_t, ++ pub gl_pathv: *mut *mut c_char, ++ pub gl_offs: ::size_t, ++ pub gl_flags: ::c_int, ++ ++ __unused1: *mut ::c_void, ++ __unused2: *mut ::c_void, ++ __unused3: *mut ::c_void, ++ __unused4: *mut ::c_void, ++ __unused5: *mut ::c_void, ++ } ++ ++ pub struct ifaddrs { ++ pub ifa_next: *mut ifaddrs, ++ pub ifa_name: *mut c_char, ++ pub ifa_flags: ::c_uint, ++ pub ifa_addr: *mut ::sockaddr, ++ pub ifa_netmask: *mut ::sockaddr, ++ pub ifa_ifu: *mut ::sockaddr, // FIXME This should be a union ++ pub ifa_data: *mut ::c_void ++ } ++ ++ pub struct pthread_mutex_t { ++ #[cfg(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc"))] ++ __align: [::c_long; 0], ++ #[cfg(not(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc")))] ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_MUTEX_T], ++ } ++ ++ pub struct pthread_rwlock_t { ++ #[cfg(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc"))] ++ __align: [::c_long; 0], ++ #[cfg(not(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc")))] ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_RWLOCK_T], ++ } ++ ++ pub struct pthread_mutexattr_t { ++ #[cfg(any(target_arch = "x86_64", target_arch = "powerpc64", ++ target_arch = "mips64", target_arch = "s390x", ++ target_arch = "sparc64"))] ++ __align: [::c_int; 0], ++ #[cfg(not(any(target_arch = "x86_64", target_arch = "powerpc64", ++ target_arch = "mips64", target_arch = "s390x", ++ target_arch = "sparc64")))] ++ __align: [::c_long; 0], ++ size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T], ++ } ++ ++ pub struct pthread_cond_t { ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_COND_T], ++ } ++ ++ pub struct pthread_condattr_t { ++ __align: [::c_int; 0], ++ size: [u8; __SIZEOF_PTHREAD_CONDATTR_T], ++ } ++ ++ pub struct passwd { ++ pub pw_name: *mut ::c_char, ++ pub pw_passwd: *mut ::c_char, ++ pub pw_uid: ::uid_t, ++ pub pw_gid: ::gid_t, ++ pub pw_gecos: *mut ::c_char, ++ pub pw_dir: *mut ::c_char, ++ pub pw_shell: *mut ::c_char, ++ } ++ ++ pub struct spwd { ++ pub sp_namp: *mut ::c_char, ++ pub sp_pwdp: *mut ::c_char, ++ pub sp_lstchg: ::c_long, ++ pub sp_min: ::c_long, ++ pub sp_max: ::c_long, ++ pub sp_warn: ::c_long, ++ pub sp_inact: ::c_long, ++ pub sp_expire: ::c_long, ++ pub sp_flag: ::c_ulong, ++ } ++ ++ pub struct statvfs { ++ pub f_bsize: ::c_ulong, ++ pub f_frsize: ::c_ulong, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_files: ::fsfilcnt_t, ++ pub f_ffree: ::fsfilcnt_t, ++ pub f_favail: ::fsfilcnt_t, ++ #[cfg(target_endian = "little")] ++ pub f_fsid: ::c_ulong, ++ #[cfg(target_pointer_width = "32")] ++ __f_unused: ::c_int, ++ #[cfg(target_endian = "big")] ++ pub f_fsid: ::c_ulong, ++ pub f_flag: ::c_ulong, ++ pub f_namemax: ::c_ulong, ++ __f_spare: [::c_int; 6], ++ } ++ ++ pub struct dqblk { ++ pub dqb_bhardlimit: ::uint32_t, ++ pub dqb_bsoftlimit: ::uint32_t, ++ pub dqb_curblocks: ::uint32_t, ++ pub dqb_ihardlimit: ::uint32_t, ++ pub dqb_isoftlimit: ::uint32_t, ++ pub dqb_curinodes: ::uint32_t, ++ pub dqb_btime: ::time_t, ++ pub dqb_itime: ::time_t, ++ } ++ ++ pub struct signalfd_siginfo { ++ pub ssi_signo: ::uint32_t, ++ pub ssi_errno: ::int32_t, ++ pub ssi_code: ::int32_t, ++ pub ssi_pid: ::uint32_t, ++ pub ssi_uid: ::uint32_t, ++ pub ssi_fd: ::int32_t, ++ pub ssi_tid: ::uint32_t, ++ pub ssi_band: ::uint32_t, ++ pub ssi_overrun: ::uint32_t, ++ pub ssi_trapno: ::uint32_t, ++ pub ssi_status: ::int32_t, ++ pub ssi_int: ::int32_t, ++ pub ssi_ptr: ::uint64_t, ++ pub ssi_utime: ::uint64_t, ++ pub ssi_stime: ::uint64_t, ++ pub ssi_addr: ::uint64_t, ++ _pad: [::uint8_t; 48], ++ } ++ ++ pub struct fsid_t { ++ __val: [::c_int; 2], ++ } ++ ++ pub struct mq_attr { ++ pub mq_flags: ::c_long, ++ pub mq_maxmsg: ::c_long, ++ pub mq_msgsize: ::c_long, ++ pub mq_curmsgs: ::c_long, ++ pad: [::c_long; 4] ++ } ++ ++ pub struct cpu_set_t { ++ #[cfg(target_pointer_width = "32")] ++ bits: [u32; 32], ++ #[cfg(target_pointer_width = "64")] ++ bits: [u64; 16], ++ } ++ ++ pub struct if_nameindex { ++ pub if_index: ::c_uint, ++ pub if_name: *mut ::c_char, ++ } ++ ++ // System V IPC ++ pub struct msginfo { ++ pub msgpool: ::c_int, ++ pub msgmap: ::c_int, ++ pub msgmax: ::c_int, ++ pub msgmnb: ::c_int, ++ pub msgmni: ::c_int, ++ pub msgssz: ::c_int, ++ pub msgtql: ::c_int, ++ pub msgseg: ::c_ushort, ++ } ++} ++ ++// intentionally not public, only used for fd_set ++cfg_if! { ++ if #[cfg(target_pointer_width = "32")] { ++ const ULONG_SIZE: usize = 32; ++ } else if #[cfg(target_pointer_width = "64")] { ++ const ULONG_SIZE: usize = 64; ++ } else { ++ // Unknown target_pointer_width ++ } ++} ++ ++pub const EXIT_FAILURE: ::c_int = 1; ++pub const EXIT_SUCCESS: ::c_int = 0; ++pub const RAND_MAX: ::c_int = 2147483647; ++pub const EOF: ::c_int = -1; ++pub const SEEK_SET: ::c_int = 0; ++pub const SEEK_CUR: ::c_int = 1; ++pub const SEEK_END: ::c_int = 2; ++pub const _IOFBF: ::c_int = 0; ++pub const _IONBF: ::c_int = 2; ++pub const _IOLBF: ::c_int = 1; ++ ++pub const F_DUPFD: ::c_int = 0; ++pub const F_GETFD: ::c_int = 1; ++pub const F_SETFD: ::c_int = 2; ++pub const F_GETFL: ::c_int = 3; ++pub const F_SETFL: ::c_int = 4; ++ ++// Linux-specific fcntls ++pub const F_SETLEASE: ::c_int = 1024; ++pub const F_GETLEASE: ::c_int = 1025; ++pub const F_NOTIFY: ::c_int = 1026; ++pub const F_DUPFD_CLOEXEC: ::c_int = 1030; ++ ++// TODO(#235): Include file sealing fcntls once we have a way to verify them. ++ ++pub const SIGTRAP: ::c_int = 5; ++ ++pub const PTHREAD_CREATE_JOINABLE: ::c_int = 0; ++pub const PTHREAD_CREATE_DETACHED: ::c_int = 1; ++ ++pub const CLOCK_REALTIME: clockid_t = 0; ++pub const CLOCK_MONOTONIC: clockid_t = 1; ++pub const CLOCK_PROCESS_CPUTIME_ID: clockid_t = 2; ++pub const CLOCK_THREAD_CPUTIME_ID: clockid_t = 3; ++// TODO(#247) Someday our Travis shall have glibc 2.21 (released in Sep ++// 2014.) See also musl/mod.rs ++// pub const CLOCK_SGI_CYCLE: clockid_t = 10; ++// pub const CLOCK_TAI: clockid_t = 11; ++pub const TIMER_ABSTIME: ::c_int = 1; ++ ++pub const RLIMIT_CPU: ::c_int = 0; ++pub const RLIMIT_FSIZE: ::c_int = 1; ++pub const RLIMIT_DATA: ::c_int = 2; ++pub const RLIMIT_STACK: ::c_int = 3; ++pub const RLIMIT_CORE: ::c_int = 4; ++pub const RLIMIT_LOCKS: ::c_int = 10; ++pub const RLIMIT_SIGPENDING: ::c_int = 11; ++pub const RLIMIT_MSGQUEUE: ::c_int = 12; ++pub const RLIMIT_NICE: ::c_int = 13; ++pub const RLIMIT_RTPRIO: ::c_int = 14; ++ ++pub const RUSAGE_SELF: ::c_int = 0; ++ ++pub const O_RDONLY: ::c_int = 0; ++pub const O_WRONLY: ::c_int = 1; ++pub const O_RDWR: ::c_int = 2; ++ ++pub const SOCK_CLOEXEC: ::c_int = O_CLOEXEC; ++ ++pub const S_IFIFO: ::mode_t = 4096; ++pub const S_IFCHR: ::mode_t = 8192; ++pub const S_IFBLK: ::mode_t = 24576; ++pub const S_IFDIR: ::mode_t = 16384; ++pub const S_IFREG: ::mode_t = 32768; ++pub const S_IFLNK: ::mode_t = 40960; ++pub const S_IFSOCK: ::mode_t = 49152; ++pub const S_IFMT: ::mode_t = 61440; ++pub const S_IRWXU: ::mode_t = 448; ++pub const S_IXUSR: ::mode_t = 64; ++pub const S_IWUSR: ::mode_t = 128; ++pub const S_IRUSR: ::mode_t = 256; ++pub const S_IRWXG: ::mode_t = 56; ++pub const S_IXGRP: ::mode_t = 8; ++pub const S_IWGRP: ::mode_t = 16; ++pub const S_IRGRP: ::mode_t = 32; ++pub const S_IRWXO: ::mode_t = 7; ++pub const S_IXOTH: ::mode_t = 1; ++pub const S_IWOTH: ::mode_t = 2; ++pub const S_IROTH: ::mode_t = 4; ++pub const F_OK: ::c_int = 0; ++pub const R_OK: ::c_int = 4; ++pub const W_OK: ::c_int = 2; ++pub const X_OK: ::c_int = 1; ++pub const STDIN_FILENO: ::c_int = 0; ++pub const STDOUT_FILENO: ::c_int = 1; ++pub const STDERR_FILENO: ::c_int = 2; ++pub const SIGHUP: ::c_int = 1; ++pub const SIGINT: ::c_int = 2; ++pub const SIGQUIT: ::c_int = 3; ++pub const SIGILL: ::c_int = 4; ++pub const SIGABRT: ::c_int = 6; ++pub const SIGFPE: ::c_int = 8; ++pub const SIGKILL: ::c_int = 9; ++pub const SIGSEGV: ::c_int = 11; ++pub const SIGPIPE: ::c_int = 13; ++pub const SIGALRM: ::c_int = 14; ++pub const SIGTERM: ::c_int = 15; ++ ++pub const PROT_NONE: ::c_int = 0; ++pub const PROT_READ: ::c_int = 1; ++pub const PROT_WRITE: ::c_int = 2; ++pub const PROT_EXEC: ::c_int = 4; ++ ++pub const LC_CTYPE: ::c_int = 0; ++pub const LC_NUMERIC: ::c_int = 1; ++pub const LC_MONETARY: ::c_int = 2; ++pub const LC_TIME: ::c_int = 3; ++pub const LC_COLLATE: ::c_int = 4; ++pub const LC_MESSAGES: ::c_int = 5; ++pub const LC_ALL: ::c_int = 6; ++pub const LC_CTYPE_MASK: ::c_int = (1 << LC_CTYPE); ++pub const LC_NUMERIC_MASK: ::c_int = (1 << LC_NUMERIC); ++pub const LC_TIME_MASK: ::c_int = (1 << LC_TIME); ++pub const LC_COLLATE_MASK: ::c_int = (1 << LC_COLLATE); ++pub const LC_MONETARY_MASK: ::c_int = (1 << LC_MONETARY); ++pub const LC_MESSAGES_MASK: ::c_int = (1 << LC_MESSAGES); ++// LC_ALL_MASK defined per platform ++ ++pub const MAP_FILE: ::c_int = 0x0000; ++pub const MAP_SHARED: ::c_int = 0x0001; ++pub const MAP_PRIVATE: ::c_int = 0x0002; ++pub const MAP_FIXED: ::c_int = 0x0010; ++ ++pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void; ++ ++// MS_ flags for msync(2) ++pub const MS_ASYNC: ::c_int = 0x0001; ++pub const MS_INVALIDATE: ::c_int = 0x0002; ++pub const MS_SYNC: ::c_int = 0x0004; ++ ++// MS_ flags for mount(2) ++pub const MS_RDONLY: ::c_ulong = 0x01; ++pub const MS_NOSUID: ::c_ulong = 0x02; ++pub const MS_NODEV: ::c_ulong = 0x04; ++pub const MS_NOEXEC: ::c_ulong = 0x08; ++pub const MS_SYNCHRONOUS: ::c_ulong = 0x10; ++pub const MS_REMOUNT: ::c_ulong = 0x20; ++pub const MS_MANDLOCK: ::c_ulong = 0x40; ++pub const MS_NOATIME: ::c_ulong = 0x0400; ++pub const MS_NODIRATIME: ::c_ulong = 0x0800; ++pub const MS_BIND: ::c_ulong = 0x1000; ++pub const MS_NOUSER: ::c_ulong = 0x80000000; ++pub const MS_MGC_VAL: ::c_ulong = 0xc0ed0000; ++pub const MS_MGC_MSK: ::c_ulong = 0xffff0000; ++pub const MS_RMT_MASK: ::c_ulong = 0x800051; ++ ++pub const EPERM: ::c_int = 1; ++pub const ENOENT: ::c_int = 2; ++pub const ESRCH: ::c_int = 3; ++pub const EINTR: ::c_int = 4; ++pub const EIO: ::c_int = 5; ++pub const ENXIO: ::c_int = 6; ++pub const E2BIG: ::c_int = 7; ++pub const ENOEXEC: ::c_int = 8; ++pub const EBADF: ::c_int = 9; ++pub const ECHILD: ::c_int = 10; ++pub const EAGAIN: ::c_int = 11; ++pub const ENOMEM: ::c_int = 12; ++pub const EACCES: ::c_int = 13; ++pub const EFAULT: ::c_int = 14; ++pub const ENOTBLK: ::c_int = 15; ++pub const EBUSY: ::c_int = 16; ++pub const EEXIST: ::c_int = 17; ++pub const EXDEV: ::c_int = 18; ++pub const ENODEV: ::c_int = 19; ++pub const ENOTDIR: ::c_int = 20; ++pub const EISDIR: ::c_int = 21; ++pub const EINVAL: ::c_int = 22; ++pub const ENFILE: ::c_int = 23; ++pub const EMFILE: ::c_int = 24; ++pub const ENOTTY: ::c_int = 25; ++pub const ETXTBSY: ::c_int = 26; ++pub const EFBIG: ::c_int = 27; ++pub const ENOSPC: ::c_int = 28; ++pub const ESPIPE: ::c_int = 29; ++pub const EROFS: ::c_int = 30; ++pub const EMLINK: ::c_int = 31; ++pub const EPIPE: ::c_int = 32; ++pub const EDOM: ::c_int = 33; ++pub const ERANGE: ::c_int = 34; ++pub const EWOULDBLOCK: ::c_int = EAGAIN; ++ ++pub const SCM_RIGHTS: ::c_int = 0x01; ++pub const SCM_CREDENTIALS: ::c_int = 0x02; ++ ++pub const IPPROTO_RAW: ::c_int = 255; ++ ++pub const PROT_GROWSDOWN: ::c_int = 0x1000000; ++pub const PROT_GROWSUP: ::c_int = 0x2000000; ++ ++pub const MAP_TYPE: ::c_int = 0x000f; ++ ++pub const MADV_NORMAL: ::c_int = 0; ++pub const MADV_RANDOM: ::c_int = 1; ++pub const MADV_SEQUENTIAL: ::c_int = 2; ++pub const MADV_WILLNEED: ::c_int = 3; ++pub const MADV_DONTNEED: ::c_int = 4; ++pub const MADV_REMOVE: ::c_int = 9; ++pub const MADV_DONTFORK: ::c_int = 10; ++pub const MADV_DOFORK: ::c_int = 11; ++pub const MADV_MERGEABLE: ::c_int = 12; ++pub const MADV_UNMERGEABLE: ::c_int = 13; ++pub const MADV_HWPOISON: ::c_int = 100; ++ ++pub const IFF_UP: ::c_int = 0x1; ++pub const IFF_BROADCAST: ::c_int = 0x2; ++pub const IFF_DEBUG: ::c_int = 0x4; ++pub const IFF_LOOPBACK: ::c_int = 0x8; ++pub const IFF_POINTOPOINT: ::c_int = 0x10; ++pub const IFF_NOTRAILERS: ::c_int = 0x20; ++pub const IFF_RUNNING: ::c_int = 0x40; ++pub const IFF_NOARP: ::c_int = 0x80; ++pub const IFF_PROMISC: ::c_int = 0x100; ++pub const IFF_ALLMULTI: ::c_int = 0x200; ++pub const IFF_MASTER: ::c_int = 0x400; ++pub const IFF_SLAVE: ::c_int = 0x800; ++pub const IFF_MULTICAST: ::c_int = 0x1000; ++pub const IFF_PORTSEL: ::c_int = 0x2000; ++pub const IFF_AUTOMEDIA: ::c_int = 0x4000; ++pub const IFF_DYNAMIC: ::c_int = 0x8000; ++ ++pub const SOL_IP: ::c_int = 0; ++pub const SOL_TCP: ::c_int = 6; ++pub const SOL_IPV6: ::c_int = 41; ++pub const SOL_ICMPV6: ::c_int = 58; ++pub const SOL_RAW: ::c_int = 255; ++pub const SOL_DECNET: ::c_int = 261; ++pub const SOL_X25: ::c_int = 262; ++pub const SOL_PACKET: ::c_int = 263; ++pub const SOL_ATM: ::c_int = 264; ++pub const SOL_AAL: ::c_int = 265; ++pub const SOL_IRDA: ::c_int = 266; ++ ++pub const AF_UNSPEC: ::c_int = 0; ++pub const AF_UNIX: ::c_int = 1; ++pub const AF_LOCAL: ::c_int = 1; ++pub const AF_INET: ::c_int = 2; ++pub const AF_AX25: ::c_int = 3; ++pub const AF_IPX: ::c_int = 4; ++pub const AF_APPLETALK: ::c_int = 5; ++pub const AF_NETROM: ::c_int = 6; ++pub const AF_BRIDGE: ::c_int = 7; ++pub const AF_ATMPVC: ::c_int = 8; ++pub const AF_X25: ::c_int = 9; ++pub const AF_INET6: ::c_int = 10; ++pub const AF_ROSE: ::c_int = 11; ++pub const AF_DECnet: ::c_int = 12; ++pub const AF_NETBEUI: ::c_int = 13; ++pub const AF_SECURITY: ::c_int = 14; ++pub const AF_KEY: ::c_int = 15; ++pub const AF_NETLINK: ::c_int = 16; ++pub const AF_ROUTE: ::c_int = AF_NETLINK; ++pub const AF_PACKET: ::c_int = 17; ++pub const AF_ASH: ::c_int = 18; ++pub const AF_ECONET: ::c_int = 19; ++pub const AF_ATMSVC: ::c_int = 20; ++pub const AF_SNA: ::c_int = 22; ++pub const AF_IRDA: ::c_int = 23; ++pub const AF_PPPOX: ::c_int = 24; ++pub const AF_WANPIPE: ::c_int = 25; ++pub const AF_LLC: ::c_int = 26; ++pub const AF_CAN: ::c_int = 29; ++pub const AF_TIPC: ::c_int = 30; ++pub const AF_BLUETOOTH: ::c_int = 31; ++pub const AF_IUCV: ::c_int = 32; ++pub const AF_RXRPC: ::c_int = 33; ++pub const AF_ISDN: ::c_int = 34; ++pub const AF_PHONET: ::c_int = 35; ++pub const AF_IEEE802154: ::c_int = 36; ++pub const AF_CAIF: ::c_int = 37; ++pub const AF_ALG: ::c_int = 38; ++ ++pub const PF_UNSPEC: ::c_int = AF_UNSPEC; ++pub const PF_UNIX: ::c_int = AF_UNIX; ++pub const PF_LOCAL: ::c_int = AF_LOCAL; ++pub const PF_INET: ::c_int = AF_INET; ++pub const PF_AX25: ::c_int = AF_AX25; ++pub const PF_IPX: ::c_int = AF_IPX; ++pub const PF_APPLETALK: ::c_int = AF_APPLETALK; ++pub const PF_NETROM: ::c_int = AF_NETROM; ++pub const PF_BRIDGE: ::c_int = AF_BRIDGE; ++pub const PF_ATMPVC: ::c_int = AF_ATMPVC; ++pub const PF_X25: ::c_int = AF_X25; ++pub const PF_INET6: ::c_int = AF_INET6; ++pub const PF_ROSE: ::c_int = AF_ROSE; ++pub const PF_DECnet: ::c_int = AF_DECnet; ++pub const PF_NETBEUI: ::c_int = AF_NETBEUI; ++pub const PF_SECURITY: ::c_int = AF_SECURITY; ++pub const PF_KEY: ::c_int = AF_KEY; ++pub const PF_NETLINK: ::c_int = AF_NETLINK; ++pub const PF_ROUTE: ::c_int = AF_ROUTE; ++pub const PF_PACKET: ::c_int = AF_PACKET; ++pub const PF_ASH: ::c_int = AF_ASH; ++pub const PF_ECONET: ::c_int = AF_ECONET; ++pub const PF_ATMSVC: ::c_int = AF_ATMSVC; ++pub const PF_SNA: ::c_int = AF_SNA; ++pub const PF_IRDA: ::c_int = AF_IRDA; ++pub const PF_PPPOX: ::c_int = AF_PPPOX; ++pub const PF_WANPIPE: ::c_int = AF_WANPIPE; ++pub const PF_LLC: ::c_int = AF_LLC; ++pub const PF_CAN: ::c_int = AF_CAN; ++pub const PF_TIPC: ::c_int = AF_TIPC; ++pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH; ++pub const PF_IUCV: ::c_int = AF_IUCV; ++pub const PF_RXRPC: ::c_int = AF_RXRPC; ++pub const PF_ISDN: ::c_int = AF_ISDN; ++pub const PF_PHONET: ::c_int = AF_PHONET; ++pub const PF_IEEE802154: ::c_int = AF_IEEE802154; ++pub const PF_CAIF: ::c_int = AF_CAIF; ++pub const PF_ALG: ::c_int = AF_ALG; ++ ++pub const SOMAXCONN: ::c_int = 128; ++ ++pub const MSG_OOB: ::c_int = 1; ++pub const MSG_PEEK: ::c_int = 2; ++pub const MSG_DONTROUTE: ::c_int = 4; ++pub const MSG_CTRUNC: ::c_int = 8; ++pub const MSG_TRUNC: ::c_int = 0x20; ++pub const MSG_DONTWAIT: ::c_int = 0x40; ++pub const MSG_EOR: ::c_int = 0x80; ++pub const MSG_WAITALL: ::c_int = 0x100; ++pub const MSG_FIN: ::c_int = 0x200; ++pub const MSG_SYN: ::c_int = 0x400; ++pub const MSG_CONFIRM: ::c_int = 0x800; ++pub const MSG_RST: ::c_int = 0x1000; ++pub const MSG_ERRQUEUE: ::c_int = 0x2000; ++pub const MSG_NOSIGNAL: ::c_int = 0x4000; ++pub const MSG_MORE: ::c_int = 0x8000; ++pub const MSG_WAITFORONE: ::c_int = 0x10000; ++pub const MSG_CMSG_CLOEXEC: ::c_int = 0x40000000; ++ ++pub const SOCK_RAW: ::c_int = 3; ++pub const IPPROTO_ICMP: ::c_int = 1; ++pub const IPPROTO_ICMPV6: ::c_int = 58; ++pub const IPPROTO_TCP: ::c_int = 6; ++pub const IPPROTO_IP: ::c_int = 0; ++pub const IPPROTO_IPV6: ::c_int = 41; ++pub const IP_MULTICAST_TTL: ::c_int = 33; ++pub const IP_MULTICAST_LOOP: ::c_int = 34; ++pub const IP_TTL: ::c_int = 2; ++pub const IP_HDRINCL: ::c_int = 3; ++pub const IP_ADD_MEMBERSHIP: ::c_int = 35; ++pub const IP_DROP_MEMBERSHIP: ::c_int = 36; ++ ++pub const TCP_NODELAY: ::c_int = 1; ++pub const TCP_MAXSEG: ::c_int = 2; ++pub const TCP_CORK: ::c_int = 3; ++pub const TCP_KEEPIDLE: ::c_int = 4; ++pub const TCP_KEEPINTVL: ::c_int = 5; ++pub const TCP_KEEPCNT: ::c_int = 6; ++pub const TCP_SYNCNT: ::c_int = 7; ++pub const TCP_LINGER2: ::c_int = 8; ++pub const TCP_DEFER_ACCEPT: ::c_int = 9; ++pub const TCP_WINDOW_CLAMP: ::c_int = 10; ++pub const TCP_INFO: ::c_int = 11; ++pub const TCP_QUICKACK: ::c_int = 12; ++pub const TCP_CONGESTION: ::c_int = 13; ++ ++pub const IPV6_MULTICAST_LOOP: ::c_int = 19; ++pub const IPV6_V6ONLY: ::c_int = 26; ++ ++pub const SO_DEBUG: ::c_int = 1; ++ ++pub const SHUT_RD: ::c_int = 0; ++pub const SHUT_WR: ::c_int = 1; ++pub const SHUT_RDWR: ::c_int = 2; ++ ++pub const LOCK_SH: ::c_int = 1; ++pub const LOCK_EX: ::c_int = 2; ++pub const LOCK_NB: ::c_int = 4; ++pub const LOCK_UN: ::c_int = 8; ++ ++pub const SS_ONSTACK: ::c_int = 1; ++pub const SS_DISABLE: ::c_int = 2; ++ ++pub const PATH_MAX: ::c_int = 4096; ++ ++pub const FD_SETSIZE: usize = 1024; ++ ++pub const EPOLLIN: ::c_int = 0x1; ++pub const EPOLLPRI: ::c_int = 0x2; ++pub const EPOLLOUT: ::c_int = 0x4; ++pub const EPOLLRDNORM: ::c_int = 0x40; ++pub const EPOLLRDBAND: ::c_int = 0x80; ++pub const EPOLLWRNORM: ::c_int = 0x100; ++pub const EPOLLWRBAND: ::c_int = 0x200; ++pub const EPOLLMSG: ::c_int = 0x400; ++pub const EPOLLERR: ::c_int = 0x8; ++pub const EPOLLHUP: ::c_int = 0x10; ++pub const EPOLLET: ::c_int = 0x80000000; ++ ++pub const EPOLL_CTL_ADD: ::c_int = 1; ++pub const EPOLL_CTL_MOD: ::c_int = 3; ++pub const EPOLL_CTL_DEL: ::c_int = 2; ++ ++pub const MNT_DETACH: ::c_int = 0x2; ++pub const MNT_EXPIRE: ::c_int = 0x4; ++ ++pub const MNT_FORCE: ::c_int = 0x1; ++ ++pub const Q_SYNC: ::c_int = 0x600; ++pub const Q_QUOTAON: ::c_int = 0x100; ++pub const Q_QUOTAOFF: ::c_int = 0x200; ++pub const Q_GETQUOTA: ::c_int = 0x300; ++pub const Q_SETQUOTA: ::c_int = 0x400; ++ ++pub const TCIOFF: ::c_int = 2; ++pub const TCION: ::c_int = 3; ++pub const TCOOFF: ::c_int = 0; ++pub const TCOON: ::c_int = 1; ++pub const TCIFLUSH: ::c_int = 0; ++pub const TCOFLUSH: ::c_int = 1; ++pub const TCIOFLUSH: ::c_int = 2; ++pub const NL0: ::c_int = 0x00000000; ++pub const NL1: ::c_int = 0x00000100; ++pub const TAB0: ::c_int = 0x00000000; ++pub const CR0: ::c_int = 0x00000000; ++pub const FF0: ::c_int = 0x00000000; ++pub const BS0: ::c_int = 0x00000000; ++pub const VT0: ::c_int = 0x00000000; ++pub const VERASE: usize = 2; ++pub const VKILL: usize = 3; ++pub const VINTR: usize = 0; ++pub const VQUIT: usize = 1; ++pub const VLNEXT: usize = 15; ++pub const IGNBRK: ::tcflag_t = 0x00000001; ++pub const BRKINT: ::tcflag_t = 0x00000002; ++pub const IGNPAR: ::tcflag_t = 0x00000004; ++pub const PARMRK: ::tcflag_t = 0x00000008; ++pub const INPCK: ::tcflag_t = 0x00000010; ++pub const ISTRIP: ::tcflag_t = 0x00000020; ++pub const INLCR: ::tcflag_t = 0x00000040; ++pub const IGNCR: ::tcflag_t = 0x00000080; ++pub const ICRNL: ::tcflag_t = 0x00000100; ++pub const IXANY: ::tcflag_t = 0x00000800; ++pub const IMAXBEL: ::tcflag_t = 0x00002000; ++pub const OPOST: ::tcflag_t = 0x1; ++pub const CS5: ::tcflag_t = 0x00000000; ++pub const CRTSCTS: ::tcflag_t = 0x80000000; ++pub const ECHO: ::tcflag_t = 0x00000008; ++ ++pub const CLONE_VM: ::c_int = 0x100; ++pub const CLONE_FS: ::c_int = 0x200; ++pub const CLONE_FILES: ::c_int = 0x400; ++pub const CLONE_SIGHAND: ::c_int = 0x800; ++pub const CLONE_PTRACE: ::c_int = 0x2000; ++pub const CLONE_VFORK: ::c_int = 0x4000; ++pub const CLONE_PARENT: ::c_int = 0x8000; ++pub const CLONE_THREAD: ::c_int = 0x10000; ++pub const CLONE_NEWNS: ::c_int = 0x20000; ++pub const CLONE_SYSVSEM: ::c_int = 0x40000; ++pub const CLONE_SETTLS: ::c_int = 0x80000; ++pub const CLONE_PARENT_SETTID: ::c_int = 0x100000; ++pub const CLONE_CHILD_CLEARTID: ::c_int = 0x200000; ++pub const CLONE_DETACHED: ::c_int = 0x400000; ++pub const CLONE_UNTRACED: ::c_int = 0x800000; ++pub const CLONE_CHILD_SETTID: ::c_int = 0x01000000; ++pub const CLONE_NEWUTS: ::c_int = 0x04000000; ++pub const CLONE_NEWIPC: ::c_int = 0x08000000; ++pub const CLONE_NEWUSER: ::c_int = 0x10000000; ++pub const CLONE_NEWPID: ::c_int = 0x20000000; ++pub const CLONE_NEWNET: ::c_int = 0x40000000; ++pub const CLONE_IO: ::c_int = 0x80000000; ++ ++pub const WNOHANG: ::c_int = 0x00000001; ++pub const WUNTRACED: ::c_int = 0x00000002; ++pub const WSTOPPED: ::c_int = WUNTRACED; ++pub const WEXITED: ::c_int = 0x00000004; ++pub const WCONTINUED: ::c_int = 0x00000008; ++pub const WNOWAIT: ::c_int = 0x01000000; ++ ++pub const __WNOTHREAD: ::c_int = 0x20000000; ++pub const __WALL: ::c_int = 0x40000000; ++pub const __WCLONE: ::c_int = 0x80000000; ++ ++pub const SPLICE_F_MOVE: ::c_uint = 0x01; ++pub const SPLICE_F_NONBLOCK: ::c_uint = 0x02; ++pub const SPLICE_F_MORE: ::c_uint = 0x04; ++pub const SPLICE_F_GIFT: ::c_uint = 0x08; ++ ++pub const RTLD_LOCAL: ::c_int = 0; ++ ++pub const POSIX_FADV_NORMAL: ::c_int = 0; ++pub const POSIX_FADV_RANDOM: ::c_int = 1; ++pub const POSIX_FADV_SEQUENTIAL: ::c_int = 2; ++pub const POSIX_FADV_WILLNEED: ::c_int = 3; ++ ++pub const AT_FDCWD: ::c_int = -100; ++pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x100; ++pub const AT_REMOVEDIR: ::c_int = 0x200; ++pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; ++ ++pub const LOG_CRON: ::c_int = 9 << 3; ++pub const LOG_AUTHPRIV: ::c_int = 10 << 3; ++pub const LOG_FTP: ::c_int = 11 << 3; ++pub const LOG_PERROR: ::c_int = 0x20; ++ ++pub const PIPE_BUF: usize = 4096; ++ ++pub const SI_LOAD_SHIFT: ::c_uint = 16; ++ ++pub const SIGEV_SIGNAL: ::c_int = 0; ++pub const SIGEV_NONE: ::c_int = 1; ++pub const SIGEV_THREAD: ::c_int = 2; ++ ++pub const P_ALL: idtype_t = 0; ++pub const P_PID: idtype_t = 1; ++pub const P_PGID: idtype_t = 2; ++ ++pub const UTIME_OMIT: c_long = 1073741822; ++pub const UTIME_NOW: c_long = 1073741823; ++ ++pub const L_tmpnam: ::c_uint = 20; ++pub const _PC_LINK_MAX: ::c_int = 0; ++pub const _PC_MAX_CANON: ::c_int = 1; ++pub const _PC_MAX_INPUT: ::c_int = 2; ++pub const _PC_NAME_MAX: ::c_int = 3; ++pub const _PC_PATH_MAX: ::c_int = 4; ++pub const _PC_PIPE_BUF: ::c_int = 5; ++pub const _PC_CHOWN_RESTRICTED: ::c_int = 6; ++pub const _PC_NO_TRUNC: ::c_int = 7; ++pub const _PC_VDISABLE: ::c_int = 8; ++ ++pub const _SC_ARG_MAX: ::c_int = 0; ++pub const _SC_CHILD_MAX: ::c_int = 1; ++pub const _SC_CLK_TCK: ::c_int = 2; ++pub const _SC_NGROUPS_MAX: ::c_int = 3; ++pub const _SC_OPEN_MAX: ::c_int = 4; ++pub const _SC_STREAM_MAX: ::c_int = 5; ++pub const _SC_TZNAME_MAX: ::c_int = 6; ++pub const _SC_JOB_CONTROL: ::c_int = 7; ++pub const _SC_SAVED_IDS: ::c_int = 8; ++pub const _SC_REALTIME_SIGNALS: ::c_int = 9; ++pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10; ++pub const _SC_TIMERS: ::c_int = 11; ++pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12; ++pub const _SC_PRIORITIZED_IO: ::c_int = 13; ++pub const _SC_SYNCHRONIZED_IO: ::c_int = 14; ++pub const _SC_FSYNC: ::c_int = 15; ++pub const _SC_MAPPED_FILES: ::c_int = 16; ++pub const _SC_MEMLOCK: ::c_int = 17; ++pub const _SC_MEMLOCK_RANGE: ::c_int = 18; ++pub const _SC_MEMORY_PROTECTION: ::c_int = 19; ++pub const _SC_MESSAGE_PASSING: ::c_int = 20; ++pub const _SC_SEMAPHORES: ::c_int = 21; ++pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22; ++pub const _SC_AIO_LISTIO_MAX: ::c_int = 23; ++pub const _SC_AIO_MAX: ::c_int = 24; ++pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25; ++pub const _SC_DELAYTIMER_MAX: ::c_int = 26; ++pub const _SC_MQ_OPEN_MAX: ::c_int = 27; ++pub const _SC_MQ_PRIO_MAX: ::c_int = 28; ++pub const _SC_VERSION: ::c_int = 29; ++pub const _SC_PAGESIZE: ::c_int = 30; ++pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE; ++pub const _SC_RTSIG_MAX: ::c_int = 31; ++pub const _SC_SEM_NSEMS_MAX: ::c_int = 32; ++pub const _SC_SEM_VALUE_MAX: ::c_int = 33; ++pub const _SC_SIGQUEUE_MAX: ::c_int = 34; ++pub const _SC_TIMER_MAX: ::c_int = 35; ++pub const _SC_BC_BASE_MAX: ::c_int = 36; ++pub const _SC_BC_DIM_MAX: ::c_int = 37; ++pub const _SC_BC_SCALE_MAX: ::c_int = 38; ++pub const _SC_BC_STRING_MAX: ::c_int = 39; ++pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40; ++pub const _SC_EXPR_NEST_MAX: ::c_int = 42; ++pub const _SC_LINE_MAX: ::c_int = 43; ++pub const _SC_RE_DUP_MAX: ::c_int = 44; ++pub const _SC_2_VERSION: ::c_int = 46; ++pub const _SC_2_C_BIND: ::c_int = 47; ++pub const _SC_2_C_DEV: ::c_int = 48; ++pub const _SC_2_FORT_DEV: ::c_int = 49; ++pub const _SC_2_FORT_RUN: ::c_int = 50; ++pub const _SC_2_SW_DEV: ::c_int = 51; ++pub const _SC_2_LOCALEDEF: ::c_int = 52; ++pub const _SC_IOV_MAX: ::c_int = 60; ++pub const _SC_THREADS: ::c_int = 67; ++pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68; ++pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69; ++pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70; ++pub const _SC_LOGIN_NAME_MAX: ::c_int = 71; ++pub const _SC_TTY_NAME_MAX: ::c_int = 72; ++pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73; ++pub const _SC_THREAD_KEYS_MAX: ::c_int = 74; ++pub const _SC_THREAD_STACK_MIN: ::c_int = 75; ++pub const _SC_THREAD_THREADS_MAX: ::c_int = 76; ++pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77; ++pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78; ++pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79; ++pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80; ++pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81; ++pub const _SC_NPROCESSORS_ONLN: ::c_int = 84; ++pub const _SC_ATEXIT_MAX: ::c_int = 87; ++pub const _SC_XOPEN_VERSION: ::c_int = 89; ++pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90; ++pub const _SC_XOPEN_UNIX: ::c_int = 91; ++pub const _SC_XOPEN_CRYPT: ::c_int = 92; ++pub const _SC_XOPEN_ENH_I18N: ::c_int = 93; ++pub const _SC_XOPEN_SHM: ::c_int = 94; ++pub const _SC_2_CHAR_TERM: ::c_int = 95; ++pub const _SC_2_UPE: ::c_int = 97; ++pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125; ++pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126; ++pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128; ++pub const _SC_XOPEN_LEGACY: ::c_int = 129; ++pub const _SC_XOPEN_REALTIME: ::c_int = 130; ++pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131; ++pub const _SC_HOST_NAME_MAX: ::c_int = 180; ++ ++pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY; ++pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY; ++ ++pub const GLOB_ERR: ::c_int = 1 << 0; ++pub const GLOB_MARK: ::c_int = 1 << 1; ++pub const GLOB_NOSORT: ::c_int = 1 << 2; ++pub const GLOB_DOOFFS: ::c_int = 1 << 3; ++pub const GLOB_NOCHECK: ::c_int = 1 << 4; ++pub const GLOB_APPEND: ::c_int = 1 << 5; ++pub const GLOB_NOESCAPE: ::c_int = 1 << 6; ++ ++pub const GLOB_NOSPACE: ::c_int = 1; ++pub const GLOB_ABORTED: ::c_int = 2; ++pub const GLOB_NOMATCH: ::c_int = 3; ++ ++pub const POSIX_MADV_NORMAL: ::c_int = 0; ++pub const POSIX_MADV_RANDOM: ::c_int = 1; ++pub const POSIX_MADV_SEQUENTIAL: ::c_int = 2; ++pub const POSIX_MADV_WILLNEED: ::c_int = 3; ++ ++pub const S_IEXEC: mode_t = 64; ++pub const S_IWRITE: mode_t = 128; ++pub const S_IREAD: mode_t = 256; ++ ++pub const F_LOCK: ::c_int = 1; ++pub const F_TEST: ::c_int = 3; ++pub const F_TLOCK: ::c_int = 2; ++pub const F_ULOCK: ::c_int = 0; ++ ++pub const ST_RDONLY: ::c_ulong = 1; ++pub const ST_NOSUID: ::c_ulong = 2; ++pub const ST_NODEV: ::c_ulong = 4; ++pub const ST_NOEXEC: ::c_ulong = 8; ++pub const ST_SYNCHRONOUS: ::c_ulong = 16; ++pub const ST_MANDLOCK: ::c_ulong = 64; ++pub const ST_WRITE: ::c_ulong = 128; ++pub const ST_APPEND: ::c_ulong = 256; ++pub const ST_IMMUTABLE: ::c_ulong = 512; ++pub const ST_NOATIME: ::c_ulong = 1024; ++pub const ST_NODIRATIME: ::c_ulong = 2048; ++ ++pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void; ++pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void; ++pub const RTLD_NODELETE: ::c_int = 0x1000; ++pub const RTLD_NOW: ::c_int = 0x2; ++ ++pub const TCP_MD5SIG: ::c_int = 14; ++ ++pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ++ __align: [], ++ size: [0; __SIZEOF_PTHREAD_MUTEX_T], ++}; ++pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { ++ __align: [], ++ size: [0; __SIZEOF_PTHREAD_COND_T], ++}; ++pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { ++ __align: [], ++ size: [0; __SIZEOF_PTHREAD_RWLOCK_T], ++}; ++pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0; ++pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1; ++pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2; ++pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL; ++pub const __SIZEOF_PTHREAD_COND_T: usize = 48; ++ ++pub const SCHED_OTHER: ::c_int = 0; ++pub const SCHED_FIFO: ::c_int = 1; ++pub const SCHED_RR: ::c_int = 2; ++pub const SCHED_BATCH: ::c_int = 3; ++pub const SCHED_IDLE: ::c_int = 5; ++ ++// System V IPC ++pub const IPC_PRIVATE: ::key_t = 0; ++ ++pub const IPC_CREAT: ::c_int = 0o1000; ++pub const IPC_EXCL: ::c_int = 0o2000; ++pub const IPC_NOWAIT: ::c_int = 0o4000; ++ ++pub const IPC_RMID: ::c_int = 0; ++pub const IPC_SET: ::c_int = 1; ++pub const IPC_STAT: ::c_int = 2; ++pub const IPC_INFO: ::c_int = 3; ++pub const MSG_STAT: ::c_int = 11; ++pub const MSG_INFO: ::c_int = 12; ++ ++pub const MSG_NOERROR: ::c_int = 0o10000; ++pub const MSG_EXCEPT: ::c_int = 0o20000; ++ ++pub const SHM_R: ::c_int = 0o400; ++pub const SHM_W: ::c_int = 0o200; ++ ++pub const SHM_RDONLY: ::c_int = 0o10000; ++pub const SHM_RND: ::c_int = 0o20000; ++pub const SHM_REMAP: ::c_int = 0o40000; ++ ++pub const SHM_LOCK: ::c_int = 11; ++pub const SHM_UNLOCK: ::c_int = 12; ++ ++pub const SHM_HUGETLB: ::c_int = 0o4000; ++pub const SHM_NORESERVE: ::c_int = 0o10000; ++ ++pub const EPOLLRDHUP: ::c_int = 0x2000; ++pub const EPOLLONESHOT: ::c_int = 0x40000000; ++ ++pub const QFMT_VFS_OLD: ::c_int = 1; ++pub const QFMT_VFS_V0: ::c_int = 2; ++ ++pub const EFD_SEMAPHORE: ::c_int = 0x1; ++ ++pub const LOG_NFACILITIES: ::c_int = 24; ++ ++pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t; ++ ++pub const RB_AUTOBOOT: ::c_int = 0x01234567u32 as i32; ++pub const RB_HALT_SYSTEM: ::c_int = 0xcdef0123u32 as i32; ++pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32; ++pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32; ++pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32; ++ ++pub const AI_PASSIVE: ::c_int = 0x0001; ++pub const AI_CANONNAME: ::c_int = 0x0002; ++pub const AI_NUMERICHOST: ::c_int = 0x0004; ++pub const AI_V4MAPPED: ::c_int = 0x0008; ++pub const AI_ALL: ::c_int = 0x0010; ++pub const AI_ADDRCONFIG: ::c_int = 0x0020; ++ ++pub const AI_NUMERICSERV: ::c_int = 0x0400; ++ ++pub const EAI_BADFLAGS: ::c_int = -1; ++pub const EAI_NONAME: ::c_int = -2; ++pub const EAI_AGAIN: ::c_int = -3; ++pub const EAI_FAIL: ::c_int = -4; ++pub const EAI_FAMILY: ::c_int = -6; ++pub const EAI_SOCKTYPE: ::c_int = -7; ++pub const EAI_SERVICE: ::c_int = -8; ++pub const EAI_MEMORY: ::c_int = -10; ++pub const EAI_OVERFLOW: ::c_int = -12; ++ ++pub const NI_NUMERICHOST: ::c_int = 1; ++pub const NI_NUMERICSERV: ::c_int = 2; ++pub const NI_NOFQDN: ::c_int = 4; ++pub const NI_NAMEREQD: ::c_int = 8; ++pub const NI_DGRAM: ::c_int = 16; ++ ++pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1; ++pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2; ++pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4; ++ ++pub const EAI_SYSTEM: ::c_int = -11; ++ ++pub const MREMAP_MAYMOVE: ::c_int = 1; ++pub const MREMAP_FIXED: ::c_int = 2; ++ ++pub const PR_SET_PDEATHSIG: ::c_int = 1; ++pub const PR_GET_PDEATHSIG: ::c_int = 2; ++ ++pub const PR_GET_DUMPABLE: ::c_int = 3; ++pub const PR_SET_DUMPABLE: ::c_int = 4; ++ ++pub const PR_GET_UNALIGN: ::c_int = 5; ++pub const PR_SET_UNALIGN: ::c_int = 6; ++pub const PR_UNALIGN_NOPRINT: ::c_int = 1; ++pub const PR_UNALIGN_SIGBUS: ::c_int = 2; ++ ++pub const PR_GET_KEEPCAPS: ::c_int = 7; ++pub const PR_SET_KEEPCAPS: ::c_int = 8; ++ ++pub const PR_GET_FPEMU: ::c_int = 9; ++pub const PR_SET_FPEMU: ::c_int = 10; ++pub const PR_FPEMU_NOPRINT: ::c_int = 1; ++pub const PR_FPEMU_SIGFPE: ::c_int = 2; ++ ++pub const PR_GET_FPEXC: ::c_int = 11; ++pub const PR_SET_FPEXC: ::c_int = 12; ++pub const PR_FP_EXC_SW_ENABLE: ::c_int = 0x80; ++pub const PR_FP_EXC_DIV: ::c_int = 0x010000; ++pub const PR_FP_EXC_OVF: ::c_int = 0x020000; ++pub const PR_FP_EXC_UND: ::c_int = 0x040000; ++pub const PR_FP_EXC_RES: ::c_int = 0x080000; ++pub const PR_FP_EXC_INV: ::c_int = 0x100000; ++pub const PR_FP_EXC_DISABLED: ::c_int = 0; ++pub const PR_FP_EXC_NONRECOV: ::c_int = 1; ++pub const PR_FP_EXC_ASYNC: ::c_int = 2; ++pub const PR_FP_EXC_PRECISE: ::c_int = 3; ++ ++pub const PR_GET_TIMING: ::c_int = 13; ++pub const PR_SET_TIMING: ::c_int = 14; ++pub const PR_TIMING_STATISTICAL: ::c_int = 0; ++pub const PR_TIMING_TIMESTAMP: ::c_int = 1; ++ ++pub const PR_SET_NAME: ::c_int = 15; ++pub const PR_GET_NAME: ::c_int = 16; ++ ++pub const PR_GET_ENDIAN: ::c_int = 19; ++pub const PR_SET_ENDIAN: ::c_int = 20; ++pub const PR_ENDIAN_BIG: ::c_int = 0; ++pub const PR_ENDIAN_LITTLE: ::c_int = 1; ++pub const PR_ENDIAN_PPC_LITTLE: ::c_int = 2; ++ ++pub const PR_GET_SECCOMP: ::c_int = 21; ++pub const PR_SET_SECCOMP: ::c_int = 22; ++ ++pub const PR_CAPBSET_READ: ::c_int = 23; ++pub const PR_CAPBSET_DROP: ::c_int = 24; ++ ++pub const PR_GET_TSC: ::c_int = 25; ++pub const PR_SET_TSC: ::c_int = 26; ++pub const PR_TSC_ENABLE: ::c_int = 1; ++pub const PR_TSC_SIGSEGV: ::c_int = 2; ++ ++pub const PR_GET_SECUREBITS: ::c_int = 27; ++pub const PR_SET_SECUREBITS: ::c_int = 28; ++ ++pub const PR_SET_TIMERSLACK: ::c_int = 29; ++pub const PR_GET_TIMERSLACK: ::c_int = 30; ++ ++pub const PR_TASK_PERF_EVENTS_DISABLE: ::c_int = 31; ++pub const PR_TASK_PERF_EVENTS_ENABLE: ::c_int = 32; ++ ++pub const PR_MCE_KILL: ::c_int = 33; ++pub const PR_MCE_KILL_CLEAR: ::c_int = 0; ++pub const PR_MCE_KILL_SET: ::c_int = 1; ++ ++pub const PR_MCE_KILL_LATE: ::c_int = 0; ++pub const PR_MCE_KILL_EARLY: ::c_int = 1; ++pub const PR_MCE_KILL_DEFAULT: ::c_int = 2; ++ ++pub const PR_MCE_KILL_GET: ::c_int = 34; ++ ++pub const PR_SET_MM: ::c_int = 35; ++pub const PR_SET_MM_START_CODE: ::c_int = 1; ++pub const PR_SET_MM_END_CODE: ::c_int = 2; ++pub const PR_SET_MM_START_DATA: ::c_int = 3; ++pub const PR_SET_MM_END_DATA: ::c_int = 4; ++pub const PR_SET_MM_START_STACK: ::c_int = 5; ++pub const PR_SET_MM_START_BRK: ::c_int = 6; ++pub const PR_SET_MM_BRK: ::c_int = 7; ++pub const PR_SET_MM_ARG_START: ::c_int = 8; ++pub const PR_SET_MM_ARG_END: ::c_int = 9; ++pub const PR_SET_MM_ENV_START: ::c_int = 10; ++pub const PR_SET_MM_ENV_END: ::c_int = 11; ++pub const PR_SET_MM_AUXV: ::c_int = 12; ++pub const PR_SET_MM_EXE_FILE: ::c_int = 13; ++pub const PR_SET_MM_MAP: ::c_int = 14; ++pub const PR_SET_MM_MAP_SIZE: ::c_int = 15; ++ ++pub const PR_SET_PTRACER: ::c_int = 0x59616d61; ++ ++pub const PR_SET_CHILD_SUBREAPER: ::c_int = 36; ++pub const PR_GET_CHILD_SUBREAPER: ::c_int = 37; ++ ++pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38; ++pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39; ++ ++pub const PR_GET_TID_ADDRESS: ::c_int = 40; ++ ++pub const PR_SET_THP_DISABLE: ::c_int = 41; ++pub const PR_GET_THP_DISABLE: ::c_int = 42; ++ ++pub const ABDAY_1: ::nl_item = 0x300; ++pub const ABDAY_2: ::nl_item = 0x301; ++pub const ABDAY_3: ::nl_item = 0x302; ++pub const ABDAY_4: ::nl_item = 0x303; ++pub const ABDAY_5: ::nl_item = 0x304; ++pub const ABDAY_6: ::nl_item = 0x305; ++pub const ABDAY_7: ::nl_item = 0x306; ++ ++pub const DAY_1: ::nl_item = 0x307; ++pub const DAY_2: ::nl_item = 0x308; ++pub const DAY_3: ::nl_item = 0x309; ++pub const DAY_4: ::nl_item = 0x30A; ++pub const DAY_5: ::nl_item = 0x30B; ++pub const DAY_6: ::nl_item = 0x30C; ++pub const DAY_7: ::nl_item = 0x30D; ++ ++pub const ABMON_1: ::nl_item = 0x30E; ++pub const ABMON_2: ::nl_item = 0x30F; ++pub const ABMON_3: ::nl_item = 0x310; ++pub const ABMON_4: ::nl_item = 0x311; ++pub const ABMON_5: ::nl_item = 0x312; ++pub const ABMON_6: ::nl_item = 0x313; ++pub const ABMON_7: ::nl_item = 0x314; ++pub const ABMON_8: ::nl_item = 0x315; ++pub const ABMON_9: ::nl_item = 0x316; ++pub const ABMON_10: ::nl_item = 0x317; ++pub const ABMON_11: ::nl_item = 0x318; ++pub const ABMON_12: ::nl_item = 0x319; ++ ++pub const MON_1: ::nl_item = 0x31A; ++pub const MON_2: ::nl_item = 0x31B; ++pub const MON_3: ::nl_item = 0x31C; ++pub const MON_4: ::nl_item = 0x31D; ++pub const MON_5: ::nl_item = 0x31E; ++pub const MON_6: ::nl_item = 0x31F; ++pub const MON_7: ::nl_item = 0x320; ++pub const MON_8: ::nl_item = 0x321; ++pub const MON_9: ::nl_item = 0x322; ++pub const MON_10: ::nl_item = 0x323; ++pub const MON_11: ::nl_item = 0x324; ++pub const MON_12: ::nl_item = 0x325; ++ ++pub const AM_STR: ::nl_item = 0x326; ++pub const PM_STR: ::nl_item = 0x327; ++ ++pub const D_T_FMT: ::nl_item = 0x328; ++pub const D_FMT: ::nl_item = 0x329; ++pub const T_FMT: ::nl_item = 0x32A; ++pub const T_FMT_AMPM: ::nl_item = 0x32B; ++ ++pub const ERA: ::nl_item = 0x32C; ++pub const ERA_D_FMT: ::nl_item = 0x32E; ++pub const ALT_DIGITS: ::nl_item = 0x32F; ++pub const ERA_D_T_FMT: ::nl_item = 0x330; ++pub const ERA_T_FMT: ::nl_item = 0x331; ++ ++pub const CODESET: ::nl_item = 10; ++ ++pub const CRNCYSTR: ::nl_item = 0x215; ++ ++pub const RADIXCHAR: ::nl_item = 0x100; ++pub const THOUSEP: ::nl_item = 0x101; ++ ++pub const NOEXPR: ::nl_item = 0x501; ++pub const YESSTR: ::nl_item = 0x502; ++pub const NOSTR: ::nl_item = 0x503; ++ ++pub const FILENAME_MAX: ::c_uint = 4095; ++ ++pub const AF_MAX: ::c_int = 39; ++ ++f! { ++ pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { ++ let fd = fd as usize; ++ let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; ++ (*set).fds_bits[fd / size] &= !(1 << (fd % size)); ++ return ++ } ++ ++ pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool { ++ let fd = fd as usize; ++ let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; ++ return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0 ++ } ++ ++ pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () { ++ let fd = fd as usize; ++ let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; ++ (*set).fds_bits[fd / size] |= 1 << (fd % size); ++ return ++ } ++ ++ pub fn FD_ZERO(set: *mut fd_set) -> () { ++ for slot in (*set).fds_bits.iter_mut() { ++ *slot = 0; ++ } ++ } ++ ++ pub fn WIFSTOPPED(status: ::c_int) -> bool { ++ (status & 0xff) == 0x7f ++ } ++ ++ pub fn WSTOPSIG(status: ::c_int) -> ::c_int { ++ (status >> 8) & 0xff ++ } ++ ++ pub fn WIFCONTINUED(status: ::c_int) -> bool { ++ status == 0xffff ++ } ++ ++ pub fn WIFSIGNALED(status: ::c_int) -> bool { ++ ((status & 0x7f) + 1) as i8 >= 2 ++ } ++ ++ pub fn WTERMSIG(status: ::c_int) -> ::c_int { ++ status & 0x7f ++ } ++ ++ pub fn WIFEXITED(status: ::c_int) -> bool { ++ (status & 0x7f) == 0 ++ } ++ ++ pub fn WEXITSTATUS(status: ::c_int) -> ::c_int { ++ (status >> 8) & 0xff ++ } ++ ++ pub fn WCOREDUMP(status: ::c_int) -> bool { ++ (status & 0x80) != 0 ++ } ++ ++ pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { ++ for slot in cpuset.bits.iter_mut() { ++ *slot = 0; ++ } ++ } ++ ++ pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () { ++ let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc ++ let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); ++ cpuset.bits[idx] |= 1 << offset; ++ () ++ } ++ ++ pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () { ++ let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc ++ let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); ++ cpuset.bits[idx] &= !(1 << offset); ++ () ++ } ++ ++ pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool { ++ let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); ++ let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); ++ 0 != (cpuset.bits[idx] & (1 << offset)) ++ } ++ ++ pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { ++ set1.bits == set2.bits ++ } ++} ++ ++extern { ++ pub fn getpwnam_r(name: *const ::c_char, ++ pwd: *mut passwd, ++ buf: *mut ::c_char, ++ buflen: ::size_t, ++ result: *mut *mut passwd) -> ::c_int; ++ pub fn getpwuid_r(uid: ::uid_t, ++ pwd: *mut passwd, ++ buf: *mut ::c_char, ++ buflen: ::size_t, ++ result: *mut *mut passwd) -> ::c_int; ++ pub fn fdatasync(fd: ::c_int) -> ::c_int; ++ pub fn mincore(addr: *mut ::c_void, len: ::size_t, ++ vec: *mut ::c_uchar) -> ::c_int; ++ pub fn clock_getres(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int; ++ pub fn clock_gettime(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int; ++ pub fn clock_nanosleep(clk_id: clockid_t, ++ flags: ::c_int, ++ rqtp: *const ::timespec, ++ rmtp: *mut ::timespec) -> ::c_int; ++ pub fn clock_settime(clk_id: clockid_t, tp: *const ::timespec) -> ::c_int; ++ pub fn prctl(option: ::c_int, ...) -> ::c_int; ++ pub fn pthread_getattr_np(native: ::pthread_t, ++ attr: *mut ::pthread_attr_t) -> ::c_int; ++ pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t, ++ guardsize: *mut ::size_t) -> ::c_int; ++ pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t, ++ stackaddr: *mut *mut ::c_void, ++ stacksize: *mut ::size_t) -> ::c_int; ++ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; ++ pub fn setgroups(ngroups: ::size_t, ++ ptr: *const ::gid_t) -> ::c_int; ++ pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int; ++ pub fn sched_setscheduler(pid: ::pid_t, ++ policy: ::c_int, ++ param: *const sched_param) -> ::c_int; ++ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int; ++ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int; ++ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; ++ pub fn epoll_create(size: ::c_int) -> ::c_int; ++ pub fn epoll_create1(flags: ::c_int) -> ::c_int; ++ pub fn epoll_ctl(epfd: ::c_int, ++ op: ::c_int, ++ fd: ::c_int, ++ event: *mut epoll_event) -> ::c_int; ++ pub fn epoll_wait(epfd: ::c_int, ++ events: *mut epoll_event, ++ maxevents: ::c_int, ++ timeout: ::c_int) -> ::c_int; ++ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int; ++ pub fn mount(src: *const ::c_char, ++ target: *const ::c_char, ++ fstype: *const ::c_char, ++ flags: ::c_ulong, ++ data: *const ::c_void) -> ::c_int; ++ pub fn umount(target: *const ::c_char) -> ::c_int; ++ pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int; ++ pub fn clone(cb: extern fn(*mut ::c_void) -> ::c_int, ++ child_stack: *mut ::c_void, ++ flags: ::c_int, ++ arg: *mut ::c_void, ...) -> ::c_int; ++ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int; ++ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int; ++ pub fn memrchr(cx: *const ::c_void, ++ c: ::c_int, ++ n: ::size_t) -> *mut ::c_void; ++ pub fn syscall(num: ::c_long, ...) -> ::c_long; ++ pub fn sendfile(out_fd: ::c_int, ++ in_fd: ::c_int, ++ offset: *mut off_t, ++ count: ::size_t) -> ::ssize_t; ++ pub fn splice(fd_in: ::c_int, ++ off_in: *mut ::loff_t, ++ fd_out: ::c_int, ++ off_out: *mut ::loff_t, ++ len: ::size_t, ++ flags: ::c_uint) -> ::ssize_t; ++ pub fn tee(fd_in: ::c_int, ++ fd_out: ::c_int, ++ len: ::size_t, ++ flags: ::c_uint) -> ::ssize_t; ++ pub fn vmsplice(fd: ::c_int, ++ iov: *const ::iovec, ++ nr_segs: ::size_t, ++ flags: ::c_uint) -> ::ssize_t; ++ ++ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, ++ advise: ::c_int) -> ::c_int; ++ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int; ++ pub fn utimensat(dirfd: ::c_int, path: *const ::c_char, ++ times: *const ::timespec, flag: ::c_int) -> ::c_int; ++ pub fn duplocale(base: ::locale_t) -> ::locale_t; ++ pub fn freelocale(loc: ::locale_t); ++ pub fn newlocale(mask: ::c_int, ++ locale: *const ::c_char, ++ base: ::locale_t) -> ::locale_t; ++ pub fn uselocale(loc: ::locale_t) -> ::locale_t; ++ pub fn creat64(path: *const c_char, mode: mode_t) -> ::c_int; ++ pub fn fstat64(fildes: ::c_int, buf: *mut stat64) -> ::c_int; ++ pub fn ftruncate64(fd: ::c_int, length: off64_t) -> ::c_int; ++ pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int; ++ pub fn lseek64(fd: ::c_int, offset: off64_t, whence: ::c_int) -> off64_t; ++ pub fn lstat64(path: *const c_char, buf: *mut stat64) -> ::c_int; ++ pub fn mmap64(addr: *mut ::c_void, ++ len: ::size_t, ++ prot: ::c_int, ++ flags: ::c_int, ++ fd: ::c_int, ++ offset: off64_t) ++ -> *mut ::c_void; ++ pub fn open64(path: *const c_char, oflag: ::c_int, ...) -> ::c_int; ++ pub fn openat64(fd: ::c_int, ++ path: *const c_char, ++ oflag: ::c_int, ...) -> ::c_int; ++ pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, ++ offset: off64_t) -> ::ssize_t; ++ pub fn pwrite64(fd: ::c_int, buf: *const ::c_void, count: ::size_t, ++ offset: off64_t) -> ::ssize_t; ++ pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64; ++ pub fn readdir64_r(dirp: *mut ::DIR, entry: *mut ::dirent64, ++ result: *mut *mut ::dirent64) -> ::c_int; ++ pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int; ++ pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int; ++ pub fn truncate64(path: *const c_char, length: off64_t) -> ::c_int; ++ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int; ++ ++ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR; ++ ++ pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t, dev: dev_t) -> ::c_int; ++ pub fn ppoll(fds: *mut ::pollfd, ++ nfds: nfds_t, ++ timeout: *const ::timespec, ++ sigmask: *const sigset_t) -> ::c_int; ++ pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, ++ clock_id: *mut clockid_t) -> ::c_int; ++ pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, ++ clock_id: clockid_t) -> ::c_int; ++ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, ++ pshared: *mut ::c_int) -> ::c_int; ++ pub fn sched_getaffinity(pid: ::pid_t, ++ cpusetsize: ::size_t, ++ cpuset: *mut cpu_set_t) -> ::c_int; ++ pub fn sched_setaffinity(pid: ::pid_t, ++ cpusetsize: ::size_t, ++ cpuset: *const cpu_set_t) -> ::c_int; ++ pub fn unshare(flags: ::c_int) -> ::c_int; ++ pub fn sem_timedwait(sem: *mut sem_t, ++ abstime: *const ::timespec) -> ::c_int; ++ pub fn accept4(fd: ::c_int, addr: *mut ::sockaddr, len: *mut ::socklen_t, ++ flg: ::c_int) -> ::c_int; ++ pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, ++ abstime: *const ::timespec) -> ::c_int; ++ pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, ++ pshared: ::c_int) -> ::c_int; ++ pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, ++ pshared: *mut ::c_int) -> ::c_int; ++ pub fn ptsname_r(fd: ::c_int, ++ buf: *mut ::c_char, ++ buflen: ::size_t) -> ::c_int; ++ pub fn clearenv() -> ::c_int; ++ pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, ++ options: ::c_int) -> ::c_int; ++ ++ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; ++ ++ pub fn setpwent(); ++ pub fn getpwent() -> *mut passwd; ++ pub fn setspent(); ++ pub fn endspent(); ++ pub fn getspent() -> *mut spwd; ++ pub fn getspnam(__name: *const ::c_char) -> *mut spwd; ++ ++ pub fn shm_open(name: *const c_char, oflag: ::c_int, ++ mode: mode_t) -> ::c_int; ++ ++ // System V IPC ++ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int; ++ pub fn shmat(shmid: ::c_int, ++ shmaddr: *const ::c_void, ++ shmflg: ::c_int) -> *mut ::c_void; ++ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int; ++ pub fn shmctl(shmid: ::c_int, ++ cmd: ::c_int, ++ buf: *mut ::shmid_ds) -> ::c_int; ++ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t; ++ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int; ++ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int; ++ pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t, ++ msgtyp: ::c_long, msgflg: ::c_int) -> ::ssize_t; ++ pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t, ++ msgflg: ::c_int) -> ::c_int; ++ ++ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) ++ -> ::c_int; ++ pub fn __errno_location() -> *mut ::c_int; ++ ++ pub fn fopen64(filename: *const c_char, ++ mode: *const c_char) -> *mut ::FILE; ++ pub fn freopen64(filename: *const c_char, mode: *const c_char, ++ file: *mut ::FILE) -> *mut ::FILE; ++ pub fn tmpfile64() -> *mut ::FILE; ++ pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int; ++ pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int; ++ pub fn fseeko64(stream: *mut ::FILE, ++ offset: ::off64_t, ++ whence: ::c_int) -> ::c_int; ++ pub fn ftello64(stream: *mut ::FILE) -> ::off64_t; ++ pub fn readahead(fd: ::c_int, offset: ::off64_t, ++ count: ::size_t) -> ::ssize_t; ++ pub fn getxattr(path: *const c_char, name: *const c_char, ++ value: *mut ::c_void, size: ::size_t) -> ::ssize_t; ++ pub fn lgetxattr(path: *const c_char, name: *const c_char, ++ value: *mut ::c_void, size: ::size_t) -> ::ssize_t; ++ pub fn fgetxattr(filedes: ::c_int, name: *const c_char, ++ value: *mut ::c_void, size: ::size_t) -> ::ssize_t; ++ pub fn setxattr(path: *const c_char, name: *const c_char, ++ value: *const ::c_void, size: ::size_t, ++ flags: ::c_int) -> ::c_int; ++ pub fn lsetxattr(path: *const c_char, name: *const c_char, ++ value: *const ::c_void, size: ::size_t, ++ flags: ::c_int) -> ::c_int; ++ pub fn fsetxattr(filedes: ::c_int, name: *const c_char, ++ value: *const ::c_void, size: ::size_t, ++ flags: ::c_int) -> ::c_int; ++ pub fn listxattr(path: *const c_char, list: *mut c_char, ++ size: ::size_t) -> ::ssize_t; ++ pub fn llistxattr(path: *const c_char, list: *mut c_char, ++ size: ::size_t) -> ::ssize_t; ++ pub fn flistxattr(filedes: ::c_int, list: *mut c_char, ++ size: ::size_t) -> ::ssize_t; ++ pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int; ++ pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int; ++ pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int; ++ pub fn signalfd(fd: ::c_int, ++ mask: *const ::sigset_t, ++ flags: ::c_int) -> ::c_int; ++ pub fn quotactl(cmd: ::c_int, ++ special: *const ::c_char, ++ id: ::c_int, ++ data: *mut ::c_char) -> ::c_int; ++ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t; ++ pub fn mq_close(mqd: ::mqd_t) -> ::c_int; ++ pub fn mq_unlink(name: *const ::c_char) -> ::c_int; ++ pub fn mq_receive(mqd: ::mqd_t, ++ msg_ptr: *mut ::c_char, ++ msg_len: ::size_t, ++ msq_prio: *mut ::c_uint) -> ::ssize_t; ++ pub fn mq_send(mqd: ::mqd_t, ++ msg_ptr: *const ::c_char, ++ msg_len: ::size_t, ++ msq_prio: ::c_uint) -> ::c_int; ++ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int; ++ pub fn mq_setattr(mqd: ::mqd_t, ++ newattr: *const ::mq_attr, ++ oldattr: *mut ::mq_attr) -> ::c_int; ++ pub fn epoll_pwait(epfd: ::c_int, ++ events: *mut ::epoll_event, ++ maxevents: ::c_int, ++ timeout: ::c_int, ++ sigmask: *const ::sigset_t) -> ::c_int; ++ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; ++ pub fn sigtimedwait(set: *const sigset_t, ++ info: *mut siginfo_t, ++ timeout: *const ::timespec) -> ::c_int; ++ pub fn sigwaitinfo(set: *const sigset_t, ++ info: *mut siginfo_t) -> ::c_int; ++ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; ++ pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit, ++ old_limit: *mut ::rlimit) -> ::c_int; ++ pub fn prlimit64(pid: ::pid_t, ++ resource: ::c_int, ++ new_limit: *const ::rlimit64, ++ old_limit: *mut ::rlimit64) -> ::c_int; ++ pub fn reboot(how_to: ::c_int) -> ::c_int; ++ pub fn setfsgid(gid: ::gid_t) -> ::c_int; ++ pub fn setfsuid(uid: ::uid_t) -> ::c_int; ++ pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int; ++ pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int; ++ ++ // Not available now on Android ++ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, ++ mode: ::mode_t) -> ::c_int; ++ pub fn if_nameindex() -> *mut if_nameindex; ++ pub fn if_freenameindex(ptr: *mut if_nameindex); ++ pub fn sync_file_range(fd: ::c_int, offset: ::off64_t, ++ nbytes: ::off64_t, flags: ::c_uint) -> ::c_int; ++ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; ++ pub fn freeifaddrs(ifa: *mut ::ifaddrs); ++ ++ pub fn mremap(addr: *mut ::c_void, ++ len: ::size_t, ++ new_len: ::size_t, ++ flags: ::c_int, ++ ...) -> *mut ::c_void; ++ ++ pub fn glob(pattern: *const c_char, ++ flags: ::c_int, ++ errfunc: Option<extern fn(epath: *const c_char, ++ errno: ::c_int) -> ::c_int>, ++ pglob: *mut ::glob_t) -> ::c_int; ++ pub fn globfree(pglob: *mut ::glob_t); ++ ++ pub fn shm_unlink(name: *const ::c_char) -> ::c_int; ++ ++ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); ++ ++ pub fn telldir(dirp: *mut ::DIR) -> ::c_long; ++ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) ++ -> ::c_int; ++ ++ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; ++ ++ pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, ++ flags: ::c_int, addr: *mut ::sockaddr, ++ addrlen: *mut ::socklen_t) -> ::ssize_t; ++ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; ++ ++ pub fn bind(socket: ::c_int, address: *const ::sockaddr, ++ address_len: ::socklen_t) -> ::c_int; ++ ++ pub fn writev(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ pub fn readv(fd: ::c_int, ++ iov: *const ::iovec, ++ iovcnt: ::c_int) -> ::ssize_t; ++ ++ pub fn sendmsg(fd: ::c_int, ++ msg: *const ::msghdr, ++ flags: ::c_int) -> ::ssize_t; ++ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) ++ -> ::ssize_t; ++} ++ ++cfg_if! { ++ if #[cfg(target_arch = "mips")] { ++ mod mips; ++ pub use self::mips::*; ++ } else if #[cfg(target_arch = "x86_64")] { ++ mod x86_64; ++ pub use self::x86_64::*; ++ } else { ++ pub use unsupported_target; ++ } ++} ++ +diff --git third_party/rust/libc/src/unix/uclibc/x86_64/mod.rs third_party/rust/libc/src/unix/uclibc/x86_64/mod.rs +new file mode 100644 +index 000000000000..27222013479c +--- /dev/null ++++ third_party/rust/libc/src/unix/uclibc/x86_64/mod.rs +@@ -0,0 +1,312 @@ ++//! Definitions for l4re-uclibc on 64bit systems ++ ++pub type blkcnt_t = i64; ++pub type blksize_t = i64; ++pub type c_char = u8; ++pub type c_long = i64; ++pub type c_ulong = u64; ++pub type fsblkcnt_t = ::c_ulong; ++pub type fsfilcnt_t = ::c_ulong; ++pub type fsword_t = ::c_long; ++pub type ino_t = ::c_ulong; ++pub type nlink_t = ::c_uint; ++pub type off_t = ::c_long; ++pub type rlim_t = c_ulong; ++pub type rlim64_t = u64; ++pub type suseconds_t = ::c_long; ++pub type time_t = ::c_int; ++pub type wchar_t = ::c_int; ++ ++// ToDo, used? ++//pub type d_ino = ::c_ulong; ++pub type nfds_t = ::c_ulong; ++ ++s! { ++ // ------------------------------------------------------------ ++ // networking ++ pub struct in_addr { ++ pub s_addr: in_addr_t, ++ } ++ ++ pub struct in6_addr { ++ pub s6_addr: [u8; 16], ++ __align: [u32; 0], ++ } ++ ++ pub struct sockaddr { ++ pub sa_family: sa_family_t, ++ pub sa_data: [::c_char; 14], ++ } ++ ++ pub struct sockaddr_in { ++ pub sin_family: sa_family_t, ++ pub sin_port: ::in_port_t, ++ pub sin_addr: ::in_addr, ++ pub sin_zero: [u8; 8], ++ } ++ ++ pub struct sockaddr_in6 { ++ pub sin6_family: sa_family_t, ++ pub sin6_port: in_port_t, ++ pub sin6_flowinfo: u32, ++ pub sin6_addr: ::in6_addr, ++ pub sin6_scope_id: u32, ++ } ++ ++ // ------------------------------------------------------------ ++ // definitions below are *unverified* and might **break** the software ++ pub struct stat { // ToDo ++ pub st_dev: ::c_ulong, ++ st_pad1: [::c_long; 2], ++ pub st_ino: ::ino_t, ++ pub st_mode: ::mode_t, ++ pub st_nlink: ::nlink_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: u64, ++ pub st_pad2: [u64; 1], ++ pub st_size: off_t, ++ st_pad3: ::c_long, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ pub st_blksize: ::blksize_t, ++ st_pad4: ::c_long, ++ pub st_blocks: ::blkcnt_t, ++ st_pad5: [::c_long; 7], ++ } ++ ++ pub struct statvfs { // ToDo: broken ++ pub f_bsize: ::c_ulong, ++ pub f_frsize: ::c_ulong, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_files: ::fsfilcnt_t, ++ pub f_ffree: ::fsfilcnt_t, ++ pub f_favail: ::fsfilcnt_t, ++ #[cfg(target_endian = "little")] ++ pub f_fsid: ::c_ulong, ++ #[cfg(target_pointer_width = "32")] ++ __f_unused: ::c_int, ++ #[cfg(target_endian = "big")] ++ pub f_fsid: ::c_ulong, ++ pub f_flag: ::c_ulong, ++ pub f_namemax: ::c_ulong, ++ __f_spare: [::c_int; 6], ++ } ++ ++ pub struct dirent { // Todo ++ pub d_ino: ino_64_t, ++ pub d_off: off64_t, ++ d_reclen: u16, ++ pub d_type: u8, ++ pub d_name: [i8; 256], ++ } ++ ++ pub struct dirent64 { // ++ pub d_ino: ino64_t, ++ pub d_off: off64_t, ++ pub d_reclen: u16, ++ pub d_type: u8, ++ pub d_name: [i8; 256], ++ } ++ ++ pub struct pthread_attr_t { // ToDo ++ __size: [u64; 7] ++ } ++ ++ pub struct sigaction { // TODO!! ++ pub sa_sigaction: ::sighandler_t, ++ pub sa_mask: ::sigset_t, ++ #[cfg(target_arch = "sparc64")] ++ __reserved0: ::c_int, ++ pub sa_flags: ::c_int, ++ _restorer: *mut ::c_void, ++ } ++ ++ pub struct stack_t { // ToDo ++ pub ss_sp: *mut ::c_void, ++ pub ss_flags: ::c_int, ++ pub ss_size: ::size_t ++ } ++ ++ pub struct statfs { // ToDo ++ pub f_type: fsword_t, ++ pub f_bsize: fsword_t, ++ pub f_blocks: ::fsblkcnt_t, ++ pub f_bfree: ::fsblkcnt_t, ++ pub f_bavail: ::fsblkcnt_t, ++ pub f_files: ::fsfilcnt_t, ++ pub f_ffree: ::fsfilcnt_t, ++ pub f_fsid: ::fsid_t, ++ pub f_namelen: fsword_t, ++ pub f_frsize: fsword_t, ++ f_spare: [fsword_t; 5], ++ } ++ ++ pub struct msghdr { // ToDo ++ pub msg_name: *mut ::c_void, ++ pub msg_namelen: ::socklen_t, ++ pub msg_iov: *mut ::iovec, ++ pub msg_iovlen: ::size_t, ++ pub msg_control: *mut ::c_void, ++ pub msg_controllen: ::size_t, ++ pub msg_flags: ::c_int, ++ } ++ ++ pub struct termios { // ToDo ++ pub c_iflag: ::tcflag_t, ++ pub c_oflag: ::tcflag_t, ++ pub c_cflag: ::tcflag_t, ++ pub c_lflag: ::tcflag_t, ++ pub c_line: ::cc_t, ++ pub c_cc: [::cc_t; ::NCCS], ++ } ++ ++ pub struct sem_t { // ToDo ++ #[cfg(target_pointer_width = "32")] ++ __size: [::c_char; 16], ++ #[cfg(target_pointer_width = "64")] ++ __size: [::c_char; 32], ++ __align: [::c_long; 0], ++ } ++ ++ pub struct pthread_mutex_t { // ToDo ++ #[cfg(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc"))] ++ __align: [::c_long; 0], ++ #[cfg(not(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc")))] ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_MUTEX_T], ++ } ++ ++ pub struct pthread_mutexattr_t { // ToDo ++ #[cfg(any(target_arch = "x86_64", target_arch = "powerpc64", ++ target_arch = "mips64", target_arch = "s390x", ++ target_arch = "sparc64"))] ++ __align: [::c_int; 0], ++ #[cfg(not(any(target_arch = "x86_64", target_arch = "powerpc64", ++ target_arch = "mips64", target_arch = "s390x", ++ target_arch = "sparc64")))] ++ __align: [::c_long; 0], ++ size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T], ++ } ++ ++ pub struct pthread_cond_t { // ToDo ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_COND_T], ++ } ++ ++ pub struct pthread_condattr_t { // ToDo ++ __align: [::c_int; 0], ++ size: [u8; __SIZEOF_PTHREAD_CONDATTR_T], ++ } ++ ++ pub struct pthread_rwlock_t { // ToDo ++ #[cfg(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc"))] ++ __align: [::c_long; 0], ++ #[cfg(not(any(target_arch = "mips", target_arch = "arm", ++ target_arch = "powerpc")))] ++ __align: [::c_longlong; 0], ++ size: [u8; __SIZEOF_PTHREAD_RWLOCK_T], ++ } ++ ++ pub struct sigset_t { // ToDo ++ __val: [::c_ulong; 16], ++ } ++ ++ pub struct sysinfo { // ToDo ++ pub uptime: ::c_long, ++ pub loads: [::c_ulong; 3], ++ pub totalram: ::c_ulong, ++ pub freeram: ::c_ulong, ++ pub sharedram: ::c_ulong, ++ pub bufferram: ::c_ulong, ++ pub totalswap: ::c_ulong, ++ pub freeswap: ::c_ulong, ++ pub procs: ::c_ushort, ++ pub pad: ::c_ushort, ++ pub totalhigh: ::c_ulong, ++ pub freehigh: ::c_ulong, ++ pub mem_unit: ::c_uint, ++ pub _f: [::c_char; 0], ++ } ++ ++ pub struct glob_t { // ToDo ++ pub gl_pathc: ::size_t, ++ pub gl_pathv: *mut *mut c_char, ++ pub gl_offs: ::size_t, ++ pub gl_flags: ::c_int, ++ __unused1: *mut ::c_void, ++ __unused2: *mut ::c_void, ++ __unused3: *mut ::c_void, ++ __unused4: *mut ::c_void, ++ __unused5: *mut ::c_void, ++ } ++ ++ pub struct stat64 { // ToDo ++ pub st_dev: ::dev_t, ++ pub st_ino: ::ino64_t, ++ pub st_nlink: ::nlink_t, ++ pub st_mode: ::mode_t, ++ pub st_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ __pad0: ::c_int, ++ pub st_rdev: ::dev_t, ++ pub st_size: ::off_t, ++ pub st_blksize: ::blksize_t, ++ pub st_blocks: ::blkcnt64_t, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_nsec: ::c_long, ++ __reserved: [::c_long; 3], ++ } ++ ++ pub struct rlimit64 { // ToDo ++ pub rlim_cur: rlim64_t, ++ pub rlim_max: rlim64_t, ++ } ++ ++ pub struct cpu_set_t { // ToDo ++ #[cfg(target_pointer_width = "32")] ++ bits: [u32; 32], ++ #[cfg(target_pointer_width = "64")] ++ bits: [u64; 16], ++ } ++ ++ pub struct timespec { // ToDo ++ tv_sec: time_t, // seconds ++ tv_nsec: ::c_ulong, // nanoseconds ++ } ++ ++ pub struct fsid_t { // ToDo ++ __val: [::c_int; 2], ++ } ++} ++ ++// constants ++pub const O_CLOEXEC: ::c_int = 0x80000; ++pub const O_DIRECTORY: ::c_int = 0200000; ++pub const NCCS: usize = 32; ++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40; ++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; ++pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0; ++pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1; ++pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2; ++pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL; ++pub const __SIZEOF_PTHREAD_COND_T: usize = 48; ++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; ++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56; ++ ++extern { ++ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; ++} +diff --git toolkit/library/gtest/rust/Cargo.lock toolkit/library/gtest/rust/Cargo.lock +index 2561f3856303..ab148dfb5e13 100644 +--- toolkit/library/gtest/rust/Cargo.lock ++++ toolkit/library/gtest/rust/Cargo.lock +@@ -121,7 +121,7 @@ version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "gleam 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -132,7 +132,7 @@ dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -143,7 +143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "term_size 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-segmentation 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -157,7 +157,7 @@ version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -165,7 +165,7 @@ name = "core-foundation-sys" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -174,7 +174,7 @@ version = "0.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -185,7 +185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -318,7 +318,7 @@ name = "freetype" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -348,7 +348,7 @@ dependencies = [ + "env_logger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -443,7 +443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] + name = "libc" +-version = "0.2.20" ++version = "0.2.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] +@@ -472,7 +472,7 @@ name = "memchr" + version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -543,7 +543,7 @@ name = "num_cpus" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -605,7 +605,7 @@ version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -690,7 +690,7 @@ name = "rand" + version = "0.3.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -699,7 +699,7 @@ version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -730,7 +730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + name = "rust_url_capi" + version = "0.0.1" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "nsstring 0.1.0", + "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -803,7 +803,7 @@ dependencies = [ + "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_codegen 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -858,7 +858,7 @@ version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -963,7 +963,7 @@ name = "syntex_errors" + version = "0.54.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_pos 0.54.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -985,7 +985,7 @@ version = "0.54.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.54.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -1019,7 +1019,7 @@ version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -1029,7 +1029,7 @@ version = "3.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -1057,7 +1057,7 @@ version = "0.1.36" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -1223,7 +1223,7 @@ name = "x11" + version = "2.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "metadeps 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -1290,7 +1290,7 @@ dependencies = [ + "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" + "checksum khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "09c9d3760673c427d46f91a0350f0a84a52e6bc5a84adf26dc610b6c52436630" + "checksum lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6abe0ee2e758cd6bc8a2cd56726359007748fbf4128da998b65d0b70f881e19b" +-"checksum libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5" ++"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc" + "checksum libloading 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fd1835a714c1f67ba073a493493c23686a480e2614e208c921834808b1f19d8f" + "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" + "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" +diff --git toolkit/library/rust/Cargo.lock toolkit/library/rust/Cargo.lock +index d69359a9a640..99443b59f1af 100644 +--- toolkit/library/rust/Cargo.lock ++++ toolkit/library/rust/Cargo.lock +@@ -119,7 +119,7 @@ version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "gleam 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -130,7 +130,7 @@ dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -141,7 +141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "term_size 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-segmentation 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -155,7 +155,7 @@ version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -163,7 +163,7 @@ name = "core-foundation-sys" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -172,7 +172,7 @@ version = "0.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -183,7 +183,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -316,7 +316,7 @@ name = "freetype" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -346,7 +346,7 @@ dependencies = [ + "env_logger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -441,7 +441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] + name = "libc" +-version = "0.2.20" ++version = "0.2.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + + [[package]] +@@ -470,7 +470,7 @@ name = "memchr" + version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -530,7 +530,7 @@ name = "num_cpus" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -592,7 +592,7 @@ version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -677,7 +677,7 @@ name = "rand" + version = "0.3.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -686,7 +686,7 @@ version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -717,7 +717,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + name = "rust_url_capi" + version = "0.0.1" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "nsstring 0.1.0", + "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -790,7 +790,7 @@ dependencies = [ + "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_codegen 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -845,7 +845,7 @@ version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -950,7 +950,7 @@ name = "syntex_errors" + version = "0.54.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_pos 0.54.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -972,7 +972,7 @@ version = "0.54.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.54.0 (registry+https://github.com/rust-lang/crates.io-index)", +@@ -1006,7 +1006,7 @@ version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -1016,7 +1016,7 @@ version = "3.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + ] + + [[package]] +@@ -1044,7 +1044,7 @@ version = "0.1.36" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + ] +@@ -1210,7 +1210,7 @@ name = "x11" + version = "2.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + dependencies = [ +- "libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", ++ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", + "metadeps 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + ] + +@@ -1277,7 +1277,7 @@ dependencies = [ + "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" + "checksum khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "09c9d3760673c427d46f91a0350f0a84a52e6bc5a84adf26dc610b6c52436630" + "checksum lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6abe0ee2e758cd6bc8a2cd56726359007748fbf4128da998b65d0b70f881e19b" +-"checksum libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5" ++"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc" + "checksum libloading 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fd1835a714c1f67ba073a493493c23686a480e2614e208c921834808b1f19d8f" + "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" + "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" |