summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/Uses/gecko.mk4
-rw-r--r--www/firefox-i18n/Makefile6
-rw-r--r--www/firefox-i18n/Makefile.lang5
-rw-r--r--www/firefox-i18n/Makefile.option1
-rw-r--r--www/firefox-i18n/distinfo380
-rw-r--r--www/firefox/Makefile14
-rw-r--r--www/firefox/distinfo6
-rw-r--r--www/firefox/files/patch-bug102176140
-rw-r--r--www/firefox/files/patch-bug1312182376
-rw-r--r--www/firefox/files/patch-bug1356709170
-rw-r--r--www/firefox/files/patch-bug135787443
-rw-r--r--www/firefox/files/patch-bug136032149
-rw-r--r--www/firefox/files/patch-bug13764119687
-rw-r--r--www/firefox/files/patch-bug138559724
-rw-r--r--www/firefox/files/patch-bug70217917
-rw-r--r--www/firefox/files/patch-bug82698512
-rw-r--r--www/firefox/files/patch-bug8475682
-rw-r--r--www/firefox/files/patch-bug98134861
-rw-r--r--www/firefox/files/patch-rust-option569
-rw-r--r--www/firefox/files/patch-third__party_python_futures_concurrent_futures_process.py (renamed from www/firefox/files/patch-python_futures_concurrent_futures_process.py)4
20 files changed, 1160 insertions, 10310 deletions
diff --git a/Mk/Uses/gecko.mk b/Mk/Uses/gecko.mk
index 8ce100dc6937..691bd5aaa827 100644
--- a/Mk/Uses/gecko.mk
+++ b/Mk/Uses/gecko.mk
@@ -37,12 +37,12 @@ RUN_DEPENDS+= libxul>=45:www/libxul
.elif ${gecko_ARGS:Mfirefox}
_GECKO_DEFAULT_VERSION= 52
-_GECKO_VERSIONS= 52 54
+_GECKO_VERSIONS= 52 55
_GECKO_TYPE= firefox
# Dependence lines for different Firefox versions
52_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr
-54_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox
+55_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox
.if exists(${LOCALBASE}/bin/firefox)
_GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null
diff --git a/www/firefox-i18n/Makefile b/www/firefox-i18n/Makefile
index e9036082b6fa..df50f13511f8 100644
--- a/www/firefox-i18n/Makefile
+++ b/www/firefox-i18n/Makefile
@@ -2,10 +2,10 @@
# $FreeBSD$
PORTNAME= firefox-i18n
-PORTVERSION= 54.0.1
+PORTVERSION= 55.0
CATEGORIES= www
MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \
- MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi
+ MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build3/linux-i686/xpi
PKGNAMEPREFIX=
DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/}
DIST_SUBDIR= xpi/${DISTNAME}
@@ -15,7 +15,7 @@ COMMENT= Localized interface for Firefox
EXTRACT_DEPENDS= zip:archivers/zip
-USES= zip:infozip gecko:firefox,54,build
+USES= zip:infozip gecko:firefox,55,build
USE_XPI= firefox
NO_ARCH= yes
diff --git a/www/firefox-i18n/Makefile.lang b/www/firefox-i18n/Makefile.lang
index dd9c4962df11..20d45f4ce03e 100644
--- a/www/firefox-i18n/Makefile.lang
+++ b/www/firefox-i18n/Makefile.lang
@@ -1,7 +1,7 @@
# Created by: Koji Yokota <yokota@res.otaru-uc.ac.jp>
# $FreeBSD$
-FIREFOX_I18N_ALL_= ach af an ar as ast az bg bn-BD bn-IN br bs ca cak \
+FIREFOX_I18N_ALL_= ach af an ar as ast az be bg bn-BD bn-IN br bs ca cak \
cs cy da de dsb el en-GB en-US en-ZA eo es-AR es-CL \
es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn \
gu-IN he hi-IN hr hsb hu hy-AM id is it ja ka kab \
@@ -33,6 +33,9 @@ FIREFOX_I18N+= ast
.if ${PORT_OPTIONS:MLANG_AZ}
FIREFOX_I18N+= az
.endif
+.if ${PORT_OPTIONS:MLANG_BE}
+FIREFOX_I18N+= be
+.endif
.if ${PORT_OPTIONS:MLANG_BG}
FIREFOX_I18N+= bg
.endif
diff --git a/www/firefox-i18n/Makefile.option b/www/firefox-i18n/Makefile.option
index 16f86ebc6c3e..bc2035278e9d 100644
--- a/www/firefox-i18n/Makefile.option
+++ b/www/firefox-i18n/Makefile.option
@@ -9,6 +9,7 @@ OPTIONS_DEFINE= LANG_ACH \
LANG_AS \
LANG_AST \
LANG_AZ \
+ LANG_BE \
LANG_BG \
LANG_BB \
LANG_BN \
diff --git a/www/firefox-i18n/distinfo b/www/firefox-i18n/distinfo
index ac77e1448b28..ca68f965dd8b 100644
--- a/www/firefox-i18n/distinfo
+++ b/www/firefox-i18n/distinfo
@@ -1,189 +1,191 @@
-TIMESTAMP = 1498670356
-SHA256 (xpi/firefox-i18n-54.0.1/ach.xpi) = 2ac6571fee99dbb0886e6b4d75d9ed9b793b5a2551413d0969c4b443e797b9a8
-SIZE (xpi/firefox-i18n-54.0.1/ach.xpi) = 426785
-SHA256 (xpi/firefox-i18n-54.0.1/af.xpi) = 86e4a12e511e7a88b7eb762b0755984e72b8774c77398481609237e9ca44b4a5
-SIZE (xpi/firefox-i18n-54.0.1/af.xpi) = 436585
-SHA256 (xpi/firefox-i18n-54.0.1/an.xpi) = a925947a8d77450357b2e85454c8b02b71f2553a6abc373d6ef865a098acef6a
-SIZE (xpi/firefox-i18n-54.0.1/an.xpi) = 445344
-SHA256 (xpi/firefox-i18n-54.0.1/ar.xpi) = 8e7d0af2143a5df4f93fb70d0e240180b897320234d9e0f17274f996c9e7ca29
-SIZE (xpi/firefox-i18n-54.0.1/ar.xpi) = 473124
-SHA256 (xpi/firefox-i18n-54.0.1/as.xpi) = 3f4f218ce4da291d008630f20b29d032182f8c5356c387be81a55616881585d3
-SIZE (xpi/firefox-i18n-54.0.1/as.xpi) = 484171
-SHA256 (xpi/firefox-i18n-54.0.1/ast.xpi) = b215e69042c029156b8e787c03f9504beb5e056ea71f0e8e6eb706205f8eee1f
-SIZE (xpi/firefox-i18n-54.0.1/ast.xpi) = 440269
-SHA256 (xpi/firefox-i18n-54.0.1/az.xpi) = a092eb7b69b97e44a375ac1244a8f1bfc48acfd7d99051350803632273164e68
-SIZE (xpi/firefox-i18n-54.0.1/az.xpi) = 454243
-SHA256 (xpi/firefox-i18n-54.0.1/bg.xpi) = 2d12828369f44e8c805e2825946cec5ef040585a92b35c89ff17aceac8a0a83d
-SIZE (xpi/firefox-i18n-54.0.1/bg.xpi) = 485835
-SHA256 (xpi/firefox-i18n-54.0.1/bn-BD.xpi) = ab3a823e662776edf0aeaf9c4535f451ebe4e8ad5811023377ca88eebef56306
-SIZE (xpi/firefox-i18n-54.0.1/bn-BD.xpi) = 508867
-SHA256 (xpi/firefox-i18n-54.0.1/bn-IN.xpi) = 0acff03ac54f2a4609c626d4e5b461c0abacb8b24d6df4dc1b3f2cffc6baffa7
-SIZE (xpi/firefox-i18n-54.0.1/bn-IN.xpi) = 506168
-SHA256 (xpi/firefox-i18n-54.0.1/br.xpi) = e164f7ba23ce3fac8240f9f3cb3b44dd0555c558550d0f9fc98cbfa5eb05de8d
-SIZE (xpi/firefox-i18n-54.0.1/br.xpi) = 434372
-SHA256 (xpi/firefox-i18n-54.0.1/bs.xpi) = 7b74a68b66b6763922cfa08ed8c2dab8dad64fe4b8cd8e51f3b023c635d0dddc
-SIZE (xpi/firefox-i18n-54.0.1/bs.xpi) = 441131
-SHA256 (xpi/firefox-i18n-54.0.1/ca.xpi) = 104ae2cc9b629669005648e5fb2e7cad06965eb700c6246bacc8874c48180b82
-SIZE (xpi/firefox-i18n-54.0.1/ca.xpi) = 443027
-SHA256 (xpi/firefox-i18n-54.0.1/cak.xpi) = aced374c69e3cd85800b685bd1003b290b58f0a37c870e42badce50c740a0a36
-SIZE (xpi/firefox-i18n-54.0.1/cak.xpi) = 458232
-SHA256 (xpi/firefox-i18n-54.0.1/cs.xpi) = 937ab90c522119406605eb0051f81dbe0a0c716826cf222cee532bbaeeb049ac
-SIZE (xpi/firefox-i18n-54.0.1/cs.xpi) = 443929
-SHA256 (xpi/firefox-i18n-54.0.1/cy.xpi) = 6a095bdbe2c274da1772c87914aad3ca4a788f6f3a0d3a10d9432cfdf646a6a3
-SIZE (xpi/firefox-i18n-54.0.1/cy.xpi) = 436310
-SHA256 (xpi/firefox-i18n-54.0.1/da.xpi) = 1a0d5e22c79b0f558031b14edc8aa8a4dd1ce0a5c418549c68c8223c5ab7a7f9
-SIZE (xpi/firefox-i18n-54.0.1/da.xpi) = 423766
-SHA256 (xpi/firefox-i18n-54.0.1/de.xpi) = 1bc9004a9aa4f41245c610ab0c239496cd649157e8ad7bbb89feb83585889b60
-SIZE (xpi/firefox-i18n-54.0.1/de.xpi) = 442814
-SHA256 (xpi/firefox-i18n-54.0.1/dsb.xpi) = 0946b957ff6765bd30171477394ed5e0345cc3c6dadf1fee07b85a57d789515d
-SIZE (xpi/firefox-i18n-54.0.1/dsb.xpi) = 458691
-SHA256 (xpi/firefox-i18n-54.0.1/el.xpi) = 60f7e95db941c2c2b9bdbbb7b4c601badd2cc92f59c716e3ea82294fb7078e63
-SIZE (xpi/firefox-i18n-54.0.1/el.xpi) = 511228
-SHA256 (xpi/firefox-i18n-54.0.1/en-GB.xpi) = 50b09222acad38c4d2a878850905b55cd399f5923fa9aa2b2fa118a48560883e
-SIZE (xpi/firefox-i18n-54.0.1/en-GB.xpi) = 419545
-SHA256 (xpi/firefox-i18n-54.0.1/en-US.xpi) = 14e0d08ce9fd79cd1b9ade2c19d92b255b758384c7e7e608d573beed36f639a3
-SIZE (xpi/firefox-i18n-54.0.1/en-US.xpi) = 425757
-SHA256 (xpi/firefox-i18n-54.0.1/en-ZA.xpi) = 1fcea8c4bd696913c4d93fdd8dc3569707de035e6b5ed4808892e85a8945b58f
-SIZE (xpi/firefox-i18n-54.0.1/en-ZA.xpi) = 413431
-SHA256 (xpi/firefox-i18n-54.0.1/eo.xpi) = d32c2f771aea465c62c4b9d782fccc1d22969be3ea827027d7acdb592ee66e19
-SIZE (xpi/firefox-i18n-54.0.1/eo.xpi) = 437027
-SHA256 (xpi/firefox-i18n-54.0.1/es-AR.xpi) = c1b6a6ffdf9f74d653f72cf3157b820b95eddf26fabc72be3d2bae84457f5d78
-SIZE (xpi/firefox-i18n-54.0.1/es-AR.xpi) = 445558
-SHA256 (xpi/firefox-i18n-54.0.1/es-CL.xpi) = 222dd573b6f877926bee2d58963366b670a4d5176c839663073da1bb6ff51eb5
-SIZE (xpi/firefox-i18n-54.0.1/es-CL.xpi) = 445585
-SHA256 (xpi/firefox-i18n-54.0.1/es-ES.xpi) = 494983532ee064521a37d90cbfbef46d0fab37fe82d4d72b3ade3c539db3585b
-SIZE (xpi/firefox-i18n-54.0.1/es-ES.xpi) = 341281
-SHA256 (xpi/firefox-i18n-54.0.1/es-MX.xpi) = 3a74d108671f717c3bb5954298eb396c861aa902cf7c426cc2cc02ecc15f6dbf
-SIZE (xpi/firefox-i18n-54.0.1/es-MX.xpi) = 447976
-SHA256 (xpi/firefox-i18n-54.0.1/et.xpi) = 4a926107e99dd4bd6a8b6089f08fc53a33f5fb7d55dab8197121558bfc8df1d8
-SIZE (xpi/firefox-i18n-54.0.1/et.xpi) = 423855
-SHA256 (xpi/firefox-i18n-54.0.1/eu.xpi) = 17fc4a655d72a25ed1acc41276fcdd22f5c3662c87b61bca48195345d45f5a3a
-SIZE (xpi/firefox-i18n-54.0.1/eu.xpi) = 438025
-SHA256 (xpi/firefox-i18n-54.0.1/fa.xpi) = 325b3a51f4e5adb0fad02fe050d43d6bfd3b0f6f8bcec24eeccc93df4e2a61da
-SIZE (xpi/firefox-i18n-54.0.1/fa.xpi) = 490360
-SHA256 (xpi/firefox-i18n-54.0.1/ff.xpi) = 7f3616ce409ef5a709321b230541236c0654848b943f7f08e538d8f9606290c5
-SIZE (xpi/firefox-i18n-54.0.1/ff.xpi) = 441539
-SHA256 (xpi/firefox-i18n-54.0.1/fi.xpi) = 1e124737d0d1a51f8edfa2452e39db0da28068fa0a8ba1de97d8a5a8fceac5d2
-SIZE (xpi/firefox-i18n-54.0.1/fi.xpi) = 428998
-SHA256 (xpi/firefox-i18n-54.0.1/fr.xpi) = a77a3ff17a868e64fa45f3543a43a7a35b7c2a8b63a83a9f3ab25ade74252c81
-SIZE (xpi/firefox-i18n-54.0.1/fr.xpi) = 451596
-SHA256 (xpi/firefox-i18n-54.0.1/fy-NL.xpi) = c604b47608caaef2101a1465efdbd70519ceef08d06a7527934a5b612a0af65c
-SIZE (xpi/firefox-i18n-54.0.1/fy-NL.xpi) = 444473
-SHA256 (xpi/firefox-i18n-54.0.1/ga-IE.xpi) = 78e5c09e43ae6c8f0ce17e16c26a50e64a5ec6c71f942c3c3fd78c3087ea6dd5
-SIZE (xpi/firefox-i18n-54.0.1/ga-IE.xpi) = 457484
-SHA256 (xpi/firefox-i18n-54.0.1/gd.xpi) = 8ee562188ed70c78e997215c4c00d9a1f97360dcee5ea430cf6830405c69d40f
-SIZE (xpi/firefox-i18n-54.0.1/gd.xpi) = 446084
-SHA256 (xpi/firefox-i18n-54.0.1/gl.xpi) = d1b440764c3a50c5e69369d459e2ec1be1bded24096d6c33fe09af12b74e0b47
-SIZE (xpi/firefox-i18n-54.0.1/gl.xpi) = 443277
-SHA256 (xpi/firefox-i18n-54.0.1/gn.xpi) = 1c43832720ff7355b5edc8d95e112395abc18c810840de5c2b768a1756b9a981
-SIZE (xpi/firefox-i18n-54.0.1/gn.xpi) = 456068
-SHA256 (xpi/firefox-i18n-54.0.1/gu-IN.xpi) = ddcda3eaf8c04d3eccde0a86e3a95642377d9881849599c8150a9751ee129a93
-SIZE (xpi/firefox-i18n-54.0.1/gu-IN.xpi) = 487118
-SHA256 (xpi/firefox-i18n-54.0.1/he.xpi) = 99b4ea64591e975b5207418812e8b178f1d139fec32d1042d86f69563ca182ae
-SIZE (xpi/firefox-i18n-54.0.1/he.xpi) = 454287
-SHA256 (xpi/firefox-i18n-54.0.1/hi-IN.xpi) = 4031a32ad3f54f38aac8748839404e3ac9da1c2c46ecfe80c59ed31d5a2dd3ff
-SIZE (xpi/firefox-i18n-54.0.1/hi-IN.xpi) = 504632
-SHA256 (xpi/firefox-i18n-54.0.1/hr.xpi) = 9e9c3133951e1af4c71aa3f0583102a78420aec89c6b5ba270b5695b554d5578
-SIZE (xpi/firefox-i18n-54.0.1/hr.xpi) = 447780
-SHA256 (xpi/firefox-i18n-54.0.1/hsb.xpi) = 3e1756b6ebd88994d14cd46bd93bb83041f2da4e33df22a21c27fcd158dd70a8
-SIZE (xpi/firefox-i18n-54.0.1/hsb.xpi) = 456528
-SHA256 (xpi/firefox-i18n-54.0.1/hu.xpi) = 5050f78682cf02e180005fa305751bf65dc12b76e1b0d15178d553a1ab8aae25
-SIZE (xpi/firefox-i18n-54.0.1/hu.xpi) = 451123
-SHA256 (xpi/firefox-i18n-54.0.1/hy-AM.xpi) = eef38f7bbaf2f6d3ec282931eeb0032951e44db39469cbf532ae8883c887217f
-SIZE (xpi/firefox-i18n-54.0.1/hy-AM.xpi) = 496020
-SHA256 (xpi/firefox-i18n-54.0.1/id.xpi) = b5c619719efee4a36e2b5008f6ce2cb4251faa9308f59502909933e14836f36f
-SIZE (xpi/firefox-i18n-54.0.1/id.xpi) = 425284
-SHA256 (xpi/firefox-i18n-54.0.1/is.xpi) = d4a28ac291cd5e6649800b1babd39ec3e7dd808da15b608b16ac15e4548cd256
-SIZE (xpi/firefox-i18n-54.0.1/is.xpi) = 441708
-SHA256 (xpi/firefox-i18n-54.0.1/it.xpi) = ccadf76ba443e1ee2ce80db7a895dae99b0a7670736b78eb21cd75788b97e278
-SIZE (xpi/firefox-i18n-54.0.1/it.xpi) = 335501
-SHA256 (xpi/firefox-i18n-54.0.1/ja.xpi) = 820b33c1c4675fe59f8bc73328da8718bddcec6fd3b7ceeb171ff1994322dcb3
-SIZE (xpi/firefox-i18n-54.0.1/ja.xpi) = 486807
-SHA256 (xpi/firefox-i18n-54.0.1/ka.xpi) = 2d596db623a85e87c45fa698e18ad9e66733f29534be8297ef4c52e7288db8a7
-SIZE (xpi/firefox-i18n-54.0.1/ka.xpi) = 473231
-SHA256 (xpi/firefox-i18n-54.0.1/kab.xpi) = a0611e7f5bebefb65a7de1b0b80b921ae01a5448c65c7218eabdd31ee292d7e6
-SIZE (xpi/firefox-i18n-54.0.1/kab.xpi) = 443917
-SHA256 (xpi/firefox-i18n-54.0.1/kk.xpi) = 9f2d4fb392830db601a650ec0a86860a99647150d65f2a3f58d3ca5f86c667bf
-SIZE (xpi/firefox-i18n-54.0.1/kk.xpi) = 493048
-SHA256 (xpi/firefox-i18n-54.0.1/km.xpi) = 9ba58f2ad59b02905f39ab52e10c967555f4e9d4efde5832d4fed9d9acbdba06
-SIZE (xpi/firefox-i18n-54.0.1/km.xpi) = 517240
-SHA256 (xpi/firefox-i18n-54.0.1/kn.xpi) = e4ee165edd2accef0b75e7ac373be81bac94be182d9184477cee7ba72a9eefb0
-SIZE (xpi/firefox-i18n-54.0.1/kn.xpi) = 516492
-SHA256 (xpi/firefox-i18n-54.0.1/ko.xpi) = 34258d81a65b8e8d82992c359c2c864208f9cbe775b6d8503bff73639a4f38de
-SIZE (xpi/firefox-i18n-54.0.1/ko.xpi) = 460422
-SHA256 (xpi/firefox-i18n-54.0.1/lij.xpi) = 5175475d43dad7033fc3d5ff29bf2ef4b6b7c7c78aa5772494e9e0b076a83b88
-SIZE (xpi/firefox-i18n-54.0.1/lij.xpi) = 431675
-SHA256 (xpi/firefox-i18n-54.0.1/lt.xpi) = 965dac8a258b3f1fa95408f7bb1e4778a4935b0c5259f4b4cadc261a2202b9b0
-SIZE (xpi/firefox-i18n-54.0.1/lt.xpi) = 451195
-SHA256 (xpi/firefox-i18n-54.0.1/lv.xpi) = 28fa09ca2dfa0e35fa939b1e404b38d247b921fbae83d12e84a75a3fe2d506d9
-SIZE (xpi/firefox-i18n-54.0.1/lv.xpi) = 447753
-SHA256 (xpi/firefox-i18n-54.0.1/mai.xpi) = 549b205729fda9ac5b518e4fd14e482cdf53330195cac9aa5abd7a5960e6bd94
-SIZE (xpi/firefox-i18n-54.0.1/mai.xpi) = 497012
-SHA256 (xpi/firefox-i18n-54.0.1/mk.xpi) = bb71fa5d9de5b7f22e9a61846a9712039307d82e410c283ec4c5646eb1722dfc
-SIZE (xpi/firefox-i18n-54.0.1/mk.xpi) = 493118
-SHA256 (xpi/firefox-i18n-54.0.1/ml.xpi) = cf8fd4617b462f10014b56d058526afe5a21c5d27437e6e7bd2d3972d6a80f5f
-SIZE (xpi/firefox-i18n-54.0.1/ml.xpi) = 512264
-SHA256 (xpi/firefox-i18n-54.0.1/mr.xpi) = 5721566ae1bb2aab7bcd10ab5d6461d4828c0665e778694bfc41f7dcda7ec46b
-SIZE (xpi/firefox-i18n-54.0.1/mr.xpi) = 501035
-SHA256 (xpi/firefox-i18n-54.0.1/ms.xpi) = 1ae16e71b6fc08b3eb7bd3db4f356300e33a8eb4093587e7c553109774378541
-SIZE (xpi/firefox-i18n-54.0.1/ms.xpi) = 435502
-SHA256 (xpi/firefox-i18n-54.0.1/my.xpi) = f634472bbd81089fdcf675d4c05078b6a380b5b32f35efcfd2549ae322062ee5
-SIZE (xpi/firefox-i18n-54.0.1/my.xpi) = 511255
-SHA256 (xpi/firefox-i18n-54.0.1/nb-NO.xpi) = 64b19a30823f1ceca9790f91d663569da7e3559f56c91af6d52fe3cb12b42685
-SIZE (xpi/firefox-i18n-54.0.1/nb-NO.xpi) = 433681
-SHA256 (xpi/firefox-i18n-54.0.1/nl.xpi) = 3a42e931b4f4504e7459f5e976cbb6b23d2660d98751a2307fca4da5bf600579
-SIZE (xpi/firefox-i18n-54.0.1/nl.xpi) = 431501
-SHA256 (xpi/firefox-i18n-54.0.1/nn-NO.xpi) = e423caf98330b9655476c5c6181b5390caccdb73c6c1260788d7d854ce2135d3
-SIZE (xpi/firefox-i18n-54.0.1/nn-NO.xpi) = 427871
-SHA256 (xpi/firefox-i18n-54.0.1/or.xpi) = 21542c795149a5014c762ab5b0d80758228d520fbb29d5da3575bac319efcc20
-SIZE (xpi/firefox-i18n-54.0.1/or.xpi) = 494082
-SHA256 (xpi/firefox-i18n-54.0.1/pa-IN.xpi) = ff23be5a0183b9ab0f508e0454363ccb4d4ea787e234f47f506a59a53b823900
-SIZE (xpi/firefox-i18n-54.0.1/pa-IN.xpi) = 473517
-SHA256 (xpi/firefox-i18n-54.0.1/pl.xpi) = f5b54399bde33a78e26ed608a541641cbbd455d6f615ebadaf51a1d4a070c49b
-SIZE (xpi/firefox-i18n-54.0.1/pl.xpi) = 347205
-SHA256 (xpi/firefox-i18n-54.0.1/pt-BR.xpi) = d2fec0d257a63098d1815c19cfda9485898671b05cbd04d405d7aea37bab0da6
-SIZE (xpi/firefox-i18n-54.0.1/pt-BR.xpi) = 437173
-SHA256 (xpi/firefox-i18n-54.0.1/pt-PT.xpi) = 81ab31f6e804bb4000e82d8e5c0f1a523a06017b5c70702080b3d37e69a0cddc
-SIZE (xpi/firefox-i18n-54.0.1/pt-PT.xpi) = 436178
-SHA256 (xpi/firefox-i18n-54.0.1/rm.xpi) = 1f97345a398a8debe697c52c1c9470e8e372b27358f03b97c362936961075c42
-SIZE (xpi/firefox-i18n-54.0.1/rm.xpi) = 433406
-SHA256 (xpi/firefox-i18n-54.0.1/ro.xpi) = a240485bcc277196ff5d9dc83b0ca3682bdb28eea348de9675d076a0cda90252
-SIZE (xpi/firefox-i18n-54.0.1/ro.xpi) = 449474
-SHA256 (xpi/firefox-i18n-54.0.1/ru.xpi) = ed18d1fdb2e0f71bf08a272e80d8954e3cbb67e47656f3c37d94f3368f9d5013
-SIZE (xpi/firefox-i18n-54.0.1/ru.xpi) = 487731
-SHA256 (xpi/firefox-i18n-54.0.1/si.xpi) = 4dce9708ecdd61c82621d97eb88476a4c13212efa136e1cf2db0f7df7e0c4271
-SIZE (xpi/firefox-i18n-54.0.1/si.xpi) = 491069
-SHA256 (xpi/firefox-i18n-54.0.1/sk.xpi) = fa7d3fdf5448c1fde3d875b1897207e129b04e3338d8e20eb050b65d6db1a383
-SIZE (xpi/firefox-i18n-54.0.1/sk.xpi) = 455015
-SHA256 (xpi/firefox-i18n-54.0.1/sl.xpi) = 31795653987c7dc1a1968006b3c8068f6e1089b0f2311d9d53c08cb73d2d3617
-SIZE (xpi/firefox-i18n-54.0.1/sl.xpi) = 433176
-SHA256 (xpi/firefox-i18n-54.0.1/son.xpi) = f1ee7a8fe539071cd78361d40f1e547ee25d0a5e10a72e040ff56d9f20bc297a
-SIZE (xpi/firefox-i18n-54.0.1/son.xpi) = 435053
-SHA256 (xpi/firefox-i18n-54.0.1/sq.xpi) = 4310b19b43b5cd4c841ded13a62c621cf3eea4391e516b08bb70a4ea3e008a9a
-SIZE (xpi/firefox-i18n-54.0.1/sq.xpi) = 448158
-SHA256 (xpi/firefox-i18n-54.0.1/sr.xpi) = 22a1101556894ea99607cc9e447bf6e54705a906e476245e3f599fd7ffc24484
-SIZE (xpi/firefox-i18n-54.0.1/sr.xpi) = 461355
-SHA256 (xpi/firefox-i18n-54.0.1/sv-SE.xpi) = 6fbaa53965beac50102a130257e3703ceddc4621744941beace41d172ab8d559
-SIZE (xpi/firefox-i18n-54.0.1/sv-SE.xpi) = 440479
-SHA256 (xpi/firefox-i18n-54.0.1/ta.xpi) = 192fe9dcf242ff01da8e51c216f04d32fe4a91170dbce22e5e40ecfa7f5e0759
-SIZE (xpi/firefox-i18n-54.0.1/ta.xpi) = 493957
-SHA256 (xpi/firefox-i18n-54.0.1/te.xpi) = c4e2bef212d4fbc5c250808f92318165db9f3bb0936be28b2517f43f213a3010
-SIZE (xpi/firefox-i18n-54.0.1/te.xpi) = 513339
-SHA256 (xpi/firefox-i18n-54.0.1/th.xpi) = be7902e644099d01405198a7f3a7c651494012c26e9729aa63f103a58adb28ba
-SIZE (xpi/firefox-i18n-54.0.1/th.xpi) = 487219
-SHA256 (xpi/firefox-i18n-54.0.1/tr.xpi) = 4460fb3b0c3419ccc67de5b81709337e3990bd0f3753e66cbed467b468e58aff
-SIZE (xpi/firefox-i18n-54.0.1/tr.xpi) = 440413
-SHA256 (xpi/firefox-i18n-54.0.1/uk.xpi) = 9009a1ff5f9e53b2041dd58a47b377d73e0e9dc59d257b49c2ce0f4fe9e15471
-SIZE (xpi/firefox-i18n-54.0.1/uk.xpi) = 490758
-SHA256 (xpi/firefox-i18n-54.0.1/ur.xpi) = efa36df7c6ccda5551d3be4a0beaff1069310607afb99040b7d586a9abd422e4
-SIZE (xpi/firefox-i18n-54.0.1/ur.xpi) = 496584
-SHA256 (xpi/firefox-i18n-54.0.1/uz.xpi) = 90b31da2151bbf9c89766074afec716c4cd05bfbae3d30bac1ccf14a0eb1db62
-SIZE (xpi/firefox-i18n-54.0.1/uz.xpi) = 448113
-SHA256 (xpi/firefox-i18n-54.0.1/vi.xpi) = b971ef91795039963a35e59ab7d653d7f0568760c3a0e2c95dccaf5052fd3750
-SIZE (xpi/firefox-i18n-54.0.1/vi.xpi) = 449655
-SHA256 (xpi/firefox-i18n-54.0.1/xh.xpi) = dbb7ca463660d3bf1fc2c079551b6380dc8d238be1a34cd2426cae4b74382bb9
-SIZE (xpi/firefox-i18n-54.0.1/xh.xpi) = 440803
-SHA256 (xpi/firefox-i18n-54.0.1/zh-CN.xpi) = 0acf841d128b347c85ceb8fa34dd2dcdb3177b1c4cb9fa2a97666ba0912dd16b
-SIZE (xpi/firefox-i18n-54.0.1/zh-CN.xpi) = 458333
-SHA256 (xpi/firefox-i18n-54.0.1/zh-TW.xpi) = bebd2c45d83ba97ebafc3fd463385d3a75d3818bae33bf71e3430594f5f5abbc
-SIZE (xpi/firefox-i18n-54.0.1/zh-TW.xpi) = 469166
+TIMESTAMP = 1501529467
+SHA256 (xpi/firefox-i18n-55.0/ach.xpi) = 7effd111a095cddfa54f351259213bf344a63a594ecee1619c5ea181dae1b26f
+SIZE (xpi/firefox-i18n-55.0/ach.xpi) = 447503
+SHA256 (xpi/firefox-i18n-55.0/af.xpi) = b17db928990810aac31c86d01d92e73f0e4a0bfcdb98d7ec3d9ab1dcaadb0e30
+SIZE (xpi/firefox-i18n-55.0/af.xpi) = 448923
+SHA256 (xpi/firefox-i18n-55.0/an.xpi) = e15aa4930d21d29b7f409beb1fdcf18603eee54670672f856eb0019304442b34
+SIZE (xpi/firefox-i18n-55.0/an.xpi) = 468637
+SHA256 (xpi/firefox-i18n-55.0/ar.xpi) = 6f574ebea13627ade9f0732f5ef8857cf24c9986b41f83d4162f5b4dd934f65b
+SIZE (xpi/firefox-i18n-55.0/ar.xpi) = 492759
+SHA256 (xpi/firefox-i18n-55.0/as.xpi) = eda8c3227dcc8ff518a85184a9d9bd121b54a9d9bef7936650a59ff405bee942
+SIZE (xpi/firefox-i18n-55.0/as.xpi) = 501506
+SHA256 (xpi/firefox-i18n-55.0/ast.xpi) = 4003edf17a241136abcc2722131b4d0c9f0ad5f9d3cad30f0903786c11dbe527
+SIZE (xpi/firefox-i18n-55.0/ast.xpi) = 460839
+SHA256 (xpi/firefox-i18n-55.0/az.xpi) = 227f74edc75a27483eacac85f775a7aed4d551f2da8b80ec8f6df102855d0e0d
+SIZE (xpi/firefox-i18n-55.0/az.xpi) = 475367
+SHA256 (xpi/firefox-i18n-55.0/be.xpi) = 3e93a38c9e81ecd6b12686cb553a9d4963b3aa27544eca1a7d702dfb4d59bf17
+SIZE (xpi/firefox-i18n-55.0/be.xpi) = 522574
+SHA256 (xpi/firefox-i18n-55.0/bg.xpi) = 85a0566d0df2b8501f76c7680c47aed147d07f74bad80a4734a3e5a0f1c5d93a
+SIZE (xpi/firefox-i18n-55.0/bg.xpi) = 520010
+SHA256 (xpi/firefox-i18n-55.0/bn-BD.xpi) = 477429b439a1bf73b59f21690988786ae87c06c5b587cdee8269c1cc2f5ffeca
+SIZE (xpi/firefox-i18n-55.0/bn-BD.xpi) = 535105
+SHA256 (xpi/firefox-i18n-55.0/bn-IN.xpi) = 9d7004f7d7cc21ec8026d34fbc7a78c52bc8205f738df715d9d53bd57e56f664
+SIZE (xpi/firefox-i18n-55.0/bn-IN.xpi) = 526353
+SHA256 (xpi/firefox-i18n-55.0/br.xpi) = 1f2c64f8e11262340895ce55c16130745cff855778068b576b0e832cfa3a8f8c
+SIZE (xpi/firefox-i18n-55.0/br.xpi) = 457058
+SHA256 (xpi/firefox-i18n-55.0/bs.xpi) = b18b81b09302846fdc9a53294b5c905406949fbe54abb172229ab5da62ae03fb
+SIZE (xpi/firefox-i18n-55.0/bs.xpi) = 465024
+SHA256 (xpi/firefox-i18n-55.0/ca.xpi) = 6060c966fe663d4e6c44b4de7f4b8accab722ebc5788ca41fc2c1b846d238ede
+SIZE (xpi/firefox-i18n-55.0/ca.xpi) = 473016
+SHA256 (xpi/firefox-i18n-55.0/cak.xpi) = 057900bfde342f8543734d95d83a31873a7bd727879f2a0662826ffef66f6855
+SIZE (xpi/firefox-i18n-55.0/cak.xpi) = 481773
+SHA256 (xpi/firefox-i18n-55.0/cs.xpi) = 807db70a47d46de4bce82027ca45fa2c1b0b0beecedd93c51134ac148e022025
+SIZE (xpi/firefox-i18n-55.0/cs.xpi) = 476808
+SHA256 (xpi/firefox-i18n-55.0/cy.xpi) = 11d8e6ae3ef64b878d33de9c1e87627c71f3c8d7858cdfd7fb901fda0e51a05f
+SIZE (xpi/firefox-i18n-55.0/cy.xpi) = 458724
+SHA256 (xpi/firefox-i18n-55.0/da.xpi) = 5eee7d6abfdff7b63a71ad75c7628f8b9d2f3e06292c547d2c32521b86ddc170
+SIZE (xpi/firefox-i18n-55.0/da.xpi) = 452603
+SHA256 (xpi/firefox-i18n-55.0/de.xpi) = 9e59e27baff599dd0450c31a77532f8db37ca217f105b780ff14822607cfb85b
+SIZE (xpi/firefox-i18n-55.0/de.xpi) = 465988
+SHA256 (xpi/firefox-i18n-55.0/dsb.xpi) = 1ace2c50ed147c64764eb9e55f8aa6a7917b4f1e76fac660f0ae282655d4fc43
+SIZE (xpi/firefox-i18n-55.0/dsb.xpi) = 482080
+SHA256 (xpi/firefox-i18n-55.0/el.xpi) = 776251cf76587518eebc4c3398168eb226d5e859c69e6068031d72e42d13d233
+SIZE (xpi/firefox-i18n-55.0/el.xpi) = 539776
+SHA256 (xpi/firefox-i18n-55.0/en-GB.xpi) = 9f298233d64ed509211dced494b206271457d29d82a06e999a2e4ec3c09cfadf
+SIZE (xpi/firefox-i18n-55.0/en-GB.xpi) = 439267
+SHA256 (xpi/firefox-i18n-55.0/en-US.xpi) = 6e48418b8251189baa662323892c0ca71be87d22cd3e4b786557cecd813802ee
+SIZE (xpi/firefox-i18n-55.0/en-US.xpi) = 439813
+SHA256 (xpi/firefox-i18n-55.0/en-ZA.xpi) = 3c207e0c0da51086665dfbcb3932e428b5a43fa78633df8165d6f164d8e12921
+SIZE (xpi/firefox-i18n-55.0/en-ZA.xpi) = 438620
+SHA256 (xpi/firefox-i18n-55.0/eo.xpi) = 43291d1441f465ccef16c78dd1d7185b105f853c072956b64cca85d25951ccb7
+SIZE (xpi/firefox-i18n-55.0/eo.xpi) = 461138
+SHA256 (xpi/firefox-i18n-55.0/es-AR.xpi) = a15bdfad6500e6e5843c24d0e7ee05962505346db9c200269c4bf01dc4a5a6db
+SIZE (xpi/firefox-i18n-55.0/es-AR.xpi) = 467617
+SHA256 (xpi/firefox-i18n-55.0/es-CL.xpi) = 361e31c430cbb7cd6480d4449c6626c58688a4c2ccfcf29307542b7bd2c6fdae
+SIZE (xpi/firefox-i18n-55.0/es-CL.xpi) = 471598
+SHA256 (xpi/firefox-i18n-55.0/es-ES.xpi) = 7f5a906ef66e606436763730909324171bbf32ae5ccb7604c76f503b91a34bdc
+SIZE (xpi/firefox-i18n-55.0/es-ES.xpi) = 359822
+SHA256 (xpi/firefox-i18n-55.0/es-MX.xpi) = 5d72f78c861a79ee8e44a60b65bd6e0ff709a5233335dac2ce14b7434a660930
+SIZE (xpi/firefox-i18n-55.0/es-MX.xpi) = 474243
+SHA256 (xpi/firefox-i18n-55.0/et.xpi) = 38b9ec43a0dbf4b9fa85c40e0dcf9105f4f685a4953145b6777fe93f20920e33
+SIZE (xpi/firefox-i18n-55.0/et.xpi) = 454469
+SHA256 (xpi/firefox-i18n-55.0/eu.xpi) = 9c389e96c5ae242b8a6367540c06726ec97b932ccb8e6648cfc1499072d724c1
+SIZE (xpi/firefox-i18n-55.0/eu.xpi) = 460418
+SHA256 (xpi/firefox-i18n-55.0/fa.xpi) = 1447f4827395e5def561df5cd900087ff7ff1dd725c06a613eb9ab10bc8ea7e8
+SIZE (xpi/firefox-i18n-55.0/fa.xpi) = 511559
+SHA256 (xpi/firefox-i18n-55.0/ff.xpi) = df842a9519944fc4346c2ab1ddd303e3dfddbb0ae816e7c8d25541860a0cfe5b
+SIZE (xpi/firefox-i18n-55.0/ff.xpi) = 455293
+SHA256 (xpi/firefox-i18n-55.0/fi.xpi) = d7d5e06340d93be95e392825f135482c85872578706920ef5cf5fa5d539c54d5
+SIZE (xpi/firefox-i18n-55.0/fi.xpi) = 453944
+SHA256 (xpi/firefox-i18n-55.0/fr.xpi) = 8d671e1013ee08d17a7817f3a892ec497b53a0bf71acf94bfc8eb9d07e1fbaab
+SIZE (xpi/firefox-i18n-55.0/fr.xpi) = 476666
+SHA256 (xpi/firefox-i18n-55.0/fy-NL.xpi) = 9697130fdecbc7ac9efa4e4710b613de8f932dc2d13c935d6f6cd7aa6d25dd85
+SIZE (xpi/firefox-i18n-55.0/fy-NL.xpi) = 469967
+SHA256 (xpi/firefox-i18n-55.0/ga-IE.xpi) = bc4116e1db74fa3505408a2bcd32ac4528c5378b1db218068120963dc984a6ea
+SIZE (xpi/firefox-i18n-55.0/ga-IE.xpi) = 481439
+SHA256 (xpi/firefox-i18n-55.0/gd.xpi) = 660b7b327fe3fdc6b4adb759086d8c9d3cf1cc7dc3d50067f94cece10861771d
+SIZE (xpi/firefox-i18n-55.0/gd.xpi) = 469053
+SHA256 (xpi/firefox-i18n-55.0/gl.xpi) = e086f3751c598394b3724afdb6d043df9dab988c4db67ead8871ce1ea7e74833
+SIZE (xpi/firefox-i18n-55.0/gl.xpi) = 459110
+SHA256 (xpi/firefox-i18n-55.0/gn.xpi) = 1ebe6518168127627febf8fab8bfb14da0cf31d28af680506dc42c72283a1499
+SIZE (xpi/firefox-i18n-55.0/gn.xpi) = 476200
+SHA256 (xpi/firefox-i18n-55.0/gu-IN.xpi) = cb0d3a437140f901f11367bbd09ee8679f4c7d19c2984ef39e82411fd093617c
+SIZE (xpi/firefox-i18n-55.0/gu-IN.xpi) = 498981
+SHA256 (xpi/firefox-i18n-55.0/he.xpi) = e2fb06c845cc39cf414793afdab3012b362faed05c52b7c821f70f2fbed6c84f
+SIZE (xpi/firefox-i18n-55.0/he.xpi) = 479880
+SHA256 (xpi/firefox-i18n-55.0/hi-IN.xpi) = bd2b6ebca05d02227168a51fe30f781a3836d707033074a76556394edb479e66
+SIZE (xpi/firefox-i18n-55.0/hi-IN.xpi) = 530570
+SHA256 (xpi/firefox-i18n-55.0/hr.xpi) = cdbd72e04a0432cd9177bb9b8ab92fc8d80a80ab5785746d3b9e4721fd65c298
+SIZE (xpi/firefox-i18n-55.0/hr.xpi) = 467990
+SHA256 (xpi/firefox-i18n-55.0/hsb.xpi) = cc36ffd9f41dc787edaa9b2d80fa84cdd462bda961b02407e1a08f31ba7d9127
+SIZE (xpi/firefox-i18n-55.0/hsb.xpi) = 479796
+SHA256 (xpi/firefox-i18n-55.0/hu.xpi) = 9e609583fa23225324b217862fd266300a0766e070a06c20812921d248fa19e1
+SIZE (xpi/firefox-i18n-55.0/hu.xpi) = 481644
+SHA256 (xpi/firefox-i18n-55.0/hy-AM.xpi) = d050ef2cf16ce9dc955ec06155073315ecb73b8495e45bf278fa7f803c81ef15
+SIZE (xpi/firefox-i18n-55.0/hy-AM.xpi) = 520877
+SHA256 (xpi/firefox-i18n-55.0/id.xpi) = da15ba92adf6c3d745b294f1e2b264bcdfca1929c9a6320b9448e8dac2279ef3
+SIZE (xpi/firefox-i18n-55.0/id.xpi) = 450289
+SHA256 (xpi/firefox-i18n-55.0/is.xpi) = 0f8efe945dd9faee7d4fd2c88ba3b9caa810e2fda7b390e0793b84b5c6575979
+SIZE (xpi/firefox-i18n-55.0/is.xpi) = 464367
+SHA256 (xpi/firefox-i18n-55.0/it.xpi) = 45daddf8cd24a00716877a9bac62fc76257d8abba7bde2861a16feb88778a4b8
+SIZE (xpi/firefox-i18n-55.0/it.xpi) = 352939
+SHA256 (xpi/firefox-i18n-55.0/ja.xpi) = 07a7a1adecbebaf193a77beec7df50ae44550c1bfea91de82b751a9bf256341f
+SIZE (xpi/firefox-i18n-55.0/ja.xpi) = 519762
+SHA256 (xpi/firefox-i18n-55.0/ka.xpi) = a2de711f6531681ee4e9bff14fd0fe0d8d987eeb8bc9a1171da70d9708713c70
+SIZE (xpi/firefox-i18n-55.0/ka.xpi) = 493534
+SHA256 (xpi/firefox-i18n-55.0/kab.xpi) = ca6b5c9c05ec6bfe7c209457b8f326e9554f7e6cfc0c7da942fbbf807373f4b7
+SIZE (xpi/firefox-i18n-55.0/kab.xpi) = 470043
+SHA256 (xpi/firefox-i18n-55.0/kk.xpi) = 91d5d5279c7ca52211c66b11ce16cbbe448ea1e0f77b8516bdb730dc26ede4a0
+SIZE (xpi/firefox-i18n-55.0/kk.xpi) = 526706
+SHA256 (xpi/firefox-i18n-55.0/km.xpi) = 66b2d22c136861fe25b0030d937758f2b9304cebc00ea1c1204440ade26cf0d0
+SIZE (xpi/firefox-i18n-55.0/km.xpi) = 540645
+SHA256 (xpi/firefox-i18n-55.0/kn.xpi) = 9304a1dd34f0549df39cd49e598945916a9342ca82497f8365bf69adfc845128
+SIZE (xpi/firefox-i18n-55.0/kn.xpi) = 538857
+SHA256 (xpi/firefox-i18n-55.0/ko.xpi) = 10e257126a527261de33c1eb32aae8686d04074a5d158d0643f7728f51f0d761
+SIZE (xpi/firefox-i18n-55.0/ko.xpi) = 494545
+SHA256 (xpi/firefox-i18n-55.0/lij.xpi) = 0297bac042dcf9bbf5309b2162248a2a7f39c32ef28313aac40f8bbbf7291653
+SIZE (xpi/firefox-i18n-55.0/lij.xpi) = 458696
+SHA256 (xpi/firefox-i18n-55.0/lt.xpi) = 119039f74baf681c36bebbbc1238c80b1a75cdf22a43aefdbe8973552d0173fc
+SIZE (xpi/firefox-i18n-55.0/lt.xpi) = 481080
+SHA256 (xpi/firefox-i18n-55.0/lv.xpi) = 70c391da7f6e396a9dc0b5edae49858ea3b6bfd2d5790feb4ed1702f0f02d8d8
+SIZE (xpi/firefox-i18n-55.0/lv.xpi) = 473735
+SHA256 (xpi/firefox-i18n-55.0/mai.xpi) = ab6ba18d08c4cacd10da473362c9b60037429b3fde6b65519ad975b1ce36fa40
+SIZE (xpi/firefox-i18n-55.0/mai.xpi) = 517893
+SHA256 (xpi/firefox-i18n-55.0/mk.xpi) = 8e1bac561a9e4f8bf63e5fe5f0371869278ea8bf16a9dcd2b5d808daacf0cb3d
+SIZE (xpi/firefox-i18n-55.0/mk.xpi) = 500205
+SHA256 (xpi/firefox-i18n-55.0/ml.xpi) = 53440574bd1e31bd11a31874c0a3dbad7bb4ebe6009cc4add6219ba9790010f9
+SIZE (xpi/firefox-i18n-55.0/ml.xpi) = 540980
+SHA256 (xpi/firefox-i18n-55.0/mr.xpi) = 96556da0ac4ed3d4a328bfcfc0d1559de7857a10d6c5546efb659117e4e76f7c
+SIZE (xpi/firefox-i18n-55.0/mr.xpi) = 528248
+SHA256 (xpi/firefox-i18n-55.0/ms.xpi) = 779321a93bd2a406fbbfa53977e3965678df5449f882cdfede8a71662943313d
+SIZE (xpi/firefox-i18n-55.0/ms.xpi) = 459190
+SHA256 (xpi/firefox-i18n-55.0/my.xpi) = 610c3680b94ba69f17755e62428267d873375c1700d6cb7c2ebf1e14f85f4a44
+SIZE (xpi/firefox-i18n-55.0/my.xpi) = 528096
+SHA256 (xpi/firefox-i18n-55.0/nb-NO.xpi) = 088ebff9c0be6ed01060d75a8b9bce408051093e4529ae1b7f6258311ed1e3f1
+SIZE (xpi/firefox-i18n-55.0/nb-NO.xpi) = 457644
+SHA256 (xpi/firefox-i18n-55.0/nl.xpi) = d5755cd3d461dcf7003220bd93d8c8d7fa78a09d67a8ed09bb48ca372e61a0f6
+SIZE (xpi/firefox-i18n-55.0/nl.xpi) = 461509
+SHA256 (xpi/firefox-i18n-55.0/nn-NO.xpi) = 83fb7df21553416dc7e489b5968bc9824c8f971ea68194a3c7addab58db1ef9a
+SIZE (xpi/firefox-i18n-55.0/nn-NO.xpi) = 458455
+SHA256 (xpi/firefox-i18n-55.0/or.xpi) = 4f36dfd176d808da70e67deb9029536a6ed2fa23c59129ca9cf520f22c607c8c
+SIZE (xpi/firefox-i18n-55.0/or.xpi) = 511353
+SHA256 (xpi/firefox-i18n-55.0/pa-IN.xpi) = b51b39635f527402cb2cb723b87b83c9939306f628835ef99a09bd75babfc737
+SIZE (xpi/firefox-i18n-55.0/pa-IN.xpi) = 498452
+SHA256 (xpi/firefox-i18n-55.0/pl.xpi) = 887fa9c5fc493d42ea9dfa3a7d79c16f2b24943e23473ca6031ef2a2993632e0
+SIZE (xpi/firefox-i18n-55.0/pl.xpi) = 372428
+SHA256 (xpi/firefox-i18n-55.0/pt-BR.xpi) = ff7e424a31a2c8488b8d35be6c8a369ccec3b7b6ec28909217d0f3275fba1a5b
+SIZE (xpi/firefox-i18n-55.0/pt-BR.xpi) = 462715
+SHA256 (xpi/firefox-i18n-55.0/pt-PT.xpi) = 2b28680e0e18b5c2d6377fac95a24f307328cc1a92d83fcd934d4492def8f257
+SIZE (xpi/firefox-i18n-55.0/pt-PT.xpi) = 465236
+SHA256 (xpi/firefox-i18n-55.0/rm.xpi) = 2c856ef717e74bfce70667cd588bb722ee8e61ee6ae4f5c41c5cc32161451323
+SIZE (xpi/firefox-i18n-55.0/rm.xpi) = 458263
+SHA256 (xpi/firefox-i18n-55.0/ro.xpi) = 74a29131e14d4168046d802227b9682c62d68531b4cafd536726baf0401e3dd0
+SIZE (xpi/firefox-i18n-55.0/ro.xpi) = 462971
+SHA256 (xpi/firefox-i18n-55.0/ru.xpi) = b0ebd011dd78ab946a8c06018bf74fed3e05b579f04df8a5c7d855f93282edfc
+SIZE (xpi/firefox-i18n-55.0/ru.xpi) = 530900
+SHA256 (xpi/firefox-i18n-55.0/si.xpi) = 3691c7971d7cbec72294ca8c81258237b22add5cee54a5c7602421e46fb81baf
+SIZE (xpi/firefox-i18n-55.0/si.xpi) = 508352
+SHA256 (xpi/firefox-i18n-55.0/sk.xpi) = 6a4dc2028c74439b36ef52bdd7348a52663fd007802ae730d014ca881d1a6d11
+SIZE (xpi/firefox-i18n-55.0/sk.xpi) = 487581
+SHA256 (xpi/firefox-i18n-55.0/sl.xpi) = 951fd5826419431e1ac0c6030e637bf57d043353b367472868bc0309197e2a63
+SIZE (xpi/firefox-i18n-55.0/sl.xpi) = 465759
+SHA256 (xpi/firefox-i18n-55.0/son.xpi) = ba61b906f3d02913365c552a876cf30f0933e967d925f2c62bfe892d9218b829
+SIZE (xpi/firefox-i18n-55.0/son.xpi) = 456958
+SHA256 (xpi/firefox-i18n-55.0/sq.xpi) = 499e363cfe095148e945a768b6d6f2a9989df91b1435293dcfac9e3d1ee09866
+SIZE (xpi/firefox-i18n-55.0/sq.xpi) = 470630
+SHA256 (xpi/firefox-i18n-55.0/sr.xpi) = e7c70b9ff895314ddfa13a88b5cae2a94e40cfb2c972e2d861b746f878bb5454
+SIZE (xpi/firefox-i18n-55.0/sr.xpi) = 494876
+SHA256 (xpi/firefox-i18n-55.0/sv-SE.xpi) = 5d83139e9a87bc6fdbafc8c4a191cfbe0e7200dab351e2431b1394cf683a80d6
+SIZE (xpi/firefox-i18n-55.0/sv-SE.xpi) = 466008
+SHA256 (xpi/firefox-i18n-55.0/ta.xpi) = 05629092b140728440133c3d07c9263bdf42152bd02757d9afaf31d0128a4bee
+SIZE (xpi/firefox-i18n-55.0/ta.xpi) = 519995
+SHA256 (xpi/firefox-i18n-55.0/te.xpi) = 5115e0039746aafa84a01b867a2e05d702776574eb09ce43ed71f1ab98d3868e
+SIZE (xpi/firefox-i18n-55.0/te.xpi) = 542538
+SHA256 (xpi/firefox-i18n-55.0/th.xpi) = d4b2df41441fbfc46a94728ec16c99d2a30f1de6a7f4b33b848114d8dba0e9f7
+SIZE (xpi/firefox-i18n-55.0/th.xpi) = 511902
+SHA256 (xpi/firefox-i18n-55.0/tr.xpi) = 31d971310a408e20bf792dfe42cbb5cd66d148bc66d072b735ff20f4be344a0e
+SIZE (xpi/firefox-i18n-55.0/tr.xpi) = 472160
+SHA256 (xpi/firefox-i18n-55.0/uk.xpi) = 174f6c9acb71ec6ae67f60f6c25ced02fdc639d97be2347376552d6908d7d298
+SIZE (xpi/firefox-i18n-55.0/uk.xpi) = 526435
+SHA256 (xpi/firefox-i18n-55.0/ur.xpi) = 6a829c48c17a3fbcf51474c6e7aac74c855ea4fb5db954bcaffc6f847bafca49
+SIZE (xpi/firefox-i18n-55.0/ur.xpi) = 520745
+SHA256 (xpi/firefox-i18n-55.0/uz.xpi) = 67efdac191ae3e71e1d3148857ba2a88cbcc9b059fd662c75fb13162fae76197
+SIZE (xpi/firefox-i18n-55.0/uz.xpi) = 467670
+SHA256 (xpi/firefox-i18n-55.0/vi.xpi) = de824a1b4d8b3b9adccb5eb523e186b4d0e96b5ea134cd7856ac29d9ddf0255d
+SIZE (xpi/firefox-i18n-55.0/vi.xpi) = 476525
+SHA256 (xpi/firefox-i18n-55.0/xh.xpi) = 8c06e786d7ba8c302f3be831b1c39aa770131af4f0ffb3b2f0930eba9ae0a27c
+SIZE (xpi/firefox-i18n-55.0/xh.xpi) = 470718
+SHA256 (xpi/firefox-i18n-55.0/zh-CN.xpi) = d7f69b51ba7ab586714221b1dce74e0896459b218067155b10bc461e9f4d5d55
+SIZE (xpi/firefox-i18n-55.0/zh-CN.xpi) = 490382
+SHA256 (xpi/firefox-i18n-55.0/zh-TW.xpi) = bc110d30be7ad0cced842c2d50774d76d5feec842284722fa11ee9034bc2757b
+SIZE (xpi/firefox-i18n-55.0/zh-TW.xpi) = 489345
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 5bca600e7a7e..a502f94d0537 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -2,26 +2,25 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 54.0.1
+DISTVERSION= 55.0
DISTVERSIONSUFFIX=.source
-PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
- MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
+ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build3/source
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
-BUILD_DEPENDS= nspr>=4.14:devel/nspr \
- nss>=3.30.2:security/nss \
+BUILD_DEPENDS= nspr>=4.15:devel/nspr \
+ nss>=3.31:security/nss \
libevent>=2.0.22:devel/libevent \
- harfbuzz>=1.4.3:print/harfbuzz \
+ harfbuzz>=1.4.6:print/harfbuzz \
graphite2>=1.3.10:graphics/graphite2 \
png>=1.6.28:graphics/png \
libvorbis>=1.3.5,3:audio/libvorbis \
libvpx>=1.5.0:multimedia/libvpx \
- sqlite3>=3.17.0:databases/sqlite3 \
+ sqlite3>=3.19.2:databases/sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \
v4l_compat>0:multimedia/v4l_compat \
autoconf-2.13:devel/autoconf213 \
@@ -47,6 +46,7 @@ MOZ_OPTIONS= --enable-application=browser \
OPTIONS_DEFINE= RUST
OPTIONS_DEFAULT= BUNDLED_CAIRO
+OPTIONS_EXCLUDE= GNOMEUI
# XXX lang/rust and devel/cargo currently build only on these platforms
OPTIONS_DEFAULT_aarch64=RUST
OPTIONS_DEFAULT_amd64= RUST
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 59fb3cb34dac..1e8d58961193 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1498670356
-SHA256 (firefox-54.0.1.source.tar.xz) = 07843e68f2f64842bb230b7fe821e45c82944e64dc3f2a3a90d3ea9f1efa7f77
-SIZE (firefox-54.0.1.source.tar.xz) = 229935420
+TIMESTAMP = 1501791759
+SHA256 (firefox-55.0.source.tar.xz) = 0db9f315ca67c65e36b4298465af4d08c4245eedeccf04040051c2fdc9f4576f
+SIZE (firefox-55.0.source.tar.xz) = 235014712
diff --git a/www/firefox/files/patch-bug1021761 b/www/firefox/files/patch-bug1021761
index e59fce618f00..f0764a8c4b22 100644
--- a/www/firefox/files/patch-bug1021761
+++ b/www/firefox/files/patch-bug1021761
@@ -122,7 +122,18 @@ index 57bcb4c13652..68be024f4a68 100644
static int
validate_stream_params(cubeb_stream_params * input_stream_params,
-@@ -138,6 +141,9 @@ cubeb_init(cubeb ** context, char const * context_name)
+@@ -155,6 +158,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
+ #if defined(USE_KAI)
+ init_oneshot = kai_init;
+ #endif
++ } else if (!strcmp(backend_name, "oss")) {
++#if defined(USE_OSS)
++ init_oneshot = oss_init;
++#endif
+ } else {
+ /* Already set */
+ }
+@@ -196,6 +203,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
#if defined(USE_KAI)
kai_init,
#endif
@@ -246,7 +257,7 @@ index 05ad27fef53b..3ea78e994f59 100644
+ char * buftail = stm->buffer + WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->bufframes);
/* Correct read size to the other stream available frames */
- if (stm->other_stream && got > stm->other_stream->bufframes) {
+ if (stm->other_stream && got > (snd_pcm_sframes_t) stm->other_stream->bufframes) {
@@ -372,8 +421,8 @@ alsa_process_stream(cubeb_stream * stm)
long drain_frames = avail - stm->bufframes;
double drain_time = (double) drain_frames / stm->params.rate;
@@ -579,7 +590,7 @@ index 05ad27fef53b..3ea78e994f59 100644
+ r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds);
assert((nfds_t) r == stm->nfds);
- r = pthread_cond_init(&stm->cond, NULL);
+ if (alsa_register_stream(ctx, stm) != 0) {
@@ -1048,7 +1156,7 @@ alsa_stream_destroy(cubeb_stream * stm)
pthread_mutex_lock(&stm->mutex);
if (stm->pcm) {
@@ -1182,29 +1193,14 @@ diff --git media/libcubeb/update.sh media/libcubeb/update.sh
index b139b8f497fd..d1f8a223c6d8 100755
--- media/libcubeb/update.sh
+++ media/libcubeb/update.sh
-@@ -17,6 +17,7 @@ cp $1/src/cubeb_audiounit.cpp src
- cp $1/src/cubeb_osx_run_loop.h src
- cp $1/src/cubeb_jack.cpp src
+@@ -20,6 +20,7 @@ cp $1/src/cubeb_log.h src
+ cp $1/src/cubeb_mixer.cpp src
+ cp $1/src/cubeb_mixer.h src
cp $1/src/cubeb_opensl.c src
+cp $1/src/cubeb_oss.c src
- cp $1/src/cubeb_array_queue.h src
+ cp $1/src/cubeb_osx_run_loop.h src
cp $1/src/cubeb_panner.cpp src
cp $1/src/cubeb_panner.h src
-diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build
-index 3e5450f5d63a..dd45427f655a 100644
---- media/webrtc/signaling/test/common.build
-+++ media/webrtc/signaling/test/common.build
-@@ -99,8 +99,8 @@ USE_LIBS += ['mozglue']
- OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
--if CONFIG['MOZ_ALSA']:
-- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
-+if CONFIG['MOZ_OSS']:
-+ OS_LIBS += CONFIG['MOZ_OSS_LIBS']
-
- if CONFIG['MOZ_SYSTEM_JPEG']:
- OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
diff --git toolkit/library/moz.build toolkit/library/moz.build
index a61c689c83c3..7764df6f8a6b 100644
--- toolkit/library/moz.build
diff --git a/www/firefox/files/patch-bug1312182 b/www/firefox/files/patch-bug1312182
new file mode 100644
index 000000000000..9c2b65f06d65
--- /dev/null
+++ b/www/firefox/files/patch-bug1312182
@@ -0,0 +1,376 @@
+commit 0d02dac1638ad
+Author: Alessio Placitelli <alessio.placitelli@gmail.com>
+Date: Tue May 30 10:42:42 2017 +0200
+
+ Bug 1312182 - Consolidate the uses of MOZ_TELEMETRY_REPORTING in the code. r=flod,gfritzsche,jaws
+
+ The MOZ_TELEMETRY_REPORTING define does not control whether or not Telemetry is enabled
+ but rather if it will send the gathered data to Mozilla servers. We still want to
+ display the about:preferences options and let developers know about this behaviour.
+ Please note that this patch is not changing any behaviour: it's only making it explicit
+ by showing the options as disabled rather than hiding them.
+
+ MozReview-Commit-ID: 7A0y0E0hm0Q
+
+ --HG--
+ extra : rebase_source : 36d1a7f5ec5c05b43731daf9507d3068fe7674ee
+---
+ browser/base/content/baseMenuOverlay.xul | 2 +-
+ browser/components/nsBrowserGlue.js | 8 +--
+ .../components/preferences/in-content-new/main.xul | 2 -
+ .../preferences/in-content-new/privacy.js | 32 +++++------
+ .../preferences/in-content-new/privacy.xul | 14 ++---
+ .../components/preferences/in-content/advanced.js | 63 +++++++++++-----------
+ .../components/preferences/in-content/advanced.xul | 7 ++-
+ .../chrome/browser/preferences-old/advanced.dtd | 5 ++
+ .../en-US/chrome/browser/preferences/advanced.dtd | 5 ++
+ 9 files changed, 67 insertions(+), 71 deletions(-)
+
+diff --git browser/base/content/baseMenuOverlay.xul browser/base/content/baseMenuOverlay.xul
+index 1befa2bb66cc..804bbdebb797 100644
+--- browser/base/content/baseMenuOverlay.xul
++++ browser/base/content/baseMenuOverlay.xul
+@@ -61,7 +61,7 @@
+ onclick="checkForMiddleClick(this, event);"
+ label="&helpKeyboardShortcuts.label;"
+ accesskey="&helpKeyboardShortcuts.accesskey;"/>
+-#ifdef MOZ_TELEMETRY_REPORTING
++#ifdef MOZ_SERVICES_HEALTHREPORT
+ <menuitem id="healthReport"
+ label="&healthReport2.label;"
+ accesskey="&healthReport2.accesskey;"
+diff --git browser/components/nsBrowserGlue.js browser/components/nsBrowserGlue.js
+index 554c279356b9..1c21bf4c4323 100644
+--- browser/components/nsBrowserGlue.js
++++ browser/components/nsBrowserGlue.js
+@@ -528,9 +528,7 @@ BrowserGlue.prototype = {
+ os.addObserver(this, "distribution-customization-complete");
+ os.addObserver(this, "handle-xul-text-link");
+ os.addObserver(this, "profile-before-change");
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- os.addObserver(this, "keyword-search");
+- }
++ os.addObserver(this, "keyword-search");
+ os.addObserver(this, "browser-search-engine-modified");
+ os.addObserver(this, "restart-in-safe-mode");
+ os.addObserver(this, "flash-plugin-hang");
+@@ -583,9 +581,7 @@ BrowserGlue.prototype = {
+ os.removeObserver(this, "places-database-locked");
+ os.removeObserver(this, "handle-xul-text-link");
+ os.removeObserver(this, "profile-before-change");
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- os.removeObserver(this, "keyword-search");
+- }
++ os.removeObserver(this, "keyword-search");
+ os.removeObserver(this, "browser-search-engine-modified");
+ os.removeObserver(this, "flash-plugin-hang");
+ os.removeObserver(this, "xpi-signature-changed");
+diff --git browser/components/preferences/in-content-new/main.xul browser/components/preferences/in-content-new/main.xul
+index e89ee1891c91..8672557bede2 100644
+--- browser/components/preferences/in-content-new/main.xul
++++ browser/components/preferences/in-content-new/main.xul
+@@ -183,11 +183,9 @@
+ name="layout.spellcheckDefault"
+ type="int"/>
+
+-#ifdef MOZ_TELEMETRY_REPORTING
+ <preference id="toolkit.telemetry.enabled"
+ name="toolkit.telemetry.enabled"
+ type="bool"/>
+-#endif
+
+ <preference id="browser.preferences.defaultPerformanceSettings.enabled"
+ name="browser.preferences.defaultPerformanceSettings.enabled"
+diff --git browser/components/preferences/in-content-new/privacy.js browser/components/preferences/in-content-new/privacy.js
+index be057bfad611..73f72391b991 100644
+--- browser/components/preferences/in-content-new/privacy.js
++++ browser/components/preferences/in-content-new/privacy.js
+@@ -321,11 +321,9 @@ var gPrivacyPane = {
+ this.initSubmitCrashes();
+ }
+ this.initTelemetry();
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- this.initSubmitHealthReport();
+- setEventListener("submitHealthReportBox", "command",
+- gPrivacyPane.updateSubmitHealthReport);
+- }
++ this.initSubmitHealthReport();
++ setEventListener("submitHealthReportBox", "command",
++ gPrivacyPane.updateSubmitHealthReport);
+
+ // Append search keywords into the elements could open subdialogs.
+ let bundlePrefs = document.getElementById("bundlePreferences");
+@@ -1414,8 +1412,10 @@ var gPrivacyPane = {
+ * In all cases, set up the Learn More link sanely.
+ */
+ initTelemetry() {
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- this._setupLearnMoreLink("toolkit.telemetry.infoURL", "telemetryLearnMore");
++ this._setupLearnMoreLink("toolkit.telemetry.infoURL", "telemetryLearnMore");
++ // If we're not sending any Telemetry, disable the telemetry upload checkbox as well.
++ if (!AppConstants.MOZ_TELEMETRY_REPORTING) {
++ document.getElementById("submitTelemetryBox").setAttribute("disabled", "true");
+ }
+ },
+
+@@ -1439,9 +1439,6 @@ var gPrivacyPane = {
+ * @param {Boolean} aEnabled False disables the controls, true enables them.
+ */
+ setTelemetrySectionEnabled(aEnabled) {
+- if (!AppConstants.MOZ_TELEMETRY_REPORTING) {
+- return;
+- }
+ // If FHR is disabled, additional data sharing should be disabled as well.
+ let disabled = !aEnabled;
+ document.getElementById("submitTelemetryBox").disabled = disabled;
+@@ -1456,19 +1453,21 @@ var gPrivacyPane = {
+ * Initialize the health report service reference and checkbox.
+ */
+ initSubmitHealthReport() {
+- if (!AppConstants.MOZ_TELEMETRY_REPORTING) {
+- return;
+- }
+ this._setupLearnMoreLink("datareporting.healthreport.infoURL", "FHRLearnMore");
+
+ let checkbox = document.getElementById("submitHealthReportBox");
+
+- if (Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED)) {
++ // Telemetry is only sending data if MOZ_TELEMETRY_REPORTING is defined.
++ // We still want to display the preferences panel if that's not the case, but
++ // we want it to be disabled and unchecked.
++ if (Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED) ||
++ !AppConstants.MOZ_TELEMETRY_REPORTING) {
+ checkbox.setAttribute("disabled", "true");
+ return;
+ }
+
+- checkbox.checked = Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED);
++ checkbox.checked = Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED) &&
++ AppConstants.MOZ_TELEMETRY_REPORTING;
+ this.setTelemetrySectionEnabled(checkbox.checked);
+ },
+
+@@ -1476,9 +1475,6 @@ var gPrivacyPane = {
+ * Update the health report preference with state from checkbox.
+ */
+ updateSubmitHealthReport() {
+- if (!AppConstants.MOZ_TELEMETRY_REPORTING) {
+- return;
+- }
+ let checkbox = document.getElementById("submitHealthReportBox");
+ Services.prefs.setBoolPref(PREF_UPLOAD_ENABLED, checkbox.checked);
+ this.setTelemetrySectionEnabled(checkbox.checked);
+diff --git browser/components/preferences/in-content-new/privacy.xul browser/components/preferences/in-content-new/privacy.xul
+index 9d531bd8274b..8030567573f8 100644
+--- browser/components/preferences/in-content-new/privacy.xul
++++ browser/components/preferences/in-content-new/privacy.xul
+@@ -760,9 +760,14 @@
+ </groupbox>
+
+ <!-- Data Choices -->
+-#ifdef MOZ_TELEMETRY_REPORTING
+-<groupbox id="historyGroup" data-category="panePrivacy" data-subcategory="reports" hidden="true">
++#ifdef MOZ_DATA_REPORTING
++
++<groupbox id="telemetryGroup" data-category="panePrivacy" data-subcategory="reports" hidden="true">
+ <caption><label>&reports.label;</label></caption>
++#ifndef MOZ_TELEMETRY_REPORTING
++ <description id="TelemetryDisabledDesc" control="telemetryGroup">&healthReportingDisabled.label;</description>
++#endif
++
+ <hbox align="center">
+ <checkbox id="submitHealthReportBox" label="&enableHealthReport.label;"
+ accesskey="&enableHealthReport.accesskey;"/>
+@@ -782,14 +787,9 @@
+ class="indent">&telemetryDesc.label;</description>
+ </vbox>
+ </groupbox>
+-#endif
+
+-#ifdef MOZ_DATA_REPORTING
+ #ifdef MOZ_CRASHREPORTER
+ <groupbox id="crashReporterGroup" data-category="panePrivacy" data-subcategory="reports" hidden="true">
+-#ifndef MOZ_TELEMETRY_REPORTING
+-<caption><label>&reports.label;</label></caption>
+-#endif
+ <hbox align="center">
+ <checkbox id="automaticallySubmitCrashesBox"
+ preference="browser.crashReports.unsubmittedCheck.autoSubmit"
+diff --git browser/components/preferences/in-content/advanced.js browser/components/preferences/in-content/advanced.js
+index a6a2abaad9cf..9c7a2e716403 100644
+--- browser/components/preferences/in-content/advanced.js
++++ browser/components/preferences/in-content/advanced.js
+@@ -46,9 +46,7 @@ var gAdvancedPane = {
+ this.initSubmitCrashes();
+ }
+ this.initTelemetry();
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- this.initSubmitHealthReport();
+- }
++ this.initSubmitHealthReport();
+ this.updateOnScreenKeyboardVisibility();
+ this.updateCacheSizeInputField();
+ this.updateActualCacheSize();
+@@ -78,10 +76,8 @@ var gAdvancedPane = {
+ gAdvancedPane.updateHardwareAcceleration);
+ setEventListener("advancedPrefs", "select",
+ gAdvancedPane.tabSelectionChanged);
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- setEventListener("submitHealthReportBox", "command",
+- gAdvancedPane.updateSubmitHealthReport);
+- }
++ setEventListener("submitHealthReportBox", "command",
++ gAdvancedPane.updateSubmitHealthReport);
+
+ setEventListener("connectionSettings", "command",
+ gAdvancedPane.showConnections);
+@@ -293,8 +289,10 @@ var gAdvancedPane = {
+ * In all cases, set up the Learn More link sanely.
+ */
+ initTelemetry() {
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- this._setupLearnMoreLink("toolkit.telemetry.infoURL", "telemetryLearnMore");
++ this._setupLearnMoreLink("toolkit.telemetry.infoURL", "telemetryLearnMore");
++ // If we're not sending any Telemetry, disable the telemetry upload checkbox as well.
++ if (!AppConstants.MOZ_TELEMETRY_REPORTING) {
++ document.getElementById("submitTelemetryBox").setAttribute("disabled", "true");
+ }
+ },
+
+@@ -303,46 +301,45 @@ var gAdvancedPane = {
+ * @param {Boolean} aEnabled False disables the controls, true enables them.
+ */
+ setTelemetrySectionEnabled(aEnabled) {
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- // If FHR is disabled, additional data sharing should be disabled as well.
+- let disabled = !aEnabled;
+- document.getElementById("submitTelemetryBox").disabled = disabled;
+- if (disabled) {
+- // If we disable FHR, untick the telemetry checkbox.
+- Services.prefs.setBoolPref("toolkit.telemetry.enabled", false);
+- }
+- document.getElementById("telemetryDataDesc").disabled = disabled;
++ // If FHR is disabled, additional data sharing should be disabled as well.
++ let disabled = !aEnabled;
++ document.getElementById("submitTelemetryBox").disabled = disabled;
++ if (disabled) {
++ // If we disable FHR, untick the telemetry checkbox.
++ Services.prefs.setBoolPref("toolkit.telemetry.enabled", false);
+ }
++ document.getElementById("telemetryDataDesc").disabled = disabled;
+ },
+
+ /**
+ * Initialize the health report service reference and checkbox.
+ */
+ initSubmitHealthReport() {
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- this._setupLearnMoreLink("datareporting.healthreport.infoURL", "FHRLearnMore");
+-
+- let checkbox = document.getElementById("submitHealthReportBox");
++ this._setupLearnMoreLink("datareporting.healthreport.infoURL", "FHRLearnMore");
+
+- if (Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED)) {
+- checkbox.setAttribute("disabled", "true");
+- return;
+- }
++ let checkbox = document.getElementById("submitHealthReportBox");
+
+- checkbox.checked = Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED);
+- this.setTelemetrySectionEnabled(checkbox.checked);
++ // Telemetry is only sending data if MOZ_TELEMETRY_REPORTING is defined.
++ // We still want to display the preferences panel if that's not the case, but
++ // we want it to be disabled and unchecked.
++ if (Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED) ||
++ !AppConstants.MOZ_TELEMETRY_REPORTING) {
++ checkbox.setAttribute("disabled", "true");
++ return;
+ }
++
++ checkbox.checked = Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED) &&
++ AppConstants.MOZ_TELEMETRY_REPORTING;
++ this.setTelemetrySectionEnabled(checkbox.checked);
+ },
+
+ /**
+ * Update the health report preference with state from checkbox.
+ */
+ updateSubmitHealthReport() {
+- if (AppConstants.MOZ_TELEMETRY_REPORTING) {
+- let checkbox = document.getElementById("submitHealthReportBox");
+- Services.prefs.setBoolPref(PREF_UPLOAD_ENABLED, checkbox.checked);
+- this.setTelemetrySectionEnabled(checkbox.checked);
+- }
++ let checkbox = document.getElementById("submitHealthReportBox");
++ Services.prefs.setBoolPref(PREF_UPLOAD_ENABLED, checkbox.checked);
++ this.setTelemetrySectionEnabled(checkbox.checked);
+ },
+
+ updateOnScreenKeyboardVisibility() {
+diff --git browser/components/preferences/in-content/advanced.xul browser/components/preferences/in-content/advanced.xul
+index f2330223fb18..1b2c62168a59 100644
+--- browser/components/preferences/in-content/advanced.xul
++++ browser/components/preferences/in-content/advanced.xul
+@@ -37,12 +37,9 @@
+ <preference id="layout.spellcheckDefault"
+ name="layout.spellcheckDefault"
+ type="int"/>
+-
+-#ifdef MOZ_TELEMETRY_REPORTING
+ <preference id="toolkit.telemetry.enabled"
+ name="toolkit.telemetry.enabled"
+ type="bool"/>
+-#endif
+
+ <!-- Data Choices tab -->
+ #ifdef MOZ_CRASHREPORTER
+@@ -189,6 +186,9 @@
+ <!-- Data Choices -->
+ <tabpanel id="dataChoicesPanel" orient="vertical">
+ #ifdef MOZ_TELEMETRY_REPORTING
++ <description>&healthReportingDisabled.label;</description>
++ <separator class="thin"/>
++#endif
+ <groupbox>
+ <caption>
+ <checkbox id="submitHealthReportBox" label="&enableHealthReport.label;"
+@@ -216,7 +216,6 @@
+ </hbox>
+ </vbox>
+ </groupbox>
+-#endif
+ #ifdef MOZ_CRASHREPORTER
+ <groupbox>
+ <caption>
+diff --git browser/locales/en-US/chrome/browser/preferences-old/advanced.dtd browser/locales/en-US/chrome/browser/preferences-old/advanced.dtd
+index 215b800d3385..bf23c4fd251f 100644
+--- browser/locales/en-US/chrome/browser/preferences-old/advanced.dtd
++++ browser/locales/en-US/chrome/browser/preferences-old/advanced.dtd
+@@ -28,6 +28,11 @@
+
+ <!ENTITY dataChoicesTab.label "Data Choices">
+
++<!-- LOCALIZATION NOTE (healthReportingDisabled.label): This message is displayed above
++disabled data sharing options in developer builds or builds with no Telemetry support
++available. -->
++<!ENTITY healthReportingDisabled.label "Data reporting is disabled for this build configuration">
++
+ <!ENTITY healthReportDesc.label "Helps you understand your browser performance and shares data with &vendorShortName; about your browser health">
+ <!ENTITY enableHealthReport.label "Enable &brandShortName; Health Report">
+ <!ENTITY enableHealthReport.accesskey "R">
+diff --git browser/locales/en-US/chrome/browser/preferences/advanced.dtd browser/locales/en-US/chrome/browser/preferences/advanced.dtd
+index 58a6b38630cf..6c478e48244a 100644
+--- browser/locales/en-US/chrome/browser/preferences/advanced.dtd
++++ browser/locales/en-US/chrome/browser/preferences/advanced.dtd
+@@ -28,6 +28,11 @@
+
+ <!ENTITY dataChoicesTab.label "Data Choices">
+
++<!-- LOCALIZATION NOTE (healthReportingDisabled.label): This message is displayed above
++disabled data sharing options in developer builds or builds with no Telemetry support
++available. -->
++<!ENTITY healthReportingDisabled.label "Data reporting is disabled for this build configuration">
++
+ <!ENTITY healthReportDesc.label "Helps you understand your browser performance and shares data with &vendorShortName; about your browser health">
+ <!ENTITY enableHealthReport.label "Enable &brandShortName; Health Report">
+ <!ENTITY enableHealthReport.accesskey "R">
diff --git a/www/firefox/files/patch-bug1356709 b/www/firefox/files/patch-bug1356709
deleted file mode 100644
index b795836a4ad4..000000000000
--- a/www/firefox/files/patch-bug1356709
+++ /dev/null
@@ -1,170 +0,0 @@
-commit acc36099bfc1
-Author: Steve Fink <sfink@mozilla.com>
-Date: Mon Apr 17 21:04:08 2017 -0700
-
- Bug 1356709 - Fix uses of uninitialized values in arm64 code, r=sstangl
-
- --HG--
- extra : rebase_source : 2f9a59c88f21dd467fbc4232e2f6b20850fd53ed
- extra : histedit_source : b5110806cf04a3ca056ea89709bcc707368a2e57
----
- js/src/jit/arm64/MacroAssembler-arm64.cpp | 4 +++-
- js/src/jit/arm64/vixl/Debugger-vixl.cpp | 10 ++++++----
- js/src/jit/arm64/vixl/Decoder-vixl.cpp | 12 ++++++------
- js/src/jit/arm64/vixl/Instrument-vixl.cpp | 4 +++-
- js/src/jit/arm64/vixl/MozSimulator-vixl.cpp | 8 ++++++--
- 5 files changed, 24 insertions(+), 14 deletions(-)
-
-diff --git js/src/jit/arm64/MacroAssembler-arm64.cpp js/src/jit/arm64/MacroAssembler-arm64.cpp
-index 013fefd85e9b..f1704c622cb6 100644
---- js/src/jit/arm64/MacroAssembler-arm64.cpp
-+++ js/src/jit/arm64/MacroAssembler-arm64.cpp
-@@ -682,7 +682,9 @@ MacroAssembler::callWithABIPre(uint32_t* stackAdjust, bool callFromWasm)
- *stackAdjust = stackForCall;
- reserveStack(*stackAdjust);
- {
-- moveResolver_.resolve();
-+ enoughMemory_ &= moveResolver_.resolve();
-+ if (!enoughMemory_)
-+ return;
- MoveEmitter emitter(*this);
- emitter.emit(moveResolver_);
- emitter.finish();
-diff --git js/src/jit/arm64/vixl/Debugger-vixl.cpp js/src/jit/arm64/vixl/Debugger-vixl.cpp
-index 85097ed5a086..2f4966fbef15 100644
---- js/src/jit/arm64/vixl/Debugger-vixl.cpp
-+++ js/src/jit/arm64/vixl/Debugger-vixl.cpp
-@@ -30,6 +30,7 @@
-
- #include "jit/arm64/vixl/Debugger-vixl.h"
-
-+#include "mozilla/Unused.h"
- #include "mozilla/Vector.h"
-
- #include "jsalloc.h"
-@@ -1109,6 +1110,7 @@ bool DebugCommand::Match(const char* name, const char** aliases) {
-
-
- DebugCommand* DebugCommand::Parse(char* line) {
-+ using mozilla::Unused;
- TokenVector args;
-
- for (char* chunk = strtok(line, " \t");
-@@ -1120,15 +1122,15 @@ DebugCommand* DebugCommand::Parse(char* line) {
- Token* format = FormatToken::Tokenize(dot + 1);
- if (format != NULL) {
- *dot = '\0';
-- args.append(Token::Tokenize(chunk));
-- args.append(format);
-+ Unused << args.append(Token::Tokenize(chunk));
-+ Unused << args.append(format);
- } else {
- // Error while parsing the format, push the UnknownToken so an error
- // can be accurately reported.
-- args.append(Token::Tokenize(chunk));
-+ Unused << args.append(Token::Tokenize(chunk));
- }
- } else {
-- args.append(Token::Tokenize(chunk));
-+ Unused << args.append(Token::Tokenize(chunk));
- }
- }
-
-diff --git js/src/jit/arm64/vixl/Decoder-vixl.cpp js/src/jit/arm64/vixl/Decoder-vixl.cpp
-index 5865689ae6fa..c74f71a11b24 100644
---- js/src/jit/arm64/vixl/Decoder-vixl.cpp
-+++ js/src/jit/arm64/vixl/Decoder-vixl.cpp
-@@ -112,12 +112,12 @@ void Decoder::DecodeInstruction(const Instruction *instr) {
- }
-
- void Decoder::AppendVisitor(DecoderVisitor* new_visitor) {
-- visitors_.append(new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
- }
-
-
- void Decoder::PrependVisitor(DecoderVisitor* new_visitor) {
-- visitors_.insert(visitors_.begin(), new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.insert(visitors_.begin(), new_visitor));
- }
-
-
-@@ -125,12 +125,12 @@ void Decoder::InsertVisitorBefore(DecoderVisitor* new_visitor,
- DecoderVisitor* registered_visitor) {
- for (auto it = visitors_.begin(); it != visitors_.end(); it++) {
- if (*it == registered_visitor) {
-- visitors_.insert(it, new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.insert(it, new_visitor));
- return;
- }
- }
- // We reached the end of the list without finding registered_visitor.
-- visitors_.append(new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
- }
-
-
-@@ -139,12 +139,12 @@ void Decoder::InsertVisitorAfter(DecoderVisitor* new_visitor,
- for (auto it = visitors_.begin(); it != visitors_.end(); it++) {
- if (*it == registered_visitor) {
- it++;
-- visitors_.insert(it, new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.insert(it, new_visitor));
- return;
- }
- }
- // We reached the end of the list without finding registered_visitor.
-- visitors_.append(new_visitor);
-+ MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
- }
-
-
-diff --git js/src/jit/arm64/vixl/Instrument-vixl.cpp js/src/jit/arm64/vixl/Instrument-vixl.cpp
-index 7653e0856281..15d143c8ec13 100644
---- js/src/jit/arm64/vixl/Instrument-vixl.cpp
-+++ js/src/jit/arm64/vixl/Instrument-vixl.cpp
-@@ -26,6 +26,8 @@
-
- #include "jit/arm64/vixl/Instrument-vixl.h"
-
-+#include "mozilla/Unused.h"
-+
- namespace vixl {
-
- Counter::Counter(const char* name, CounterType type)
-@@ -139,7 +141,7 @@ Instrument::Instrument(const char* datafile, uint64_t sample_period)
- // Construct Counter objects from counter description array.
- for (int i = 0; i < num_counters; i++) {
- if (Counter* counter = js_new<Counter>(kCounterList[i].name, kCounterList[i].type))
-- counters_.append(counter);
-+ mozilla::Unused << counters_.append(counter);
- }
-
- DumpCounterNames();
-diff --git js/src/jit/arm64/vixl/MozSimulator-vixl.cpp js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
-index 0f8acebf9de6..284413bc5875 100644
---- js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
-+++ js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
-@@ -29,6 +29,7 @@
- #include "jit/arm64/vixl/Debugger-vixl.h"
- #include "jit/arm64/vixl/Simulator-vixl.h"
- #include "jit/IonTypes.h"
-+#include "js/Utility.h"
- #include "threading/LockGuard.h"
- #include "vm/Runtime.h"
- #include "wasm/WasmCode.h"
-@@ -427,9 +428,12 @@ void Simulator::VisitException(const Instruction* instr) {
- case kCallRtRedirected:
- VisitCallRedirection(instr);
- return;
-- case kMarkStackPointer:
-- spStack_.append(xreg(31, Reg31IsStackPointer));
-+ case kMarkStackPointer: {
-+ js::AutoEnterOOMUnsafeRegion oomUnsafe;
-+ if (!spStack_.append(xreg(31, Reg31IsStackPointer)))
-+ oomUnsafe.crash("tracking stack for ARM64 simulator");
- return;
-+ }
- case kCheckStackPointer: {
- int64_t current = xreg(31, Reg31IsStackPointer);
- int64_t expected = spStack_.popCopy();
diff --git a/www/firefox/files/patch-bug1357874 b/www/firefox/files/patch-bug1357874
deleted file mode 100644
index a4c69d2571dd..000000000000
--- a/www/firefox/files/patch-bug1357874
+++ /dev/null
@@ -1,43 +0,0 @@
-commit 50d30e203b35
-Author: Jim Chen <nchen@mozilla.com>
-Date: Mon May 1 14:46:00 2017 -0400
-
- Bug 1357874 - Add more AArch64 support to JS code; r=luke
-
- * Fix a parentheses warning when compiling testGCAllocator.cpp.
-
- * Enable trace logging in TraceLogging.cpp.
----
- js/src/jsapi-tests/testGCAllocator.cpp | 2 +-
- js/src/jsmath.cpp | 2 ++
- js/src/jsnativestack.cpp | 10 +++++-----
- js/src/vm/TraceLogging.cpp | 2 +-
- js/src/wasm/WasmSignalHandlers.cpp | 2 ++
- 5 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git js/src/jsapi-tests/testGCAllocator.cpp js/src/jsapi-tests/testGCAllocator.cpp
-index 229e56422fdf..ec5407e8cca1 100644
---- js/src/jsapi-tests/testGCAllocator.cpp
-+++ js/src/jsapi-tests/testGCAllocator.cpp
-@@ -315,7 +315,7 @@ mapMemoryAt(void* desired, size_t length)
-
- #if defined(__ia64__) || defined(__aarch64__) || \
- (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__)))
-- MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
-+ MOZ_RELEASE_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0);
- #endif
- void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
- if (region == MAP_FAILED)
-diff --git js/src/vm/TraceLogging.cpp js/src/vm/TraceLogging.cpp
-index c7bc6a84b2e9..82fdf7c77e8a 100644
---- js/src/vm/TraceLogging.cpp
-+++ js/src/vm/TraceLogging.cpp
-@@ -61,7 +61,7 @@ rdtsc(void)
- return result;
-
- }
--#elif defined(__arm__)
-+#elif defined(__arm__) || defined(__aarch64__)
-
- #include <sys/time.h>
-
diff --git a/www/firefox/files/patch-bug1360321 b/www/firefox/files/patch-bug1360321
deleted file mode 100644
index b9989ef7c099..000000000000
--- a/www/firefox/files/patch-bug1360321
+++ /dev/null
@@ -1,49 +0,0 @@
-commit a2dff5ad917b
-Author: Jim Chen <nchen@mozilla.com>
-Date: Wed May 17 13:06:23 2017 -0400
-
- Bug 1360321 - 10. Fix opt build warnings in VIXL; r=me
-
- Fix an unused variable warning for `visitor` because it's only used in
- the assertion macro.
-
- Fix several no-return-value errors because the compiler cannot assume
- the VIXL_UNREACHABLE() macro is actually unreachable.
-
- r=me for trivial patch.
-
- MozReview-Commit-ID: 13IlMyUsXUN
----
- js/src/jit/arm64/vixl/Decoder-vixl.h | 2 ++
- js/src/jit/arm64/vixl/Globals-vixl.h | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git js/src/jit/arm64/vixl/Decoder-vixl.h js/src/jit/arm64/vixl/Decoder-vixl.h
-index 95dd589e8ab0..742c6f954c72 100644
---- js/src/jit/arm64/vixl/Decoder-vixl.h
-+++ js/src/jit/arm64/vixl/Decoder-vixl.h
-@@ -151,9 +151,11 @@ class Decoder {
-
- // Top-level wrappers around the actual decoding function.
- void Decode(const Instruction* instr) {
-+#ifdef DEBUG
- for (auto visitor : visitors_) {
- VIXL_ASSERT(visitor->IsConstVisitor());
- }
-+#endif
- DecodeInstruction(instr);
- }
- void Decode(Instruction* instr) {
-diff --git js/src/jit/arm64/vixl/Globals-vixl.h js/src/jit/arm64/vixl/Globals-vixl.h
-index 8a7418eb8c47..39d9c1d3f37d 100644
---- js/src/jit/arm64/vixl/Globals-vixl.h
-+++ js/src/jit/arm64/vixl/Globals-vixl.h
-@@ -76,7 +76,7 @@ const int MBytes = 1024 * KBytes;
- #define VIXL_ASSERT(condition) ((void) 0)
- #define VIXL_CHECK(condition) ((void) 0)
- #define VIXL_UNIMPLEMENTED() ((void) 0)
-- #define VIXL_UNREACHABLE() ((void) 0)
-+ #define VIXL_UNREACHABLE() MOZ_MAKE_COMPILER_ASSUME_IS_UNREACHABLE()
- #endif
- // This is not as powerful as template based assertions, but it is simple.
- // It assumes that the descriptions are unique. If this starts being a problem,
diff --git a/www/firefox/files/patch-bug1376411 b/www/firefox/files/patch-bug1376411
deleted file mode 100644
index fe4d6ab7b44d..000000000000
--- a/www/firefox/files/patch-bug1376411
+++ /dev/null
@@ -1,9687 +0,0 @@
-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"
diff --git a/www/firefox/files/patch-bug1385597 b/www/firefox/files/patch-bug1385597
new file mode 100644
index 000000000000..c04746e89449
--- /dev/null
+++ b/www/firefox/files/patch-bug1385597
@@ -0,0 +1,24 @@
+Properly restore system timezone on other POSIX systems. r?ehsan
+
+--- toolkit/components/resistfingerprinting/nsRFPService.cpp
++++ toolkit/components/resistfingerprinting/nsRFPService.cpp
+@@ -162,14 +162,14 @@ nsRFPService::UpdatePref()
+ PR_SetEnv(tz);
+ }
+ } else {
+-#if defined(XP_LINUX) || defined (XP_MACOSX)
+- // For POSIX like system, we reset the TZ to the /etc/localtime, which is the
+- // system timezone.
+- PR_SetEnv("TZ=:/etc/localtime");
+-#else
++#if defined(XP_WIN)
+ // For Windows, we reset the TZ to an empty string. This will make Windows to use
+ // its system timezone.
+ PR_SetEnv("TZ=");
++#else
++ // For POSIX like system, we reset the TZ to the /etc/localtime, which is the
++ // system timezone.
++ PR_SetEnv("TZ=:/etc/localtime");
+ #endif
+ }
+ }
diff --git a/www/firefox/files/patch-bug702179 b/www/firefox/files/patch-bug702179
index bb642382dfd8..0c998526736e 100644
--- a/www/firefox/files/patch-bug702179
+++ b/www/firefox/files/patch-bug702179
@@ -1,13 +1,12 @@
---- js/src/moz.build.orig 2015-12-16 12:32:04.574425000 +0100
-+++ js/src/moz.build 2015-12-16 12:32:09.032032000 +0100
-@@ -671,10 +671,6 @@ CFLAGS += CONFIG['MOZ_ICU_CFLAGS']
- CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
- LOCAL_INCLUDES += CONFIG['MOZ_ICU_INCLUDES']
+Don't build static JS lib to make sure DTrace probes are picked up.
+
+--- js/src/build/moz.build.orig 2017-04-16 18:00:50 UTC
++++ js/src/build/moz.build
+@@ -71,7 +71,3 @@ if CONFIG['OS_ARCH'] == 'SunOS':
+ ]
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+-
-NO_EXPAND_LIBS = True
-
-DIST_INSTALL = True
--
- # Prepare self-hosted JS code for embedding
- GENERATED_FILES += ['selfhosted.out.h']
- selfhosted = GENERATED_FILES['selfhosted.out.h']
diff --git a/www/firefox/files/patch-bug826985 b/www/firefox/files/patch-bug826985
index 1f21f8f960cd..8e23b9382748 100644
--- a/www/firefox/files/patch-bug826985
+++ b/www/firefox/files/patch-bug826985
@@ -51,18 +51,6 @@ index b483cd1..f1dd1f0 100644
# basic stuff for everything
'include_internal_video_render': 0,
'clang_use_chrome_plugins': 0,
-diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build
-index b483cd1..f1dd1f0 100644
---- media/webrtc/signaling/test/common.build
-+++ media/webrtc/signaling/test/common.build
-@@ -99,6 +99,7 @@ if CONFIG['JS_SHARED_LIBRARY']:
-
- USE_LIBS += ['mozglue']
-
-+OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
- OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
index 239a292..bab496c 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
diff --git a/www/firefox/files/patch-bug847568 b/www/firefox/files/patch-bug847568
index 9ef2dbadd362..0deb5a504f56 100644
--- a/www/firefox/files/patch-bug847568
+++ b/www/firefox/files/patch-bug847568
@@ -261,7 +261,7 @@ index 9297e4d6f501..d8e273887e4b 100644
+option('--with-system-harfbuzz',
+ help="Use system harfbuzz (located with pkgconfig)")
+
-+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.3',
++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.6',
+ when='--with-system-harfbuzz')
+
+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
diff --git a/www/firefox/files/patch-bug981348 b/www/firefox/files/patch-bug981348
deleted file mode 100644
index 0c2ffea1ef7b..000000000000
--- a/www/firefox/files/patch-bug981348
+++ /dev/null
@@ -1,61 +0,0 @@
-diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp
-index 88bba9baa401..99f240952dfe 100644
---- dom/system/OSFileConstants.cpp
-+++ dom/system/OSFileConstants.cpp
-@@ -16,14 +16,17 @@
- #include "dirent.h"
- #include "poll.h"
- #include "sys/stat.h"
--#if defined(ANDROID)
-+#if defined(XP_LINUX)
- #include <sys/vfs.h>
- #define statvfs statfs
-+#define f_frsize f_bsize
- #else
- #include "sys/statvfs.h"
-+#endif // defined(XP_LINUX)
-+#if !defined(ANDROID)
- #include "sys/wait.h"
- #include <spawn.h>
--#endif // defined(ANDROID)
-+#endif // !defined(ANDROID)
- #endif // defined(XP_UNIX)
-
- #if defined(XP_LINUX)
-@@ -699,7 +702,7 @@ static const dom::ConstantSpec gLibcProperties[] =
-
- { "OSFILE_SIZEOF_STATVFS", JS::Int32Value(sizeof (struct statvfs)) },
-
-- { "OSFILE_OFFSETOF_STATVFS_F_BSIZE", JS::Int32Value(offsetof (struct statvfs, f_bsize)) },
-+ { "OSFILE_OFFSETOF_STATVFS_F_FRSIZE", JS::Int32Value(offsetof (struct statvfs, f_frsize)) },
- { "OSFILE_OFFSETOF_STATVFS_F_BAVAIL", JS::Int32Value(offsetof (struct statvfs, f_bavail)) },
-
- #endif // defined(XP_UNIX)
-diff --git toolkit/components/osfile/modules/osfile_unix_back.jsm toolkit/components/osfile/modules/osfile_unix_back.jsm
-index a028dda7d5ec..f5c632e3d7e5 100644
---- toolkit/components/osfile/modules/osfile_unix_back.jsm
-+++ toolkit/components/osfile/modules/osfile_unix_back.jsm
-@@ -228,8 +228,8 @@
- let statvfs = new SharedAll.HollowStructure("statvfs",
- Const.OSFILE_SIZEOF_STATVFS);
-
-- statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BSIZE,
-- "f_bsize", Type.unsigned_long.implementation);
-+ statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_FRSIZE,
-+ "f_frsize", Type.unsigned_long.implementation);
- statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BAVAIL,
- "f_bavail", Type.fsblkcnt_t.implementation);
-
-diff --git toolkit/components/osfile/modules/osfile_unix_front.jsm toolkit/components/osfile/modules/osfile_unix_front.jsm
-index bd60d4d8419c..a8cd6b546b0e 100644
---- toolkit/components/osfile/modules/osfile_unix_front.jsm
-+++ toolkit/components/osfile/modules/osfile_unix_front.jsm
-@@ -399,7 +399,7 @@
- throw_on_negative("statvfs", (UnixFile.statvfs || UnixFile.statfs)(sourcePath, fileSystemInfoPtr));
-
- let bytes = new Type.uint64_t.implementation(
-- fileSystemInfo.f_bsize * fileSystemInfo.f_bavail);
-+ fileSystemInfo.f_frsize * fileSystemInfo.f_bavail);
-
- return bytes.value;
- };
diff --git a/www/firefox/files/patch-rust-option b/www/firefox/files/patch-rust-option
index 57da0de6038e..e60e11b111ee 100644
--- a/www/firefox/files/patch-rust-option
+++ b/www/firefox/files/patch-rust-option
@@ -1,4 +1,4 @@
-Revert bug 1284816 and bug 1341967 to postpone bustage on non-x86 archs.
+Revert bug 1284816, bug 1341967, bug 1336153 to postpone bustage on non-x86 archs.
diff --git browser/confvars.sh browser/confvars.sh
index d8dcd99c2757..740d9d3e5fcf 100755
@@ -56,11 +56,58 @@ index 267d989f1597..f709820e60ae 100644
if not rustc_info:
die(dedent('''\
Rust compiler not found.
+@@ -97,6 +110,9 @@ def rust_compiler(rustc_info, cargo_info):
+
+ return True
+
++set_define('MOZ_RUST', rust_compiler)
++set_config('MOZ_RUST', rust_compiler)
++
+ @template
+ def rust_triple_alias(host_or_target):
+ """Template defining the alias used for rustc's --target flag.
+@@ -227,7 +243,8 @@ set_config('RUST_HOST_TARGET', rust_host_triple)
+
+ @depends(rust_target_triple)
+ def rust_target_env_name(triple):
+- return triple.upper().replace('-','_')
++ if triple:
++ return triple.upper().replace('-','_')
+
+ # We need this to form various Cargo environment variables, as there is no
+ # uppercase function in make, and we don't want to shell out just for
+@@ -235,5 +252,6 @@ def rust_target_env_name(triple):
+ set_config('RUST_TARGET_ENV_NAME', rust_target_env_name)
+
+ # Until we remove all the other Rust checks in old-configure.
++add_old_configure_assignment('MOZ_RUST', rust_compiler)
+ add_old_configure_assignment('RUSTC', rustc)
+ add_old_configure_assignment('RUST_TARGET', rust_target_triple)
+diff --git config/rules.mk config/rules.mk
+index 94cc5556e3d0..7b143ebc5146 100644
+--- config/rules.mk
++++ config/rules.mk
+@@ -900,6 +900,7 @@ endif
+
+ $(foreach file,$(DUMP_SYMS_TARGETS),$(eval $(call syms_template,$(file),$(file)_syms.track)))
+
++ifdef MOZ_RUST
+ cargo_host_flag := --target=$(RUST_HOST_TARGET)
+ cargo_target_flag := --target=$(RUST_TARGET)
+
+@@ -1055,6 +1056,7 @@ force-cargo-host-program-build:
+
+ $(HOST_RUST_PROGRAMS): force-cargo-host-program-build
+ endif # HOST_RUST_PROGRAMS
++endif # MOZ_RUST
+
+ $(SOBJS):
+ $(REPORT_BUILD)
diff --git dom/media/MediaPrefs.h dom/media/MediaPrefs.h
index 4dcc659222a4..559334d89fd1 100644
--- dom/media/MediaPrefs.h
+++ dom/media/MediaPrefs.h
-@@ -165,7 +165,7 @@ private:
+@@ -183,7 +183,7 @@ private:
DECL_MEDIA_PREF("media.ogg.flac.enabled", FlacInOgg, bool, false);
DECL_MEDIA_PREF("media.flac.enabled", FlacEnabled, bool, true);
@@ -69,6 +116,42 @@ index 4dcc659222a4..559334d89fd1 100644
DECL_MEDIA_PREF("media.rust.test_mode", RustTestMode, bool, false);
#endif
+diff --git dom/media/gtest/moz.build dom/media/gtest/moz.build
+index c66ac4a9437f..e2203c0a4321 100644
+--- dom/media/gtest/moz.build
++++ dom/media/gtest/moz.build
+@@ -22,7 +22,6 @@ UNIFIED_SOURCES += [
+ 'TestMozPromise.cpp',
+ 'TestMP3Demuxer.cpp',
+ 'TestMP4Demuxer.cpp',
+- 'TestRust.cpp',
+ 'TestTrackEncoder.cpp',
+ 'TestVideoSegment.cpp',
+ 'TestVideoUtils.cpp',
+@@ -36,6 +35,9 @@ if CONFIG['MOZ_WEBM_ENCODER']:
+ 'TestWebMWriter.cpp',
+ ]
+
++if CONFIG['MOZ_RUST']:
++ UNIFIED_SOURCES += ['TestRust.cpp',]
++
+ TEST_HARNESS_FILES.gtest += [
+ '../test/gizmo-frag.mp4',
+ '../test/gizmo.mp4',
+diff --git media/libcubeb/src/moz.build media/libcubeb/src/moz.build
+index c65b53b80f63..8953f646e831 100644
+--- media/libcubeb/src/moz.build
++++ media/libcubeb/src/moz.build
+@@ -32,7 +32,8 @@ if CONFIG['MOZ_PULSEAUDIO']:
+ 'cubeb_pulse.c',
+ ]
+ DEFINES['USE_PULSE'] = True
+- DEFINES['USE_PULSE_RUST'] = True
++ if CONFIG['MOZ_RUST']:
++ DEFINES['USE_PULSE_RUST'] = True
+
+ if CONFIG['MOZ_JACK']:
+ SOURCES += [
diff --git media/libstagefright/binding/DecoderData.cpp media/libstagefright/binding/DecoderData.cpp
index 109ea329d154..a06e533b1e62 100644
--- media/libstagefright/binding/DecoderData.cpp
@@ -84,16 +167,16 @@ index 109ea329d154..a06e533b1e62 100644
+#endif // MOZ_RUST_MP4PARSE
using namespace stagefright;
-
-@@ -187,6 +189,7 @@ MP4VideoInfo::Update(const MetaData* aMetaData, const char* aMimeType)
-
+ using mozilla::media::TimeUnit;
+@@ -177,6 +179,7 @@ MP4VideoInfo::Update(const MetaData* aMetaData, const char* aMimeType)
+ FindData(aMetaData, kKeyAVCC, mExtraData);
}
+#ifdef MOZ_RUST_MP4PARSE
static void
UpdateTrackProtectedInfo(mozilla::TrackInfo& aConfig,
const mp4parse_sinf_info& aSinf)
-@@ -266,6 +269,7 @@ MP4VideoInfo::Update(const mp4parse_track_info* track,
+@@ -263,6 +266,7 @@ MP4VideoInfo::Update(const mp4parse_track_info* track,
mExtraData->AppendElements(video->extra_data.data, video->extra_data.length);
}
}
@@ -105,7 +188,7 @@ diff --git media/libstagefright/binding/MP4Metadata.cpp media/libstagefright/bin
index 5c3810d99a38..5d14dfd8b8a9 100644
--- media/libstagefright/binding/MP4Metadata.cpp
+++ media/libstagefright/binding/MP4Metadata.cpp
-@@ -19,14 +19,18 @@
+@@ -20,14 +20,18 @@
#include "mp4_demuxer/MP4Metadata.h"
#include "mp4_demuxer/Stream.h"
#include "MediaPrefs.h"
@@ -123,8 +206,8 @@ index 5c3810d99a38..5d14dfd8b8a9 100644
+#endif // MOZ_RUST_MP4PARSE
using namespace stagefright;
-
-@@ -101,6 +103,7 @@ private:
+ using mozilla::media::TimeUnit;
+@@ -105,6 +109,7 @@ private:
bool mCanSeek;
};
@@ -132,19 +215,35 @@ index 5c3810d99a38..5d14dfd8b8a9 100644
// Wrap an mp4_demuxer::Stream to remember the read offset.
class RustStreamAdaptor {
-@@ -145,9 +149,11 @@ private:
+@@ -151,6 +156,7 @@ private:
RustStreamAdaptor mRustSource;
mozilla::UniquePtr<mp4parse_parser, FreeMP4Parser> mRustParser;
};
+#endif // MOZ_RUST_MP4PARSE
+ class IndiceWrapperStagefright : public IndiceWrapper {
+ public:
+@@ -187,6 +193,7 @@ IndiceWrapperStagefright::GetIndice(size_t aIndex, Index::Indice& aIndice) const
+ return true;
+ }
+
++#ifdef MOZ_RUST_MP4PARSE
+ // the owner of mIndice is rust mp4 paser, so lifetime of this class
+ // SHOULD NOT longer than rust parser.
+ class IndiceWrapperRust : public IndiceWrapper
+@@ -232,9 +239,11 @@ IndiceWrapperRust::GetIndice(size_t aIndex, Index::Indice& aIndice) const
+ aIndice.sync = indice->sync;
+ return true;
+ }
++#endif // MOZ_RUST_MP4PARSE
+
MP4Metadata::MP4Metadata(Stream* aSource)
: mStagefright(MakeUnique<MP4MetadataStagefright>(aSource))
+#ifdef MOZ_RUST_MP4PARSE
, mRust(MakeUnique<MP4MetadataRust>(aSource))
- , mPreferRust(false)
+ , mPreferRust(MediaPrefs::EnableRustMP4Parser())
, mReportedAudioTrackTelemetry(false)
-@@ -155,6 +161,7 @@ MP4Metadata::MP4Metadata(Stream* aSource)
+@@ -242,6 +251,7 @@ MP4Metadata::MP4Metadata(Stream* aSource)
#ifndef RELEASE_OR_BETA
, mRustTestMode(MediaPrefs::RustTestMode())
#endif
@@ -152,44 +251,46 @@ index 5c3810d99a38..5d14dfd8b8a9 100644
{
}
-@@ -186,6 +193,7 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
- {
- uint32_t numTracks = mStagefright->GetNumberTracks(aType);
+@@ -274,8 +284,11 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
+ MP4Metadata::ResultAndTrackCount numTracks =
+ mStagefright->GetNumberTracks(aType);
+#ifdef MOZ_RUST_MP4PARSE
if (!mRust) {
++#endif // MOZ_RUST_MP4PARSE
return numTracks;
++#ifdef MOZ_RUST_MP4PARSE
}
-@@ -211,10 +219,12 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
- mPreferRust = true;
- return numTracksRust;
- }
-+#endif // MOZ_RUST_MP4PARSE
- return numTracks;
+ MP4Metadata::ResultAndTrackCount numTracksRust =
+@@ -350,8 +363,10 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
+ // Same non-error numbers, just return any.
+ // (Choosing Rust here, in case it carries a warning, we'd want to know that.)
+ return numTracksRust;
++#endif // MOZ_RUST_MP4PARSE
}
+#ifdef MOZ_RUST_MP4PARSE
bool MP4Metadata::ShouldPreferRust() const {
if (!mRust) {
return false;
-@@ -245,6 +255,7 @@ bool MP4Metadata::ShouldPreferRust() const {
+@@ -389,6 +404,7 @@ bool MP4Metadata::ShouldPreferRust() const {
// Otherwise, fall back.
return false;
}
+#endif // MOZ_RUST_MP4PARSE
- mozilla::UniquePtr<mozilla::TrackInfo>
- MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
-@@ -253,6 +264,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
- mozilla::UniquePtr<mozilla::TrackInfo> info =
- mStagefright->GetTrackInfo(aType, aTrackNumber);
+ static const char*
+ GetDifferentField(const mozilla::TrackInfo& info,
+@@ -443,6 +459,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
+ MP4Metadata::ResultAndTrackInfo info =
+ mStagefright->GetTrackInfo(aType, aTrackNumber);
+#ifdef MOZ_RUST_MP4PARSE
if (!mRust) {
return info;
}
-@@ -305,6 +317,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackTyp
+@@ -514,6 +531,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
if (mPreferRust) {
return infoRust;
}
@@ -197,15 +298,15 @@ index 5c3810d99a38..5d14dfd8b8a9 100644
return info;
}
-@@ -319,6 +334,7 @@ const CryptoFile&
+@@ -528,6 +546,7 @@ MP4Metadata::ResultAndCryptoFile
MP4Metadata::Crypto() const
{
- const CryptoFile& crypto = mStagefright->Crypto();
+ MP4Metadata::ResultAndCryptoFile crypto = mStagefright->Crypto();
+#ifdef MOZ_RUST_MP4PARSE
- const CryptoFile& rustCrypto = mRust->Crypto();
+ MP4Metadata::ResultAndCryptoFile rustCrypto = mRust->Crypto();
#ifndef RELEASE_OR_BETA
-@@ -330,6 +347,7 @@ MP4Metadata::Crypto() const
+@@ -548,6 +567,7 @@ MP4Metadata::Crypto() const
if (mPreferRust) {
return rustCrypto;
}
@@ -213,17 +314,59 @@ index 5c3810d99a38..5d14dfd8b8a9 100644
return crypto;
}
-@@ -594,6 +612,7 @@ MP4MetadataStagefright::Metadata(Stream* aSource)
- return parser->Metadata();
+@@ -556,17 +576,22 @@ MP4Metadata::ResultAndIndice
+ MP4Metadata::GetTrackIndice(mozilla::TrackID aTrackID)
+ {
+ FallibleTArray<Index::Indice> indiceSF;
++#ifdef MOZ_RUST_MP4PARSE
+ if (!mPreferRust
+ #ifndef RELEASE_OR_BETA
+ || mRustTestMode
+ #endif
+ ) {
++#endif // MOZ_RUST_MP4PARSE
+ MediaResult rv = mStagefright->ReadTrackIndex(indiceSF, aTrackID);
+ if (NS_FAILED(rv)) {
+ return {Move(rv), nullptr};
+ }
++#ifdef MOZ_RUST_MP4PARSE
+ }
++#endif // MOZ_RUST_MP4PARSE
+
++#ifdef MOZ_RUST_MP4PARSE
+ mp4parse_byte_data indiceRust = {};
+ if (mPreferRust
+ #ifndef RELEASE_OR_BETA
+@@ -592,13 +617,18 @@ MP4Metadata::GetTrackIndice(mozilla::TrackID aTrackID)
+ }
+ }
+ #endif
++#endif // MOZ_RUST_MP4PARSE
+
+ UniquePtr<IndiceWrapper> indice;
++#ifdef MOZ_RUST_MP4PARSE
+ if (mPreferRust) {
+ indice = mozilla::MakeUnique<IndiceWrapperRust>(indiceRust);
+ } else {
++#endif // MOZ_RUST_MP4PARSE
+ indice = mozilla::MakeUnique<IndiceWrapperStagefright>(indiceSF);
++#ifdef MOZ_RUST_MP4PARSE
+ }
++#endif // MOZ_RUST_MP4PARSE
+
+ return {NS_OK, Move(indice)};
+ }
+@@ -856,6 +886,7 @@ MP4MetadataStagefright::Metadata(Stream* aSource)
+ return {NS_OK, Move(buffer)};
}
+#ifdef MOZ_RUST_MP4PARSE
bool
RustStreamAdaptor::Read(uint8_t* buffer, uintptr_t size, size_t* bytes_read)
{
-@@ -859,5 +878,6 @@ MP4MetadataRust::Metadata(Stream* aSource)
+@@ -1152,5 +1183,6 @@ MP4MetadataRust::Metadata(Stream* aSource)
MOZ_ASSERT(false, "Not yet implemented");
- return nullptr;
+ return {NS_ERROR_NOT_IMPLEMENTED, nullptr};
}
+#endif // MOZ_RUST_MP4PARSE
@@ -272,7 +415,17 @@ diff --git media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h media/
index 492c9c1c1bc3..e16dbbd1155e 100644
--- media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h
+++ media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h
-@@ -36,6 +36,7 @@ public:
+@@ -13,7 +13,9 @@
+ #include "MediaInfo.h"
+ #include "MediaResult.h"
+ #include "Stream.h"
++#ifdef MOZ_RUST_MP4PARSE
+ #include "mp4parse.h"
++#endif // MOZ_RUST_MP4PARSE
+
+ namespace mp4_demuxer {
+
+@@ -82,6 +84,7 @@ public:
private:
UniquePtr<MP4MetadataStagefright> mStagefright;
@@ -280,7 +433,7 @@ index 492c9c1c1bc3..e16dbbd1155e 100644
UniquePtr<MP4MetadataRust> mRust;
mutable bool mPreferRust;
mutable bool mReportedAudioTrackTelemetry;
-@@ -44,6 +45,7 @@ private:
+@@ -90,6 +93,7 @@ private:
mutable bool mRustTestMode;
#endif
bool ShouldPreferRust() const;
@@ -288,6 +441,49 @@ index 492c9c1c1bc3..e16dbbd1155e 100644
};
} // namespace mp4_demuxer
+diff --git media/libstagefright/gtest/moz.build media/libstagefright/gtest/moz.build
+index be4d56fc93f7..66fdd365f8f3 100644
+--- media/libstagefright/gtest/moz.build
++++ media/libstagefright/gtest/moz.build
+@@ -38,12 +38,13 @@ TEST_HARNESS_FILES.gtest += [
+ 'test_case_1351094.mp4',
+ ]
+
+-UNIFIED_SOURCES += ['TestMP4Rust.cpp',]
+-TEST_HARNESS_FILES.gtest += [
+- '../../../dom/media/test/street.mp4',
+-]
+-LOCAL_INCLUDES += [
+- '../binding/include',
+-]
++if CONFIG['MOZ_RUST']:
++ UNIFIED_SOURCES += ['TestMP4Rust.cpp',]
++ TEST_HARNESS_FILES.gtest += [
++ '../../../dom/media/test/street.mp4',
++ ]
++ LOCAL_INCLUDES += [
++ '../binding/include',
++ ]
+
+ FINAL_LIBRARY = 'xul-gtest'
+diff --git media/libstagefright/moz.build media/libstagefright/moz.build
+index af5d1194d621..6725a0179989 100644
+--- media/libstagefright/moz.build
++++ media/libstagefright/moz.build
+@@ -83,9 +83,10 @@ SOURCES += [
+ 'system/core/libutils/VectorImpl.cpp',
+ ]
+
+-EXPORTS += [
+- 'binding/include/mp4parse.h',
+-]
++if CONFIG['MOZ_RUST']:
++ EXPORTS += [
++ 'binding/include/mp4parse.h',
++ ]
+
+ UNIFIED_SOURCES += [
+ 'binding/Adts.cpp',
diff --git mobile/android/confvars.sh mobile/android/confvars.sh
index e79b6f5c0707..eb62763acaf7 100644
--- mobile/android/confvars.sh
@@ -301,21 +497,98 @@ index e79b6f5c0707..eb62763acaf7 100644
# use custom widget for html:select
MOZ_USE_NATIVE_POPUP_WINDOWS=1
+diff --git netwerk/base/moz.build netwerk/base/moz.build
+index 61d022a9660e..e5ca1d77d859 100644
+--- netwerk/base/moz.build
++++ netwerk/base/moz.build
+@@ -256,7 +256,7 @@ UNIFIED_SOURCES += [
+ 'TLSServerSocket.cpp',
+ ]
+
+-if CONFIG['MOZ_RUST_URLPARSE']:
++if CONFIG['MOZ_RUST'] and CONFIG['MOZ_RUST_URLPARSE']:
+ EXPORTS.mozilla.net += [ 'RustURL.h' ]
+ UNIFIED_SOURCES += [ 'RustURL.cpp' ]
+
+diff --git netwerk/base/nsStandardURL.cpp netwerk/base/nsStandardURL.cpp
+index 608b918a4ecf..20bcdeb34ab8 100644
+--- netwerk/base/nsStandardURL.cpp
++++ netwerk/base/nsStandardURL.cpp
+@@ -858,6 +858,7 @@ nsStandardURL::BuildNormalizedSpec(const char *spec)
+ if (!SegmentIs(spec, mScheme, "resource") &&
+ !SegmentIs(spec, mScheme, "chrome")) {
+ nsAutoCString ipString;
++#ifdef MOZ_RUST
+ if (encHost.Length() > 0 &&
+ encHost.First() == '[' && encHost.Last() == ']' &&
+ ValidIPv6orHostname(encHost.get(), encHost.Length())) {
+@@ -866,7 +867,9 @@ nsStandardURL::BuildNormalizedSpec(const char *spec)
+ return rv;
+ }
+ encHost = ipString;
+- } else if (NS_SUCCEEDED(NormalizeIPv4(encHost, ipString))) {
++ } else
++#endif
++ if (NS_SUCCEEDED(NormalizeIPv4(encHost, ipString))) {
+ encHost = ipString;
+ }
+ }
+@@ -2112,6 +2115,7 @@ nsStandardURL::SetHost(const nsACString &input)
+
+ if (!SegmentIs(mScheme, "resource") && !SegmentIs(mScheme, "chrome")) {
+ nsAutoCString ipString;
++#ifdef MOZ_RUST
+ if (hostBuf.Length() > 0 &&
+ hostBuf.First() == '[' && hostBuf.Last() == ']' &&
+ ValidIPv6orHostname(hostBuf.get(), hostBuf.Length())) {
+@@ -2120,7 +2124,9 @@ nsStandardURL::SetHost(const nsACString &input)
+ return rv;
+ }
+ hostBuf = ipString;
+- } else if (NS_SUCCEEDED(NormalizeIPv4(hostBuf, ipString))) {
++ } else
++#endif
++ if (NS_SUCCEEDED(NormalizeIPv4(hostBuf, ipString))) {
+ hostBuf = ipString;
+ }
+ }
+diff --git old-configure.in old-configure.in
+index 717a94fcc692..54b29d737cc1 100644
+--- old-configure.in
++++ old-configure.in
+@@ -2330,9 +2330,14 @@ if test -n "$MOZ_MULET"; then
+ fi
+
+ # Propagate feature switches for code written in rust from confvars.sh
+-if test -n "$MOZ_RUST_URLPARSE"; then
+- AC_DEFINE(MOZ_RUST_URLPARSE)
+- AC_SUBST(MOZ_RUST_URLPARSE)
++if test -n "$MOZ_RUST"; then
++ if test -n "$MOZ_RUST_MP4PARSE"; then
++ AC_DEFINE(MOZ_RUST_MP4PARSE)
++ fi
++ if test -n "$MOZ_RUST_URLPARSE"; then
++ AC_DEFINE(MOZ_RUST_URLPARSE)
++ AC_SUBST(MOZ_RUST_URLPARSE)
++ fi
+ fi
+
+ AC_SUBST(MOZ_PHOENIX)
diff --git toolkit/components/telemetry/Histograms.json toolkit/components/telemetry/Histograms.json
index 061c55f6a5b6..e49dfd176952 100644
--- toolkit/components/telemetry/Histograms.json
+++ toolkit/components/telemetry/Histograms.json
-@@ -6996,7 +6996,8 @@
- "expires_in_version": "55",
+@@ -8320,7 +8320,8 @@
+ "expires_in_version": "60",
"kind": "boolean",
"bug_numbers": [1220885],
-- "description": "(Bug 1220885) Whether the rust mp4 demuxer successfully parsed a stream segment."
-+ "description": "(Bug 1220885) Whether the rust mp4 demuxer successfully parsed a stream segment.",
+- "description": "Whether the rust mp4 demuxer successfully parsed a stream segment."
++ "description": "Whether the rust mp4 demuxer successfully parsed a stream segment.",
+ "cpp_guard": "MOZ_RUST_MP4PARSE"
},
"MEDIA_RUST_MP4PARSE_ERROR_CODE": {
- "alert_emails": ["giles@mozilla.com", "kinetik@flim.org"],
-@@ -7004,21 +7005,24 @@
+ "record_in_processes": ["main", "content"],
+@@ -8329,7 +8330,8 @@
"kind": "enumerated",
"n_values": 32,
"bug_numbers": [1238420],
@@ -324,8 +597,9 @@ index 061c55f6a5b6..e49dfd176952 100644
+ "cpp_guard": "MOZ_RUST_MP4PARSE"
},
"MEDIA_RUST_MP4PARSE_TRACK_MATCH_AUDIO": {
- "alert_emails": ["giles@mozilla.com", "kinetik@flim.org"],
- "expires_in_version": "55",
+ "record_in_processes": ["main", "content"],
+@@ -8337,7 +8339,8 @@
+ "expires_in_version": "60",
"kind": "boolean",
"bug_numbers": [1231169],
- "description": "Whether rust and stagefight mp4 parser audio track results match."
@@ -333,8 +607,9 @@ index 061c55f6a5b6..e49dfd176952 100644
+ "cpp_guard": "MOZ_RUST_MP4PARSE"
},
"MEDIA_RUST_MP4PARSE_TRACK_MATCH_VIDEO": {
- "alert_emails": ["giles@mozilla.com", "kinetik@flim.org"],
- "expires_in_version": "55",
+ "record_in_processes": ["main", "content"],
+@@ -8345,7 +8348,8 @@
+ "expires_in_version": "60",
"kind": "boolean",
"bug_numbers": [1231169],
- "description": "Whether rust and stagefight mp4 parser video track results match."
@@ -342,4 +617,200 @@ index 061c55f6a5b6..e49dfd176952 100644
+ "cpp_guard": "MOZ_RUST_MP4PARSE"
},
"MEDIA_WMF_DECODE_ERROR": {
- "expires_in_version": "55",
+ "record_in_processes": ["main", "content", "gpu"],
+diff --git toolkit/library/gtest/moz.build toolkit/library/gtest/moz.build
+index 69a8fb1f4893..c684f48e456e 100644
+--- toolkit/library/gtest/moz.build
++++ toolkit/library/gtest/moz.build
+@@ -7,7 +7,6 @@
+ FINAL_TARGET = 'dist/bin/gtest'
+
+ USE_LIBS += [
+- 'gkrust-gtest',
+ 'static:xul',
+ # xul-gtest is an intermediate static library. It is used as FINAL_TARGET
+ # for gtest code.
+@@ -21,6 +20,11 @@ USE_LIBS += [
+ # before StaticXULComponentStart.
+ Libxul('xul-gtest-real')
+
++if CONFIG['MOZ_RUST']:
++ USE_LIBS += [
++ 'gkrust-gtest',
++ ]
++
+ DIRS += [
+ 'static',
+ ]
+diff --git toolkit/library/moz.build toolkit/library/moz.build
+index 650f6eaba980..191e90ceb09a 100644
+--- toolkit/library/moz.build
++++ toolkit/library/moz.build
+@@ -63,7 +63,7 @@ def Libxul(name):
+
+ # This option should go away in bug 1290972, but we need to wait until
+ # Rust 1.12 has been released.
+- if CONFIG['OS_ARCH'] == 'Darwin':
++ if CONFIG['MOZ_RUST'] and CONFIG['OS_ARCH'] == 'Darwin':
+ LDFLAGS += ['-Wl,-no_compact_unwind']
+
+ Libxul('xul')
+@@ -343,4 +343,5 @@ USE_LIBS += ['StaticXULComponentsEnd']
+ # The above library needs to be last for C++ purposes. This library,
+ # however, is entirely composed of Rust code, and needs to come after
+ # all the C++ code so any possible C++ -> Rust calls can be resolved.
+-USE_LIBS += ['gkrust']
++if CONFIG['MOZ_RUST']:
++ USE_LIBS += ['gkrust']
+diff --git toolkit/moz.configure toolkit/moz.configure
+index ac9d123224ce..e90da70f0fa5 100644
+--- toolkit/moz.configure
++++ toolkit/moz.configure
+@@ -88,8 +88,7 @@ include('../js/moz.configure')
+
+ # Rust
+ # ==============================================================
+-include('../build/moz.configure/rust.configure',
+- when='--enable-compile-environment')
++include('../build/moz.configure/rust.configure')
+
+
+ # L10N
+@@ -623,13 +622,13 @@ id_and_secret_keyfile('Leanplum SDK')
+ option('--enable-stylo', nargs='?', choices=('build',),
+ help='Include Stylo in the build and/or enable it at runtime')
+
+-@depends('--enable-stylo')
+-def stylo_config(value):
++@depends('--enable-stylo', '--enable-rust')
++def stylo_config(value, rust_enabled):
+ build_stylo = None
+ enable_stylo = None
+
+ # The default is to not build Stylo at all.
+- if value.origin == 'default':
++ if not rust_enabled or value.origin == 'default':
+ pass
+ elif value == 'build':
+ build_stylo = True
+@@ -769,12 +768,14 @@ set_config('SERVO_TARGET_DIR', servo_target_dir)
+ option('--enable-webrender', nargs='?', choices=('build',),
+ help='Include WebRender in the build and/or enable it at runtime')
+
+-@depends('--enable-webrender', milestone)
+-def webrender(value, milestone):
++@depends('--enable-webrender', '--enable-rust', milestone)
++def webrender(value, rust_enabled, milestone):
+ build_webrender = None
+ enable_webrender = None
+
+- if value.origin == 'default':
++ if not rust_enabled:
++ pass
++ elif value.origin == 'default':
+ # if nothing is specified, default to just building on Nightly
+ build_webrender = milestone.is_nightly
+ elif value == 'build':
+diff --git toolkit/toolkit.mozbuild toolkit/toolkit.mozbuild
+index b845aab48023..9215afc6dd2d 100644
+--- toolkit/toolkit.mozbuild
++++ toolkit/toolkit.mozbuild
+@@ -133,16 +133,23 @@ if CONFIG['MOZ_PREF_EXTENSIONS']:
+
+ DIRS += [
+ '/devtools',
+- '/toolkit/library',
+- '/toolkit/library/gtest/rust',
+- '/toolkit/library/rust',
+- '/toolkit/library/StaticXULComponentsEnd',
+ '/services',
+ '/startupcache',
+ '/js/ductwork/debugger',
+ '/other-licenses/snappy',
+ ]
+
++if CONFIG['MOZ_RUST']:
++ DIRS += [
++ '/toolkit/library/gtest/rust',
++ '/toolkit/library/rust',
++ ]
++
++DIRS += [
++ '/toolkit/library/StaticXULComponentsEnd',
++ '/toolkit/library',
++]
++
+ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
+ DIRS += ['/toolkit/system/gnome']
+
+diff --git toolkit/xre/nsAppRunner.cpp toolkit/xre/nsAppRunner.cpp
+index 667c2eb1b365..6fb6cf102baa 100644
+--- toolkit/xre/nsAppRunner.cpp
++++ toolkit/xre/nsAppRunner.cpp
+@@ -227,11 +227,13 @@
+ extern uint32_t gRestartMode;
+ extern void InstallSignalHandlers(const char *ProgramName);
+
++#ifdef MOZ_RUST
+ // This workaround is fixed in Rust 1.19. For details, see bug 1358151.
+ // Implementation in toolkit/library/rust/shared/lib.rs
+ extern "C" {
+ void rust_init_please_remove_this_after_updating_rust_1_19();
+ }
++#endif
+
+ #define FILE_COMPATIBILITY_INFO NS_LITERAL_CSTRING("compatibility.ini")
+ #define FILE_INVALIDATE_CACHES NS_LITERAL_CSTRING(".purgecaches")
+@@ -3122,8 +3124,10 @@ XREMain::XRE_mainInit(bool* aExitFlag)
+ return 1;
+ *aExitFlag = false;
+
++#ifdef MOZ_RUST
+ // This workaround is fixed in Rust 1.19. For details, see bug 1358151.
+ rust_init_please_remove_this_after_updating_rust_1_19();
++#endif
+
+ atexit(UnexpectedExit);
+ auto expectedShutdown = mozilla::MakeScopeExit([&] {
+diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp
+index e6bb623c258b..c49d61dce605 100644
+--- xpcom/base/nsDebugImpl.cpp
++++ xpcom/base/nsDebugImpl.cpp
+@@ -148,14 +148,20 @@ nsDebugImpl::Abort(const char* aFile, int32_t aLine)
+ return NS_OK;
+ }
+
++#ifdef MOZ_RUST
+ // From toolkit/library/rust/lib.rs
+ extern "C" void intentional_panic(const char* message);
++#endif
+
+ NS_IMETHODIMP
+ nsDebugImpl::RustPanic(const char* aMessage)
+ {
++#ifdef MOZ_RUST
+ intentional_panic(aMessage);
+ return NS_OK;
++#else
++ return NS_ERROR_NOT_IMPLEMENTED;
++#endif
+ }
+
+ NS_IMETHODIMP
+diff --git xpcom/rust/nsstring/gtest/moz.build xpcom/rust/nsstring/gtest/moz.build
+index 197411678815..5bed9e57e57d 100644
+--- xpcom/rust/nsstring/gtest/moz.build
++++ xpcom/rust/nsstring/gtest/moz.build
+@@ -4,8 +4,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-UNIFIED_SOURCES += [
+- 'Test.cpp'
+-]
++if CONFIG['MOZ_RUST']:
++ UNIFIED_SOURCES += [
++ 'Test.cpp'
++ ]
+
+ FINAL_LIBRARY = 'xul-gtest'
diff --git a/www/firefox/files/patch-python_futures_concurrent_futures_process.py b/www/firefox/files/patch-third__party_python_futures_concurrent_futures_process.py
index 5327af944b8b..0f584dbca8e5 100644
--- a/www/firefox/files/patch-python_futures_concurrent_futures_process.py
+++ b/www/firefox/files/patch-third__party_python_futures_concurrent_futures_process.py
@@ -1,5 +1,5 @@
---- python/futures/concurrent/futures/process.py.orig 2017-04-11 04:15:19 UTC
-+++ python/futures/concurrent/futures/process.py
+--- third_party/python/futures/concurrent/futures/process.py.orig 2017-04-11 04:15:19 UTC
++++ third_party/python/futures/concurrent/futures/process.py
@@ -247,7 +247,11 @@ def _check_system_limits():
_system_limits_checked = True
try: