diff --git a/README.md b/README.md
index d4f6ab9ec8a2137e4e09e352b3c726eecf0cc942..31bb4e8e18d5d498c4c4c97f79a87cae7d1869a8 100644
--- a/README.md
+++ b/README.md
@@ -70,10 +70,10 @@ platforms in which `libc` tests are run.
 This project is licensed under either of
 
 * [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
-  ([LICENSE-APACHE](LICENSE-APACHE))
+  ([LICENSE-APACHE](https://github.com/rust-lang/libc/blob/master/LICENSE-APACHE))
 
 * [MIT License](https://opensource.org/licenses/MIT)
-  ([LICENSE-MIT](LICENSE-MIT))
+  ([LICENSE-MIT](https://github.com/rust-lang/libc/blob/master/LICENSE-MIT))
 
 at your option.
 
@@ -82,7 +82,7 @@ at your option.
 We welcome all people who want to contribute. Please see the [contributing
 instructions] for more information.
 
-[contributing instructions]: CONTRIBUTING.md
+[contributing instructions]: https://github.com/rust-lang/libc/blob/master/CONTRIBUTING.md
 
 Contributions in any form (issues, pull requests, etc.) to this project
 must adhere to Rust's [Code of Conduct].
diff --git a/ci/dox.sh b/ci/dox.sh
index 88f75130c5caf91d89ce9028db7e599302558d95..3b15689613335675429ef545bfcef6c073578743 100644
--- a/ci/dox.sh
+++ b/ci/dox.sh
@@ -66,11 +66,16 @@ done < targets
 cp $README $TARGET_DOC_DIR
 line=$(grep -n '<div class="platform_docs"></div>' $README | cut -d ":" -f 1)
 
-set +x
 { head -n "$((line-1))" $README; cat $PLATFORM_SUPPORT; tail -n "+$((line+1))" $README; } > $TARGET_DOC_DIR/$README
-set -x
 
-RUSTDOCFLAGS="--enable-index-page --index-page=${TARGET_DOC_DIR}/${README} -Zunstable-options" cargo doc
+cp $TARGET_DOC_DIR/$README $TARGET_DOC_DIR/index.md
+
+RUSTDOCFLAGS="--enable-index-page --index-page=${TARGET_DOC_DIR}/index.md -Zunstable-options" cargo doc
+
+# Tweak style
+cp ci/rust.css $TARGET_DOC_DIR
+sed -ie "8i <link rel=\"stylesheet\" type=\"text/css\" href=\"normalize.css\">" $TARGET_DOC_DIR/index.html
+sed -ie "9i <link rel=\"stylesheet\" type=\"text/css\" href=\"rust.css\">" $TARGET_DOC_DIR/index.html
 
 # Copy the licenses
 cp LICENSE-* $TARGET_DOC_DIR/
diff --git a/ci/rust.css b/ci/rust.css
new file mode 100644
index 0000000000000000000000000000000000000000..d33e36e60cdd43fb6f6ff045d1bf6d76a410391d
--- /dev/null
+++ b/ci/rust.css
@@ -0,0 +1,451 @@
+/* This is taken from https://github.com/rust-lang/rust/blob/master/src/doc/rust.css */
+
+@font-face {
+  font-family: 'Fira Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Fira Sans'), url("FiraSans-Regular.woff") format('woff');
+}
+@font-face {
+  font-family: 'Fira Sans';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Fira Sans Medium'), url("FiraSans-Medium.woff") format('woff');
+}
+@font-face {
+  font-family: 'Source Serif Pro';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Source Serif Pro'), url("SourceSerifPro-Regular.ttf.woff") format('woff');
+}
+@font-face {
+  font-family: 'Source Serif Pro';
+  font-style: italic;
+  font-weight: 400;
+  src: url("SourceSerifPro-It.ttf.woff") format('woff');
+}
+@font-face {
+  font-family: 'Source Serif Pro';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Source Serif Pro Bold'), url("SourceSerifPro-Bold.ttf.woff") format('woff');
+}
+@font-face {
+  font-family: 'Source Code Pro';
+  font-style: normal;
+  font-weight: 400;
+  /* Avoid using locally installed font because bad versions are in circulation:
+   * see https://github.com/rust-lang/rust/issues/24355 */
+  src: url("SourceCodePro-Regular.woff") format('woff');
+}
+
+*:not(body) {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+/* General structure */
+
+body {
+  background-color: white;
+  margin: 0 auto;
+  padding: 0 15px;
+  font-family: "Source Serif Pro", Georgia, Times, "Times New Roman", serif;
+  font-size: 18px;
+  color: #333;
+  line-height: 1.428571429;
+
+  -webkit-font-feature-settings: "kern", "liga";
+  -moz-font-feature-settings: "kern", "liga";
+  font-feature-settings: "kern", "liga";
+}
+@media (min-width: 768px) {
+  body {
+    max-width: 750px;
+  }
+}
+
+h1, h2, h3, h4, h5, h6, nav, #versioninfo {
+  font-family: "Fira Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+h1, h2, h3, h4, h5, h6 {
+  color: black;
+  font-weight: 400;
+  line-height: 1.1;
+}
+h1, h2, h3 {
+  margin-top: 20px;
+  margin-bottom: 15px;
+}
+h1 {
+  margin-bottom: 20px;
+}
+h4, h5, h6 {
+  margin-top: 12px;
+  margin-bottom: 10px;
+  padding: 5px 10px;
+}
+h5, h6 {
+  text-decoration: underline;
+}
+
+h1 {
+  font-size: 28px;
+  font-weight: 500;
+  padding: .1em .4em;
+  border-bottom: 2px solid #ddd;
+}
+h1.title {
+  line-height: 1.5em;
+}
+h2 {
+  font-size: 26px;
+  padding: .2em .5em;
+  border-bottom: 1px solid #ddd;
+}
+h3 {
+  font-size: 24px;
+  padding: .2em .7em;
+  border-bottom: 1px solid #DDE8FC;
+}
+h4 {
+  font-size: 22px;
+}
+h5 {
+  font-size: 20px;
+}
+h6 {
+  font-size: 18px;
+}
+@media (min-width: 992px) {
+  h1 {
+    font-size: 36px;
+  }
+  h2 {
+    font-size: 30px;
+  }
+  h3 {
+    font-size: 26px;
+  }
+}
+
+nav {
+  column-count: 2;
+  -moz-column-count: 2;
+  -webkit-column-count: 2;
+  font-size: 15px;
+  margin: 0 0 1em 0;
+}
+p {
+  margin: 0 0 1em 0;
+}
+
+strong {
+  font-weight: bold;
+}
+
+em {
+  font-style: italic;
+}
+
+footer {
+  border-top: 1px solid #ddd;
+  font-size: 14px;
+  font-style: italic;
+  padding-top: 5px;
+  margin-top: 3em;
+  margin-bottom: 1em;
+}
+
+/* Links layout */
+
+a {
+  text-decoration: none;
+  color: #428BCA;
+  background: transparent;
+}
+a:hover, a:focus {
+  color: #2A6496;
+  text-decoration: underline;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover, a:active {
+  outline: 0;
+}
+
+h1 a:link, h1 a:visited, h2 a:link, h2 a:visited,
+h3 a:link, h3 a:visited, h4 a:link, h4 a:visited,
+h5 a:link, h5 a:visited {color: black;}
+h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover,
+h5 a:hover {text-decoration: none;}
+
+/* Code */
+
+pre, code {
+  font-family: "Source Code Pro", Menlo, Monaco, Consolas, "DejaVu Sans Mono", monospace;
+  word-wrap: break-word;
+}
+pre {
+  border-left: 2px solid #eee;
+  white-space: pre-wrap;
+  padding: 14px;
+  padding-right: 0;
+  margin: 20px 0;
+  font-size: 15px;
+  word-break: break-all;
+}
+code {
+  padding: 0 2px;
+  color: #8D1A38;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+}
+
+a > code {
+  color: #428BCA;
+}
+
+.section-header > a > code {
+  color: #8D1A38;
+}
+
+/* Code highlighting */
+pre.rust .kw { color: #8959A8; }
+pre.rust .kw-2, pre.rust .prelude-ty { color: #4271AE; }
+pre.rust .number, pre.rust .string { color: #718C00; }
+pre.rust .self, pre.rust .bool-val, pre.rust .prelude-val,
+pre.rust .attribute, pre.rust .attribute .ident { color: #C82829; }
+pre.rust .comment { color: #8E908C; }
+pre.rust .doccomment { color: #4D4D4C; }
+pre.rust .macro, pre.rust .macro-nonterminal { color: #3E999F; }
+pre.rust .lifetime { color: #B76514; }
+
+/* The rest */
+
+#versioninfo {
+  text-align: center;
+  margin: 0.5em;
+  font-size: 1.1em;
+}
+@media (min-width: 992px) {
+  #versioninfo {
+    font-size: 0.8em;
+    position: fixed;
+    bottom: 0px;
+    right: 0px;
+  }
+  .white-sticker {
+    background-color: #fff;
+    margin: 2px;
+    padding: 0 2px;
+    border-radius: .2em;
+  }
+}
+#versioninfo a.hash {
+  color: gray;
+  font-size: 80%;
+}
+
+blockquote {
+  color: #000;
+  margin: 20px 0;
+  padding: 15px 20px;
+  background-color: #f2f7f9;
+  border-top: .1em solid #e5eef2;
+  border-bottom: .1em solid #e5eef2;
+}
+blockquote p {
+  font-size: 17px;
+  font-weight: 300;
+  line-height: 1.4;
+}
+blockquote p:last-child {
+  margin-bottom: 0;
+}
+
+ul, ol {
+  padding-left: 25px;
+}
+ul ul, ol ul, ul ol, ol ol {
+  margin-bottom: 0;
+}
+dl {
+  margin-bottom: 20px;
+}
+dd {
+  margin-left: 0;
+}
+
+nav ul {
+  list-style-type: none;
+  margin: 0;
+  padding-left: 0px;
+}
+
+/* Only display one level of hierarchy in the TOC */
+nav ul ul {
+  display: none;
+}
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+}
+
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  overflow-x: auto;
+  display: block;
+}
+
+table tr.odd {
+  background: #eee;
+}
+
+table td,
+table th {
+  border: 1px solid #ddd;
+  padding: 5px;
+}
+
+/* Code snippets */
+
+pre.rust { position: relative; }
+a.test-arrow {
+  background-color: rgba(78, 139, 202, 0.2);
+  display: inline-block;
+  position: absolute;
+  color: #f5f5f5;
+  padding: 5px 10px 5px 10px;
+  border-radius: 5px;
+  font-size: 130%;
+  top: 5px;
+  right: 5px;
+}
+a.test-arrow:hover{
+  background-color: #4e8bca;
+  text-decoration: none;
+}
+
+.unstable-feature {
+  border: 2px solid red;
+  padding: 5px;
+}
+
+@media (min-width: 1170px) {
+  pre {
+    font-size: 15px;
+  }
+}
+
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a, a:visited {
+    text-decoration: underline;
+  }
+  p a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  footer a[href]:after {
+    content: "";
+  }
+  a[href^="javascript:"]:after, a[href^="#"]:after {
+    content: "";
+  }
+  pre, blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  @page {
+    margin: 2cm .5cm;
+  }
+  h1:not(.title), h2, h3 {
+    border-bottom: 0px none;
+  }
+  p, h2, h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2, h3 {
+    page-break-after: avoid;
+  }
+  table {
+    border-collapse: collapse !important;
+  }
+  table td, table th {
+    background-color: #fff !important;
+  }
+}
+
+#keyword-table-marker + table thead { display: none; }
+#keyword-table-marker + table td { border: none; }
+#keyword-table-marker + table {
+  margin-left: 2em;
+  margin-bottom: 1em;
+}
+
+.error-described {
+  position: relative;
+}
+
+.information {
+  position: absolute;
+  left: -25px;
+  margin-top: 7px;
+  z-index: 1;
+}
+
+.tooltip {
+  position: relative;
+  display: inline-block;
+  cursor: pointer;
+}
+
+.tooltip .tooltiptext {
+  width: 120px;
+  display: none;
+  text-align: center;
+  padding: 5px 3px;
+  border-radius: 6px;
+  margin-left: 5px;
+  top: -5px;
+  left: 105%;
+  z-index: 1;
+}
+
+.tooltip:hover .tooltiptext {
+  display: inline;
+}
+
+.tooltip .tooltiptext::after {
+  content: " ";
+  position: absolute;
+  top: 50%;
+  left: 13px;
+  margin-top: -5px;
+  border-width: 5px;
+  border-style: solid;
+}