diff --git a/OWNERS b/OWNERS
index 670f88d..3818b1d 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,6 +1,7 @@
 enh@google.com
 
 cferris@google.com
+chiahungduan@google.com
 danalbert@google.com
 rprichard@google.com
 yabinc@google.com
diff --git a/README.md b/README.md
index f397fee..8d8e583 100644
--- a/README.md
+++ b/README.md
@@ -158,30 +158,63 @@
 
 Adding a system call usually involves:
 
-  1. Add entries to SYSCALLS.TXT.
+  1. Add an entry (or entries, in some cases) to SYSCALLS.TXT.
      See SYSCALLS.TXT itself for documentation on the format.
-  2. Add constants (and perhaps types) to the appropriate header file.
+     See also the notes below for how to deal with tricky cases like `off_t`.
+  2. Find the right header file to work in by looking up your system call
+     on [man7.org](https://man7.org/linux/man-pages/dir_section_2.html).
+     (If there's no header file given, see the points above about whether we
+     should really be adding this or not!)
+  3. Add constants (and perhaps types) to the appropriate header file.
      Note that you should check to see whether the constants are already in
      kernel uapi header files, in which case you just need to make sure that
-     the appropriate POSIX header file in libc/include/ includes the
-     relevant file or files.
-  3. Add function declarations to the appropriate header file. Don't forget
-     to include the appropriate `__INTRODUCED_IN()`. If you need to create a new
-     header file, libc/include/sys/sysinfo.h is a good short example to copy and
-     paste from.
-  4. Add basic documentation to the header file. libc/include/sys/sysinfo.h is a
-     good short example that shows the expected style. Most of the detail
-     should actually be left to the man7.org page, with only a brief
-     one-sentence explanation in our documentation. Alway include the return
-     value/error reporting details. Explicitly say which version of Android the
-     function was added to. Explicitly call out any Android-specific
-     changes/additions/limitations because they won't be on the man7.org page.
-  5. Add the function name to the correct section in libc/libc.map.txt.
-  6. Add a basic test. Don't try to test everything; concentrate on just testing
+     the appropriate header file in libc/include/ `#include`s the relevant
+     `linux/` file or files.
+  4. Add function declarations to the appropriate header file. Don't forget
+     to include the appropriate `__INTRODUCED_IN()`, with the right API level
+     for the first release your system call wrapper will be in. See
+     libc/include/android/api_level.h for the API levels.
+     If the header file doesn't exist, copy all of libc/include/sys/sysinfo.h
+     into your new file --- it's a good short example to start from.
+
+     Note also our style for naming arguments: always use two leading
+     underscores (so developers are free to use any of the unadorned names as
+     macros without breaking things), avoid abbreviations, and ideally try to
+     use the same name as an existing system call (to reduce the amount of
+     English vocabulary required by people who just want to use the function
+     signatures). If there's a similar function already in the C library,
+     check what names it's used. Finally, prefer the `void*` orthography we
+     use over the `void *` you'll see on man7.org.)
+  5. Add basic documentation to the header file. Again, the existing
+     libc/include/sys/sysinfo.h is a good short example that shows the
+     expected style.
+
+     Most of the detail should actually be left to the man7.org page, with
+     only a brief one-sentence explanation (usually based on the description
+     in the NAME section of the man page) in our documentation. Always
+     include the return value/error reporting details (you can find out
+     what the system call returns from the RETURN VALUE of the man page),
+     but try to match the wording and style wording from _our_ existing
+     documentation; we're trying to minimize the amount of English readers
+     need to understand by using the exact same wording where possible).
+     Explicitly say which version of Android the function was added to in
+     the documentation because the documentation generation tool doesn't yet
+     understand `__INTRODUCED_IN()`.
+
+     Explicitly call out any Android-specific changes/additions/limitations
+     because they won't be on the man7.org page.
+  6. Add the function name to the correct section in libc/libc.map.txt; it'll
+     be near the end of the file. You may need to add a new section if you're
+     the first to add a system call to this version of Android.
+  7. Add a basic test. Don't try to test everything; concentrate on just testing
      the code that's actually in *bionic*, not all the functionality that's
      implemented in the kernel. For simple syscalls, that's just the
      auto-generated argument and return value marshalling.
 
+     Add a test in the right file in tests/. We have one file per header, so if
+     your system call is exposed in <unistd.h>, for example, your test would go
+     in tests/unistd_test.cpp.
+
      A trivial test that deliberately supplies an invalid argument helps check
      that we're generating the right symbol and have the right declaration in
      the header file, and that the change to libc.map.txt from step 5 is
@@ -208,6 +241,41 @@
 than 2GiB, say -- so you may end up just writing a "meaningless" program whose
 only purpose is to give you patterns to look for when run under strace(1).)
 
+A general example of adding a system call:
+https://android-review.googlesource.com/c/platform/bionic/+/2073827
+
+### Debugging tips
+1. Key error for a new codename in libc/libc.map.txt
+
+e.g. what you add in libc/libc.map.txt is:
+
+```
+LIBC_V { # introduced=Vanilla
+  global:
+    xxx; // the new system call you add
+} LIBC_U;
+```
+
+The error output is:
+
+```
+Traceback (most recent call last):
+  File "/path/tp/out/soong/.temp/Soong.python_qucjwd7g/symbolfile/__init__.py", line 171,
+  in decode_api_level_tag
+    decoded = str(decode_api_level(value, api_map))
+  File "/path/to/out/soong/.temp/Soong.python_qucjwd7g/symbolfile/__init__.py", line 157,
+  in decode_api_level
+    return api_map[api]
+KeyError: 'Vanilla'
+```
+
+Solution: Ask in the team and wait for the update.
+
+2. Use of undeclared identifier of the new system call in the test
+
+Possible Solution: Check everything ready in the files mentioned above first.
+Maybe glibc matters. Follow the example and try #if defined(__GLIBC__).
+
 ## Updating kernel header files
 
 As mentioned above, this is currently a two-step process:
@@ -257,7 +325,7 @@
 
 Note that we use our own custom gtest runner that offers a superset of the
 options documented at
-<https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#running-test-programs-advanced-options>,
+<https://github.com/google/googletest/blob/main/docs/advanced.md#running-test-programs-advanced-options>,
 in particular for test isolation and parallelism (both on by default).
 
 ### Device tests via CTS
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 2db0efe..f56e16a 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -38,6 +38,9 @@
     },
     {
       "name": "memunreachable_unit_test"
+    },
+    {
+      "name": "toybox-tests"
     }
   ],
   "hwasan-presubmit": [
@@ -73,6 +76,17 @@
     },
     {
       "name": "malloc_hooks_system_tests"
+    },
+    {
+      "name": "memunreachable_unit_test"
+    },
+    {
+      "name": "toybox-tests"
+    }
+  ],
+  "kernel-presubmit": [
+    {
+      "name": "CtsBionicTestCases"
     }
   ]
 }
diff --git a/android-changes-for-ndk-developers.md b/android-changes-for-ndk-developers.md
index 13c8911..c5a6ac3 100644
--- a/android-changes-for-ndk-developers.md
+++ b/android-changes-for-ndk-developers.md
@@ -475,3 +475,7 @@
 There are no plans to remove support for ELF files using the older
 OS private use constants for RELR, nor for ELF files using packed
 relocations.
+
+You can read more about relative relocations
+and their long and complicated history at
+https://maskray.me/blog/2021-10-31-relative-relocations-and-relr.
diff --git a/benchmarks/Android.bp b/benchmarks/Android.bp
index 5dfc38f..17d2d68 100644
--- a/benchmarks/Android.bp
+++ b/benchmarks/Android.bp
@@ -156,3 +156,23 @@
     ],
     data: ["test_suites/*"],
 }
+
+cc_binary {
+    name: "malloc-rss-benchmark",
+    srcs: [
+        "malloc_rss_benchmark.cpp",
+    ],
+
+    shared_libs: [
+        "libbase",
+    ],
+
+    target: {
+        android: {
+            static_libs: [
+                "libmeminfo",
+                "libprocinfo",
+            ],
+        },
+    },
+}
diff --git a/benchmarks/NOTICE b/benchmarks/NOTICE
index f720e23..e46a624 100644
--- a/benchmarks/NOTICE
+++ b/benchmarks/NOTICE
@@ -178,3 +178,31 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
diff --git a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
index 2ff3d81..885e47f 100644
--- a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
+++ b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
@@ -42,6 +42,15 @@
 #define DATA_WORD(val) .quad val
 #define MAIN .globl main; main: mov w0, wzr; ret
 
+#elif defined(__riscv)
+
+// No `lga` in clang unless https://reviews.llvm.org/D107278 lands.
+// `la` is equivalent when using PIC (which we do) though.
+#define GOT_RELOC(sym) la a0, sym
+#define CALL(sym) call sym@plt
+#define DATA_WORD(val) .quad val
+#define MAIN .globl main; main: li a0, 0; ret
+
 #elif defined(__i386__)
 
 #define GOT_RELOC(sym) .long sym@got
diff --git a/benchmarks/malloc_rss_benchmark.cpp b/benchmarks/malloc_rss_benchmark.cpp
new file mode 100644
index 0000000..58f61d9
--- /dev/null
+++ b/benchmarks/malloc_rss_benchmark.cpp
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <malloc.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <chrono>
+#include <iostream>
+#include <memory>
+#include <random>
+#include <thread>
+#include <vector>
+
+#include <android-base/strings.h>
+#if defined(__BIONIC__)
+#include <malloc.h>
+#include <meminfo/procmeminfo.h>
+#include <procinfo/process_map.h>
+#endif
+
+constexpr size_t kMaxThreads = 8;
+// The max number of bytes that can be allocated by a thread. Note that each
+// allocator may have its own limitation on each size allocation. For example,
+// Scudo has a 256 MB limit for each size-class in the primary allocator. The
+// amount of memory allocated should not exceed the limit in each allocator.
+constexpr size_t kMaxBytes = 1 << 24;
+constexpr size_t kMaxLen = kMaxBytes;
+void* MemPool[kMaxThreads][kMaxLen];
+
+void dirtyMem(void* ptr, size_t bytes) {
+  memset(ptr, 1U, bytes);
+}
+
+void ThreadTask(int id, size_t allocSize) {
+  // In the following, we will first allocate blocks with kMaxBytes of memory
+  // and release all of them in random order. In the end, we will do another
+  // round of allocations until it reaches 1/10 kMaxBytes.
+
+  // Total number of blocks
+  const size_t maxCounts = kMaxBytes / allocSize;
+  // The number of blocks in the end
+  const size_t finalCounts = maxCounts / 10;
+
+  for (size_t i = 0; i < maxCounts; ++i) {
+    MemPool[id][i] = malloc(allocSize);
+    if (MemPool[id][i] == 0) {
+      std::cout << "Allocation failure."
+                   "Please consider reducing the number of threads"
+                << std::endl;
+      exit(1);
+    }
+    dirtyMem(MemPool[id][i], allocSize);
+  }
+
+  // Each allocator may apply different strategies to manage the free blocks and
+  // each strategy may have different impacts on future memory usage. For
+  // example, managing free blocks in simple FIFO list may have its memory usage
+  // highly correlated with the blocks releasing pattern. Therefore, release the
+  // blocks in random order to observe the impact of free blocks handling.
+  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
+  std::shuffle(MemPool[id], MemPool[id] + maxCounts, std::default_random_engine(seed));
+  for (size_t i = 0; i < maxCounts; ++i) {
+    free(MemPool[id][i]);
+    MemPool[id][i] = nullptr;
+  }
+
+  for (size_t i = 0; i < finalCounts; ++i) {
+    MemPool[id][i] = malloc(allocSize);
+    dirtyMem(MemPool[id][i], allocSize);
+  }
+}
+
+void StressSizeClass(size_t numThreads, size_t allocSize) {
+  // We would like to see the minimum memory usage under aggressive page
+  // releasing.
+  mallopt(M_DECAY_TIME, 0);
+
+  std::thread* threads[kMaxThreads];
+  for (size_t i = 0; i < numThreads; ++i) threads[i] = new std::thread(ThreadTask, i, allocSize);
+
+  for (size_t i = 0; i < numThreads; ++i) {
+    threads[i]->join();
+    delete threads[i];
+  }
+
+  // Do an explicit purge to ensure we will be more likely to get the actual
+  // in-use memory.
+  mallopt(M_PURGE, 0);
+
+  android::meminfo::ProcMemInfo proc_mem(getpid());
+  const std::vector<android::meminfo::Vma>& maps = proc_mem.MapsWithoutUsageStats();
+  uint64_t rss_bytes = 0;
+  uint64_t vss_bytes = 0;
+
+  for (auto& vma : maps) {
+    if (vma.name == "[anon:libc_malloc]" || android::base::StartsWith(vma.name, "[anon:scudo:") ||
+        android::base::StartsWith(vma.name, "[anon:GWP-ASan")) {
+      android::meminfo::Vma update_vma(vma);
+      if (!proc_mem.FillInVmaStats(update_vma)) {
+        std::cout << "Failed to parse VMA" << std::endl;
+        exit(1);
+      }
+      rss_bytes += update_vma.usage.rss;
+      vss_bytes += update_vma.usage.vss;
+    }
+  }
+
+  std::cout << "RSS: " << rss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+  std::cout << "VSS: " << vss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+
+  for (size_t i = 0; i < numThreads; ++i) {
+    for (size_t j = 0; j < kMaxLen; ++j) free(MemPool[i][j]);
+  }
+}
+
+int main(int argc, char* argv[]) {
+  if (argc != 3) {
+    std::cerr << "usage: " << argv[0] << " $NUM_THREADS $ALLOC_SIZE" << std::endl;
+    return 1;
+  }
+
+  size_t numThreads = atoi(argv[1]);
+  size_t allocSize = atoi(argv[2]);
+
+  if (numThreads == 0 || allocSize == 0) {
+    std::cerr << "Please provide valid $NUM_THREADS and $ALLOC_SIZE" << std::endl;
+    return 1;
+  }
+
+  if (numThreads > kMaxThreads) {
+    std::cerr << "The max number of threads is " << kMaxThreads << std::endl;
+    return 1;
+  }
+
+  StressSizeClass(numThreads, allocSize);
+
+  return 0;
+}
diff --git a/benchmarks/spawn/AndroidTest.xml b/benchmarks/spawn/AndroidTest.xml
index 466dc7f..5232aa0 100644
--- a/benchmarks/spawn/AndroidTest.xml
+++ b/benchmarks/spawn/AndroidTest.xml
@@ -4,18 +4,18 @@
 
     <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
         <option name="cleanup" value="true" />
-        <option name="push" value="bionic-spawn-benchmarks->/data/local/tmp/bionic-spawn-benchmarks" />
+        <option name="push" value="bionic-spawn-benchmarks->/data/local/tests/unrestricted/bionic-spawn-benchmarks" />
     </target_preparer>
 
     <!-- TODO(b/120549168): This seems necessary for consistent results on a walleye, but it's not working with atest
     <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="push" value="perf-setup.sh->/data/local/tmp/perf-setup.sh" />
-        <option name="post-push" value="chmod 755 /data/local/tmp/perf-setup.sh;/data/local/tmp/perf-setup.sh" />
+        <option name="push" value="perf-setup.sh->/data/local/tests/unrestricted/perf-setup.sh" />
+        <option name="post-push" value="chmod 755 /data/local/tests/unrestricted/perf-setup.sh;/data/local/tests/unrestricted/perf-setup.sh" />
     </target_preparer>
     -->
 
     <test class="com.android.tradefed.testtype.GoogleBenchmarkTest" >
-        <option name="native-benchmark-device-path" value="/data/local/tmp" />
+        <option name="native-benchmark-device-path" value="/data/local/tests/unrestricted" />
         <option name="benchmark-module-name" value="bionic-spawn-benchmarks" />
 
         <!-- The GoogleBenchmarkTest class ordinarily expects every file in the benchmark's
diff --git a/docs/clang_fortify_anatomy.md b/docs/clang_fortify_anatomy.md
new file mode 100644
index 0000000..4b95fdc
--- /dev/null
+++ b/docs/clang_fortify_anatomy.md
@@ -0,0 +1,841 @@
+*This document was originally written for a broad audience, and it was*
+*determined that it'd be good to hold in Bionic's docs, too. Due to the*
+*ever-changing nature of code, it tries to link to a stable tag of*
+*Bionic's libc, rather than the live code in Bionic. Same for Clang.*
+*Reader beware. :)*
+
+# The Anatomy of Clang FORTIFY
+
+## Objective
+
+The intent of this document is to run through the minutiae of how Clang FORTIFY
+actually works in Bionic at the time of writing. Other FORTIFY implementations
+that target Clang should use very similar mechanics. This document exists in part
+because many Clang-specific features serve multiple purposes simultaneously, so
+getting up-to-speed on how things function can be quite difficult.
+
+## Background
+
+FORTIFY is a broad suite of extensions to libc aimed at catching misuses of
+common library functions. Textually, these extensions exist purely in libc, but
+all implementations of FORTIFY rely heavily on C language extensions in order
+to function at all.
+
+Broadly, FORTIFY implementations try to guard against many misuses of C
+standard(-ish) libraries:
+- Buffer overruns in functions where pointers+sizes are passed (e.g., `memcpy`,
+  `poll`), or where sizes exist implicitly (e.g., `strcpy`).
+- Arguments with incorrect values passed to libc functions (e.g.,
+  out-of-bounds bits in `umask`).
+- Missing arguments to functions (e.g., `open()` with `O_CREAT`, but no mode
+  bits).
+
+FORTIFY is traditionally enabled by passing `-D_FORTIFY_SOURCE=N` to your
+compiler. `N==0` disables FORTIFY, whereas `N==1`, `N==2`, and `N==3` enable
+increasingly strict versions of it. In general, FORTIFY doesn't require user
+code changes; that said, some code patterns
+are [incompatible with stricter versions of FORTIFY checking]. This is largely
+because FORTIFY has significant flexibility in what it considers to be an
+"out-of-bounds" access.
+
+FORTIFY implementations use a mix of compiler diagnostics and runtime checks to
+flag and/or mitigate the impacts of the misuses mentioned above.
+
+Further, given FORTIFY's design, the effectiveness of FORTIFY is a function of
+-- among other things -- the optimization level you're compiling your code at.
+Many FORTIFY implementations are implicitly disabled when building with `-O0`,
+since FORTIFY's design for both Clang and GCC relies on optimizations in order
+to provide useful run-time checks. For the purpose of this document, all
+analysis of FORTIFY functions and commentary on builtins assume that code is
+being built with some optimization level > `-O0`.
+
+### A note on GCC
+
+This document talks specifically about Bionic's FORTIFY implementation targeted
+at Clang. While GCC also provides a set of language extensions necessary to
+implement FORTIFY, these tools are different from what Clang offers. This
+divergence is an artifact of Clang and GCC's differing architecture as
+compilers.
+
+Textually, quite a bit can be shared between a FORTIFY implementation for GCC
+and one for Clang (e.g., see [ChromeOS' Glibc patch]), but this kind of sharing
+requires things like macros that expand to unbalanced braces depending on your
+compiler:
+
+```c
+/*
+ * Highly simplified; if you're interested in FORTIFY's actual implementation,
+ * please see the patch linked above.
+ */
+#ifdef __clang__
+# define FORTIFY_PRECONDITIONS
+# define FORTIFY_FUNCTION_END
+#else
+# define FORTIFY_PRECONDITIONS {
+# define FORTIFY_FUNCTION_END }
+#endif
+
+/*
+ * FORTIFY_WARNING_ONLY_IF_SIZE_OF_BUF_LESS_THAN is not defined, due to its
+ * complexity and irrelevance. It turns into a compile-time warning if the
+ * compiler can determine `*buf` has fewer than `size` bytes available.
+ */
+
+char *getcwd(char *buf, size_t size)
+FORTIFY_PRECONDITIONS
+  FORTIFY_WARNING_ONLY_IF_SIZE_OF_BUF_LESS_THAN(buf, size, "`buf` is too smol.")
+{
+  // Actual shared function implementation goes here.
+}
+FORTIFY_FUNCTION_END
+```
+
+All talk of GCC-focused implementations and how to merge Clang and GCC
+implementations is out-of-scope for this doc, however.
+
+## The Life of a Clang FORTIFY Function
+
+As referenced in the Background section, FORTIFY performs many different checks
+for many functions. This section intends to go through real-world examples of
+FORTIFY functions in Bionic, breaking down how each part of these functions
+work, and how the pieces fit together to provide FORTIFY-like functionality.
+
+While FORTIFY implementations may differ between stdlibs, they broadly follow
+the same patterns when implementing their checks for Clang, and they try to
+make similar promises with respect to FORTIFY compiling to be zero-overhead in
+some cases, etc. Moreover, while this document specifically examines Bionic,
+many stdlibs will operate _very similarly_ to Bionic in their Clang FORTIFY
+implementations.
+
+**In general, when reading the below, be prepared for exceptions, subtlety, and
+corner cases. The individual function breakdowns below try to not offer
+redundant information. Each one focuses on different aspects of FORTIFY.**
+
+### Terminology
+
+Because FORTIFY should be mostly transparent to developers, there are inherent
+naming collisions here: `memcpy(x, y, z)` turns into fundamentally different
+generated code depending on the value of `_FORTIFY_SOURCE`. Further, said
+`memcpy` call with `_FORTIFY_SOURCE` enabled needs to be able to refer to the
+`memcpy` that would have been called, had `_FORTIFY_SOURCE` been disabled.
+Hence, the following convention is followed in the subsections below for all
+prose (namely, multiline code blocks are exempted from this):
+
+- Standard library function names preceded by `__builtin_` refer to the use of
+  the function with `_FORTIFY_SOURCE` disabled.
+- Standard library function names without a prefix refer to the use of the
+  function with `_FORTIFY_SOURCE` enabled.
+
+This convention also applies in `clang`. `__builtin_memcpy` will always call
+`memcpy` as though `_FORTIFY_SOURCE` were disabled.
+
+## Breakdown of `mempcpy`
+
+The [FORTIFY'ed version of `mempcpy`] is a full, featureful example of a
+FORTIFY'ed function from Bionic. From the user's perspective, it supports a few
+things:
+- Producing a compile-time error if the number of bytes to copy trivially
+  exceeds the number of bytes available at the destination pointer.
+- If the `mempcpy` has the potential to write to more bytes than what is
+  available at the destination, a run-time check is inserted to crash the
+  program if more bytes are written than what is allowed.
+- Compiling away to be zero overhead when none of the buffer sizes can be
+  determined at compile-time[^1].
+
+The declaration in Bionic's headers for `__builtin_mempcpy` is:
+```c
+void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
+```
+
+Which is annotated with nothing special, except for Bionic's versioner, which
+is Android-specific (and orthogonal to FORTIFY anyway), so it will be ignored.
+
+The [source for `mempcpy`] in Bionic's headers for is:
+```c
+__BIONIC_FORTIFY_INLINE
+void* mempcpy(void* const dst __pass_object_size0, const void* src, size_t copy_amount)
+        __overloadable
+        __clang_error_if(__bos_unevaluated_lt(__bos0(dst), copy_amount),
+                         "'mempcpy' called with size bigger than buffer") {
+#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
+    size_t bos_dst = __bos0(dst);
+    if (!__bos_trivially_ge(bos_dst, copy_amount)) {
+        return __builtin___mempcpy_chk(dst, src, copy_amount, bos_dst);
+    }
+#endif
+    return __builtin_mempcpy(dst, src, copy_amount);
+}
+```
+
+Expanding some of the important macros here, this function expands to roughly:
+```c
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+void* mempcpy(
+        void* const dst __attribute__((pass_object_size(0))),
+        const void* src,
+        size_t copy_amount)
+        __attribute__((overloadable))
+        __attribute__((diagnose_if(
+            __builtin_object_size(dst, 0) != -1 && __builtin_object_size(dst, 0) <= copy_amount),
+            "'mempcpy' called with size bigger than buffer"))) {
+#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
+    size_t bos_dst = __builtin_object_size(dst, 0);
+    if (!(__bos_trivially_ge(bos_dst, copy_amount))) {
+        return __builtin___mempcpy_chk(dst, src, copy_amount, bos_dst);
+    }
+#endif
+    return __builtin_mempcpy(dst, src, copy_amount);
+}
+```
+
+So let's walk through this step by step, to see how FORTIFY does what it says on
+the tin here.
+
+[^1]: "Zero overhead" in a way [similar to C++11's `std::unique_ptr`]: this will
+turn into a direct call `__builtin_mempcpy` (or an optimized form thereof) with
+no other surrounding checks at runtime. However, the additional complexity may
+hinder optimizations that are performed before the optimizer can prove that the
+`if (...) { ... }` can be optimized out. Depending on how late this happens,
+the additional complexity may skew inlining costs, hide opportunities for e.g.,
+`memcpy` coalescing, etc etc.
+
+### How does Clang select `mempcpy`?
+
+First, it's critical to notice that `mempcpy` is marked `overloadable`. This
+function is a `static inline __attribute__((always_inline))` overload of
+`__builtin_mempcpy`:
+- `__attribute__((overloadable))` allows us to perform overloading in C.
+- `__attribute__((overloadable))` mangles all calls to functions marked with
+  `__attribute__((overloadable))`.
+- `__attribute__((overloadable))` allows exactly one function signature with a
+  given name to not be marked with `__attribute__((overloadable))`. Calls to
+  this overload will not be mangled.
+
+Second, one might note that this `mempcpy` implementation has the same C-level
+signature as `__builtin_mempcpy`. `pass_object_size` is a Clang attribute that
+is generally needed by FORTIFY, but it carries the side-effect that functions
+may be overloaded simply on the presence (or lack of presence) of
+`pass_object_size` attributes. Given two overloads of a function that only
+differ on the presence of `pass_object_size` attributes, the candidate with
+`pass_object_size` attributes is preferred.
+
+Finally, the prior paragraph gets thrown out if one tries to take the address of
+`mempcpy`. It is impossible to take the address of a function with one or more
+parameters that are annotated with `pass_object_size`. Hence,
+`&__builtin_mempcpy == &mempcpy`. Further, because this is an issue of overload
+resolution, `(&mempcpy)(x, y, z);` is functionally identical to
+`__builtin_mempcpy(x, y, z);`.
+
+All of this accomplishes the following:
+- Direct calls to `mempcpy` should call the FORTIFY-protected `mempcpy`.
+- Indirect calls to `&mempcpy` should call `__builtin_mempcpy`.
+
+### How does Clang offer compile-time diagnostics?
+
+Once one is convinced that the FORTIFY-enabled overload of `mempcpy` will be
+selected for direct calls, Clang's `diagnose_if` and `__builtin_object_size` do
+all of the work from there.
+
+Subtleties here primarily fall out of the discussion in the above section about
+`&__builtin_mempcpy == &mempcpy`:
+```c
+#define _FORTIFY_SOURCE 2
+#include <string.h>
+void example_code() {
+  char buf[4]; // ...Assume sizeof(char) == 1.
+  const char input_buf[] = "Hello, World";
+  mempcpy(buf, input_buf, 4); // Valid, no diagnostic issued.
+
+  mempcpy(buf, input_buf, 5); // Emits a compile-time error since sizeof(buf) < 5.
+  __builtin_mempcpy(buf, input_buf, 5); // No compile-time error.
+  (&mempcpy)(buf, input_buf, 5); // No compile-time error, since __builtin_mempcpy is selected.
+}
+```
+
+Otherwise, the rest of this subsection is dedicated to preliminary discussion
+about `__builtin_object_size`.
+
+Clang's frontend can do one of two things with `__builtin_object_size(p, n)`:
+- Evaluate it as a constant.
+  - This can either mean declaring that the number of bytes at `p` is definitely
+    impossible to know, so the default value is used, or the number of bytes at
+    `p` can be known without optimizations.
+- Declare that the expression cannot form a constant, and lower it to
+  `@llvm.objectsize`, which is discussed in depth later.
+
+In the examples above, since `diagnose_if` is evaluated with context from the
+caller, Clang should be able to trivially determine that `buf` refers to a
+`char` array with 4 elements.
+
+The primary consequence of the above is that diagnostics can only be emitted if
+no optimizations are required to detect a broken code pattern. To be specific,
+clang's constexpr evaluator must be able to determine the logical object that
+any given pointer points to in order to fold `__builtin_object_size` to a
+constant, non-default answer:
+
+```c
+#define _FORTIFY_SOURCE 2
+#include <string.h>
+void example_code() {
+  char buf[4]; // ...Assume sizeof(char) == 1.
+  const char input_buf[] = "Hello, World";
+  mempcpy(buf, input_buf, 4); // Valid, no diagnostic issued.
+  mempcpy(buf, input_buf, 5); // Emits a compile-time error since sizeof(buf) < 5.
+  char *buf_ptr = buf;
+  mempcpy(buf_ptr, input_buf, 5); // No compile-time error; `buf_ptr`'s target can't be determined.
+}
+```
+
+### How does Clang insert run-time checks?
+
+This section expands on the following statement: FORTIFY has zero runtime cost
+in instances where there is no chance of catching a bug at run-time. Otherwise,
+it introduces a tiny additional run-time cost to ensure that functions aren't
+misused.
+
+In prior sections, the following was established:
+- `overloadable` and `pass_object_size` prompt Clang to always select this
+  overload of `mempcpy` over `__builtin_mempcpy` for direct calls.
+- If a call to `mempcpy` was trivially broken, Clang would produce a
+  compile-time error, rather than producing a binary.
+
+Hence, the case we're interested in here is one where Clang's frontend selected
+a FORTIFY'ed function's implementation for a function call, but was unable to
+find anything seriously wrong with said function call. Since the frontend is
+powerless to detect bugs at this point, our focus shifts to the mechanisms that
+LLVM uses to support FORTIFY.
+
+Going back to Bionic's `mempcpy` implementation, we have the following (ignoring
+diagnose_if and assuming run-time checks are enabled):
+```c
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+void* mempcpy(
+        void* const dst __attribute__((pass_object_size(0))),
+        const void* src,
+        size_t copy_amount)
+        __attribute__((overloadable)) {
+    size_t bos_dst = __builtin_object_size(dst, 0);
+    if (bos_dst != -1 &&
+        !(__builtin_constant_p(copy_amount) && bos_dst >= copy_amount)) {
+        return __builtin___mempcpy_chk(dst, src, copy_amount, bos_dst);
+    }
+    return __builtin_mempcpy(dst, src, copy_amount);
+}
+```
+
+In other words, we have a `static`, `always_inline` function which:
+- If `__builtin_object_size(dst, 0)` cannot be determined (in which case, it
+  returns -1), calls `__builtin_mempcpy`.
+- Otherwise, if `copy_amount` can be folded to a constant, and if
+  `__builtin_object_size(dst, 0) >= copy_amount`, calls `__builtin_mempcpy`.
+- Otherwise, calls `__builtin___mempcpy_chk`.
+
+
+How can this be "zero overhead"? Let's focus on the following part of the
+function:
+
+```c
+    size_t bos_dst = __builtin_object_size(dst, 0);
+    if (bos_dst != -1 &&
+        !(__builtin_constant_p(copy_amount) && bos_dst >= copy_amount)) {
+```
+
+If Clang's frontend cannot determine a value for `__builtin_object_size`, Clang
+lowers it to LLVM's `@llvm.objectsize` intrinsic. The `@llvm.objectsize`
+invocation corresponding to `__builtin_object_size(p, 0)` is guaranteed to
+always fold to a constant value by the time LLVM emits machine code.
+
+Hence, `bos_dst` is guaranteed to be a constant; if it's -1, the above branch
+can be eliminated entirely, since it folds to `if (false && ...)`. Further, the
+RHS of the `&&` in this branch has us call `__builtin_mempcpy` if `copy_amount`
+is a known value less than `bos_dst` (yet another constant value). Therefore,
+the entire condition is always knowable when LLVM is done with LLVM IR-level
+optimizations, so no condition is ever emitted to machine code in practice.
+
+#### Why is "zero overhead" in quotes? Why is `unique_ptr` relevant?
+
+`__builtin_object_size` and `__builtin_constant_p` are forced to be constants
+after most optimizations take place. Until LLVM replaces both of these with
+constants and optimizes them out, we have additional branches and function calls
+in our IR. This can have negative effects, such as distorting inlining costs and
+inhibiting optimizations that are conservative around branches in control-flow.
+
+So FORTIFY is free in these cases _in isolation of any of the code around it_.
+Due to its implementation, it may impact the optimizations that occur on code
+around the literal call to the FORTIFY-hardened libc function.
+
+`unique_ptr` was just the first thing that came to the author's mind for "the
+type should be zero cost with any level of optimization enabled, but edge-cases
+might make it only-mostly-free to use."
+
+### How is checking actually performed?
+
+In cases where checking can be performed (e.g., where we call
+`__builtin___mempcpy_chk(dst, src, copy_amount, bos_dst);`), Bionic provides [an
+implementation for `__mempcpy_chk`]. This is:
+
+```c
+extern "C" void* __mempcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
+  __check_count("mempcpy", "count", count);
+  __check_buffer_access("mempcpy", "write into", count, dst_len);
+  return mempcpy(dst, src, count);
+}
+```
+This function itself boils down to a few small branches which abort the program
+if they fail, and a direct call to `__builtin_mempcpy`.
+
+### Wrapping up
+
+In the above breakdown, it was shown how Clang and Bionic work together to:
+- represent FORTIFY-hardened overloads of functions,
+- report misuses of stdlib functions at compile-time, and
+- insert run-time checks for uses of functions that might be incorrect, but only
+  if we have the potential of proving the incorrectness of these.
+
+## Breakdown of open
+
+In Bionic, the [FORTIFY'ed implementation of `open`] is quite large. Much like
+`mempcpy`, the `__builtin_open` declaration is simple:
+
+```c
+int open(const char* __path, int __flags, ...);
+```
+
+With some macros expanded, the FORTIFY-hardened header implementation is:
+```c
+int __open_2(const char*, int);
+int __open_real(const char*, int, ...) __asm__(open);
+
+#define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
+
+static
+int open(const char* pathname, int flags, mode_t modes, ...) __overloadable
+        __attribute__((diagnose_if(1, "error", "too many arguments")));
+
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+int open(const char* const __attribute__((pass_object_size(1))) pathname, int flags)
+        __attribute__((overloadable))
+        __attribute__((diagnose_if(
+            __open_modes_useful(flags),
+            "error",
+            "'open' called with O_CREAT or O_TMPFILE, but missing mode"))) {
+#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
+    return __open_2(pathname, flags);
+#else
+    return __open_real(pathname, flags);
+#endif
+}
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+int open(const char* const __attribute__((pass_object_size(1))) pathname, int flags, mode_t modes)
+        __attribute__((overloadable))
+        __clang_warning_if(!__open_modes_useful(flags) && modes,
+                           "'open' has superfluous mode bits; missing O_CREAT?") {
+    return __open_real(pathname, flags, modes);
+}
+```
+
+Which may be a lot to take in.
+
+Before diving too deeply, please note that the remainder of these subsections
+assume that the programmer didn't make any egregious typos. Moreover, there's no
+real way that Bionic tries to prevent calls to `open` like
+`open("foo", 0, "how do you convert a const char[N] to mode_t?");`. The only
+real C-compatible solution the author can think of is "stamp out many overloads
+to catch sort-of-common instances of this very uncommon typo." This isn't great.
+
+More directly, no effort is made below to recognize calls that, due to
+incompatible argument types, cannot go to any `open` implementation other than
+`__builtin_open`, since it's recognized right here. :)
+
+### Implementation breakdown
+
+This `open` implementation does a few things:
+- Turns calls to `open` with too many arguments into a compile-time error.
+- Diagnoses calls to `open` with missing modes at compile-time and run-time
+  (both cases turn into errors).
+- Emits warnings on calls to `open` with useless mode bits, unless the mode bits
+  are all 0.
+
+One common bit of code not explained below is the `__open_real` declaration above:
+```c
+int __open_real(const char*, int, ...) __asm__(open);
+```
+
+This exists as a way for us to call `__builtin_open` without needing clang to
+have a pre-defined `__builtin_open` function.
+
+#### Compile-time error on too many arguments
+
+```c
+static
+int open(const char* pathname, int flags, mode_t modes, ...) __overloadable
+        __attribute__((diagnose_if(1, "error", "too many arguments")));
+```
+
+Which matches most calls to open that supply too many arguments, since
+`int(const char *, int, ...)` matches less strongly than
+`int(const char *, int, mode_t, ...)` for calls where the 3rd arg can be
+converted to `mode_t` without too much effort. Because of the `diagnose_if`
+attribute, all of these calls turn into compile-time errors.
+
+#### Compile-time or run-time error on missing arguments
+The following overload handles all two-argument calls to `open`.
+```c
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+int open(const char* const __attribute__((pass_object_size(1))) pathname, int flags)
+        __attribute__((overloadable))
+        __attribute__((diagnose_if(
+            __open_modes_useful(flags),
+            "error",
+            "'open' called with O_CREAT or O_TMPFILE, but missing mode"))) {
+#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
+    return __open_2(pathname, flags);
+#else
+    return __open_real(pathname, flags);
+#endif
+}
+```
+
+Like `mempcpy`, `diagnose_if` handles emitting a compile-time error if the call
+to `open` is broken in a way that's visible to Clang's frontend. This
+essentially boils down to "`open` is being called with a `flags` value that
+requires mode bits to be set."
+
+If that fails to catch a bug, we [unconditionally call `__open_2`], which
+performs a run-time check:
+```c
+int __open_2(const char* pathname, int flags) {
+  if (needs_mode(flags)) __fortify_fatal("open: called with O_CREAT/O_TMPFILE but no mode");
+  return FDTRACK_CREATE_NAME("open", __openat(AT_FDCWD, pathname, force_O_LARGEFILE(flags), 0));
+}
+```
+
+#### Compile-time warning if modes are pointless
+
+Finally, we have the following `open` call:
+```c
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+int open(const char* const __attribute__((pass_object_size(1))) pathname, int flags, mode_t modes)
+        __attribute__((overloadable))
+        __clang_warning_if(!__open_modes_useful(flags) && modes,
+                           "'open' has superfluous mode bits; missing O_CREAT?") {
+    return __open_real(pathname, flags, modes);
+}
+```
+
+This simply issues a warning if Clang's frontend can determine that `flags`
+isn't necessary. Due to conventions in existing code, a `modes` value of `0` is
+not diagnosed.
+
+#### What about `&open`?
+One yet-unaddressed aspect of the above is how `&open` works. This is thankfully
+a short answer:
+- It happens that `open` takes a parameter of type `const char*`.
+- It happens that `pass_object_size` -- an attribute only applicable to
+  parameters of type `T*` --  makes it impossible to take the address of a
+  function.
+
+Since clang doesn't support a "this function should never have its address
+taken," attribute, Bionic uses the next best thing: `pass_object_size`. :)
+
+## Breakdown of poll
+
+(Preemptively: at the time of writing, Clang has no literal `__builtin_poll`
+builtin. `__builtin_poll` is referenced below to remain consistent with the
+convention established in the Terminology section.)
+
+Bionic's `poll` implementation is closest to `mempcpy` above, though it has a
+few interesting aspects worth examining.
+
+The [full header implementation of `poll`] is, with some macros expanded:
+```c
+#define __bos_fd_count_trivially_safe(bos_val, fds, fd_count) \
+  ((bos_val) == -1) || \
+    (__builtin_constant_p(fd_count) && \
+    (bos_val) >= sizeof(*fds) * (fd_count)))
+
+static
+__inline__
+__attribute__((no_stack_protector))
+__attribute__((always_inline))
+int poll(struct pollfd* const fds __attribute__((pass_object_size(1))), nfds_t fd_count, int timeout)
+    __attribute__((overloadable))
+    __attriubte__((diagnose_if(
+       __builtin_object_size(fds, 1) != -1 && __builtin_object_size(fds, 1) < sizeof(*fds) * fd_count,
+        "error",
+        "in call to 'poll', fd_count is larger than the given buffer"))) {
+  size_t bos_fds = __builtin_object_size(fds, 1);
+  if (!__bos_fd_count_trivially_safe(bos_fds, fds, fd_count)) {
+    return __poll_chk(fds, fd_count, timeout, bos_fds);
+  }
+  return (&poll)(fds, fd_count, timeout);
+}
+```
+
+To get the commonality with `mempcpy` and `open` out of the way:
+- This function is an overload with `__builtin_poll`.
+- The signature is the same, modulo the presence of a `pass_object_size`
+  attribute. Hence, for direct calls, overload resolution will always prefer it
+  over `__builtin_poll`. Taking the address of `poll` is forbidden, so all
+  references to `&poll` actually reference `__builtin_poll`.
+- When `fds` is too small to hold `fd_count` `pollfd`s, Clang will emit a
+  compile-time error if possible using `diagnose_if`.
+- If this can't be observed until run-time, `__poll_chk` verifies this.
+- When `fds` is a constant according to `__builtin_constant_p`, this always
+  compiles into `__poll_chk` for always-broken calls to `poll`, or
+  `__builtin_poll` for always-safe calls to `poll`.
+
+The critical bits to highlight here are on this line:
+```c
+int poll(struct pollfd* const fds __attribute__((pass_object_size(1))), nfds_t fd_count, int timeout)
+```
+
+And this line:
+```c
+  return (&poll)(fds, fd_count, timeout);
+```
+
+Starting with the simplest, we call `__builtin_poll` with `(&poll)(...);`. As
+referenced above, taking the address of an overloaded function where all but one
+overload has a `pass_object_size` attribute on one or more parameters always
+resolves to the function without any `pass_object_size` attributes.
+
+The other line deserves a section. The subtlety of it is almost entirely in the
+use of `pass_object_size(1)` instead of `pass_object_size(0)`. on the `fds`
+parameter, and the corresponding use of `__builtin_object_size(fds, 1);` in the
+body of `poll`.
+
+### Subtleties of __builtin_object_size(p, N)
+
+Earlier in this document, it was said that a full description of each
+attribute/builtin necessary to power FORTIFY was out of scope. This is... only
+somewhat the case when we talk about `__builtin_object_size` and
+`pass_object_size`, especially when their second argument is `1`.
+
+#### tl;dr
+`__builtin_object_size(p, N)` and `pass_object_size(N)`, where `(N & 1) == 1`,
+can only be accurately determined by Clang. LLVM's `@llvm.objectsize` intrinsic
+ignores the value of `N & 1`, since handling `(N & 1) == 1` accurately requires
+data that's currently entirely inaccessible to LLVM, and that is difficult to
+preserve through LLVM's optimization passes.
+
+`pass_object_size`'s "lifting" of the evaluation of
+`__builtin_object_size(p, N)` to the caller is critical, since it allows Clang
+full visibility into the expression passed to e.g., `poll(&foo->bar, baz, qux)`.
+It's not a perfect solution, but it allows `N == 1` to be fully accurate in at
+least some cases.
+
+#### Background
+Clang's implementation of `__builtin_object_size` aims to be compatible with
+GCC's, which has [a decent bit of documentation]. Put simply,
+`__builtin_object_size(p, N)` is intended to evaluate at compile-time how many
+bytes can be accessed after `p` in a well-defined way. Straightforward examples
+of this are:
+```c
+char buf[8];
+assert(__builtin_object_size(buf, N) == 8);
+assert(__builtin_object_size(buf + 1, N) == 7);
+```
+
+This should hold for all values of N that are valid to pass to
+`__builtin_object_size`. The `N` value of `__builtin_object_size` is a mask of
+settings.
+
+##### (N & 2) == ?
+
+This is mostly for completeness sake; in Bionic's FORTIFY implementation, N is
+always either 0 or 1.
+
+If there are multiple possible values of `p` in a call to
+`__builtin_object_size(p, N)`, the second bit in `N` determines the behavior of
+the compiler. If `(N & 2) == 0`, `__builtin_object_size` should return the
+greatest possible size for each possible value of `p`. Otherwise, it should
+return the least possible value. For example:
+
+```c
+char smol_buf[7];
+char buf[8];
+char *p = rand() ? smol_buf : buf;
+assert(__builtin_object_size(p, 0) == 8);
+assert(__builtin_object_size(p, 2) == 7);
+```
+
+##### (N & 1) == 0
+
+`__builtin_object_size(p, 0)` is more or less as simple as the example in the
+Background section directly above. When Clang attempts to evaluate
+`__builtin_object_size(p, 0);` and when LLVM tries to determine the result of a
+corresponding `@llvm.objectsize` call to, they search for the storage underlying
+the pointer in question. If that can be determined, Clang or LLVM can provide an
+answer; otherwise, they cannot.
+
+##### (N & 1) == 1, and the true magic of pass_object_size
+
+`__builtin_object_size(p, 1)` has a less uniform implementation between LLVM and
+Clang. According to GCC's documentation, "If the least significant bit [of
+__builtin_object_size's second argument] is clear, objects are whole variables,
+if it is set, a closest surrounding subobject is considered the object a pointer
+points to."
+
+The "closest surrounding subobject," means that `(N & 1) == 1` depends on type
+information in order to operate in many cases. Consider the following examples:
+```c
+struct Foo {
+  int a;
+  int b;
+};
+
+struct Foo foo;
+assert(__builtin_object_size(&foo, 0) == sizeof(foo));
+assert(__builtin_object_size(&foo, 1) == sizeof(foo));
+assert(__builtin_object_size(&foo->a, 0) == sizeof(foo));
+assert(__builtin_object_size(&foo->a, 1) == sizeof(int));
+
+struct Foo foos[2];
+assert(__builtin_object_size(&foos[0], 0) == 2 * sizeof(foo));
+assert(__builtin_object_size(&foos[0], 1) == sizeof(foo));
+assert(__builtin_object_size(&foos[0]->a, 0) == 2 * sizeof(foo));
+assert(__builtin_object_size(&foos[0]->a, 1) == sizeof(int));
+```
+
+...And perhaps somewhat surprisingly:
+```c
+void example(struct Foo *foo) {
+  // (As a reminder, `-1` is "I don't know" when `(N & 2) == 0`.)
+  assert(__builtin_object_size(foo, 0) == -1);
+  assert(__builtin_object_size(foo, 1) == -1);
+  assert(__builtin_object_size(foo->a, 0) == -1);
+  assert(__builtin_object_size(foo->a, 1) == sizeof(int));
+}
+```
+
+In Clang, [this type-aware requirement poses problems for us]: Clang's frontend
+knows everything we could possibly want about the types of variables, but
+optimizations are only performed by LLVM. LLVM has no reliable source for C or
+C++ data types, so calls to `__builtin_object_size(p, N)` that cannot be
+resolved by clang are lowered to the equivalent of
+`__builtin_object_size(p, N & ~1)` in LLVM IR.
+
+Moreover, Clang's frontend is the best-equipped part of the compiler to
+accurately determine the answer for `__builtin_object_size(p, N)`, given we know
+what `p` is. LLVM is the best-equipped part of the compiler to determine the
+value of `p`. This ordering issue is unfortunate.
+
+This is where `pass_object_size(N)` comes in. To summarize [the docs for
+`pass_object_size`], it evaluates `__builtin_object_size(p, N)` within the
+context of the caller of the function annotated with `pass_object_size`, and
+passes the value of that into the callee as an invisible parameter. All calls to
+`__builtin_object_size(parameter, N)` are substituted with references to this
+invisible parameter.
+
+Putting this plainly, Clang's frontend struggles to evaluate the following:
+```c
+int foo(void *p) {
+  return __builtin_object_size(p, 1);
+}
+
+void bar() {
+  struct { int i, j } k;
+  // The frontend can't figure this interprocedural objectsize out, so it gets lowered to
+  // LLVM, which determines that the answer here is sizeof(k).
+  int baz = foo(&k.i);
+}
+```
+
+However, with the magic of `pass_object_size`, we get one level of inlining to
+look through:
+```c
+int foo(void *const __attribute__((pass_object_size(1))) p) {
+  return __builtin_object_size(p, 1);
+}
+
+void bar() {
+  struct { int i, j } k;
+  // Due to pass_object_size, this is equivalent to:
+  // int baz = foo(&k.i, __builtin_object_size(&k.i, 1));
+  // ...and `int foo(void *)` is actually equivalent to:
+  // int foo(void *const, size_t size) {
+  //   return size;
+  // }
+  int baz = foo(&k.i);
+}
+```
+
+So we can obtain an accurate result in this case.
+
+##### What about pass_object_size(0)?
+It's sort of tangential, but if you find yourself wondering about the utility of
+`pass_object_size(0)` ... it's somewhat split. `pass_object_size(0)` in Bionic's
+FORTIFY exists mostly for visual consistency, simplicity, and as a useful way to
+have e.g., `&mempcpy` == `&__builtin_mempcpy`.
+
+Outside of these fringe benefits, all of the functions with
+`pass_object_size(0)` on parameters are marked with `always_inline`, so
+"lifting" the `__builtin_object_size` call isn't ultimately very helpful. In
+theory, users can always have something like:
+
+```c
+// In some_header.h
+// This function does cool and interesting things with the `__builtin_object_size` of its parameter,
+// and is able to work with that as though the function were defined inline.
+void out_of_line_function(void *__attribute__((pass_object_size(0))));
+```
+
+Though the author isn't aware of uses like this in practice, beyond a few folks
+on LLVM's mailing list seeming interested in trying it someday.
+
+#### Wrapping up
+In the (long) section above, two things were covered:
+- The use of `(&poll)(...);` is a convenient shorthand for calling
+  `__builtin_poll`.
+- `__builtin_object_size(p, N)` with `(N & 1) == 1` is not easy for Clang to
+  answer accurately, since it relies on type info only available in the
+  frontend, and it sometimes relies on optimizations only available in the
+  middle-end. `pass_object_size` helps mitigate this.
+
+## Miscellaneous Notes
+The above should be a roughly comprehensive view of how FORTIFY works in the
+real world. The main thing it fails to mention is the use of [the `diagnose_as_builtin` attribute] in Clang.
+
+As time has moved on, Clang has increasingly gained support for emitting
+warnings that were previously emitted by FORTIFY machinery.
+`diagnose_as_builtin` allows us to remove the `diagnose_if`s from some of the
+`static inline` overloads of stdlib functions above, so Clang may diagnose them
+instead.
+
+Clang's built-in diagnostics are often better than `diagnose_if` diagnostics,
+since Clang can format its diagnostics to include e.g., information about the
+sizes of buffers in a suspect call to a function. `diagnose_if` can only have
+the compiler output constant strings.
+
+[ChromeOS' Glibc patch]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/90fa9b27731db10a6010c7f7c25b24028145b091/sys-libs/glibc/files/local/glibc-2.33/0007-glibc-add-clang-style-FORTIFY.patch
+[FORTIFY'ed implementation of `open`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/include/bits/fortify/fcntl.h#41
+[FORTIFY'ed version of `mempcpy`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/include/bits/fortify/string.h#45
+[a decent bit of documentation]: https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html
+[an implementation for `__mempcpy_chk`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/bionic/fortify.cpp#501
+[full header implementation of `poll`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/include/bits/fortify/poll.h#43
+[incompatible with stricter versions of FORTIFY checking]: https://godbolt.org/z/fGfEYxfnf
+[similar to C++11's `std::unique_ptr`]: https://stackoverflow.com/questions/58339165/why-can-a-t-be-passed-in-register-but-a-unique-ptrt-cannot
+[source for `mempcpy`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/include/string.h#55
+[the `diagnose_as_builtin` attribute]: https://releases.llvm.org/14.0.0/tools/clang/docs/AttributeReference.html#diagnose-as-builtin
+[the docs for `pass_object_size`]: https://releases.llvm.org/14.0.0/tools/clang/docs/AttributeReference.html#pass-object-size-pass-dynamic-object-size
+[this type-aware requirement poses problems for us]: https://github.com/llvm/llvm-project/issues/55742
+[unconditionally call `__open_2`]: https://android.googlesource.com/platform/bionic/+/refs/heads/android12-release/libc/bionic/open.cpp#70
diff --git a/docs/status.md b/docs/status.md
index bf246a6..5d2603a 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -29,19 +29,24 @@
   * `gethostid`
   * `shm_open`/`shm_unlink`
   * `sockatmark`
+  * `ualarm`
 
 Missing functionality:
   * `<aio.h>`
   * `<monetary.h>`. See
     [discussion](https://github.com/android/ndk/issues/1182).
   * `<wordexp.h>`
+  * Locales. Although bionic contains the various `_l()` functions, the only
+    locale supported is a UTF-8 C/POSIX locale. Most of the POSIX APIs are
+    insufficient to support the wide range of languages used by Android users,
+    and apps should use icu4c (or do their i18n work in Java) instead.
+  * Robust mutexes. See
+    [discussion](https://github.com/android/ndk/issues/1181).
   * Thread cancellation (`pthread_cancel`). Unlikely to ever be implemented
     because of the difficulty and cost of implementing it, and the difficulty
     of using it correctly. See
     [This is why we can't have safe cancellation points](https://lwn.net/Articles/683118/)
     for more about thread cancellation.
-  * Robust mutexes. See
-    [discussion](https://github.com/android/ndk/issues/1181).
 
 Run `./libc/tools/check-symbols-glibc.py` in bionic/ for the current
 list of POSIX functions implemented by glibc but not by bionic.
@@ -50,6 +55,16 @@
 
 Current libc symbols: https://android.googlesource.com/platform/bionic/+/master/libc/libc.map.txt
 
+New libc functions in U (API level 34):
+  * `close_range` and `copy_file_range` (Linux-specific GNU extensions).
+  * `memset_explicit` in <string.h> (C23 addition).
+  * `__freadahead` in <stdio_ext.h> (in musl but not glibc).
+
+New libc behavior in U (API level 34):
+  * Support for `%b` and `%B` in the printf/wprintf family, `%b` in the
+    scanf/wscanf family, and `0b` prefixes with base 0 in the strtol/wcstol
+    family.
+
 New libc functions in T (API level 33):
   * `backtrace`, `backtrace_symbols`, `backtrace_symbols_fd` (`<execinfo.h>`).
   * New system call wrappers: `preadv2`, `preadv64v2`, `pwritev2`,
diff --git a/libc/Android.bp b/libc/Android.bp
index 97146aa..fb4825d 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -35,7 +35,7 @@
     "stdio/stdio.cpp",
     "stdio/stdio_ext.cpp",
     "stdio/vfscanf.cpp",
-    "stdio/vfwscanf.c",
+    "stdio/vfwscanf.cpp",
 ]
 
 // off64_t/time64_t support on LP32.
@@ -95,7 +95,6 @@
 
     header_libs: [
         "libc_headers",
-        "gwp_asan_headers",
         "liblog_headers",  // needed by bionic/libc/async_safe/include
     ],
     export_header_lib_headers: [
@@ -198,6 +197,9 @@
         arm64: {
             srcs: ["arch-arm64/bionic/__set_tls.c"],
         },
+        riscv64: {
+            srcs: ["arch-riscv64/bionic/__set_tls.c"],
+        },
         x86: {
             srcs: [
                 "arch-x86/bionic/__libc_init_sysinfo.cpp",
@@ -246,10 +248,14 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "tzcode/**/*.c",
         "tzcode/bionic.cpp",
-        "upstream-openbsd/lib/libc/time/wcsftime.c", // tzcode doesn't include wcsftime, so we use the OpenBSD one.
+        // tzcode doesn't include strptime or wcsftime, so we use the OpenBSD
+        // code (with some local changes in the strptime case).
+        "upstream-openbsd/lib/libc/locale/_def_time.c",
+        "upstream-openbsd/lib/libc/time/wcsftime.c",
     ],
 
     cflags: [
@@ -259,18 +265,22 @@
         // Include tzsetwall, timelocal, timegm, time2posix, and posix2time.
         "-DSTD_INSPIRED",
         // Obviously, we want to be thread-safe.
-        "-DTHREAD_SAFE",
+        "-DTHREAD_SAFE=1",
         // The name of the tm_gmtoff field in our struct tm.
         "-DTM_GMTOFF=tm_gmtoff",
+        // TZDEFAULT is not applicable to Android as there is no one file per time zone mapping
+        "-DTZDEFAULT=NULL",
         // Where we store our tzdata.
         "-DTZDIR=\"/system/usr/share/zoneinfo\"",
         // Include `tzname`, `timezone`, and `daylight` globals.
         "-DHAVE_POSIX_DECLS=0",
-        "-DUSG_COMPAT=1",
+        "-DUSG_COMPAT=2",
+        "-DHAVE_TZNAME=2",
+        // stdbool.h is available
+        "-DHAVE_STDBOOL_H",
         // Use the empty string (instead of "   ") as the timezone abbreviation
         // fallback.
         "-DWILDABBR=\"\"",
-        "-DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU",
         "-Dlint",
     ],
 
@@ -285,6 +295,7 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "dns/**/*.c*",
 
@@ -320,6 +331,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/libc/gen/ldexp.c",
         "upstream-freebsd/lib/libc/stdlib/getopt_long.c",
@@ -357,11 +369,6 @@
         "upstream-freebsd/lib/libc/string/wmemset.c",
     ],
     arch: {
-        arm64: {
-            exclude_srcs: [
-                "upstream-freebsd/lib/libc/string/wmemmove.c",
-            ],
-        },
         x86: {
             exclude_srcs: [
                 "upstream-freebsd/lib/libc/string/wcschr.c",
@@ -372,7 +379,6 @@
                 "upstream-freebsd/lib/libc/string/wcscat.c",
                 "upstream-freebsd/lib/libc/string/wcscpy.c",
                 "upstream-freebsd/lib/libc/string/wmemcmp.c",
-                "upstream-freebsd/lib/libc/string/wmemset.c",
             ],
         },
     },
@@ -392,6 +398,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/libc/gen/glob.c",
     ],
@@ -419,6 +426,7 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-netbsd/common/lib/libc/stdlib/random.c",
         "upstream-netbsd/lib/libc/gen/nice.c",
@@ -476,6 +484,7 @@
 cc_library_static {
     name: "libc_openbsd_ndk",
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-openbsd/lib/libc/gen/alarm.c",
         "upstream-openbsd/lib/libc/gen/ctype_.c",
@@ -497,13 +506,7 @@
         "upstream-openbsd/lib/libc/locale/mbstowcs.c",
         "upstream-openbsd/lib/libc/locale/mbtowc.c",
         "upstream-openbsd/lib/libc/locale/wcscoll.c",
-        "upstream-openbsd/lib/libc/locale/wcstoimax.c",
-        "upstream-openbsd/lib/libc/locale/wcstol.c",
-        "upstream-openbsd/lib/libc/locale/wcstoll.c",
         "upstream-openbsd/lib/libc/locale/wcstombs.c",
-        "upstream-openbsd/lib/libc/locale/wcstoul.c",
-        "upstream-openbsd/lib/libc/locale/wcstoull.c",
-        "upstream-openbsd/lib/libc/locale/wcstoumax.c",
         "upstream-openbsd/lib/libc/locale/wcsxfrm.c",
         "upstream-openbsd/lib/libc/locale/wctob.c",
         "upstream-openbsd/lib/libc/locale/wctomb.c",
@@ -600,6 +603,7 @@
 cc_library_static {
     name: "libc_openbsd_large_stack",
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "stdio/vfprintf.cpp",
         "stdio/vfwprintf.cpp",
@@ -629,6 +633,7 @@
 // automatically included.
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         // These two depend on getentropy, which isn't in libc_ndk.a.
         "upstream-openbsd/lib/libc/crypt/arc4random.c",
@@ -665,6 +670,17 @@
                 "upstream-openbsd/lib/libc/string/strncmp.c",
             ],
         },
+        riscv64: {
+            srcs: [
+                "arch-riscv64/string/memset_chk.c",
+                "upstream-freebsd/lib/libc/string/memcmp.c",
+                "upstream-freebsd/lib/libc/string/memcpy.c",
+                "upstream-freebsd/lib/libc/string/memmove.c",
+                "upstream-freebsd/lib/libc/string/memset.c",
+                "upstream-openbsd/lib/libc/string/strcmp.c",
+                "upstream-openbsd/lib/libc/string/strlen.c",
+            ],
+        },
         x86: {
             exclude_srcs: [
                 "upstream-openbsd/lib/libc/string/memchr.c",
@@ -717,6 +733,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-openbsd/android/gdtoa_support.cpp",
         "upstream-openbsd/lib/libc/gdtoa/dmisc.c",
@@ -777,7 +794,6 @@
     arch: {
         arm: {
             cflags: [
-                "-DNO___MEMCPY_CHK",
                 "-DRENAME___STRCAT_CHK",
                 "-DRENAME___STRCPY_CHK",
             ],
@@ -804,9 +820,9 @@
             ],
         },
         arm64: {
-            cflags: ["-DNO___MEMCPY_CHK"],
             srcs: [
-                "arch-arm64/generic/bionic/__memcpy_chk.S",
+                "arch-arm64/string/__memcpy_chk.S",
+                "arch-arm64/string/__memset_chk.S",
             ],
         },
     },
@@ -890,11 +906,6 @@
         },
         arm64: {
             srcs: [
-                "arch-arm64/generic/bionic/memcpy.S",
-                "arch-arm64/generic/bionic/memmove.S",
-                "arch-arm64/generic/bionic/memset.S",
-                "arch-arm64/generic/bionic/wmemmove.S",
-
                 "arch-arm64/bionic/__bionic_clone.S",
                 "arch-arm64/bionic/_exit_with_stack_teardown.S",
                 "arch-arm64/bionic/setjmp.S",
@@ -902,7 +913,6 @@
                 "arch-arm64/bionic/vfork.S",
             ],
             exclude_srcs: [
-                "bionic/__memcpy_chk.cpp",
                 "bionic/strchr.cpp",
                 "bionic/strchrnul.cpp",
                 "bionic/strnlen.c",
@@ -910,6 +920,16 @@
             ],
         },
 
+        riscv64: {
+            srcs: [
+                "arch-riscv64/bionic/__bionic_clone.S",
+                "arch-riscv64/bionic/_exit_with_stack_teardown.S",
+                "arch-riscv64/bionic/setjmp.S",
+                "arch-riscv64/bionic/syscall.S",
+                "arch-riscv64/bionic/vfork.S",
+            ],
+        },
+
         x86: {
             srcs: [
                 "arch-x86/generic/string/memcmp.S",
@@ -923,24 +943,42 @@
                 "arch-x86/generic/string/wcscat.c",
                 "arch-x86/generic/string/wcscpy.c",
                 "arch-x86/generic/string/wmemcmp.c",
-                "arch-x86/generic/string/wmemset.c",
 
-                "arch-x86/atom/string/sse2-memchr-atom.S",
-                "arch-x86/atom/string/sse2-memrchr-atom.S",
-                "arch-x86/atom/string/sse2-strchr-atom.S",
-                "arch-x86/atom/string/sse2-strnlen-atom.S",
-                "arch-x86/atom/string/sse2-strrchr-atom.S",
-                "arch-x86/atom/string/sse2-wcschr-atom.S",
-                "arch-x86/atom/string/sse2-wcsrchr-atom.S",
-                "arch-x86/atom/string/sse2-wcslen-atom.S",
-                "arch-x86/atom/string/sse2-wcscmp-atom.S",
-                "arch-x86/silvermont/string/sse2-memmove-slm.S",
-                "arch-x86/silvermont/string/sse2-memset-slm.S",
-                "arch-x86/silvermont/string/sse2-stpcpy-slm.S",
-                "arch-x86/silvermont/string/sse2-stpncpy-slm.S",
-                "arch-x86/silvermont/string/sse2-strcpy-slm.S",
-                "arch-x86/silvermont/string/sse2-strlen-slm.S",
-                "arch-x86/silvermont/string/sse2-strncpy-slm.S",
+                "arch-x86/string/sse2-memchr-atom.S",
+                "arch-x86/string/sse2-memmove-slm.S",
+                "arch-x86/string/sse2-memrchr-atom.S",
+                "arch-x86/string/sse2-memset-atom.S",
+                "arch-x86/string/sse2-memset-slm.S",
+                "arch-x86/string/sse2-stpcpy-slm.S",
+                "arch-x86/string/sse2-stpncpy-slm.S",
+                "arch-x86/string/sse2-strchr-atom.S",
+                "arch-x86/string/sse2-strcpy-slm.S",
+                "arch-x86/string/sse2-strlen-slm.S",
+                "arch-x86/string/sse2-strncpy-slm.S",
+                "arch-x86/string/sse2-strnlen-atom.S",
+                "arch-x86/string/sse2-strrchr-atom.S",
+                "arch-x86/string/sse2-wcschr-atom.S",
+                "arch-x86/string/sse2-wcsrchr-atom.S",
+                "arch-x86/string/sse2-wcslen-atom.S",
+                "arch-x86/string/sse2-wcscmp-atom.S",
+                "arch-x86/string/sse2-strlen-atom.S",
+
+                "arch-x86/string/ssse3-memcmp-atom.S",
+                "arch-x86/string/ssse3-memmove-atom.S",
+                "arch-x86/string/ssse3-strcat-atom.S",
+                "arch-x86/string/ssse3-strcmp-atom.S",
+                "arch-x86/string/ssse3-strcpy-atom.S",
+                "arch-x86/string/ssse3-strlcat-atom.S",
+                "arch-x86/string/ssse3-strlcpy-atom.S",
+                "arch-x86/string/ssse3-strncat-atom.S",
+                "arch-x86/string/ssse3-strncmp-atom.S",
+                "arch-x86/string/ssse3-strncpy-atom.S",
+                "arch-x86/string/ssse3-wcscat-atom.S",
+                "arch-x86/string/ssse3-wcscpy-atom.S",
+                "arch-x86/string/ssse3-wmemcmp-atom.S",
+
+                "arch-x86/string/sse4-memcmp-slm.S",
+                "arch-x86/string/sse4-wmemcmp-slm.S",
 
                 "arch-x86/bionic/__bionic_clone.S",
                 "arch-x86/bionic/_exit_with_stack_teardown.S",
@@ -950,32 +988,6 @@
                 "arch-x86/bionic/syscall.S",
                 "arch-x86/bionic/vfork.S",
                 "arch-x86/bionic/__x86.get_pc_thunk.S",
-
-                // ssse3 functions
-                "arch-x86/atom/string/ssse3-strcat-atom.S",
-                "arch-x86/atom/string/ssse3-strcmp-atom.S",
-                "arch-x86/atom/string/ssse3-strlcat-atom.S",
-                "arch-x86/atom/string/ssse3-strlcpy-atom.S",
-                "arch-x86/atom/string/ssse3-strncat-atom.S",
-                "arch-x86/atom/string/ssse3-strncmp-atom.S",
-                "arch-x86/atom/string/ssse3-wcscat-atom.S",
-                "arch-x86/atom/string/ssse3-wcscpy-atom.S",
-
-                // sse4 functions
-                "arch-x86/silvermont/string/sse4-memcmp-slm.S",
-                "arch-x86/silvermont/string/sse4-wmemcmp-slm.S",
-
-                // atom functions
-                "arch-x86/atom/string/sse2-memset-atom.S",
-                "arch-x86/atom/string/sse2-strlen-atom.S",
-                "arch-x86/atom/string/ssse3-memcmp-atom.S",
-                "arch-x86/atom/string/ssse3-memmove-atom.S",
-                "arch-x86/atom/string/ssse3-strcpy-atom.S",
-                "arch-x86/atom/string/ssse3-strncpy-atom.S",
-                "arch-x86/atom/string/ssse3-wmemcmp-atom.S",
-
-                // avx2 functions
-                "arch-x86/kabylake/string/avx2-wmemset-kbl.S",
             ],
 
             exclude_srcs: [
@@ -986,6 +998,7 @@
         },
         x86_64: {
             srcs: [
+                "arch-x86_64/string/avx2-memset-kbl.S",
                 "arch-x86_64/string/sse2-memmove-slm.S",
                 "arch-x86_64/string/sse2-memset-slm.S",
                 "arch-x86_64/string/sse2-stpcpy-slm.S",
@@ -998,7 +1011,6 @@
                 "arch-x86_64/string/sse4-memcmp-slm.S",
                 "arch-x86_64/string/ssse3-strcmp-slm.S",
                 "arch-x86_64/string/ssse3-strncmp-slm.S",
-                "arch-x86_64/string/avx2-wmemset-kbl.S",
 
                 "arch-x86_64/bionic/__bionic_clone.S",
                 "arch-x86_64/bionic/_exit_with_stack_teardown.S",
@@ -1115,6 +1127,7 @@
         "bionic/mbrtoc16.cpp",
         "bionic/mbrtoc32.cpp",
         "bionic/mempcpy.cpp",
+        "bionic/memset_explicit.cpp",
         "bionic/mkdir.cpp",
         "bionic/mkfifo.cpp",
         "bionic/mknod.cpp",
@@ -1188,6 +1201,7 @@
         "bionic/termios.cpp",
         "bionic/thread_private.cpp",
         "bionic/threads.cpp",
+        "bionic/time_l.cpp",
         "bionic/timespec_get.cpp",
         "bionic/tmpfile.cpp",
         "bionic/umount.cpp",
@@ -1303,44 +1317,40 @@
     name: "syscalls-arm.S",
     out: ["syscalls-arm.S"],
     srcs: ["SYSCALLS.TXT"],
-    tool_files: [":bionic-gensyscalls"],
-    cmd: "$(location :bionic-gensyscalls) arm $(in) > $(out)",
-    bazel_module: {
-        bp2build_available: true,
-    }
+    tools: ["gensyscalls"],
+    cmd: "$(location gensyscalls) arm $(in) > $(out)",
 }
 
 genrule {
     name: "syscalls-arm64.S",
     out: ["syscalls-arm64.S"],
     srcs: ["SYSCALLS.TXT"],
-    tool_files: [":bionic-gensyscalls"],
-    cmd: "$(location :bionic-gensyscalls) arm64 $(in) > $(out)",
-    bazel_module: {
-        bp2build_available: true,
-    },
+    tools: ["gensyscalls"],
+    cmd: "$(location gensyscalls) arm64 $(in) > $(out)",
+}
+
+genrule {
+    name: "syscalls-riscv64.S",
+    out: ["syscalls-riscv64.S"],
+    srcs: ["SYSCALLS.TXT"],
+    tools: ["gensyscalls"],
+    cmd: "$(location gensyscalls) riscv64 $(in) > $(out)",
 }
 
 genrule {
     name: "syscalls-x86.S",
     out: ["syscalls-x86.S"],
     srcs: ["SYSCALLS.TXT"],
-    tool_files: [":bionic-gensyscalls"],
-    cmd: "$(location :bionic-gensyscalls) x86 $(in) > $(out)",
-    bazel_module: {
-        bp2build_available: true,
-    },
+    tools: ["gensyscalls"],
+    cmd: "$(location gensyscalls) x86 $(in) > $(out)",
 }
 
 genrule {
     name: "syscalls-x86_64.S",
     out: ["syscalls-x86_64.S"],
     srcs: ["SYSCALLS.TXT"],
-    tool_files: [":bionic-gensyscalls"],
-    cmd: "$(location :bionic-gensyscalls) x86_64 $(in) > $(out)",
-    bazel_module: {
-        bp2build_available: true,
-    },
+    tools: ["gensyscalls"],
+    cmd: "$(location gensyscalls) x86_64 $(in) > $(out)",
 }
 
 cc_library_static {
@@ -1353,6 +1363,9 @@
         arm64: {
             srcs: [":syscalls-arm64.S"],
         },
+        riscv64: {
+            srcs: [":syscalls-riscv64.S"],
+        },
         x86: {
             srcs: [":syscalls-x86.S"],
         },
@@ -1511,6 +1524,9 @@
     name: "libc_static_dispatch",
 
     arch: {
+        x86_64: {
+            srcs: ["arch-x86_64/static_function_dispatch.S"],
+        },
         x86: {
             srcs: ["arch-x86/static_function_dispatch.S"],
         },
@@ -1536,6 +1552,9 @@
         "-fno-jump-tables",
     ],
     arch: {
+        x86_64: {
+            srcs: ["arch-x86_64/dynamic_function_dispatch.cpp"],
+        },
         x86: {
             srcs: ["arch-x86/dynamic_function_dispatch.cpp"],
         },
@@ -1627,7 +1646,6 @@
         "bionic/NetdClient.cpp",
         "arch-common/bionic/crtend_so.S",
     ],
-    bazel_module: { bp2build_available: true },
 }
 
 filegroup {
@@ -1638,7 +1656,6 @@
         "bionic/malloc_common.cpp",
         "bionic/malloc_limit.cpp",
     ],
-    bazel_module: { bp2build_available: true },
 }
 
 filegroup {
@@ -1647,7 +1664,6 @@
         "arch-arm/bionic/exidx_dynamic.c",
         "arch-arm/bionic/atexit_legacy.c",
     ],
-    bazel_module: { bp2build_available: true },
 }
 
 // ========================================================
@@ -1686,8 +1702,8 @@
     },
 
     required: [
-        "tzdata",
-        "tz_version", // Version metadata for tzdata to help debugging.
+        "tzdata_prebuilt",
+        "tz_version_prebuilt", // Version metadata for tzdata to help debugging.
     ],
 
     // Do not pack libc.so relocations; see http://b/20645321 for details.
@@ -1745,6 +1761,15 @@
                 keep_symbols: true,
             },
         },
+        riscv64: {
+            version_script: ":libc.riscv64.map",
+
+            // Leave the symbols in the shared library so that stack unwinders can produce
+            // meaningful name resolution.
+            strip: {
+                keep_symbols: true,
+            },
+        },
         x86: {
             // TODO: This is to work around b/24465209. Remove after root cause is fixed.
             pack_relocations: false,
@@ -1807,36 +1832,40 @@
     name: "libc.arm.map",
     out: ["libc.arm.map"],
     srcs: ["libc.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm $(in) $(out)",
-    bazel_module: { bp2build_available: true },
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm $(in) $(out)",
 }
 
 genrule {
     name: "libc.arm64.map",
     out: ["libc.arm64.map"],
     srcs: ["libc.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm64 $(in) $(out)",
-    bazel_module: { bp2build_available: true },
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm64 $(in) $(out)",
+}
+
+genrule {
+    name: "libc.riscv64.map",
+    out: ["libc.riscv64.map"],
+    srcs: ["libc.map.txt"],
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
 }
 
 genrule {
     name: "libc.x86.map",
     out: ["libc.x86.map"],
     srcs: ["libc.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86 $(in) $(out)",
-    bazel_module: { bp2build_available: true },
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86 $(in) $(out)",
 }
 
 genrule {
     name: "libc.x86_64.map",
     out: ["libc.x86_64.map"],
     srcs: ["libc.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86_64 $(in) $(out)",
-    bazel_module: { bp2build_available: true },
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86_64 $(in) $(out)",
 }
 
 // Headers that only other parts of the platform can include.
@@ -1852,6 +1881,7 @@
         "//external/perfetto:__subpackages__",
         "//external/scudo:__subpackages__",
         "//system/core/debuggerd:__subpackages__",
+        "//system/core/init:__subpackages__",
         "//system/core/libcutils:__subpackages__",
         "//system/memory/libmemunreachable:__subpackages__",
         "//system/unwinding/libunwindstack:__subpackages__",
@@ -1875,7 +1905,6 @@
         "//apex_available:platform",
         "//apex_available:anyapex",
     ],
-    bazel_module: { bp2build_available: true },
 }
 
 cc_library_headers {
@@ -1925,6 +1954,9 @@
         arm64: {
             export_system_include_dirs: ["kernel/uapi/asm-arm64"],
         },
+        riscv64: {
+            export_system_include_dirs: ["kernel/uapi/asm-riscv"],
+        },
         x86: {
             export_system_include_dirs: ["kernel/uapi/asm-x86"],
         },
@@ -1932,7 +1964,6 @@
             export_system_include_dirs: ["kernel/uapi/asm-x86"],
         },
     },
-    bazel_module: { bp2build_available: true },
 }
 
 cc_library_headers {
@@ -1980,7 +2011,6 @@
             export_header_lib_headers: ["libc_llndk_headers"],
         },
     },
-    bazel_module: { bp2build_available: true },
 }
 
 // ========================================================
@@ -2021,6 +2051,9 @@
         arm64: {
             version_script: ":libstdc++.arm64.map",
         },
+        riscv64: {
+            version_script: ":libstdc++.riscv64.map",
+        },
         x86: {
             pack_relocations: false,
             ldflags: ["-Wl,--hash-style=both"],
@@ -2036,32 +2069,40 @@
     name: "libstdc++.arm.map",
     out: ["libstdc++.arm.map"],
     srcs: ["libstdc++.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm $(in) $(out)",
 }
 
 genrule {
     name: "libstdc++.arm64.map",
     out: ["libstdc++.arm64.map"],
     srcs: ["libstdc++.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm64 $(in) $(out)",
+}
+
+genrule {
+    name: "libstdc++.riscv64.map",
+    out: ["libstdc++.riscv64.map"],
+    srcs: ["libstdc++.map.txt"],
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
 }
 
 genrule {
     name: "libstdc++.x86.map",
     out: ["libstdc++.x86.map"],
     srcs: ["libstdc++.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86 $(in) $(out)",
 }
 
 genrule {
     name: "libstdc++.x86_64.map",
     out: ["libstdc++.x86_64.map"],
     srcs: ["libstdc++.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86_64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86_64 $(in) $(out)",
 }
 
 // ========================================================
@@ -2131,8 +2172,6 @@
     srcs: ["arch-common/bionic/crtbrand.S"],
 
     defaults: ["crt_so_defaults"],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2144,8 +2183,6 @@
     objs: [
         "crtbrand",
     ],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2157,8 +2194,6 @@
     srcs: ["arch-common/bionic/crtend_so.S"],
 
     defaults: ["crt_so_defaults"],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2176,8 +2211,6 @@
     defaults: ["crt_defaults"],
     // When using libc.a, we're using the latest library regardless of target API level.
     min_sdk_version: "current",
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2200,8 +2233,6 @@
         },
     },
     defaults: ["crt_defaults"],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2215,8 +2246,6 @@
     srcs: ["arch-common/bionic/crtend.S"],
 
     defaults: ["crt_defaults"],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_library_static {
@@ -2244,6 +2273,48 @@
 }
 
 // ========================================================
+// libc dependencies for baremetal Rust projects.
+// ========================================================
+
+// This library contains the following unresolved symbols:
+//     __errno
+//     abort
+//     async_safe_fatal_va_list
+cc_library_static {
+    name: "librust_baremetal",
+    header_libs: ["libc_headers"],
+    include_dirs: [
+        "bionic/libc/async_safe/include",
+        "bionic/libc/platform",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    srcs: [
+        "bionic/fortify.cpp",
+        "bionic/strtol.cpp",
+    ],
+    arch: {
+        arm64: {
+            cflags: ["-DHAVE_ASSEMBLER___MEMCPY_CHK"],
+            srcs: [
+                "arch-arm64/string/__memcpy_chk.S",
+            ],
+        },
+    },
+    whole_static_libs: [
+        "libarm-optimized-routines-mem",
+    ],
+    system_shared_libs: [],
+    nocrt: true,
+    stl: "none",
+    visibility: [
+        "//packages/modules/Virtualization/vmbase",
+    ],
+}
+
+// ========================================================
 // NDK headers.
 // ========================================================
 
@@ -2306,6 +2377,14 @@
 }
 
 ndk_headers {
+    name: "libc_asm_riscv64",
+    from: "kernel/uapi/asm-riscv",
+    to: "riscv64-linux-android",
+    srcs: ["kernel/uapi/asm-riscv/**/*.h"],
+    license: "NOTICE",
+}
+
+ndk_headers {
     name: "libc_asm_x86",
     from: "kernel/uapi/asm-x86",
     to: "i686-linux-android",
@@ -2327,6 +2406,17 @@
     first_version: "9",
     // APIs implemented in asm don't have debug info: http://b/190554910.
     allow_untyped_symbols: true,
+    export_header_libs: [
+        "common_libc",
+        "libc_uapi",
+        "libc_kernel_android_uapi_linux",
+        "libc_kernel_android_scsi",
+        "libc_asm_arm",
+        "libc_asm_arm64",
+        "libc_asm_riscv64",
+        "libc_asm_x86",
+        "libc_asm_x86_64",
+    ],
 }
 
 ndk_library {
@@ -2342,7 +2432,6 @@
         "kernel/uapi/linux/input.h",
         "kernel/uapi/linux/input-event-codes.h",
     ],
-    bazel_module: { bp2build_available: true },
 }
 
 // Generate a syscall name / number mapping. These objects are text files
@@ -2368,8 +2457,6 @@
         "kernel/uapi/asm-arm",
         "kernel/uapi",
     ],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2379,8 +2466,15 @@
         "kernel/uapi/asm-arm64",
         "kernel/uapi",
     ],
+}
 
-    bazel_module: { bp2build_available: true },
+cc_object {
+    name: "libseccomp_gen_syscall_nrs_riscv64",
+    defaults: ["libseccomp_gen_syscall_nrs_defaults"],
+    local_include_dirs: [
+        "kernel/uapi/asm-riscv",
+        "kernel/uapi",
+    ],
 }
 
 cc_object {
@@ -2392,8 +2486,6 @@
         "kernel/uapi/asm-x86",
         "kernel/uapi",
     ],
-
-    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2405,14 +2497,11 @@
         "kernel/uapi/asm-x86",
         "kernel/uapi",
     ],
-
-    bazel_module: { bp2build_available: true },
 }
 
 filegroup {
     name: "all_kernel_uapi_headers",
     srcs: ["kernel/uapi/**/*.h"],
-    bazel_module: { bp2build_available: true },
 }
 
 
@@ -2425,12 +2514,38 @@
 
     srcs: [
         "SYSCALLS.TXT",
-        ":libseccomp_gen_syscall_nrs_arm",
-        ":libseccomp_gen_syscall_nrs_arm64",
-        ":libseccomp_gen_syscall_nrs_x86",
-        ":libseccomp_gen_syscall_nrs_x86_64",
     ],
 
+    arch: {
+        arm: {
+            srcs: [
+                ":libseccomp_gen_syscall_nrs_arm",
+                ":libseccomp_gen_syscall_nrs_arm64",
+            ],
+        },
+        arm64: {
+            srcs: [
+                ":libseccomp_gen_syscall_nrs_arm",
+                ":libseccomp_gen_syscall_nrs_arm64",
+            ],
+        },
+        riscv64: {
+            srcs: [":libseccomp_gen_syscall_nrs_riscv64"],
+        },
+        x86: {
+            srcs: [
+                ":libseccomp_gen_syscall_nrs_x86",
+                ":libseccomp_gen_syscall_nrs_x86_64",
+            ],
+        },
+        x86_64: {
+            srcs: [
+                ":libseccomp_gen_syscall_nrs_x86",
+                ":libseccomp_gen_syscall_nrs_x86_64",
+            ],
+        },
+    },
+
     out: [
         "func_to_syscall_nrs.h",
     ],
@@ -2444,13 +2559,8 @@
     cmd: "grep -v '^int[ \t]*setresgid' $(in) > $(out)",
 }
 
-cc_genrule {
-    name: "libseccomp_policy_app_zygote_sources",
-    recovery_available: true,
-    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app_zygote $(in)",
-
-    tools: [ "genseccomp" ],
-
+filegroup {
+    name: "seccomp_syscalls_sources_zygote",
     srcs: [
         "SYSCALLS.TXT",
         "SECCOMP_ALLOWLIST_COMMON.TXT",
@@ -2458,27 +2568,11 @@
         "SECCOMP_BLOCKLIST_COMMON.TXT",
         "SECCOMP_PRIORITY.TXT",
         ":generate_app_zygote_blocklist",
-        ":libseccomp_gen_syscall_nrs_arm",
-        ":libseccomp_gen_syscall_nrs_arm64",
-        ":libseccomp_gen_syscall_nrs_x86",
-        ":libseccomp_gen_syscall_nrs_x86_64",
-    ],
-
-    out: [
-        "arm64_app_zygote_policy.cpp",
-        "arm_app_zygote_policy.cpp",
-        "x86_64_app_zygote_policy.cpp",
-        "x86_app_zygote_policy.cpp",
     ],
 }
 
-cc_genrule {
-    name: "libseccomp_policy_app_sources",
-    recovery_available: true,
-    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app $(in)",
-
-    tools: [ "genseccomp" ],
-
+filegroup {
+    name: "seccomp_syscalls_sources_app",
     srcs: [
         "SYSCALLS.TXT",
         "SECCOMP_ALLOWLIST_COMMON.TXT",
@@ -2486,56 +2580,242 @@
         "SECCOMP_BLOCKLIST_COMMON.TXT",
         "SECCOMP_BLOCKLIST_APP.TXT",
         "SECCOMP_PRIORITY.TXT",
-        ":libseccomp_gen_syscall_nrs_arm",
-        ":libseccomp_gen_syscall_nrs_arm64",
-        ":libseccomp_gen_syscall_nrs_x86",
-        ":libseccomp_gen_syscall_nrs_x86_64",
-    ],
-
-    out: [
-        "arm64_app_policy.cpp",
-        "arm_app_policy.cpp",
-        "x86_64_app_policy.cpp",
-        "x86_app_policy.cpp",
     ],
 }
 
-cc_genrule {
-    name: "libseccomp_policy_system_sources",
-    recovery_available: true,
-    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=system $(in)",
-
-    tools: [ "genseccomp" ],
-
+filegroup {
+    name: "seccomp_syscalls_sources_system",
     srcs: [
         "SYSCALLS.TXT",
         "SECCOMP_ALLOWLIST_COMMON.TXT",
         "SECCOMP_ALLOWLIST_SYSTEM.TXT",
         "SECCOMP_BLOCKLIST_COMMON.TXT",
         "SECCOMP_PRIORITY.TXT",
-        ":libseccomp_gen_syscall_nrs_arm",
-        ":libseccomp_gen_syscall_nrs_arm64",
+    ],
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_zygote_sources_x86",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app_zygote $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_zygote",
         ":libseccomp_gen_syscall_nrs_x86",
         ":libseccomp_gen_syscall_nrs_x86_64",
     ],
-
     out: [
-        "arm64_system_policy.cpp",
-        "arm_system_policy.cpp",
-        "x86_64_system_policy.cpp",
-        "x86_system_policy.cpp",
+        "x86_app_zygote_policy.cpp",
+        "x86_64_app_zygote_policy.cpp",
     ],
+    enabled: false,
+    arch: {
+        x86: { enabled: true },
+        x86_64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_zygote_sources_arm",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app_zygote $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_zygote",
+        ":libseccomp_gen_syscall_nrs_arm",
+        ":libseccomp_gen_syscall_nrs_arm64",
+    ],
+    out: [
+        "arm_app_zygote_policy.cpp",
+        "arm64_app_zygote_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        arm: { enabled: true },
+        arm64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_zygote_sources_riscv64",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app_zygote $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_zygote",
+        ":libseccomp_gen_syscall_nrs_riscv64",
+    ],
+    out: [
+        "riscv64_app_zygote_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        riscv64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_sources_x86",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_app",
+        ":libseccomp_gen_syscall_nrs_x86",
+        ":libseccomp_gen_syscall_nrs_x86_64",
+    ],
+    out: [
+        "x86_app_policy.cpp",
+        "x86_64_app_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        x86: { enabled: true },
+        x86_64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_sources_arm",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_app",
+        ":libseccomp_gen_syscall_nrs_arm",
+        ":libseccomp_gen_syscall_nrs_arm64",
+    ],
+    out: [
+        "arm_app_policy.cpp",
+        "arm64_app_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        arm: { enabled: true },
+        arm64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_app_sources_riscv64",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=app $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_app",
+        ":libseccomp_gen_syscall_nrs_riscv64",
+    ],
+    out: [
+        "riscv64_app_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        riscv64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_system_sources_x86",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=system $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_system",
+        ":libseccomp_gen_syscall_nrs_x86",
+        ":libseccomp_gen_syscall_nrs_x86_64",
+    ],
+    out: [
+        "x86_system_policy.cpp",
+        "x86_64_system_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        x86: { enabled: true },
+        x86_64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_system_sources_arm",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=system $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_system",
+        ":libseccomp_gen_syscall_nrs_arm",
+        ":libseccomp_gen_syscall_nrs_arm64",
+    ],
+    out: [
+        "arm_system_policy.cpp",
+        "arm64_system_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        arm: { enabled: true },
+        arm64: { enabled: true },
+    },
+}
+
+cc_genrule {
+    name: "libseccomp_policy_system_sources_riscv64",
+    recovery_available: true,
+    cmd: "$(location genseccomp) --out-dir=$(genDir) --name-modifier=system $(in)",
+    tools: [ "genseccomp" ],
+    srcs: [
+        ":seccomp_syscalls_sources_system",
+        ":libseccomp_gen_syscall_nrs_riscv64",
+    ],
+    out: [
+        "riscv64_system_policy.cpp",
+    ],
+    enabled: false,
+    arch: {
+        riscv64: { enabled: true },
+    },
 }
 
 cc_library {
     name: "libseccomp_policy",
     recovery_available: true,
     generated_headers: ["func_to_syscall_nrs"],
-    generated_sources: [
-        "libseccomp_policy_app_sources",
-        "libseccomp_policy_app_zygote_sources",
-        "libseccomp_policy_system_sources",
-    ],
+
+    arch: {
+        arm: {
+            generated_sources: [
+               "libseccomp_policy_app_sources_arm",
+               "libseccomp_policy_app_zygote_sources_arm",
+               "libseccomp_policy_system_sources_arm",
+            ],
+        },
+        arm64: {
+            generated_sources: [
+               "libseccomp_policy_app_sources_arm",
+               "libseccomp_policy_app_zygote_sources_arm",
+               "libseccomp_policy_system_sources_arm",
+            ],
+        },
+        riscv64: {
+            generated_sources: [
+               "libseccomp_policy_app_sources_riscv64",
+               "libseccomp_policy_app_zygote_sources_riscv64",
+               "libseccomp_policy_system_sources_riscv64",
+            ],
+        },
+        x86: {
+            generated_sources: [
+               "libseccomp_policy_app_sources_x86",
+               "libseccomp_policy_app_zygote_sources_x86",
+               "libseccomp_policy_system_sources_x86",
+            ],
+        },
+        x86_64: {
+            generated_sources: [
+               "libseccomp_policy_app_sources_x86",
+               "libseccomp_policy_app_zygote_sources_x86",
+               "libseccomp_policy_system_sources_x86",
+            ],
+        },
+    },
 
     srcs: [
         "seccomp/seccomp_policy.cpp",
@@ -2556,6 +2836,7 @@
 
 cc_library_host_static {
     name: "libfts",
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "bionic/fts.c",
         "upstream-openbsd/lib/libc/stdlib/recallocarray.c",
@@ -2598,6 +2879,7 @@
 cc_library_host_static {
     name: "libb64",
     visibility: ["//external/musl"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: ["upstream-openbsd/lib/libc/net/base64.c"],
     export_include_dirs: ["b64/include"],
     local_include_dirs: [
@@ -2666,6 +2948,7 @@
         "  -D $${BIONIC_LIBC_DIR}/b64/include " +
         " && " +
         "$(location zip2zip) -i $(genDir)/sysroot.zip -o $(genDir)/sysroot-renamed.zip " +
+        " -x **/BUILD " +
         " include/**/*:include/ " +
         " NOTICE:NOTICE.bionic " +
         " && " +
@@ -2705,3 +2988,53 @@
     tools: ["soong_zip"],
     cmd: "includes=($(in)) && $(location soong_zip) -o $(out) -P include/asm -j -D $$(dirname $${includes[0]})",
 }
+
+cc_genrule {
+    name: "bionic_sysroot_crt_objects",
+    visibility: ["//visibility:private"],
+    out: ["bionic_sysroot_crt_objects.zip"],
+    tools: ["soong_zip"],
+    srcs: [
+        ":crtbegin_dynamic",
+        ":crtbegin_so",
+        ":crtbegin_static",
+        ":crtend_android",
+        ":crtend_so",
+    ],
+    cmd: "$(location soong_zip) -o $(out) -j " +
+        "-f $(location :crtbegin_dynamic) " +
+        "-f $(location :crtbegin_so) " +
+        "-f $(location :crtbegin_static) " +
+        "-f $(location :crtend_android) " +
+        "-f $(location :crtend_so)",
+    dist: {
+        targets: ["bionic_sysroot_crt_objects"],
+    },
+    arch: {
+        arm: {
+            dist: {
+                suffix: "_arm",
+            },
+        },
+        arm64: {
+            dist: {
+                suffix: "_arm64",
+            },
+        },
+        riscv64: {
+            dist: {
+                suffix: "_riscv64",
+            },
+        },
+        x86: {
+            dist: {
+                suffix: "_x86",
+            },
+        },
+        x86_64: {
+            dist: {
+                suffix: "_x86_64",
+            },
+        },
+    },
+}
diff --git a/libc/BUILD b/libc/BUILD
new file mode 100644
index 0000000..1777ae9
--- /dev/null
+++ b/libc/BUILD
@@ -0,0 +1,42 @@
+# Copyright (C) 2022 The Android Open Source Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  * Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#  * Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+load("//build/bazel/rules/apis:cc_api_contribution.bzl", "cc_api_contribution")
+
+cc_api_contribution(
+    name = "libc_contributions",
+    hdrs = [
+        "//bionic/libc/kernel/android:libc_kernel_android_scsi_headers",
+        "//bionic/libc/kernel/android:libc_kernel_android_uapi_headers",
+        "//bionic/libc/kernel/uapi:libc_kernel_uapi_asm_arm64_headers",  #arm64
+        "//bionic/libc/kernel/uapi:libc_kernel_uapi_asm_arm_headers",  #arm
+        "//bionic/libc/kernel/uapi:libc_kernel_uapi_asm_x86_64_headers",  #x86_64
+        "//bionic/libc/kernel/uapi:libc_kernel_uapi_asm_x86_headers",  #x86
+        "//bionic/libc/kernel/uapi:libc_kernel_uapi_headers",
+    ],
+    api = ":libc.map.txt",
+    library_name = "libc",
+)
diff --git a/libc/NOTICE b/libc/NOTICE
index 9cbbde2..a6ca8b7 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -783,22 +783,6 @@
 -------------------------------------------------------------------
 
 Copyright (C) 2019 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--------------------------------------------------------------------
-
-Copyright (C) 2019 The Android Open Source Project
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -826,34 +810,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (C) 2019 The Android Open Source Project
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in
-   the documentation and/or other materials provided with the
-   distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
--------------------------------------------------------------------
-
 Copyright (C) 2020 The Android Open Source Project
 All rights reserved.
 
@@ -2096,6 +2052,38 @@
 
 Copyright (c) 1990, 1993
    The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Mike Hibler and Chris Torek.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
 (c) UNIX System Laboratories, Inc.
 All or some portions of this file are derived from material licensed
 to the University of California by American Telephone and Telegraph
@@ -2451,9 +2439,15 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 1992, 1993, 1994 Henry Spencer.
 Copyright (c) 1992, 1993, 1994
    The Regents of the University of California.  All rights reserved.
 
+Copyright (c) 2011 The FreeBSD Foundation
+All rights reserved.
+Portions of this software were developed by David Chisnall
+under sponsorship from the FreeBSD Foundation.
+
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
 
@@ -2484,6 +2478,8 @@
 -------------------------------------------------------------------
 
 Copyright (c) 1992, 1993, 1994 Henry Spencer.
+Copyright (c) 1992, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
 
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
@@ -2496,11 +2492,7 @@
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-   This product includes software developed by the University of
-   California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
+3. Neither the name of the University nor the names of its contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.
 
@@ -2587,6 +2579,36 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 1994 Winning Strategies, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+     This product includes software developed by Winning Strategies, Inc.
+4. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 1996 by Internet Software Consortium.
 
 Permission to use, copy, modify, and distribute this software for any
@@ -2787,41 +2809,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
-All rights reserved.
-
-This code was contributed to The NetBSD Foundation by Klaus Klein.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-       This product includes software developed by the NetBSD
-       Foundation, Inc. and its contributors.
-4. Neither the name of The NetBSD Foundation nor the names of its
-   contributors may be used to endorse or promote products derived
-   from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
 Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc.
 All rights reserved.
 
@@ -2887,6 +2874,34 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 1997, 1998, 2005, 2008 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code was contributed to The NetBSD Foundation by Klaus Klein.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com>
 
 Permission to use, copy, modify, and distribute this software for any
@@ -4310,33 +4325,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2012-2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
 Copyright (c) 2012-2014 ARM Ltd
 All rights reserved.
 
@@ -4438,33 +4426,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
 Copyright (c) 2014, Intel Corporation
 All rights reserved.
 
@@ -4495,62 +4456,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2014, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
-Copyright (c) 2015 ARM Ltd
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the company may not be used to endorse or promote
-   products derived from this software without specific prior written
-   permission.
-
-THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
 Copyright (c) 2015 Joerg Sonnenberger <joerg@NetBSD.org>.
 All rights reserved.
 
@@ -4605,6 +4510,34 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 2017, 2018 Dell EMC
+Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+Copyright (c) 1998 John D. Polstra.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c)1999 Citrus Project,
 All rights reserved.
 
diff --git a/libc/SECCOMP_ALLOWLIST_APP.TXT b/libc/SECCOMP_ALLOWLIST_APP.TXT
index ba40b60..7e1ecde 100644
--- a/libc/SECCOMP_ALLOWLIST_APP.TXT
+++ b/libc/SECCOMP_ALLOWLIST_APP.TXT
@@ -56,3 +56,7 @@
 
 # b/62090571
 int mkdir(const char *pathname, mode_t mode)	lp32
+
+# Not used by bionic in U because riscv64 doesn't have it, but still
+# used by legacy apps (http://b/254179267).
+int renameat(int, const char*, int, const char*)  arm,x86,arm64,x86_64
diff --git a/libc/SECCOMP_ALLOWLIST_COMMON.TXT b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
index 0366fdf..efbf28b 100644
--- a/libc/SECCOMP_ALLOWLIST_COMMON.TXT
+++ b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
@@ -3,60 +3,60 @@
 #
 # This file is processed by a python script named genseccomp.py.
 
-# syscalls needed to boot android
-int	pivot_root:pivot_root(const char *new_root, const char *put_old)	lp64
-int	ioprio_get:ioprio_get(int which, int who)	lp64
-int	ioprio_set:ioprio_set(int which, int who, int ioprio)	lp64
-pid_t	gettid:gettid()	all
-int	futex:futex(int *uaddr, int futex_op, int val, const struct timespec *timeout, int *uaddr2, int val3)	all
-int	clone:clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ..) all
-int	sigreturn:sigreturn(unsigned long __unused)	lp32
-int	rt_sigreturn:rt_sigreturn(unsigned long __unused)	all
-int	rt_tgsigqueueinfo:int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig, siginfo_t *uinfo)	all
-int	restart_syscall:int restart_syscall()	all
+# Syscalls needed to boot android
+int	pivot_root(const char*, const char*)	lp64
+int	ioprio_get(int, int)	lp64
+int	ioprio_set(int, int, int)	lp64
 
-# vfork is used by java.lang.ProcessBuilder
-pid_t	vfork:vfork()	arm,x86,x86_64
+# Syscalls used internally by bionic, but not exposed directly.
+pid_t	gettid()	all
+int	futex(int*, int, int, const timespec*, int*, int)	all
+int	clone(int (*)(void*), void*, int, void*, ...) all
+int	sigreturn(unsigned long)	lp32
+int	rt_sigreturn(unsigned long)	all
+int	rt_tgsigqueueinfo(pid_t, pid_t, int, siginfo_t*)	all
+int	restart_syscall()	all
 
-# Needed for performance tools
-int	perf_event_open:perf_event_open(struct perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags)	all
+# vfork is used by bionic (and java.lang.ProcessBuilder) on some
+# architectures. (The others use clone(2) directly instead.)
+pid_t	vfork()	arm,x86,x86_64
 
-# Needed for strace
-int	tkill:tkill(int tid, int sig)	all
+# Needed for performance tools.
+int	perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
 
-# b/34763393
-int	seccomp:seccomp(unsigned int operation, unsigned int flags, void *args)	all
+# Needed for strace.
+int	tkill(int, int)	all
 
-# Needed by sanitizers (b/34606909, b/136777266).
-int open:open(const char*, int, ...)  arm,x86,x86_64
-int stat64:stat64(const char*, struct stat64*)  arm,x86
-ssize_t readlink:readlink(const char*, char*, size_t)  arm,x86,x86_64
-# Needed by ubsan in T? (http://b/229989971)
-int stat(const char*, struct stat*)  arm,x86,x86_64
+# Needed for a CTS test of seccomp (b/34763393).
+int	seccomp(unsigned, unsigned, void*)	all
+
+# TODO: remove these now we've updated the toolchain (http://b/229989971).
+int open(const char*, int, ...)  arm,x86,x86_64
+int stat64(const char*, stat64*)  arm,x86
+ssize_t readlink(const char*, char*, size_t)  arm,x86,x86_64
+int stat(const char*, stat*)  arm,x86,x86_64
 
 #
-# Useful new syscalls which we don't yet use in bionic.
+# (Potentially) useful new syscalls which we don't yet use in bionic.
 #
 
 # Since Linux 2.5, not in glibc.
-int io_setup(unsigned nr, aio_context_t *ctxp) all
-int io_destroy(aio_context_t ctx) all
-int io_submit(aio_context_t ctx, long nr,  struct iocb **iocbpp) all
-int io_getevents(aio_context_t ctx, long min_nr, long max_nr, struct io_event *events, struct timespec *timeout) all
-int io_cancel(aio_context_t ctx, struct iocb *, struct io_event *result) all
+int io_setup(unsigned, aio_context_t*) all
+int io_destroy(aio_context_t) all
+int io_submit(aio_context_t, long,  iocb**) all
+int io_getevents(aio_context_t, long, long, io_event*, timespec*) all
+int io_cancel(aio_context_t, iocb*, io_event*) all
 # Since Linux 3.14, not in glibc.
-int sched_getattr(pid_t pid, struct sched_attr* attr, unsigned int flags) all
-int sched_setattr(pid_t pid, struct sched_attr* attr, unsigned int size, unsigned int flags) all
+int sched_getattr(pid_t, sched_attr*, unsigned) all
+int sched_setattr(pid_t, sched_attr*, unsigned, unsigned) all
 # Since Linux 3.19, not in glibc (and not really needed to implement fexecve).
-int execveat(int dirfd, const char* pathname, char* const* argv, char* const* envp, int flags)  all
+int execveat(int, const char*, char* const*, char* const*, int)  all
 # Since Linux 4.3, not in glibc. Probed for and conditionally used by ART.
-int membarrier(int cmd, int flags) all
-# Since Linux 4.5, glibc 2.27.
-ssize_t copy_file_range(int fd_in, loff_t* off_in, int fd_out, loff_t* off_out, size_t len, unsigned int flags) all
-# Since Linux 4.6, glibc 2.26.
-ssize_t preadv2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-ssize_t pwritev2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-# Since Linux 5.1, not in glibc.
+int membarrier(int, int) all
+# Since Linux 5.1, not in glibc. Not used by bionic, and not likely ever
+# to be (because the last thing anyone needs is a new 32-bit ABI in the
+# 2020s!) but http://b/138781460 showed cuttlefish needed at least the
+# clock_gettime64 syscall.
 int clock_gettime64(clockid_t, timespec64*) lp32
 int clock_settime64(clockid_t, const timespec64*) lp32
 int clock_adjtime64(clockid_t, timex64*) lp32
@@ -70,11 +70,8 @@
 int pselect6_time64(int, fd_set*, fd_set*, timespec64*, void*) lp32
 int ppoll_time64(pollfd*, unsigned int, timespec64*, const sigset64_t*, size_t) lp32
 int recvmmsg_time64(int, mmsghdr*, unsigned int, int, const timespec64*) lp32
-int semtimedop_time64(int, sembuf*, size_t, const timespec64*) lp32
 int rt_sigtimedwait_time64(const sigset64_t*, siginfo_t*, const timespec64*, size_t) lp32
 int futex_time64(int*, int, int, const timespec64*, int*, int) lp32
 int sched_rr_get_interval_time64(pid_t, timespec64*) lp32
 # Since Linux 5.4, not in glibc. Probed for and conditionally used by ART.
 int userfaultfd(int) all
-# Since Linux 5.9, used by POSIX_SPAWN_CLOEXEC_DEFAULT
-int close_range(unsigned int, unsigned int, int) all
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index a09c614..1b9054b 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -7,7 +7,7 @@
 # where:
 #       arch_list ::= "all" | arches
 #       arches    ::= arch |  arch "," arches
-#       arch      ::= "arm" | "arm64" | "x86" | "x86_64" | "lp32" | "lp64"
+#       arch      ::= "arm" | "arm64" | "riscv64" | "x86" | "x86_64" | "lp32" | "lp64"
 #
 # Note:
 #      - syscall_name corresponds to the name of the syscall, which may differ from
@@ -26,7 +26,7 @@
 # This file is processed by a python script named gensyscalls.py, run via
 # genrules in Android.bp.
 
-int     execve(const char*, char* const*, char* const*)  all
+int     __execve:execve(const char*, char* const*, char* const*)  all
 
 uid_t   getuid:getuid32()         lp32
 uid_t   getuid:getuid()           lp64
@@ -107,6 +107,8 @@
 ssize_t     __pwritev64v2:pwritev2(int, const struct iovec*, int, long, long, int) all
 
 int         __close:close(int)  all
+int         close_range(unsigned int, unsigned int, int) all
+ssize_t     copy_file_range(int, off64_t*, int, off64_t*, size_t, unsigned int) all
 pid_t       __getpid:getpid()  all
 int memfd_create(const char*, unsigned) all
 int         munmap(void*, size_t)  all
@@ -154,7 +156,6 @@
 int mkdirat(int, const char*, mode_t)  all
 int mknodat(int, const char*, mode_t, dev_t)  all
 int readlinkat(int, const char*, char*, size_t)  all
-int renameat(int, const char*, int, const char*)  all
 int renameat2(int, const char*, int, const char*, unsigned)  all
 int symlinkat(const char*, int, const char*)  all
 int unlinkat(int, const char*, int)   all
@@ -318,7 +319,7 @@
 
 int __eventfd:eventfd2(unsigned int, int)  all
 
-void _exit|_Exit:exit_group(int)  all
+void __exit_group:exit_group(int)  all
 void __exit:exit(int)  all
 
 int inotify_init1(int)  all
@@ -351,6 +352,9 @@
 int     __set_tls:__ARM_NR_set_tls(void*)                                 arm
 int     cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
 
+# riscv64-specific
+int _flush_icache:riscv_flush_icache(void*, void*, unsigned long) riscv64
+
 # x86-specific
 int     __set_thread_area:set_thread_area(void*) x86
 
diff --git a/libc/arch-arm64/bionic/setjmp.S b/libc/arch-arm64/bionic/setjmp.S
index d2fafdb..8e00b56 100644
--- a/libc/arch-arm64/bionic/setjmp.S
+++ b/libc/arch-arm64/bionic/setjmp.S
@@ -194,7 +194,7 @@
   cmp x2, x12
   bne __bionic_setjmp_checksum_mismatch
 
-#if __has_feature(hwaddress_sanitizer)
+  // Update stack memory tags (MTE + hwasan).
   stp x0, x30, [sp, #-16]!
   .cfi_adjust_cfa_offset 16
   .cfi_rel_offset x0, 0
@@ -206,7 +206,7 @@
   bic x2, x2, #1
   ldr x0, [x0, #(_JB_X30_SP  * 8 + 8)]
   eor x0, x0, x2
-  bl __hwasan_handle_longjmp
+  bl memtag_handle_longjmp
 
   mov x1, x19 // Restore 'value'.
   // Restore original x0 and lr.
@@ -214,7 +214,6 @@
   .cfi_adjust_cfa_offset -16
   .cfi_restore x0
   .cfi_restore x30
-#endif
 
   // Do we need to restore the signal mask?
   ldr x2, [x0, #(_JB_SIGFLAG * 8)]
diff --git a/libc/arch-arm64/bionic/vfork.S b/libc/arch-arm64/bionic/vfork.S
index df7b063..9eb82d8 100644
--- a/libc/arch-arm64/bionic/vfork.S
+++ b/libc/arch-arm64/bionic/vfork.S
@@ -29,10 +29,7 @@
 #include <platform/bionic/tls_defines.h>
 #include <private/bionic_asm.h>
 #include <asm/signal.h>
-
-// Must match the defines in linux/sched.h
-#define CLONE_VM 0x00000100
-#define CLONE_VFORK 0x00004000
+#include <linux/sched.h>
 
 ENTRY(vfork)
 __BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(vfork)
@@ -45,6 +42,9 @@
     ldr     w10, [x9, #20]
     str     w0, [x9, #20]
 
+    // Clear vfork_child_stack_bottom_.
+    str     xzr, [x9, #776]
+
     mov     x0, #(CLONE_VM | CLONE_VFORK | SIGCHLD)
     mov     x1, xzr
     mov     x2, xzr
@@ -62,9 +62,6 @@
     cneg    x0, x0, hi
     b.hi    __set_errno_internal
 
-#if __has_feature(hwaddress_sanitizer)
-    cbz x0, .L_exit
-
     // Clean up stack shadow in the parent process.
     // https://github.com/google/sanitizers/issues/925
     paciasp
@@ -75,7 +72,7 @@
     .cfi_rel_offset x30, 8
 
     add x0, sp, #16
-    bl __hwasan_handle_vfork
+    bl memtag_handle_vfork
 
     ldp x0, x30, [sp], #16
     .cfi_adjust_cfa_offset -16
@@ -84,8 +81,6 @@
     autiasp
     .cfi_negate_ra_state
 
-#endif
-
 .L_exit:
     ret
 END(vfork)
diff --git a/libc/arch-arm64/dynamic_function_dispatch.cpp b/libc/arch-arm64/dynamic_function_dispatch.cpp
index 83e5ca4..cd55311 100644
--- a/libc/arch-arm64/dynamic_function_dispatch.cpp
+++ b/libc/arch-arm64/dynamic_function_dispatch.cpp
@@ -41,13 +41,34 @@
     }
 }
 
+typedef void* memcmp_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcmp) {
+    // TODO: enable the SVE version.
+    RETURN_FUNC(memcmp_func, __memcmp_aarch64);
+}
+
+typedef void* memcpy_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcpy) {
+    if (arg->_hwcap & HWCAP_ASIMD) {
+        RETURN_FUNC(memcpy_func, __memcpy_aarch64_simd);
+    } else {
+        RETURN_FUNC(memcpy_func, __memcpy_aarch64);
+    }
+}
+
+typedef void* memmove_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memmove) {
+    if (arg->_hwcap & HWCAP_ASIMD) {
+        RETURN_FUNC(memmove_func, __memmove_aarch64_simd);
+    } else {
+        RETURN_FUNC(memmove_func, __memmove_aarch64);
+    }
+}
+
 typedef int stpcpy_func(char*, const char*);
 DEFINE_IFUNC_FOR(stpcpy) {
-    if (arg->_hwcap2 & HWCAP2_MTE) {
-        RETURN_FUNC(stpcpy_func, __stpcpy_aarch64_mte);
-    } else {
-        RETURN_FUNC(stpcpy_func, __stpcpy_aarch64);
-    }
+    // TODO: enable the SVE version.
+    RETURN_FUNC(stpcpy_func, __stpcpy_aarch64);
 }
 
 typedef char* strchr_func(const char*, int);
@@ -70,20 +91,14 @@
 
 typedef int strcmp_func(const char*, const char*);
 DEFINE_IFUNC_FOR(strcmp) {
-    if (arg->_hwcap2 & HWCAP2_MTE) {
-        RETURN_FUNC(strcmp_func, __strcmp_aarch64_mte);
-    } else {
-        RETURN_FUNC(strcmp_func, __strcmp_aarch64);
-    }
+    // TODO: enable the SVE version.
+    RETURN_FUNC(strcmp_func, __strcmp_aarch64);
 }
 
 typedef int strcpy_func(char*, const char*);
 DEFINE_IFUNC_FOR(strcpy) {
-    if (arg->_hwcap2 & HWCAP2_MTE) {
-        RETURN_FUNC(strcpy_func, __strcpy_aarch64_mte);
-    } else {
-        RETURN_FUNC(strcpy_func, __strcpy_aarch64);
-    }
+    // TODO: enable the SVE version.
+    RETURN_FUNC(strcpy_func, __strcpy_aarch64);
 }
 
 typedef size_t strlen_func(const char*);
@@ -97,11 +112,14 @@
 
 typedef int strncmp_func(const char*, const char*, int);
 DEFINE_IFUNC_FOR(strncmp) {
-    if (arg->_hwcap2 & HWCAP2_MTE) {
-        RETURN_FUNC(strncmp_func, __strncmp_aarch64_mte);
-    } else {
-        RETURN_FUNC(strncmp_func, __strncmp_aarch64);
-    }
+    // TODO: enable the SVE version.
+    RETURN_FUNC(strncmp_func, __strncmp_aarch64);
+}
+
+typedef size_t strnlen_func(const char*);
+DEFINE_IFUNC_FOR(strnlen) {
+    // TODO: enable the SVE version.
+    RETURN_FUNC(strnlen_func, __strnlen_aarch64);
 }
 
 typedef char* strrchr_func(const char*, int);
diff --git a/libc/arch-arm64/generic/bionic/memcpy_base.S b/libc/arch-arm64/generic/bionic/memcpy_base.S
deleted file mode 100644
index f850624..0000000
--- a/libc/arch-arm64/generic/bionic/memcpy_base.S
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Copyright (c) 2012-2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- *    products derived from this software without specific prior written
- *    permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses.
- *
- */
-
-#include <private/bionic_asm.h>
-
-#define dstin	x0
-#define src	x1
-#define count	x2
-#define dst	x3
-#define srcend	x4
-#define dstend	x5
-#define A_l	x6
-#define A_lw	w6
-#define A_h	x7
-#define A_hw	w7
-#define B_l	x8
-#define B_lw   w8
-#define B_h	x9
-#define C_l	x10
-#define C_h	x11
-#define D_l	x12
-#define D_h	x13
-#define E_l	src
-#define E_h	count
-#define F_l	srcend
-#define F_h	dst
-#define tmp1	x9
-
-#define L(l) .L ## l
-
-/* Copies are split into 3 main cases: small copies of up to 16 bytes,
-   medium copies of 17..96 bytes which are fully unrolled. Large copies
-   of more than 96 bytes align the destination and use an unrolled loop
-   processing 64 bytes per iteration.
-   Small and medium copies read all data before writing, allowing any
-   kind of overlap, and memmove tailcalls memcpy for these cases as
-   well as non-overlapping copies.
-*/
-
-	prfm    PLDL1KEEP, [src]
-	add	srcend, src, count
-	add	dstend, dstin, count
-        cmp     count, 16
-        b.ls    L(copy16)
-	cmp	count, 96
-	b.hi	L(copy_long)
-
-	/* Medium copies: 17..96 bytes.  */
-	sub	tmp1, count, 1
-	ldp	A_l, A_h, [src]
-	tbnz	tmp1, 6, L(copy96)
-	ldp	D_l, D_h, [srcend, -16]
-	tbz	tmp1, 5, 1f
-	ldp	B_l, B_h, [src, 16]
-	ldp	C_l, C_h, [srcend, -32]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstend, -32]
-1:
-	stp	A_l, A_h, [dstin]
-	stp	D_l, D_h, [dstend, -16]
-	ret
-
-	.p2align 4
-
-	/* Small copies: 0..16 bytes.  */
-L(copy16):
-	cmp	count, 8
-	b.lo	1f
-	ldr	A_l, [src]
-	ldr	A_h, [srcend, -8]
-	str	A_l, [dstin]
-	str	A_h, [dstend, -8]
-	ret
-	.p2align 4
-1:
-	tbz	count, 2, 1f
-	ldr	A_lw, [src]
-	ldr	A_hw, [srcend, -4]
-	str	A_lw, [dstin]
-	str	A_hw, [dstend, -4]
-	ret
-
-	/* Copy 0..3 bytes.  Use a branchless sequence that copies the same
-	   byte 3 times if count==1, or the 2nd byte twice if count==2.  */
-1:
-	cbz	count, 2f
-	lsr	tmp1, count, 1
-	ldrb	A_lw, [src]
-	ldrb	A_hw, [srcend, -1]
-	ldrb	B_lw, [src, tmp1]
-	strb	A_lw, [dstin]
-	strb	B_lw, [dstin, tmp1]
-	strb	A_hw, [dstend, -1]
-2:	ret
-
-	.p2align 4
-	/* Copy 64..96 bytes.  Copy 64 bytes from the start and
-	   32 bytes from the end.  */
-L(copy96):
-	ldp	B_l, B_h, [src, 16]
-	ldp	C_l, C_h, [src, 32]
-	ldp	D_l, D_h, [src, 48]
-	ldp	E_l, E_h, [srcend, -32]
-	ldp	F_l, F_h, [srcend, -16]
-	stp	A_l, A_h, [dstin]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstin, 32]
-	stp	D_l, D_h, [dstin, 48]
-	stp	E_l, E_h, [dstend, -32]
-	stp	F_l, F_h, [dstend, -16]
-	ret
-
-	/* Align DST to 16 byte alignment so that we don't cross cache line
-	   boundaries on both loads and stores.	 There are at least 96 bytes
-	   to copy, so copy 16 bytes unaligned and then align.	The loop
-	   copies 64 bytes per iteration and prefetches one iteration ahead.  */
-
-	.p2align 4
-L(copy_long):
-	and	tmp1, dstin, 15
-	bic	dst, dstin, 15
-	ldp	D_l, D_h, [src]
-	sub	src, src, tmp1
-	add	count, count, tmp1	/* Count is now 16 too large.  */
-	ldp	A_l, A_h, [src, 16]
-	stp	D_l, D_h, [dstin]
-	ldp	B_l, B_h, [src, 32]
-	ldp	C_l, C_h, [src, 48]
-	ldp	D_l, D_h, [src, 64]!
-	subs	count, count, 128 + 16	/* Test and readjust count.  */
-	b.ls	2f
-1:
-	stp	A_l, A_h, [dst, 16]
-	ldp	A_l, A_h, [src, 16]
-	stp	B_l, B_h, [dst, 32]
-	ldp	B_l, B_h, [src, 32]
-	stp	C_l, C_h, [dst, 48]
-	ldp	C_l, C_h, [src, 48]
-	stp	D_l, D_h, [dst, 64]!
-	ldp	D_l, D_h, [src, 64]!
-	subs	count, count, 64
-	b.hi	1b
-
-	/* Write the last full set of 64 bytes.	 The remainder is at most 64
-	   bytes, so it is safe to always copy 64 bytes from the end even if
-	   there is just 1 byte left.  */
-2:
-	ldp	E_l, E_h, [srcend, -64]
-	stp	A_l, A_h, [dst, 16]
-	ldp	A_l, A_h, [srcend, -48]
-	stp	B_l, B_h, [dst, 32]
-	ldp	B_l, B_h, [srcend, -32]
-	stp	C_l, C_h, [dst, 48]
-	ldp	C_l, C_h, [srcend, -16]
-	stp	D_l, D_h, [dst, 64]
-	stp	E_l, E_h, [dstend, -64]
-	stp	A_l, A_h, [dstend, -48]
-	stp	B_l, B_h, [dstend, -32]
-	stp	C_l, C_h, [dstend, -16]
-	ret
diff --git a/libc/arch-arm64/generic/bionic/memmove.S b/libc/arch-arm64/generic/bionic/memmove.S
deleted file mode 100644
index 0f752ea..0000000
--- a/libc/arch-arm64/generic/bionic/memmove.S
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- *    products derived from this software without specific prior written
- *    permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses, wchar_t is 4 bytes
- */
-
-#include <private/bionic_asm.h>
-
-/* Parameters and result.  */
-#define dstin	x0
-#define src	x1
-#define count	x2
-#define srcend	x3
-#define dstend	x4
-#define tmp1	x5
-#define A_l	x6
-#define A_h	x7
-#define B_l	x8
-#define B_h	x9
-#define C_l	x10
-#define C_h	x11
-#define D_l	x12
-#define D_h	x13
-#define E_l	count
-#define E_h	tmp1
-
-/* All memmoves up to 96 bytes are done by memcpy as it supports overlaps.
-   Larger backwards copies are also handled by memcpy. The only remaining
-   case is forward large copies.  The destination is aligned, and an
-   unrolled loop processes 64 bytes per iteration.
-*/
-
-#if defined(WMEMMOVE)
-ENTRY(wmemmove)
-	lsl	count, count, #2
-#else
-ENTRY(memmove)
-#endif
-	sub	tmp1, dstin, src
-	cmp	count, 96
-	ccmp	tmp1, count, 2, hi
-	b.hs	__memcpy
-
-	cbz	tmp1, 3f
-	add	dstend, dstin, count
-	add	srcend, src, count
-
-	/* Align dstend to 16 byte alignment so that we don't cross cache line
-	   boundaries on both loads and stores.	 There are at least 96 bytes
-	   to copy, so copy 16 bytes unaligned and then align.	The loop
-	   copies 64 bytes per iteration and prefetches one iteration ahead.  */
-
-	and	tmp1, dstend, 15
-	ldp	D_l, D_h, [srcend, -16]
-	sub	srcend, srcend, tmp1
-	sub	count, count, tmp1
-	ldp	A_l, A_h, [srcend, -16]
-	stp	D_l, D_h, [dstend, -16]
-	ldp	B_l, B_h, [srcend, -32]
-	ldp	C_l, C_h, [srcend, -48]
-	ldp	D_l, D_h, [srcend, -64]!
-	sub	dstend, dstend, tmp1
-	subs	count, count, 128
-	b.ls	2f
-	nop
-1:
-	stp	A_l, A_h, [dstend, -16]
-	ldp	A_l, A_h, [srcend, -16]
-	stp	B_l, B_h, [dstend, -32]
-	ldp	B_l, B_h, [srcend, -32]
-	stp	C_l, C_h, [dstend, -48]
-	ldp	C_l, C_h, [srcend, -48]
-	stp	D_l, D_h, [dstend, -64]!
-	ldp	D_l, D_h, [srcend, -64]!
-	subs	count, count, 64
-	b.hi	1b
-
-	/* Write the last full set of 64 bytes.	 The remainder is at most 64
-	   bytes, so it is safe to always copy 64 bytes from the start even if
-	   there is just 1 byte left.  */
-2:
-	ldp	E_l, E_h, [src, 48]
-	stp	A_l, A_h, [dstend, -16]
-	ldp	A_l, A_h, [src, 32]
-	stp	B_l, B_h, [dstend, -32]
-	ldp	B_l, B_h, [src, 16]
-	stp	C_l, C_h, [dstend, -48]
-	ldp	C_l, C_h, [src]
-	stp	D_l, D_h, [dstend, -64]
-	stp	E_l, E_h, [dstin, 48]
-	stp	A_l, A_h, [dstin, 32]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstin]
-3:	ret
-
-#if defined(WMEMMOVE)
-END(wmemmove)
-#else
-END(memmove)
-
-ALIAS_SYMBOL(memcpy, memmove)
-#endif
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/memset.S b/libc/arch-arm64/generic/bionic/memset.S
deleted file mode 100644
index 19d3510..0000000
--- a/libc/arch-arm64/generic/bionic/memset.S
+++ /dev/null
@@ -1,253 +0,0 @@
-/* Copyright (c) 2012-2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- *    products derived from this software without specific prior written
- *    permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses
- *
- */
-
-#include <private/bionic_asm.h>
-
-/* By default we assume that the DC instruction can be used to zero
-   data blocks more efficiently.  In some circumstances this might be
-   unsafe, for example in an asymmetric multiprocessor environment with
-   different DC clear lengths (neither the upper nor lower lengths are
-   safe to use).
-
-   If code may be run in a virtualized environment, then define
-   MAYBE_VIRT.  This will cause the code to cache the system register
-   values rather than re-reading them each call.  */
-
-#define dstin		x0
-#define val		x1
-#define valw		w1
-#define count		x2
-#define dst 		x3
-#define dstend		x4
-#define tmp1		x5
-#define tmp1w		w5
-#define tmp2		x6
-#define tmp2w		w6
-#define zva_len		x7
-#define zva_lenw	w7
-
-#define L(l) .L ## l
-
-ENTRY(__memset_chk)
-  cmp count, dst
-  bls memset
-
-  // Preserve for accurate backtrace.
-  stp x29, x30, [sp, -16]!
-  .cfi_def_cfa_offset 16
-  .cfi_rel_offset x29, 0
-  .cfi_rel_offset x30, 8
-
-  bl __memset_chk_fail
-END(__memset_chk)
-
-ENTRY(memset)
-
-	dup	v0.16B, valw
-	add	dstend, dstin, count
-
-	cmp	count, 96
-	b.hi	L(set_long)
-	cmp	count, 16
-	b.hs	L(set_medium)
-	mov	val, v0.D[0]
-
-	/* Set 0..15 bytes.  */
-	tbz	count, 3, 1f
-	str	val, [dstin]
-	str	val, [dstend, -8]
-	ret
-	nop
-1:	tbz	count, 2, 2f
-	str	valw, [dstin]
-	str	valw, [dstend, -4]
-	ret
-2:	cbz	count, 3f
-	strb	valw, [dstin]
-	tbz	count, 1, 3f
-	strh	valw, [dstend, -2]
-3:	ret
-
-	/* Set 17..96 bytes.  */
-L(set_medium):
-	str	q0, [dstin]
-	tbnz	count, 6, L(set96)
-	str	q0, [dstend, -16]
-	tbz	count, 5, 1f
-	str	q0, [dstin, 16]
-	str	q0, [dstend, -32]
-1:	ret
-
-	.p2align 4
-	/* Set 64..96 bytes.  Write 64 bytes from the start and
-	   32 bytes from the end.  */
-L(set96):
-	str	q0, [dstin, 16]
-	stp	q0, q0, [dstin, 32]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-	nop
-L(set_long):
-	and	valw, valw, 255
-	bic	dst, dstin, 15
-	str	q0, [dstin]
-	cmp	count, 256
-	ccmp	valw, 0, 0, cs
-	b.eq	L(try_zva)
-L(no_zva):
-	sub	count, dstend, dst	/* Count is 16 too large.  */
-	add	dst, dst, 16
-	sub	count, count, 64 + 16	/* Adjust count and bias for loop.  */
-1:	stp	q0, q0, [dst], 64
-	stp	q0, q0, [dst, -32]
-L(tail64):
-	subs	count, count, 64
-	b.hi	1b
-2:	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-L(try_zva):
-	mrs	tmp1, dczid_el0
-	tbnz	tmp1w, 4, L(no_zva)
-	and	tmp1w, tmp1w, 15
-	cmp	tmp1w, 4	/* ZVA size is 64 bytes.  */
-	b.ne	 L(zva_128)
-
-	/* Write the first and last 64 byte aligned block using stp rather
-	   than using DC ZVA.  This is faster on some cores.
-	 */
-L(zva_64):
-	str	q0, [dst, 16]
-	stp	q0, q0, [dst, 32]
-	bic	dst, dst, 63
-	stp	q0, q0, [dst, 64]
-	stp	q0, q0, [dst, 96]
-	sub	count, dstend, dst	/* Count is now 128 too large.	*/
-	sub	count, count, 128+64+64	/* Adjust count and bias for loop.  */
-	add	dst, dst, 128
-	nop
-1:	dc	zva, dst
-	add	dst, dst, 64
-	subs	count, count, 64
-	b.hi	1b
-	stp	q0, q0, [dst, 0]
-	stp	q0, q0, [dst, 32]
-	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-L(zva_128):
-	cmp	tmp1w, 5	/* ZVA size is 128 bytes.  */
-	b.ne	L(zva_other)
-
-	str	q0, [dst, 16]
-	stp	q0, q0, [dst, 32]
-	stp	q0, q0, [dst, 64]
-	stp	q0, q0, [dst, 96]
-	bic	dst, dst, 127
-	sub	count, dstend, dst	/* Count is now 128 too large.	*/
-	sub	count, count, 128+128	/* Adjust count and bias for loop.  */
-	add	dst, dst, 128
-1:	dc	zva, dst
-	add	dst, dst, 128
-	subs	count, count, 128
-	b.hi	1b
-	stp	q0, q0, [dstend, -128]
-	stp	q0, q0, [dstend, -96]
-	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-L(zva_other):
-	mov	tmp2w, 4
-	lsl	zva_lenw, tmp2w, tmp1w
-	add	tmp1, zva_len, 64	/* Max alignment bytes written.	 */
-	cmp	count, tmp1
-	blo	L(no_zva)
-
-	sub	tmp2, zva_len, 1
-	add	tmp1, dst, zva_len
-	add	dst, dst, 16
-	subs	count, tmp1, dst	/* Actual alignment bytes to write.  */
-	bic	tmp1, tmp1, tmp2	/* Aligned dc zva start address.  */
-	beq	2f
-1:	stp	q0, q0, [dst], 64
-	stp	q0, q0, [dst, -32]
-	subs	count, count, 64
-	b.hi	1b
-2:	mov	dst, tmp1
-	sub	count, dstend, tmp1	/* Remaining bytes to write.  */
-	subs	count, count, zva_len
-	b.lo	4f
-3:	dc	zva, dst
-	add	dst, dst, zva_len
-	subs	count, count, zva_len
-	b.hs	3b
-4:	add	count, count, zva_len
-	b	L(tail64)
-
-END(memset)
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/wmemmove.S b/libc/arch-arm64/generic/bionic/wmemmove.S
deleted file mode 100644
index b130530..0000000
--- a/libc/arch-arm64/generic/bionic/wmemmove.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define WMEMMOVE
-#include "memmove.S"
-#undef WMEMMOVE
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/static_function_dispatch.S b/libc/arch-arm64/static_function_dispatch.S
index 161ece8..c7557f8 100644
--- a/libc/arch-arm64/static_function_dispatch.S
+++ b/libc/arch-arm64/static_function_dispatch.S
@@ -34,13 +34,17 @@
 END(name)
 
 FUNCTION_DELEGATE(memchr, __memchr_aarch64_mte)
-FUNCTION_DELEGATE(stpcpy, __stpcpy_aarch64_mte)
+FUNCTION_DELEGATE(memcmp, __memcmp_aarch64)
+FUNCTION_DELEGATE(memcpy, __memcpy_aarch64)
+FUNCTION_DELEGATE(memmove, __memmove_aarch64)
+FUNCTION_DELEGATE(stpcpy, __stpcpy_aarch64)
 FUNCTION_DELEGATE(strchr, __strchr_aarch64_mte)
 FUNCTION_DELEGATE(strchrnul, __strchrnul_aarch64_mte)
-FUNCTION_DELEGATE(strcmp, __strcmp_aarch64_mte)
-FUNCTION_DELEGATE(strcpy, __strcpy_aarch64_mte)
+FUNCTION_DELEGATE(strcmp, __strcmp_aarch64)
+FUNCTION_DELEGATE(strcpy, __strcpy_aarch64)
 FUNCTION_DELEGATE(strlen, __strlen_aarch64_mte)
 FUNCTION_DELEGATE(strrchr, __strrchr_aarch64_mte)
-FUNCTION_DELEGATE(strncmp, __strncmp_aarch64_mte)
+FUNCTION_DELEGATE(strncmp, __strncmp_aarch64)
+FUNCTION_DELEGATE(strnlen, __strnlen_aarch64)
 
 NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/__memcpy_chk.S b/libc/arch-arm64/string/__memcpy_chk.S
similarity index 100%
rename from libc/arch-arm64/generic/bionic/__memcpy_chk.S
rename to libc/arch-arm64/string/__memcpy_chk.S
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-arm64/string/__memset_chk.S
similarity index 78%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-arm64/string/__memset_chk.S
index bc1945c..e1e29d0 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-arm64/string/__memset_chk.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,22 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(__memset_chk)
+  cmp x2, x3
+  // Direct b.ls memcpy may not have enough range
+  b.hi .L_memset_chk_fail
+  b memset
+
+.L_memset_chk_fail:
+  // Preserve for accurate backtrace.
+  stp x29, x30, [sp, -16]!
+  .cfi_def_cfa_offset 16
+  .cfi_rel_offset x29, 0
+  .cfi_rel_offset x30, 8
+
+  bl __memset_chk_fail
+END(__memset_chk)
 
 NOTE_GNU_PROPERTY()
diff --git a/libc/arch-common/bionic/crtbegin.c b/libc/arch-common/bionic/crtbegin.c
index 9b8ad4e..b87db64 100644
--- a/libc/arch-common/bionic/crtbegin.c
+++ b/libc/arch-common/bionic/crtbegin.c
@@ -56,6 +56,8 @@
 __asm__(PRE
         "xorl %ebp,%ebp; movl %esp,%eax; andl $~0xf,%esp; subl $12,%esp; pushl %eax;"
         "call _start_main" POST);
+#elif defined(__riscv)
+__asm__(PRE "li fp,0; li ra,0; mv a0,sp; tail _start_main" POST);
 #elif defined(__x86_64__)
 __asm__(PRE "xorl %ebp, %ebp; movq %rsp,%rdi; andq $~0xf,%rsp; callq _start_main" POST);
 #else
diff --git a/libc/arch-riscv64/bionic/__bionic_clone.S b/libc/arch-riscv64/bionic/__bionic_clone.S
new file mode 100644
index 0000000..d535095
--- /dev/null
+++ b/libc/arch-riscv64/bionic/__bionic_clone.S
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <private/bionic_asm.h>
+
+// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
+
+ENTRY_PRIVATE(__bionic_clone)
+  # Push 'fn' and 'arg' onto the child stack.
+  addi a1, a1, -16
+  sd a5, 0(a1)
+  sd a6, 8(a1)
+
+  # Make the system call.
+  li a7, __NR_clone
+  ecall
+
+  # Are we the child?
+  beqz a0, .L_bc_child
+
+  # Did the clone(2) fail?
+  bltz a0, .L_bc_failure
+  # Nope, we're the parent, and our work here is done.
+  ret
+
+.L_bc_failure:
+  # Set errno if something went wrong.
+  neg a0, a0
+  j __set_errno_internal
+
+.L_bc_child:
+  # We're in the child now. Set the end of the frame record chain.
+  li fp, 0
+  # Setting ra to 0 will make the unwinder stop at __start_thread.
+  li ra, 0
+  # Call __start_thread with the 'fn' and 'arg' we stored on the child stack.
+  ld a0, 0(sp)
+  ld a1, 8(sp)
+  addi sp, sp, 16
+  j __start_thread
+END(__bionic_clone)
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-riscv64/bionic/__set_tls.c
similarity index 84%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-riscv64/bionic/__set_tls.c
index bc1945c..57383ab 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-riscv64/bionic/__set_tls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,8 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#include <sys/cdefs.h>
 
-#include <private/bionic_asm.h>
-
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
-
-NOTE_GNU_PROPERTY()
+__LIBC_HIDDEN__ void __set_tls(void* tls) {
+  asm("mv tp, %0" : : "r"(tls));
+}
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-riscv64/bionic/_exit_with_stack_teardown.S
similarity index 78%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-riscv64/bionic/_exit_with_stack_teardown.S
index bc1945c..f7bf58b 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-riscv64/bionic/_exit_with_stack_teardown.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,16 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+// void _exit_with_stack_teardown(void* stackBase, size_t stackSize)
+ENTRY_PRIVATE(_exit_with_stack_teardown)
+  li a7, __NR_munmap
+  ecall
+  // If munmap failed, we ignore the failure and exit anyway.
 
-NOTE_GNU_PROPERTY()
+  li a0, 0
+  li a7, __NR_exit
+  ecall
+  // The exit syscall does not return.
+END(_exit_with_stack_teardown)
diff --git a/libc/arch-riscv64/bionic/setjmp.S b/libc/arch-riscv64/bionic/setjmp.S
new file mode 100644
index 0000000..eea2978
--- /dev/null
+++ b/libc/arch-riscv64/bionic/setjmp.S
@@ -0,0 +1,287 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <private/bionic_asm.h>
+#include <private/bionic_constants.h>
+
+// The internal structure of a jmp_buf is totally private.
+// Current layout (changes from release to release):
+//
+// word   name            description
+// 0      sigflag/cookie  setjmp cookie in top 31 bits, signal mask flag in low bit
+// 1      sigmask         64-bit signal mask
+// 2      ra
+// 3      s0
+// ......
+// 14     s11
+// 15     sp
+// 16     fs0
+// ......
+// 27     fs11
+// 28     checksum
+// _JBLEN: defined in bionic/libc/include/setjmp.h
+
+#define _JB_SIGFLAG   0
+#define _JB_SIGMASK   1 * 8
+#define _JB_RA        2 * 8
+#define _JB_S0        3 * 8
+#define _JB_S1        4 * 8
+#define _JB_S2        5 * 8
+#define _JB_S3        6 * 8
+#define _JB_S4        7 * 8
+#define _JB_S5        8 * 8
+#define _JB_S6        9 * 8
+#define _JB_S7       10 * 8
+#define _JB_S8       11 * 8
+#define _JB_S9       12 * 8
+#define _JB_S10      13 * 8
+#define _JB_S11      14 * 8
+#define _JB_SP       15 * 8
+#define _JB_FS0      16 * 8
+#define _JB_FS1      17 * 8
+#define _JB_FS2      18 * 8
+#define _JB_FS3      19 * 8
+#define _JB_FS4      20 * 8
+#define _JB_FS5      21 * 8
+#define _JB_FS6      22 * 8
+#define _JB_FS7      23 * 8
+#define _JB_FS8      24 * 8
+#define _JB_FS9      25 * 8
+#define _JB_FS10     26 * 8
+#define _JB_FS11     27 * 8
+#define _JB_CHECKSUM 28 * 8
+
+.macro m_mangle_registers reg, sp_reg
+  xor s0, s0, \reg
+  xor s1, s1, \reg
+  xor s2, s2, \reg
+  xor s3, s3, \reg
+  xor s4, s4, \reg
+  xor s5, s5, \reg
+  xor s6, s6, \reg
+  xor s7, s7, \reg
+  xor s8, s8, \reg
+  xor s9, s9, \reg
+  xor s10, s10, \reg
+  xor s11, s11, \reg
+  xor \sp_reg, \sp_reg, \reg
+.endm
+
+.macro m_calculate_checksum dst, src, scratch
+  li \dst, 0
+  .irp i,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
+    ld \scratch, (\i * 8)(\src)
+    xor \dst, \dst, \scratch
+  .endr
+.endm
+
+.macro m_unmangle_registers reg, sp_reg
+  m_mangle_registers \reg, sp_reg=\sp_reg
+.endm
+
+ENTRY(setjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(setjmp)
+  li a1, 1
+  tail sigsetjmp
+END(setjmp)
+
+ENTRY(_setjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(_setjmp)
+  li a1, 0
+  tail sigsetjmp
+END(_setjmp)
+
+// int sigsetjmp(sigjmp_buf env, int save_signal_mask);
+ENTRY(sigsetjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(sigsetjmp)
+  addi sp, sp, -24
+  sd a0, 0(sp)
+  sd a1, 8(sp)
+  sd ra, 16(sp)
+
+  // Get the cookie and store it along with the signal flag.
+  mv a0, a1
+  call __bionic_setjmp_cookie_get
+  mv a1, a0
+  ld a0, 0(sp)
+  sd a1, _JB_SIGFLAG(a0)
+
+  // Do we need to save the signal mask?
+  andi a1, a1, 1
+  beqz a1, 1f
+
+  // Save current signal mask.
+  // The 'how'/a0 argument is ignored if set is NULL.
+  li a1, 0 // NULL
+  addi a2, a0, _JB_SIGMASK // old_mask.
+  call sigprocmask
+
+1:
+  // Restore original a0/ra.
+  ld a0, 0(sp)
+  ld ra, 16(sp)
+  addi sp, sp, 24
+
+  // Get the cookie.
+  ld a1, _JB_SIGFLAG(a0)
+  andi a1, a1, -2
+
+  // Save core registers.
+  mv a2, sp
+  m_mangle_registers a1, sp_reg=a2
+  sd ra,  _JB_RA(a0)
+  sd s0,  _JB_S0(a0)
+  sd s1,  _JB_S1(a0)
+  sd s2,  _JB_S2(a0)
+  sd s3,  _JB_S3(a0)
+  sd s4,  _JB_S4(a0)
+  sd s5,  _JB_S5(a0)
+  sd s6,  _JB_S6(a0)
+  sd s7,  _JB_S7(a0)
+  sd s8,  _JB_S8(a0)
+  sd s9,  _JB_S9(a0)
+  sd s10, _JB_S10(a0)
+  sd s11, _JB_S11(a0)
+  sd a2,  _JB_SP(a0)
+  m_unmangle_registers a1, sp_reg=a2
+
+  // Save floating point registers.
+  fsd fs0,  _JB_FS0(a0)
+  fsd fs1,  _JB_FS1(a0)
+  fsd fs2,  _JB_FS2(a0)
+  fsd fs3,  _JB_FS3(a0)
+  fsd fs4,  _JB_FS4(a0)
+  fsd fs5,  _JB_FS5(a0)
+  fsd fs6,  _JB_FS6(a0)
+  fsd fs7,  _JB_FS7(a0)
+  fsd fs8,  _JB_FS8(a0)
+  fsd fs9,  _JB_FS9(a0)
+  fsd fs10, _JB_FS10(a0)
+  fsd fs11, _JB_FS11(a0)
+
+  // Calculate the checksum and save it.
+  m_calculate_checksum t0, a0, t1
+  sd t0, _JB_CHECKSUM(a0)
+
+  li a0, 0
+  ret
+END(sigsetjmp)
+
+// void siglongjmp(sigjmp_buf env, int value);
+ENTRY(siglongjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(siglongjmp)
+  // Check the checksum before doing anything.
+  m_calculate_checksum t0, a0, t1
+  ld t1, _JB_CHECKSUM(a0)
+  bne t0, t1, 3f
+
+  // Do we need to restore the signal mask?
+  ld a2, _JB_SIGFLAG(a0)
+  andi a3, a2, 1
+  beqz a3, 1f
+
+  addi sp, sp, -16
+  sd a0, 0(sp)
+  sd ra, 8(sp)
+
+  // Restore the signal mask.
+  mv t0, a1 // Save 'value'.
+
+  mv a2, a0
+  li a0, 2 // SIG_SETMASK
+  addi a1, a2, _JB_SIGMASK // new_mask
+  li a2, 0 // NULL
+  call sigprocmask
+  mv a1, t0 // Restore 'value'.
+
+  // Restore original a0 and ra.
+  ld a0, 0(sp)
+  ld ra, 8(sp)
+  addi sp, sp, 16
+
+  ld a2, _JB_SIGFLAG(a0)
+1:
+  // Restore core registers.
+  andi a2, a2, -2
+  ld ra,  _JB_RA(a0)
+  ld s0,  _JB_S0(a0)
+  ld s1,  _JB_S1(a0)
+  ld s2,  _JB_S2(a0)
+  ld s3,  _JB_S3(a0)
+  ld s4,  _JB_S4(a0)
+  ld s5,  _JB_S5(a0)
+  ld s6,  _JB_S6(a0)
+  ld s7,  _JB_S7(a0)
+  ld s8,  _JB_S8(a0)
+  ld s9,  _JB_S9(a0)
+  ld s10, _JB_S10(a0)
+  ld s11, _JB_S11(a0)
+  ld a3,  _JB_SP(a0)
+  m_unmangle_registers a2, sp_reg=a3
+  mv sp, a3
+
+  addi sp, sp, -24
+  sd   ra, 0(sp)
+  sd   a0, 8(sp)
+  sd   a1, 16(sp)
+  ld   a0, _JB_SIGFLAG(a0)
+  call __bionic_setjmp_cookie_check
+  ld   ra, 0(sp)
+  ld   a0, 8(sp)
+  ld   a1, 16(sp)
+  addi sp, sp, 24
+
+  // Restore floating point registers.
+  fld fs0,  _JB_FS0(a0)
+  fld fs1,  _JB_FS1(a0)
+  fld fs2,  _JB_FS2(a0)
+  fld fs3,  _JB_FS3(a0)
+  fld fs4,  _JB_FS4(a0)
+  fld fs5,  _JB_FS5(a0)
+  fld fs6,  _JB_FS6(a0)
+  fld fs7,  _JB_FS7(a0)
+  fld fs8,  _JB_FS8(a0)
+  fld fs9,  _JB_FS9(a0)
+  fld fs10, _JB_FS10(a0)
+  fld fs11, _JB_FS11(a0)
+
+  // Set return value.
+  beqz a1, 2f
+  li a0, 1
+2:
+  mv a0, a1
+  ret
+
+3:
+  call __bionic_setjmp_checksum_mismatch
+END(siglongjmp)
+
+ALIAS_SYMBOL(longjmp, siglongjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(longjmp)
+ALIAS_SYMBOL(_longjmp, siglongjmp)
+__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(_longjmp)
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-riscv64/bionic/syscall.S
similarity index 79%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-riscv64/bionic/syscall.S
index bc1945c..7b9d3ca 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-riscv64/bionic/syscall.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2020 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,28 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(syscall)
+  // Move the syscall number up.
+  mv a7, a0
 
-NOTE_GNU_PROPERTY()
+  // Shuffle the arguments down.
+  mv a0, a1
+  mv a1, a2
+  mv a2, a3
+  mv a3, a4
+  mv a4, a5
+  mv a5, a6
+
+  ecall
+
+  // Did it fail?
+  li a7, -MAX_ERRNO
+  bgtu a0, a7, 1f
+
+  ret
+1:
+  neg a0, a0
+  j __set_errno_internal
+END(syscall)
diff --git a/libc/arch-riscv64/bionic/vfork.S b/libc/arch-riscv64/bionic/vfork.S
new file mode 100644
index 0000000..0eff9e9
--- /dev/null
+++ b/libc/arch-riscv64/bionic/vfork.S
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <platform/bionic/tls_defines.h>
+#include <private/bionic_asm.h>
+#include <asm/signal.h>
+#include <linux/sched.h>
+
+ENTRY(vfork)
+  // t0 = __get_tls()[TLS_SLOT_THREAD_ID]
+  mv      t0, tp
+  ld      t0, TLS_SLOT_THREAD_ID * 8(t0)
+
+  // Set cached_pid_ to 0, vforked_ to 1, and stash the previous value.
+  li      t1, 0x80000000
+  lw      t2, 20(t0)
+  sw      t1, 20(t0)
+
+  li      a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
+  li      a1, 0 //uses a duplicate of the parent's stack
+  li      a2, 0
+  li      a3, 0
+  li      a4, 0
+
+  li      a7, __NR_clone
+  ecall
+
+  // if (rc == 0) we're the child, and finished...
+  beqz    a0, .L_success
+
+  // else if (rc != 0): reset cached_pid_ and vforked_...
+  sw      t2, 20(t0)
+  // ...and work out whether we succeeded or failed.
+  bltz    a0, .L_failure
+.L_success:
+  ret
+
+.L_failure:
+  neg     a0, a0
+  j       __set_errno_internal
+END(vfork)
diff --git a/libc/arch-riscv64/string/memset_chk.c b/libc/arch-riscv64/string/memset_chk.c
new file mode 100644
index 0000000..bdd15a5
--- /dev/null
+++ b/libc/arch-riscv64/string/memset_chk.c
@@ -0,0 +1,9 @@
+#include <stdint.h>
+
+extern void* memset(void*, int, size_t);
+extern void* __memset_chk_fail(void*, int, size_t, size_t);
+
+void* __memset_chk(void* dst, int c, size_t n, size_t dst_len) {
+  if (dst_len < n) __memset_chk_fail(dst, c, n, dst_len);
+  return memset(dst, c, n);
+}
diff --git a/libc/arch-x86/atom/string/cache.h b/libc/arch-x86/atom/string/cache.h
deleted file mode 100644
index 823bb1e..0000000
--- a/libc/arch-x86/atom/string/cache.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright (c) 2010, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* Values are optimized for Atom */
-#define SHARED_CACHE_SIZE	(512*1024)			/* Atom L2 Cache */
-#define DATA_CACHE_SIZE		(24*1024)			/* Atom L1 Data Cache */
-
-#define SHARED_CACHE_SIZE_HALF	(SHARED_CACHE_SIZE / 2)
-#define DATA_CACHE_SIZE_HALF	(DATA_CACHE_SIZE / 2)
diff --git a/libc/arch-x86/dynamic_function_dispatch.cpp b/libc/arch-x86/dynamic_function_dispatch.cpp
index e94fa1f..38d8a0a 100644
--- a/libc/arch-x86/dynamic_function_dispatch.cpp
+++ b/libc/arch-x86/dynamic_function_dispatch.cpp
@@ -95,13 +95,6 @@
     RETURN_FUNC(wmemcmp_func, wmemcmp_freebsd);
 }
 
-typedef int wmemset_func(const wchar_t* __lhs, const wchar_t* __rhs, size_t __n);
-DEFINE_IFUNC_FOR(wmemset) {
-    __builtin_cpu_init();
-    if (__builtin_cpu_supports("avx2")) RETURN_FUNC(wmemset_func, wmemset_avx2);
-    RETURN_FUNC(wmemset_func, wmemset_freebsd);
-}
-
 typedef int strcmp_func(const char* __lhs, const char* __rhs);
 DEFINE_IFUNC_FOR(strcmp) {
     __builtin_cpu_init();
diff --git a/libc/arch-x86/generic/string/wmemset.c b/libc/arch-x86/generic/string/wmemset.c
deleted file mode 100644
index 35d489f..0000000
--- a/libc/arch-x86/generic/string/wmemset.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#define wmemset wmemset_freebsd
-
-#include <upstream-freebsd/lib/libc/string/wmemset.c>
diff --git a/libc/arch-x86/kabylake/string/avx2-wmemset-kbl.S b/libc/arch-x86/kabylake/string/avx2-wmemset-kbl.S
deleted file mode 100644
index 69b66c7..0000000
--- a/libc/arch-x86/kabylake/string/avx2-wmemset-kbl.S
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-Copyright (C) 2019 The Android Open Source Project
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
- * Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in
-   the documentation and/or other materials provided with the
-   distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-*/
-
-#include <private/bionic_asm.h>
-
-#ifndef WMEMSET
- #define WMEMSET wmemset_avx2
-#endif
-
-ENTRY(WMEMSET)
-# BB#0:
-	pushl	%ebp
-	pushl	%ebx
-	pushl	%edi
-	pushl	%esi
-	pushl	%eax
-	movl	32(%esp), %ecx
-	movl	24(%esp), %eax
-	testl	%ecx, %ecx
-	je	.LBB0_12
-# BB#1:
-	movl	28(%esp), %edx
-	xorl	%edi, %edi
-	movl	%eax, %esi
-	cmpl	$32, %ecx
-	jb	.LBB0_10
-# BB#2:
-	movl	%ecx, %eax
-	andl	$-32, %eax
-	vmovd	%edx, %xmm0
-	vpbroadcastd	%xmm0, %ymm0
-	movl	%eax, (%esp)            # 4-byte Spill
-	leal	-32(%eax), %esi
-	movl	%esi, %eax
-	shrl	$5, %eax
-	leal	1(%eax), %edi
-	andl	$7, %edi
-	xorl	%ebx, %ebx
-	cmpl	$224, %esi
-	jb	.LBB0_5
-# BB#3:
-	movl	24(%esp), %esi
-	leal	992(%esi), %ebp
-	leal	-1(%edi), %esi
-	subl	%eax, %esi
-	xorl	%ebx, %ebx
-	.p2align	4, 0x90
-.LBB0_4:                                # =>This Inner Loop Header: Depth=1
-	vmovdqu	%ymm0, -992(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -960(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -928(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -896(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -864(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -832(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -800(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -768(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -736(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -704(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -672(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -640(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -608(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -576(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -544(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -512(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -480(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -448(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -416(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -384(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -352(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -320(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -288(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -256(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -224(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -192(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -160(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -128(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -96(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -64(%ebp,%ebx,4)
-	vmovdqu	%ymm0, -32(%ebp,%ebx,4)
-	vmovdqu	%ymm0, (%ebp,%ebx,4)
-	addl	$256, %ebx              # imm = 0x100
-	addl	$8, %esi
-	jne	.LBB0_4
-.LBB0_5:
-	testl	%edi, %edi
-	movl	24(%esp), %eax
-	je	.LBB0_8
-# BB#6:
-	leal	(%eax,%ebx,4), %esi
-	addl	$96, %esi
-	negl	%edi
-	.p2align	4, 0x90
-.LBB0_7:                                # =>This Inner Loop Header: Depth=1
-	vmovdqu	%ymm0, -96(%esi)
-	vmovdqu	%ymm0, -64(%esi)
-	vmovdqu	%ymm0, -32(%esi)
-	vmovdqu	%ymm0, (%esi)
-	subl	$-128, %esi
-	addl	$1, %edi
-	jne	.LBB0_7
-.LBB0_8:
-	movl	(%esp), %edi            # 4-byte Reload
-	cmpl	%ecx, %edi
-	je	.LBB0_12
-# BB#9:
-	leal	(%eax,%edi,4), %esi
-.LBB0_10:
-	subl	%edi, %ecx
-	.p2align	4, 0x90
-.LBB0_11:                               # =>This Inner Loop Header: Depth=1
-	movl	%edx, (%esi)
-	addl	$4, %esi
-	addl	$-1, %ecx
-	jne	.LBB0_11
-.LBB0_12:
-	addl	$4, %esp
-	popl	%esi
-	popl	%edi
-	popl	%ebx
-	popl	%ebp
-	vzeroupper
-	retl
-END(WMEMSET)
diff --git a/libc/arch-x86/static_function_dispatch.S b/libc/arch-x86/static_function_dispatch.S
index 1560c04..7e8e63d 100644
--- a/libc/arch-x86/static_function_dispatch.S
+++ b/libc/arch-x86/static_function_dispatch.S
@@ -45,7 +45,6 @@
 FUNCTION_DELEGATE(strncmp, strncmp_generic)
 FUNCTION_DELEGATE(strcat, strcat_generic)
 FUNCTION_DELEGATE(wmemcmp, wmemcmp_freebsd)
-FUNCTION_DELEGATE(wmemset, wmemset_freebsd)
 FUNCTION_DELEGATE(wcscat, wcscat_freebsd)
 FUNCTION_DELEGATE(strncat, strncat_openbsd)
 FUNCTION_DELEGATE(strlcat, strlcat_openbsd)
diff --git a/libc/arch-x86/silvermont/string/cache.h b/libc/arch-x86/string/cache.h
similarity index 80%
rename from libc/arch-x86/silvermont/string/cache.h
rename to libc/arch-x86/string/cache.h
index c342b1c..33719a0 100644
--- a/libc/arch-x86/silvermont/string/cache.h
+++ b/libc/arch-x86/string/cache.h
@@ -28,9 +28,14 @@
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-/* Values are optimized for Silvermont */
-#define SHARED_CACHE_SIZE	(1024*1024)			/* Silvermont L2 Cache */
-#define DATA_CACHE_SIZE		(24*1024)			/* Silvermont L1 Data Cache */
+#ifdef FOR_ATOM
+#define SHARED_CACHE_SIZE (512 * 1024) /* Atom L2 Cache */
+#endif
+#ifdef FOR_SILVERMONT
+#define SHARED_CACHE_SIZE (1024 * 1024) /* Silvermont L2 Cache */
+#endif
 
-#define SHARED_CACHE_SIZE_HALF	(SHARED_CACHE_SIZE / 2)
-#define DATA_CACHE_SIZE_HALF	(DATA_CACHE_SIZE / 2)
+#define DATA_CACHE_SIZE (24 * 1024) /* Atom and Silvermont L1 Data Cache */
+
+#define SHARED_CACHE_SIZE_HALF (SHARED_CACHE_SIZE / 2)
+#define DATA_CACHE_SIZE_HALF (DATA_CACHE_SIZE / 2)
diff --git a/libc/arch-x86/atom/string/sse2-memchr-atom.S b/libc/arch-x86/string/sse2-memchr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-memchr-atom.S
rename to libc/arch-x86/string/sse2-memchr-atom.S
diff --git a/libc/arch-x86/silvermont/string/sse2-memmove-slm.S b/libc/arch-x86/string/sse2-memmove-slm.S
similarity index 99%
rename from libc/arch-x86/silvermont/string/sse2-memmove-slm.S
rename to libc/arch-x86/string/sse2-memmove-slm.S
index da6456c..79b5d1b 100644
--- a/libc/arch-x86/silvermont/string/sse2-memmove-slm.S
+++ b/libc/arch-x86/string/sse2-memmove-slm.S
@@ -28,6 +28,7 @@
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#define FOR_SILVERMONT
 #include "cache.h"
 
 #ifndef MEMMOVE
diff --git a/libc/arch-x86/atom/string/sse2-memrchr-atom.S b/libc/arch-x86/string/sse2-memrchr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-memrchr-atom.S
rename to libc/arch-x86/string/sse2-memrchr-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-memset-atom.S b/libc/arch-x86/string/sse2-memset-atom.S
similarity index 99%
rename from libc/arch-x86/atom/string/sse2-memset-atom.S
rename to libc/arch-x86/string/sse2-memset-atom.S
index e4cd038..320afec 100644
--- a/libc/arch-x86/atom/string/sse2-memset-atom.S
+++ b/libc/arch-x86/string/sse2-memset-atom.S
@@ -30,6 +30,7 @@
 
 #include <private/bionic_asm.h>
 
+#define FOR_ATOM
 #include "cache.h"
 
 #ifndef L
diff --git a/libc/arch-x86/silvermont/string/sse2-memset-slm.S b/libc/arch-x86/string/sse2-memset-slm.S
similarity index 99%
rename from libc/arch-x86/silvermont/string/sse2-memset-slm.S
rename to libc/arch-x86/string/sse2-memset-slm.S
index b7633f5..5cff141 100644
--- a/libc/arch-x86/silvermont/string/sse2-memset-slm.S
+++ b/libc/arch-x86/string/sse2-memset-slm.S
@@ -30,6 +30,7 @@
 
 #include <private/bionic_asm.h>
 
+#define FOR_SILVERMONT
 #include "cache.h"
 
 #ifndef L
diff --git a/libc/arch-x86/silvermont/string/sse2-stpcpy-slm.S b/libc/arch-x86/string/sse2-stpcpy-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse2-stpcpy-slm.S
rename to libc/arch-x86/string/sse2-stpcpy-slm.S
diff --git a/libc/arch-x86/silvermont/string/sse2-stpncpy-slm.S b/libc/arch-x86/string/sse2-stpncpy-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse2-stpncpy-slm.S
rename to libc/arch-x86/string/sse2-stpncpy-slm.S
diff --git a/libc/arch-x86/atom/string/sse2-strchr-atom.S b/libc/arch-x86/string/sse2-strchr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-strchr-atom.S
rename to libc/arch-x86/string/sse2-strchr-atom.S
diff --git a/libc/arch-x86/silvermont/string/sse2-strcpy-slm.S b/libc/arch-x86/string/sse2-strcpy-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse2-strcpy-slm.S
rename to libc/arch-x86/string/sse2-strcpy-slm.S
diff --git a/libc/arch-x86/atom/string/sse2-strlen-atom.S b/libc/arch-x86/string/sse2-strlen-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-strlen-atom.S
rename to libc/arch-x86/string/sse2-strlen-atom.S
diff --git a/libc/arch-x86/silvermont/string/sse2-strlen-slm.S b/libc/arch-x86/string/sse2-strlen-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse2-strlen-slm.S
rename to libc/arch-x86/string/sse2-strlen-slm.S
diff --git a/libc/arch-x86/silvermont/string/sse2-strncpy-slm.S b/libc/arch-x86/string/sse2-strncpy-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse2-strncpy-slm.S
rename to libc/arch-x86/string/sse2-strncpy-slm.S
diff --git a/libc/arch-x86/atom/string/sse2-strnlen-atom.S b/libc/arch-x86/string/sse2-strnlen-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-strnlen-atom.S
rename to libc/arch-x86/string/sse2-strnlen-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-strrchr-atom.S b/libc/arch-x86/string/sse2-strrchr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-strrchr-atom.S
rename to libc/arch-x86/string/sse2-strrchr-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-wcschr-atom.S b/libc/arch-x86/string/sse2-wcschr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-wcschr-atom.S
rename to libc/arch-x86/string/sse2-wcschr-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-wcscmp-atom.S b/libc/arch-x86/string/sse2-wcscmp-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-wcscmp-atom.S
rename to libc/arch-x86/string/sse2-wcscmp-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-wcslen-atom.S b/libc/arch-x86/string/sse2-wcslen-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-wcslen-atom.S
rename to libc/arch-x86/string/sse2-wcslen-atom.S
diff --git a/libc/arch-x86/atom/string/sse2-wcsrchr-atom.S b/libc/arch-x86/string/sse2-wcsrchr-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/sse2-wcsrchr-atom.S
rename to libc/arch-x86/string/sse2-wcsrchr-atom.S
diff --git a/libc/arch-x86/silvermont/string/sse4-memcmp-slm.S b/libc/arch-x86/string/sse4-memcmp-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse4-memcmp-slm.S
rename to libc/arch-x86/string/sse4-memcmp-slm.S
diff --git a/libc/arch-x86/silvermont/string/sse4-wmemcmp-slm.S b/libc/arch-x86/string/sse4-wmemcmp-slm.S
similarity index 100%
rename from libc/arch-x86/silvermont/string/sse4-wmemcmp-slm.S
rename to libc/arch-x86/string/sse4-wmemcmp-slm.S
diff --git a/libc/arch-x86/atom/string/ssse3-memcmp-atom.S b/libc/arch-x86/string/ssse3-memcmp-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-memcmp-atom.S
rename to libc/arch-x86/string/ssse3-memcmp-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-memcpy-atom.S b/libc/arch-x86/string/ssse3-memcpy-atom.S
similarity index 99%
rename from libc/arch-x86/atom/string/ssse3-memcpy-atom.S
rename to libc/arch-x86/string/ssse3-memcpy-atom.S
index 5532e2e..fe3082e 100644
--- a/libc/arch-x86/atom/string/ssse3-memcpy-atom.S
+++ b/libc/arch-x86/string/ssse3-memcpy-atom.S
@@ -28,6 +28,7 @@
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#define FOR_ATOM
 #include "cache.h"
 
 #ifndef MEMCPY
diff --git a/libc/arch-x86/atom/string/ssse3-memmove-atom.S b/libc/arch-x86/string/ssse3-memmove-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-memmove-atom.S
rename to libc/arch-x86/string/ssse3-memmove-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strcat-atom.S b/libc/arch-x86/string/ssse3-strcat-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strcat-atom.S
rename to libc/arch-x86/string/ssse3-strcat-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strcmp-atom.S b/libc/arch-x86/string/ssse3-strcmp-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strcmp-atom.S
rename to libc/arch-x86/string/ssse3-strcmp-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strcpy-atom.S b/libc/arch-x86/string/ssse3-strcpy-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strcpy-atom.S
rename to libc/arch-x86/string/ssse3-strcpy-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strlcat-atom.S b/libc/arch-x86/string/ssse3-strlcat-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strlcat-atom.S
rename to libc/arch-x86/string/ssse3-strlcat-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strlcpy-atom.S b/libc/arch-x86/string/ssse3-strlcpy-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strlcpy-atom.S
rename to libc/arch-x86/string/ssse3-strlcpy-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strncat-atom.S b/libc/arch-x86/string/ssse3-strncat-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strncat-atom.S
rename to libc/arch-x86/string/ssse3-strncat-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strncmp-atom.S b/libc/arch-x86/string/ssse3-strncmp-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strncmp-atom.S
rename to libc/arch-x86/string/ssse3-strncmp-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-strncpy-atom.S b/libc/arch-x86/string/ssse3-strncpy-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-strncpy-atom.S
rename to libc/arch-x86/string/ssse3-strncpy-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-wcscat-atom.S b/libc/arch-x86/string/ssse3-wcscat-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-wcscat-atom.S
rename to libc/arch-x86/string/ssse3-wcscat-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-wcscpy-atom.S b/libc/arch-x86/string/ssse3-wcscpy-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-wcscpy-atom.S
rename to libc/arch-x86/string/ssse3-wcscpy-atom.S
diff --git a/libc/arch-x86/atom/string/ssse3-wmemcmp-atom.S b/libc/arch-x86/string/ssse3-wmemcmp-atom.S
similarity index 100%
rename from libc/arch-x86/atom/string/ssse3-wmemcmp-atom.S
rename to libc/arch-x86/string/ssse3-wmemcmp-atom.S
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-x86_64/dynamic_function_dispatch.cpp
similarity index 66%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-x86_64/dynamic_function_dispatch.cpp
index bc1945c..c846ded 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-x86_64/dynamic_function_dispatch.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,24 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#include <stddef.h>
 
-#include <private/bionic_asm.h>
+#include <private/bionic_ifuncs.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+extern "C" {
 
-NOTE_GNU_PROPERTY()
+typedef int memset_func(void* __dst, int __ch, size_t __n);
+DEFINE_IFUNC_FOR(memset) {
+  __builtin_cpu_init();
+  if (__builtin_cpu_supports("avx2")) RETURN_FUNC(memset_func, memset_avx2);
+  RETURN_FUNC(memset_func, memset_generic);
+}
+
+typedef void* __memset_chk_func(void* s, int c, size_t n, size_t n2);
+DEFINE_IFUNC_FOR(__memset_chk) {
+  __builtin_cpu_init();
+  if (__builtin_cpu_supports("avx2")) RETURN_FUNC(__memset_chk_func, __memset_chk_avx2);
+  RETURN_FUNC(__memset_chk_func, __memset_chk_generic);
+}
+
+}  // extern "C"
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-x86_64/static_function_dispatch.S
similarity index 84%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/arch-x86_64/static_function_dispatch.S
index bc1945c..93ff5f2 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-x86_64/static_function_dispatch.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,12 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+#define FUNCTION_DELEGATE(name, impl) \
+ENTRY(name); \
+    jmp impl; \
+END(name)
 
-NOTE_GNU_PROPERTY()
+FUNCTION_DELEGATE(memset, memset_generic)
+FUNCTION_DELEGATE(__memset_chk, __memset_chk_generic)
diff --git a/libc/arch-x86_64/string/avx2-memset-kbl.S b/libc/arch-x86_64/string/avx2-memset-kbl.S
new file mode 100644
index 0000000..09dd07d
--- /dev/null
+++ b/libc/arch-x86_64/string/avx2-memset-kbl.S
@@ -0,0 +1,160 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <private/bionic_asm.h>
+
+#include "cache.h"
+
+#ifndef L
+# define L(label)	.L##label
+#endif
+
+#ifndef ALIGN
+# define ALIGN(n)	.p2align n
+#endif
+
+	.section .text.avx2,"ax",@progbits
+
+ENTRY(__memset_chk_avx2)
+	# %rdi = dst, %rsi = byte, %rdx = n, %rcx = dst_len
+	cmp %rcx, %rdx
+	ja __memset_chk_fail
+	// Fall through to memset...
+END(__memset_chk_avx2)
+
+ENTRY(memset_avx2)
+	movq	%rdi, %rax
+	and	$0xff, %rsi
+	mov	$0x0101010101010101, %rcx
+	imul	%rsi, %rcx
+	cmpq	$16, %rdx
+	jae	L(16bytesormore)
+	testb	$8, %dl
+	jnz	L(8_15bytes)
+	testb	$4, %dl
+	jnz	L(4_7bytes)
+	testb	$2, %dl
+	jnz	L(2_3bytes)
+	testb	$1, %dl
+	jz	L(return)
+	movb	%cl, (%rdi)
+L(return):
+	ret
+
+L(8_15bytes):
+	movq	%rcx, (%rdi)
+	movq	%rcx, -8(%rdi, %rdx)
+	ret
+
+L(4_7bytes):
+	movl	%ecx, (%rdi)
+	movl	%ecx, -4(%rdi, %rdx)
+	ret
+
+L(2_3bytes):
+	movw	%cx, (%rdi)
+	movw	%cx, -2(%rdi, %rdx)
+	ret
+
+	ALIGN (4)
+L(16bytesormore):
+	movd	%rcx, %xmm0
+	pshufd	$0, %xmm0, %xmm0
+	movdqu	%xmm0, (%rdi)
+	movdqu	%xmm0, -16(%rdi, %rdx)
+	cmpq	$32, %rdx
+	jbe	L(32bytesless)
+	movdqu	%xmm0, 16(%rdi)
+	movdqu	%xmm0, -32(%rdi, %rdx)
+	cmpq	$64, %rdx
+	jbe	L(64bytesless)
+	movdqu	%xmm0, 32(%rdi)
+	movdqu	%xmm0, 48(%rdi)
+	movdqu	%xmm0, -64(%rdi, %rdx)
+	movdqu	%xmm0, -48(%rdi, %rdx)
+	cmpq	$128, %rdx
+	jbe	L(128bytesless)
+        vpbroadcastb %xmm0, %ymm0
+	vmovdqu	%ymm0, 64(%rdi)
+	vmovdqu	%ymm0, 96(%rdi)
+	vmovdqu	%ymm0, -128(%rdi, %rdx)
+	vmovdqu	%ymm0, -96(%rdi, %rdx)
+	cmpq	$256, %rdx
+        ja      L(256bytesmore)
+L(32bytesless):
+L(64bytesless):
+L(128bytesless):
+	ret
+
+	ALIGN (4)
+L(256bytesmore):
+	leaq	128(%rdi), %rcx
+	andq	$-128, %rcx
+	movq	%rdx, %r8
+	addq	%rdi, %rdx
+	andq	$-128, %rdx
+	cmpq	%rcx, %rdx
+	je	L(return)
+
+#ifdef SHARED_CACHE_SIZE
+	cmp	$SHARED_CACHE_SIZE, %r8
+#else
+	cmp	__x86_64_shared_cache_size(%rip), %r8
+#endif
+	ja	L(256bytesmore_nt)
+
+	ALIGN (4)
+L(256bytesmore_normal):
+	vmovdqa	%ymm0, (%rcx)
+	vmovdqa	%ymm0, 32(%rcx)
+	vmovdqa	%ymm0, 64(%rcx)
+	vmovdqa	%ymm0, 96(%rcx)
+	addq	$128, %rcx
+	cmpq	%rcx, %rdx
+	jne	L(256bytesmore_normal)
+	ret
+
+	ALIGN (4)
+L(256bytesmore_nt):
+	movntdq	 %xmm0, (%rcx)
+	movntdq	 %xmm0, 16(%rcx)
+	movntdq	 %xmm0, 32(%rcx)
+	movntdq	 %xmm0, 48(%rcx)
+	movntdq	 %xmm0, 64(%rcx)
+	movntdq	 %xmm0, 80(%rcx)
+	movntdq	 %xmm0, 96(%rcx)
+	movntdq	 %xmm0, 112(%rcx)
+	leaq	128(%rcx), %rcx
+	cmpq	%rcx, %rdx
+	jne	L(256bytesmore_nt)
+	sfence
+	ret
+
+END(memset_avx2)
diff --git a/libc/arch-x86_64/string/avx2-wmemset-kbl.S b/libc/arch-x86_64/string/avx2-wmemset-kbl.S
deleted file mode 100644
index 7c485cf..0000000
--- a/libc/arch-x86_64/string/avx2-wmemset-kbl.S
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-Copyright (C) 2019 The Android Open Source Project
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
- * Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in
-   the documentation and/or other materials provided with the
-   distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-*/
-
-#include <private/bionic_asm.h>
-
-#ifndef WMEMSET
- #define WMEMSET wmemset_avx2
-#endif
-
-        .section .text.avx2,"ax",@progbits
-
-ENTRY (WMEMSET)
-# BB#0:
-	testq	%rdx, %rdx
-	je	.LBB0_14
-# BB#1:
-	cmpq	$32, %rdx
-	jae	.LBB0_3
-# BB#2:
-	xorl	%r8d, %r8d
-	movq	%rdi, %rax
-	jmp	.LBB0_12
-.LBB0_3:
-	movq	%rdx, %r8
-	andq	$-32, %r8
-	vmovd	%esi, %xmm0
-	vpbroadcastd	%xmm0, %ymm0
-	leaq	-32(%r8), %rcx
-	movq	%rcx, %rax
-	shrq	$5, %rax
-	leal	1(%rax), %r9d
-	andl	$7, %r9d
-	cmpq	$224, %rcx
-	jae	.LBB0_5
-# BB#4:
-	xorl	%eax, %eax
-	testq	%r9, %r9
-	jne	.LBB0_8
-	jmp	.LBB0_10
-.LBB0_5:
-	leaq	992(%rdi), %rcx
-	leaq	-1(%r9), %r10
-	subq	%rax, %r10
-	xorl	%eax, %eax
-	.p2align	4, 0x90
-.LBB0_6:                                # =>This Inner Loop Header: Depth=1
-	vmovdqu	%ymm0, -992(%rcx,%rax,4)
-	vmovdqu	%ymm0, -960(%rcx,%rax,4)
-	vmovdqu	%ymm0, -928(%rcx,%rax,4)
-	vmovdqu	%ymm0, -896(%rcx,%rax,4)
-	vmovdqu	%ymm0, -864(%rcx,%rax,4)
-	vmovdqu	%ymm0, -832(%rcx,%rax,4)
-	vmovdqu	%ymm0, -800(%rcx,%rax,4)
-	vmovdqu	%ymm0, -768(%rcx,%rax,4)
-	vmovdqu	%ymm0, -736(%rcx,%rax,4)
-	vmovdqu	%ymm0, -704(%rcx,%rax,4)
-	vmovdqu	%ymm0, -672(%rcx,%rax,4)
-	vmovdqu	%ymm0, -640(%rcx,%rax,4)
-	vmovdqu	%ymm0, -608(%rcx,%rax,4)
-	vmovdqu	%ymm0, -576(%rcx,%rax,4)
-	vmovdqu	%ymm0, -544(%rcx,%rax,4)
-	vmovdqu	%ymm0, -512(%rcx,%rax,4)
-	vmovdqu	%ymm0, -480(%rcx,%rax,4)
-	vmovdqu	%ymm0, -448(%rcx,%rax,4)
-	vmovdqu	%ymm0, -416(%rcx,%rax,4)
-	vmovdqu	%ymm0, -384(%rcx,%rax,4)
-	vmovdqu	%ymm0, -352(%rcx,%rax,4)
-	vmovdqu	%ymm0, -320(%rcx,%rax,4)
-	vmovdqu	%ymm0, -288(%rcx,%rax,4)
-	vmovdqu	%ymm0, -256(%rcx,%rax,4)
-	vmovdqu	%ymm0, -224(%rcx,%rax,4)
-	vmovdqu	%ymm0, -192(%rcx,%rax,4)
-	vmovdqu	%ymm0, -160(%rcx,%rax,4)
-	vmovdqu	%ymm0, -128(%rcx,%rax,4)
-	vmovdqu	%ymm0, -96(%rcx,%rax,4)
-	vmovdqu	%ymm0, -64(%rcx,%rax,4)
-	vmovdqu	%ymm0, -32(%rcx,%rax,4)
-	vmovdqu	%ymm0, (%rcx,%rax,4)
-	addq	$256, %rax              # imm = 0x100
-	addq	$8, %r10
-	jne	.LBB0_6
-# BB#7:
-	testq	%r9, %r9
-	je	.LBB0_10
-.LBB0_8:
-	leaq	(%rdi,%rax,4), %rax
-	addq	$96, %rax
-	negq	%r9
-	.p2align	4, 0x90
-.LBB0_9:                                # =>This Inner Loop Header: Depth=1
-	vmovdqu	%ymm0, -96(%rax)
-	vmovdqu	%ymm0, -64(%rax)
-	vmovdqu	%ymm0, -32(%rax)
-	vmovdqu	%ymm0, (%rax)
-	subq	$-128, %rax
-	addq	$1, %r9
-	jne	.LBB0_9
-.LBB0_10:
-	cmpq	%rdx, %r8
-	je	.LBB0_14
-# BB#11:
-	leaq	(%rdi,%r8,4), %rax
-.LBB0_12:
-	subq	%r8, %rdx
-	.p2align	4, 0x90
-.LBB0_13:                               # =>This Inner Loop Header: Depth=1
-	movl	%esi, (%rax)
-	addq	$4, %rax
-	addq	$-1, %rdx
-	jne	.LBB0_13
-.LBB0_14:
-	movq	%rdi, %rax
-	vzeroupper
-	retq
-END(WMEMSET)
diff --git a/libc/arch-x86_64/string/sse2-memset-slm.S b/libc/arch-x86_64/string/sse2-memset-slm.S
index fc502c0..cceadd2 100644
--- a/libc/arch-x86_64/string/sse2-memset-slm.S
+++ b/libc/arch-x86_64/string/sse2-memset-slm.S
@@ -41,16 +41,16 @@
 #endif
 
 
-ENTRY(__memset_chk)
+ENTRY(__memset_chk_generic)
   # %rdi = dst, %rsi = byte, %rdx = n, %rcx = dst_len
   cmp %rcx, %rdx
   ja __memset_chk_fail
   // Fall through to memset...
-END(__memset_chk)
+END(__memset_chk_generic)
 
 
 	.section .text.sse2,"ax",@progbits
-ENTRY(memset)
+ENTRY(memset_generic)
 	movq	%rdi, %rax
 	and	$0xff, %rsi
 	mov	$0x0101010101010101, %rcx
@@ -146,4 +146,4 @@
 	sfence
 	ret
 
-END(memset)
+END(memset_generic)
diff --git a/libc/async_safe/Android.bp b/libc/async_safe/Android.bp
index 531317d..eb690dd 100644
--- a/libc/async_safe/Android.bp
+++ b/libc/async_safe/Android.bp
@@ -30,13 +30,8 @@
     stl: "none",
 
     apex_available: [
+        "//apex_available:anyapex",
         "//apex_available:platform",
-        "com.android.runtime",
-        "com.android.art",
-        "com.android.art.debug",
-        "com.android.media",
-        "com.android.media.swcodec",
-        "com.android.virt",
     ],
     min_sdk_version: "apex_inherit",
 }
diff --git a/libc/bionic/android_profiling_dynamic.cpp b/libc/bionic/android_profiling_dynamic.cpp
index 3460a6d..8c9127e 100644
--- a/libc/bionic/android_profiling_dynamic.cpp
+++ b/libc/bionic/android_profiling_dynamic.cpp
@@ -204,12 +204,14 @@
   auto ret = -ENOSYS;
   ucontext_t* ctx = reinterpret_cast<ucontext_t*>(void_context);
 
-#if defined(__arm__)
+#if defined(__aarch64__)
+  ctx->uc_mcontext.regs[0] = ret;
+#elif defined(__arm__)
   ctx->uc_mcontext.arm_r0 = ret;
-#elif defined(__aarch64__)
-  ctx->uc_mcontext.regs[0] = ret;  // x0
 #elif defined(__i386__)
   ctx->uc_mcontext.gregs[REG_EAX] = ret;
+#elif defined(__riscv)
+  ctx->uc_mcontext.__gregs[REG_A0] = ret;
 #elif defined(__x86_64__)
   ctx->uc_mcontext.gregs[REG_RAX] = ret;
 #else
diff --git a/libc/bionic/android_unsafe_frame_pointer_chase.cpp b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
index a1cb3c6..1a59718 100644
--- a/libc/bionic/android_unsafe_frame_pointer_chase.cpp
+++ b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
@@ -72,7 +72,13 @@
 
   size_t num_frames = 0;
   while (1) {
+#if defined(__riscv)
+    // Frame addresses seem to have been implemented incorrectly for RISC-V.
+    // See https://reviews.llvm.org/D87579.
+    auto* frame = reinterpret_cast<frame_record*>(begin - 16);
+#else
     auto* frame = reinterpret_cast<frame_record*>(begin);
+#endif
     if (num_frames < num_entries) {
       buf[num_frames] = __bionic_clear_pac_bits(frame->return_addr);
     }
diff --git a/libc/bionic/bionic_elf_tls.cpp b/libc/bionic/bionic_elf_tls.cpp
index d5fb05a..79893e3 100644
--- a/libc/bionic/bionic_elf_tls.cpp
+++ b/libc/bionic/bionic_elf_tls.cpp
@@ -137,6 +137,15 @@
   offset_bionic_tcb_ = reserve(sizeof(bionic_tcb), max_align);
   return offset_bionic_tcb_ - exe_size;
 
+#elif defined(__riscv)
+
+  // First reserve enough space for the TCB before the executable segment.
+  offset_bionic_tcb_ = reserve(sizeof(bionic_tcb), 1);
+
+  // Then reserve the segment itself.
+  const size_t exe_size = round_up_with_overflow_check(exe_segment->size, exe_segment->alignment);
+  return reserve(exe_size, 1);
+
 #else
 #error "Unrecognized architecture"
 #endif
@@ -312,7 +321,7 @@
     }
   }
 
-  return static_cast<char*>(mod_ptr) + ti->offset;
+  return static_cast<char*>(mod_ptr) + ti->offset + TLS_DTV_OFFSET;
 }
 
 // Returns the address of a thread's TLS memory given a module ID and an offset
@@ -332,7 +341,7 @@
   if (__predict_true(generation == dtv->generation)) {
     void* mod_ptr = dtv->modules[__tls_module_id_to_idx(ti->module_id)];
     if (__predict_true(mod_ptr != nullptr)) {
-      return static_cast<char*>(mod_ptr) + ti->offset;
+      return static_cast<char*>(mod_ptr) + ti->offset + TLS_DTV_OFFSET;
     }
   }
 
diff --git a/libc/bionic/exec.cpp b/libc/bionic/exec.cpp
index fd2c401..40612e7 100644
--- a/libc/bionic/exec.cpp
+++ b/libc/bionic/exec.cpp
@@ -39,10 +39,12 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "private/__bionic_get_shell_path.h"
 #include "private/FdPath.h"
+#include "private/__bionic_get_shell_path.h"
+#include "pthread_internal.h"
 
 extern "C" char** environ;
+extern "C" int __execve(const char* pathname, char* const* argv, char* const* envp);
 
 enum { ExecL, ExecLE, ExecLP };
 
@@ -181,3 +183,9 @@
   if (errno == ENOENT) errno = EBADF;
   return -1;
 }
+
+__attribute__((no_sanitize("memtag"))) int execve(const char* pathname, char* const* argv,
+                                                  char* const* envp) {
+  __get_thread()->vfork_child_stack_bottom = __builtin_frame_address(0);
+  return __execve(pathname, argv, envp);
+}
diff --git a/libc/bionic/exit.cpp b/libc/bionic/exit.cpp
index a5aed78..52fd193 100644
--- a/libc/bionic/exit.cpp
+++ b/libc/bionic/exit.cpp
@@ -30,9 +30,18 @@
 #include <unistd.h>
 
 #include "private/bionic_defs.h"
+#include "pthread_internal.h"
 
 extern "C" void __cxa_finalize(void* dso_handle);
 extern "C" void __cxa_thread_finalize();
+extern "C" __noreturn void __exit_group(int status);
+
+__attribute__((no_sanitize("memtag"))) void _exit(int status) {
+  __get_thread()->vfork_child_stack_bottom = __builtin_frame_address(0);
+  __exit_group(status);
+}
+
+__strong_alias(_Exit, _exit);
 
 __BIONIC_WEAK_FOR_NATIVE_BRIDGE
 void exit(int status) {
diff --git a/libc/bionic/fcntl.cpp b/libc/bionic/fcntl.cpp
index c508131..754277b 100644
--- a/libc/bionic/fcntl.cpp
+++ b/libc/bionic/fcntl.cpp
@@ -30,21 +30,29 @@
 #include <fcntl.h>
 
 #include "private/bionic_fdtrack.h"
-
-#if defined(__LP64__)
+#include "private/bionic_fortify.h"
 
 extern "C" int __fcntl(int fd, int cmd, ...);
+extern "C" int __fcntl64(int, int, ...);
 
 int fcntl(int fd, int cmd, ...) {
   va_list args;
   va_start(args, cmd);
-
-  // This is a bit sketchy, especially because arg can be an int, but all of our
-  // supported 64-bit ABIs pass arg in a register.
+  // This is a bit sketchy for LP64, especially because arg can be an int,
+  // but all of our supported 64-bit ABIs pass the argument in a register.
   void* arg = va_arg(args, void*);
   va_end(args);
 
+  if (cmd == F_SETFD && (reinterpret_cast<uintptr_t>(arg) & ~FD_CLOEXEC) != 0) {
+    __fortify_fatal("fcntl(F_SETFD) passed non-FD_CLOEXEC flag: %p", arg);
+  }
+
+#if defined(__LP64__)
   int rc = __fcntl(fd, cmd, arg);
+#else
+  // For LP32 we use the fcntl64 system call to signal that we're using struct flock64.
+  int rc = __fcntl64(fd, cmd, arg);
+#endif
   if (cmd == F_DUPFD) {
     return FDTRACK_CREATE_NAME("F_DUPFD", rc);
   } else if (cmd == F_DUPFD_CLOEXEC) {
@@ -52,25 +60,3 @@
   }
   return rc;
 }
-
-#else
-
-extern "C" int __fcntl64(int, int, ...);
-
-// For fcntl we use the fcntl64 system call to signal that we're using struct flock64.
-int fcntl(int fd, int cmd, ...) {
-  va_list ap;
-
-  va_start(ap, cmd);
-  void* arg = va_arg(ap, void*);
-  va_end(ap);
-
-  if (cmd == F_DUPFD) {
-    return FDTRACK_CREATE_NAME("F_DUPFD", __fcntl64(fd, cmd, arg));
-  } else if (cmd == F_DUPFD_CLOEXEC) {
-    return FDTRACK_CREATE_NAME("F_DUPFD_CLOEXEC", __fcntl64(fd, cmd, arg));
-  }
-  return __fcntl64(fd, cmd, arg);
-}
-
-#endif
diff --git a/libc/bionic/fdsan.cpp b/libc/bionic/fdsan.cpp
index 48e8674..6433b59 100644
--- a/libc/bionic/fdsan.cpp
+++ b/libc/bionic/fdsan.cpp
@@ -101,7 +101,7 @@
   }
 
   size_t offset = idx - inline_fds;
-  if (local_overflow->len < offset) {
+  if (local_overflow->len <= offset) {
     return nullptr;
   }
   return &local_overflow->entries[offset];
@@ -216,6 +216,8 @@
       return "SocketImpl";
     case ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE:
       return "ZipArchive";
+    case ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE:
+      return "native_handle_t";
 
     case ANDROID_FDSAN_OWNER_TYPE_GENERIC_00:
     default:
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index 88ae477..73cf973 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -489,14 +489,15 @@
   return strcpy(dst, src);
 }
 
-#if !defined(NO___MEMCPY_CHK)
+#if !defined(__arm__) && !defined(__aarch64__)
 // Runtime implementation of __memcpy_chk (used directly by compiler, not in headers).
+// arm32 and arm64 have assembler implementations, and don't need this C fallback.
 extern "C" void* __memcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
   __check_count("memcpy", "count", count);
   __check_buffer_access("memcpy", "write into", count, dst_len);
   return memcpy(dst, src, count);
 }
-#endif // NO___MEMCPY_CHK
+#endif
 
 // Runtime implementation of __mempcpy_chk (used directly by compiler, not in headers).
 extern "C" void* __mempcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
diff --git a/libc/bionic/gwp_asan_wrappers.cpp b/libc/bionic/gwp_asan_wrappers.cpp
index 7e19b31..fc59c88 100644
--- a/libc/bionic/gwp_asan_wrappers.cpp
+++ b/libc/bionic/gwp_asan_wrappers.cpp
@@ -41,6 +41,7 @@
 #include "gwp_asan_wrappers.h"
 #include "malloc_common.h"
 #include "platform/bionic/android_unsafe_frame_pointer_chase.h"
+#include "platform/bionic/macros.h"
 #include "platform/bionic/malloc.h"
 #include "private/bionic_arc4random.h"
 #include "private/bionic_globals.h"
@@ -221,6 +222,8 @@
 static const char* kMaxAllocsTargetedSyspropPrefix = "libc.debug.gwp_asan.max_allocs.";
 static const char* kMaxAllocsEnvVar = "GWP_ASAN_MAX_ALLOCS";
 
+static const char kPersistPrefix[] = "persist.";
+
 void SetDefaultGwpAsanOptions(Options* options, unsigned* process_sample_rate,
                               const android_mallopt_gwp_asan_options_t& mallopt_options) {
   options->Enabled = true;
@@ -244,26 +247,40 @@
   const char* basename = "";
   if (mallopt_options.program_name) basename = __gnu_basename(mallopt_options.program_name);
 
-  size_t program_specific_sysprop_size = strlen(targeted_sysprop_prefix) + strlen(basename) + 1;
-  char* program_specific_sysprop_name = static_cast<char*>(alloca(program_specific_sysprop_size));
-  async_safe_format_buffer(program_specific_sysprop_name, program_specific_sysprop_size, "%s%s",
-                           targeted_sysprop_prefix, basename);
-
-  const char* sysprop_names[2] = {nullptr, nullptr};
+  constexpr size_t kSyspropMaxLen = 512;
+  char program_specific_sysprop[kSyspropMaxLen] = {};
+  char persist_program_specific_sysprop[kSyspropMaxLen] = {};
+  char persist_default_sysprop[kSyspropMaxLen] = {};
+  const char* sysprop_names[4] = {};
   // Tests use a blank program name to specify that system properties should not
   // be used. Tests still continue to use the environment variable though.
   if (*basename != '\0') {
-    sysprop_names[0] = program_specific_sysprop_name;
+    const char* default_sysprop = system_sysprop;
     if (mallopt_options.desire == Action::TURN_ON_FOR_APP) {
-      sysprop_names[1] = app_sysprop;
-    } else {
-      sysprop_names[1] = system_sysprop;
+      default_sysprop = app_sysprop;
     }
+    async_safe_format_buffer(&program_specific_sysprop[0], kSyspropMaxLen, "%s%s",
+                             targeted_sysprop_prefix, basename);
+    async_safe_format_buffer(&persist_program_specific_sysprop[0], kSyspropMaxLen, "%s%s",
+                             kPersistPrefix, program_specific_sysprop);
+    async_safe_format_buffer(&persist_default_sysprop[0], kSyspropMaxLen, "%s%s", kPersistPrefix,
+                             default_sysprop);
+
+    // In order of precedence, always take the program-specific sysprop (e.g.
+    // '[persist.]libc.debug.gwp_asan.sample_rate.cameraserver') over the
+    // generic sysprop (e.g.
+    // '[persist.]libc.debug.gwp_asan.(system_default|app_default)'). In
+    // addition, always take the non-persistent option over the persistent
+    // option.
+    sysprop_names[0] = program_specific_sysprop;
+    sysprop_names[1] = persist_program_specific_sysprop;
+    sysprop_names[2] = default_sysprop;
+    sysprop_names[3] = persist_default_sysprop;
   }
 
   char settings_buf[PROP_VALUE_MAX];
-  if (!get_config_from_env_or_sysprops(env_var, sysprop_names,
-                                       /* sys_prop_names_size */ 2, settings_buf, PROP_VALUE_MAX)) {
+  if (!get_config_from_env_or_sysprops(env_var, sysprop_names, arraysize(sysprop_names),
+                                       settings_buf, PROP_VALUE_MAX)) {
     return false;
   }
 
diff --git a/libc/bionic/heap_tagging.cpp b/libc/bionic/heap_tagging.cpp
index 41aa205..78d21b0 100644
--- a/libc/bionic/heap_tagging.cpp
+++ b/libc/bionic/heap_tagging.cpp
@@ -32,6 +32,8 @@
 
 #include <bionic/pthread_internal.h>
 #include <platform/bionic/malloc.h>
+#include <sanitizer/hwasan_interface.h>
+#include <sys/auxv.h>
 
 extern "C" void scudo_malloc_disable_memory_tagging();
 extern "C" void scudo_malloc_set_track_allocation_stacks(int);
@@ -44,61 +46,61 @@
 #if !__has_feature(hwaddress_sanitizer)
   heap_tagging_level = __libc_shared_globals()->initial_heap_tagging_level;
 #endif
-  switch (heap_tagging_level) {
-    case M_HEAP_TAGGING_LEVEL_TBI:
-      __libc_globals.mutate([](libc_globals* globals) {
+
+  __libc_globals.mutate([](libc_globals* globals) {
+    switch (heap_tagging_level) {
+      case M_HEAP_TAGGING_LEVEL_TBI:
         // Arrange for us to set pointer tags to POINTER_TAG, check tags on
         // deallocation and untag when passing pointers to the allocator.
         globals->heap_pointer_tag = (reinterpret_cast<uintptr_t>(POINTER_TAG) << TAG_SHIFT) |
                                     (0xffull << CHECK_SHIFT) | (0xffull << UNTAG_SHIFT);
-      });
-#if defined(USE_SCUDO)
-      scudo_malloc_disable_memory_tagging();
-#endif  // USE_SCUDO
-      break;
-#if defined(USE_SCUDO)
-    case M_HEAP_TAGGING_LEVEL_SYNC:
-      scudo_malloc_set_track_allocation_stacks(1);
-      break;
+        break;
+      case M_HEAP_TAGGING_LEVEL_SYNC:
+      case M_HEAP_TAGGING_LEVEL_ASYNC:
+        atomic_store(&globals->memtag_stack, __libc_shared_globals()->initial_memtag_stack);
+        break;
+      default:
+        break;
+    };
+  });
 
+#if defined(USE_SCUDO)
+  switch (heap_tagging_level) {
+    case M_HEAP_TAGGING_LEVEL_TBI:
     case M_HEAP_TAGGING_LEVEL_NONE:
       scudo_malloc_disable_memory_tagging();
       break;
-#endif  // USE_SCUDO
+    case M_HEAP_TAGGING_LEVEL_SYNC:
+      scudo_malloc_set_track_allocation_stacks(1);
+      break;
     default:
       break;
   }
+#endif  // USE_SCUDO
 #endif  // aarch64
 }
 
 static bool set_tcf_on_all_threads(int tcf) {
-  static int g_tcf;
-  g_tcf = tcf;
-
   return android_run_on_all_threads(
-      [](void*) {
+      [](void* arg) {
+        int tcf = *reinterpret_cast<int*>(arg);
         int tagged_addr_ctrl = prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0);
         if (tagged_addr_ctrl < 0) {
           return false;
         }
 
-        tagged_addr_ctrl = (tagged_addr_ctrl & ~PR_MTE_TCF_MASK) | g_tcf;
+        tagged_addr_ctrl = (tagged_addr_ctrl & ~PR_MTE_TCF_MASK) | tcf;
         if (prctl(PR_SET_TAGGED_ADDR_CTRL, tagged_addr_ctrl, 0, 0, 0) < 0) {
           return false;
         }
         return true;
       },
-      nullptr);
+      &tcf);
 }
 
 pthread_mutex_t g_heap_tagging_lock = PTHREAD_MUTEX_INITIALIZER;
 
 // Requires `g_heap_tagging_lock` to be held.
-HeapTaggingLevel GetHeapTaggingLevel() {
-  return heap_tagging_level;
-}
-
-// Requires `g_heap_tagging_lock` to be held.
 bool SetHeapTaggingLevel(HeapTaggingLevel tag_level) {
   if (tag_level == heap_tagging_level) {
     return true;
@@ -106,16 +108,21 @@
 
   switch (tag_level) {
     case M_HEAP_TAGGING_LEVEL_NONE:
-      if (heap_tagging_level == M_HEAP_TAGGING_LEVEL_TBI) {
-        __libc_globals.mutate([](libc_globals* globals) {
+      __libc_globals.mutate([](libc_globals* globals) {
+        if (heap_tagging_level == M_HEAP_TAGGING_LEVEL_TBI) {
           // Preserve the untag mask (we still want to untag pointers when passing them to the
           // allocator), but clear the fixed tag and the check mask, so that pointers are no longer
           // tagged and checks no longer happen.
           globals->heap_pointer_tag = static_cast<uintptr_t>(0xffull << UNTAG_SHIFT);
-        });
-      } else if (!set_tcf_on_all_threads(PR_MTE_TCF_NONE)) {
-        error_log("SetHeapTaggingLevel: set_tcf_on_all_threads failed");
-        return false;
+        }
+        atomic_store(&globals->memtag_stack, false);
+      });
+
+      if (heap_tagging_level != M_HEAP_TAGGING_LEVEL_TBI) {
+        if (!set_tcf_on_all_threads(PR_MTE_TCF_NONE)) {
+          error_log("SetHeapTaggingLevel: set_tcf_on_all_threads failed");
+          return false;
+        }
       }
 #if defined(USE_SCUDO)
       scudo_malloc_disable_memory_tagging();
@@ -165,3 +172,69 @@
 
   return true;
 }
+
+#ifdef __aarch64__
+static inline __attribute__((no_sanitize("memtag"))) void untag_memory(void* from, void* to) {
+  __asm__ __volatile__(
+      ".arch_extension mte\n"
+      "1:\n"
+      "stg %[Ptr], [%[Ptr]], #16\n"
+      "cmp %[Ptr], %[End]\n"
+      "b.lt 1b\n"
+      : [Ptr] "+&r"(from)
+      : [End] "r"(to)
+      : "memory");
+}
+#endif
+
+#ifdef __aarch64__
+// 128Mb of stack should be enough for anybody.
+static constexpr size_t kUntagLimit = 128 * 1024 * 1024;
+#endif  // __aarch64__
+
+extern "C" __LIBC_HIDDEN__ __attribute__((no_sanitize("memtag"))) void memtag_handle_longjmp(
+    void* sp_dst __unused) {
+#ifdef __aarch64__
+  if (__libc_globals->memtag_stack) {
+    void* sp = __builtin_frame_address(0);
+    size_t distance = reinterpret_cast<uintptr_t>(sp_dst) - reinterpret_cast<uintptr_t>(sp);
+    if (distance > kUntagLimit) {
+      async_safe_fatal(
+          "memtag_handle_longjmp: stack adjustment too large! %p -> %p, distance %zx > %zx\n", sp,
+          sp_dst, distance, kUntagLimit);
+    } else {
+      untag_memory(sp, sp_dst);
+    }
+  }
+#endif  // __aarch64__
+
+#if __has_feature(hwaddress_sanitizer)
+  __hwasan_handle_longjmp(sp_dst);
+#endif  // __has_feature(hwaddress_sanitizer)
+}
+
+extern "C" __LIBC_HIDDEN__ __attribute__((no_sanitize("memtag"), no_sanitize("hwaddress"))) void
+memtag_handle_vfork(void* sp __unused) {
+#ifdef __aarch64__
+  if (__libc_globals->memtag_stack) {
+    void* child_sp = __get_thread()->vfork_child_stack_bottom;
+    __get_thread()->vfork_child_stack_bottom = nullptr;
+    if (child_sp) {
+      size_t distance = reinterpret_cast<uintptr_t>(sp) - reinterpret_cast<uintptr_t>(child_sp);
+      if (distance > kUntagLimit) {
+        async_safe_fatal(
+            "memtag_handle_vfork: stack adjustment too large! %p -> %p, distance %zx > %zx\n",
+            child_sp, sp, distance, kUntagLimit);
+      } else {
+        untag_memory(child_sp, sp);
+      }
+    } else {
+      async_safe_fatal("memtag_handle_vfork: child SP unknown\n");
+    }
+  }
+#endif  // __aarch64__
+
+#if __has_feature(hwaddress_sanitizer)
+  __hwasan_handle_vfork(sp);
+#endif  // __has_feature(hwaddress_sanitizer)
+}
diff --git a/libc/bionic/heap_tagging.h b/libc/bionic/heap_tagging.h
index 110b6ed..5bc1da0 100644
--- a/libc/bionic/heap_tagging.h
+++ b/libc/bionic/heap_tagging.h
@@ -40,7 +40,22 @@
 // useful for RAII on this lock.
 extern pthread_mutex_t g_heap_tagging_lock;
 
-// These functions can be called in a multithreaded context, and thus should
+// This function can be called in a multithreaded context, and thus should
 // only be called when holding the `g_heap_tagging_lock`.
 bool SetHeapTaggingLevel(HeapTaggingLevel level);
-HeapTaggingLevel GetHeapTaggingLevel();
+
+// This is static because libc_nomalloc uses this but does not need to link the
+// cpp file.
+__attribute__((unused)) static inline const char* DescribeTaggingLevel(
+    HeapTaggingLevel level) {
+  switch (level) {
+    case M_HEAP_TAGGING_LEVEL_NONE:
+      return "none";
+    case M_HEAP_TAGGING_LEVEL_TBI:
+      return "tbi";
+    case M_HEAP_TAGGING_LEVEL_ASYNC:
+      return "async";
+    case M_HEAP_TAGGING_LEVEL_SYNC:
+      return "sync";
+  }
+}
diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp
index 8084e73..5d5ecac 100644
--- a/libc/bionic/libc_init_common.cpp
+++ b/libc/bionic/libc_init_common.cpp
@@ -27,11 +27,12 @@
  */
 
 #include "libc_init_common.h"
-#include "heap_tagging.h"
 
+#include <async_safe/log.h>
 #include <elf.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -42,8 +43,8 @@
 #include <sys/time.h>
 #include <unistd.h>
 
-#include <async_safe/log.h>
-
+#include "heap_tagging.h"
+#include "private/ScopedPthreadMutexLocker.h"
 #include "private/WriteProtected.h"
 #include "private/bionic_defs.h"
 #include "private/bionic_globals.h"
@@ -104,6 +105,51 @@
 }
 
 __BIONIC_WEAK_FOR_NATIVE_BRIDGE
+__attribute__((no_sanitize("hwaddress", "memtag"))) void
+__libc_init_mte_late() {
+#if defined(__aarch64__)
+  if (!__libc_shared_globals()->heap_tagging_upgrade_timer_sec) {
+    return;
+  }
+  struct sigevent event = {};
+  static timer_t timer;
+  event.sigev_notify = SIGEV_THREAD;
+  event.sigev_notify_function = [](union sigval) {
+    async_safe_format_log(ANDROID_LOG_INFO, "libc",
+                          "Downgrading MTE to async.");
+    ScopedPthreadMutexLocker l(&g_heap_tagging_lock);
+    SetHeapTaggingLevel(M_HEAP_TAGGING_LEVEL_ASYNC);
+    timer_delete(timer);
+  };
+
+  if (timer_create(CLOCK_REALTIME, &event, &timer) == -1) {
+    async_safe_format_log(ANDROID_LOG_ERROR, "libc",
+                          "Failed to create MTE downgrade timer: %m");
+    // Revert back to ASYNC. If we fail to create or arm the timer, otherwise
+    // the process would be indefinitely stuck in SYNC.
+    SetHeapTaggingLevel(M_HEAP_TAGGING_LEVEL_ASYNC);
+    return;
+  }
+
+  struct itimerspec timerspec = {};
+  timerspec.it_value.tv_sec =
+      __libc_shared_globals()->heap_tagging_upgrade_timer_sec;
+  if (timer_settime(timer, /* flags= */ 0, &timerspec, nullptr) == -1) {
+    async_safe_format_log(ANDROID_LOG_ERROR, "libc",
+                          "Failed to arm MTE downgrade timer: %m");
+    // Revert back to ASYNC. If we fail to create or arm the timer, otherwise
+    // the process would be indefinitely stuck in SYNC.
+    SetHeapTaggingLevel(M_HEAP_TAGGING_LEVEL_ASYNC);
+    timer_delete(timer);
+    return;
+  }
+  async_safe_format_log(
+      ANDROID_LOG_INFO, "libc", "Armed MTE downgrade timer for %" PRId64 " s",
+      __libc_shared_globals()->heap_tagging_upgrade_timer_sec);
+#endif
+}
+
+__BIONIC_WEAK_FOR_NATIVE_BRIDGE
 void __libc_add_main_thread() {
   // Get the main thread from TLS and add it to the thread list.
   pthread_internal_t* main_thread = __get_thread();
diff --git a/libc/bionic/libc_init_common.h b/libc/bionic/libc_init_common.h
index 15c747e..6b39d6d 100644
--- a/libc/bionic/libc_init_common.h
+++ b/libc/bionic/libc_init_common.h
@@ -60,6 +60,8 @@
 
 __LIBC_HIDDEN__ void __libc_init_scudo();
 
+__LIBC_HIDDEN__ void __libc_init_mte_late();
+
 __LIBC_HIDDEN__ void __libc_init_AT_SECURE(char** envp);
 
 // The fork handler must be initialised after __libc_init_malloc, as
diff --git a/libc/bionic/libc_init_dynamic.cpp b/libc/bionic/libc_init_dynamic.cpp
index 24efbf5..c61810e 100644
--- a/libc/bionic/libc_init_dynamic.cpp
+++ b/libc/bionic/libc_init_dynamic.cpp
@@ -154,6 +154,8 @@
     __cxa_atexit(__libc_fini,structors->fini_array,nullptr);
   }
 
+  __libc_init_mte_late();
+
   exit(slingshot(args.argc - __libc_shared_globals()->initial_linker_arg_count,
                  args.argv + __libc_shared_globals()->initial_linker_arg_count,
                  args.envp));
diff --git a/libc/bionic/libc_init_static.cpp b/libc/bionic/libc_init_static.cpp
index 575da62..d64d402 100644
--- a/libc/bionic/libc_init_static.cpp
+++ b/libc/bionic/libc_init_static.cpp
@@ -29,6 +29,7 @@
 #include <android/api-level.h>
 #include <elf.h>
 #include <errno.h>
+#include <malloc.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -36,10 +37,9 @@
 #include <sys/auxv.h>
 #include <sys/mman.h>
 
+#include "async_safe/log.h"
+#include "heap_tagging.h"
 #include "libc_init_common.h"
-#include "pthread_internal.h"
-#include "sysprop_helpers.h"
-
 #include "platform/bionic/macros.h"
 #include "platform/bionic/mte.h"
 #include "platform/bionic/page.h"
@@ -51,7 +51,9 @@
 #include "private/bionic_elf_tls.h"
 #include "private/bionic_globals.h"
 #include "private/bionic_tls.h"
+#include "pthread_internal.h"
 #include "sys/system_properties.h"
+#include "sysprop_helpers.h"
 
 #if __has_feature(hwaddress_sanitizer)
 #include <sanitizer/hwasan_interface.h>
@@ -74,33 +76,12 @@
   }
 }
 
-#if defined(__aarch64__) || defined(__x86_64__)
-extern __LIBC_HIDDEN__ __attribute__((weak)) ElfW(Rela) __rela_iplt_start[], __rela_iplt_end[];
-
-static void call_ifunc_resolvers() {
-  if (__rela_iplt_start == nullptr || __rela_iplt_end == nullptr) {
-    // These symbols are not emitted by gold. Gold has code to do so, but for
-    // whatever reason it is not being run. In these cases ifuncs cannot be
-    // resolved, so we do not support using ifuncs in static executables linked
-    // with gold.
-    //
-    // Since they are weak, they will be non-null when linked with bfd/lld and
-    // null when linked with gold.
-    return;
-  }
-
-  for (ElfW(Rela) *r = __rela_iplt_start; r != __rela_iplt_end; ++r) {
-    ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset);
-    ElfW(Addr) resolver = r->r_addend;
-    *offset = __bionic_call_ifunc_resolver(resolver);
-  }
-}
-#else
+#if defined(__arm__) || defined(__i386__)  // Legacy architectures used REL...
 extern __LIBC_HIDDEN__ __attribute__((weak)) ElfW(Rel) __rel_iplt_start[], __rel_iplt_end[];
 
 static void call_ifunc_resolvers() {
   if (__rel_iplt_start == nullptr || __rel_iplt_end == nullptr) {
-    // These symbols are not emitted by gold. Gold has code to do so, but for
+    // These symbols were not emitted by gold. Gold has code to do so, but for
     // whatever reason it is not being run. In these cases ifuncs cannot be
     // resolved, so we do not support using ifuncs in static executables linked
     // with gold.
@@ -110,12 +91,33 @@
     return;
   }
 
-  for (ElfW(Rel) *r = __rel_iplt_start; r != __rel_iplt_end; ++r) {
+  for (ElfW(Rel)* r = __rel_iplt_start; r != __rel_iplt_end; ++r) {
     ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset);
     ElfW(Addr) resolver = *offset;
     *offset = __bionic_call_ifunc_resolver(resolver);
   }
 }
+#else  // ...but modern architectures use RELA instead.
+extern __LIBC_HIDDEN__ __attribute__((weak)) ElfW(Rela) __rela_iplt_start[], __rela_iplt_end[];
+
+static void call_ifunc_resolvers() {
+  if (__rela_iplt_start == nullptr || __rela_iplt_end == nullptr) {
+    // These symbols were not emitted by gold. Gold has code to do so, but for
+    // whatever reason it is not being run. In these cases ifuncs cannot be
+    // resolved, so we do not support using ifuncs in static executables linked
+    // with gold.
+    //
+    // Since they are weak, they will be non-null when linked with bfd/lld and
+    // null when linked with gold.
+    return;
+  }
+
+  for (ElfW(Rela)* r = __rela_iplt_start; r != __rela_iplt_end; ++r) {
+    ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset);
+    ElfW(Addr) resolver = r->r_addend;
+    *offset = __bionic_call_ifunc_resolver(resolver);
+  }
+}
 #endif
 
 static void apply_gnu_relro() {
@@ -218,23 +220,25 @@
 static bool get_environment_memtag_setting(HeapTaggingLevel* level) {
   static const char kMemtagPrognameSyspropPrefix[] = "arm64.memtag.process.";
   static const char kMemtagGlobalSysprop[] = "persist.arm64.memtag.default";
+  static const char kMemtagOverrideSyspropPrefix[] =
+      "persist.device_config.memory_safety_native.mode_override.process.";
 
   const char* progname = __libc_shared_globals()->init_progname;
   if (progname == nullptr) return false;
 
   const char* basename = __gnu_basename(progname);
 
-  static constexpr size_t kOptionsSize = PROP_VALUE_MAX;
-  char options_str[kOptionsSize];
-  size_t sysprop_size = strlen(basename) + strlen(kMemtagPrognameSyspropPrefix) + 1;
-  char* sysprop_name = static_cast<char*>(alloca(sysprop_size));
-
-  async_safe_format_buffer(sysprop_name, sysprop_size, "%s%s", kMemtagPrognameSyspropPrefix,
+  char options_str[PROP_VALUE_MAX];
+  char sysprop_name[512];
+  async_safe_format_buffer(sysprop_name, sizeof(sysprop_name), "%s%s", kMemtagPrognameSyspropPrefix,
                            basename);
-  const char* sys_prop_names[] = {sysprop_name, kMemtagGlobalSysprop};
+  char remote_sysprop_name[512];
+  async_safe_format_buffer(remote_sysprop_name, sizeof(remote_sysprop_name), "%s%s",
+                           kMemtagOverrideSyspropPrefix, basename);
+  const char* sys_prop_names[] = {sysprop_name, remote_sysprop_name, kMemtagGlobalSysprop};
 
   if (!get_config_from_env_or_sysprops("MEMTAG_OPTIONS", sys_prop_names, arraysize(sys_prop_names),
-                                       options_str, kOptionsSize)) {
+                                       options_str, sizeof(options_str))) {
     return false;
   }
 
@@ -259,17 +263,18 @@
 // M_HEAP_TAGGING_LEVEL_NONE, if MTE isn't enabled for this process we enable
 // M_HEAP_TAGGING_LEVEL_TBI.
 static HeapTaggingLevel __get_heap_tagging_level(const void* phdr_start, size_t phdr_ct,
-                                                 uintptr_t load_bias) {
+                                                 uintptr_t load_bias, bool* stack) {
+  unsigned note_val =
+      __get_memtag_note(reinterpret_cast<const ElfW(Phdr)*>(phdr_start), phdr_ct, load_bias);
+  *stack = note_val & NT_MEMTAG_STACK;
+
   HeapTaggingLevel level;
   if (get_environment_memtag_setting(&level)) return level;
 
-  unsigned note_val =
-      __get_memtag_note(reinterpret_cast<const ElfW(Phdr)*>(phdr_start), phdr_ct, load_bias);
-
   // Note, previously (in Android 12), any value outside of bits [0..3] resulted
   // in a check-fail. In order to be permissive of further extensions, we
-  // relaxed this restriction. For now, we still only support MTE heap.
-  if (!(note_val & NT_MEMTAG_HEAP)) return M_HEAP_TAGGING_LEVEL_TBI;
+  // relaxed this restriction.
+  if (!(note_val & (NT_MEMTAG_HEAP | NT_MEMTAG_STACK))) return M_HEAP_TAGGING_LEVEL_TBI;
 
   unsigned mode = note_val & NT_MEMTAG_LEVEL_MASK;
   switch (mode) {
@@ -295,9 +300,47 @@
 // This function is called from the linker before the main executable is relocated.
 __attribute__((no_sanitize("hwaddress", "memtag"))) void __libc_init_mte(const void* phdr_start,
                                                                          size_t phdr_ct,
-                                                                         uintptr_t load_bias) {
-  HeapTaggingLevel level = __get_heap_tagging_level(phdr_start, phdr_ct, load_bias);
-
+                                                                         uintptr_t load_bias,
+                                                                         void* stack_top) {
+  bool memtag_stack;
+  HeapTaggingLevel level = __get_heap_tagging_level(phdr_start, phdr_ct, load_bias, &memtag_stack);
+  char* env = getenv("BIONIC_MEMTAG_UPGRADE_SECS");
+  static const char kAppProcessName[] = "app_process64";
+  const char* progname = __libc_shared_globals()->init_progname;
+  progname = progname ? __gnu_basename(progname) : nullptr;
+  if (progname &&
+      strncmp(progname, kAppProcessName, sizeof(kAppProcessName)) == 0) {
+    // disable timed upgrade for zygote, as the thread spawned will violate the requirement
+    // that it be single-threaded.
+    env = nullptr;
+  }
+  int64_t timed_upgrade = 0;
+  if (env) {
+    char* endptr;
+    timed_upgrade = strtoll(env, &endptr, 10);
+    if (*endptr != '\0' || timed_upgrade < 0) {
+      async_safe_format_log(ANDROID_LOG_ERROR, "libc",
+                            "Invalid value for BIONIC_MEMTAG_UPGRADE_SECS: %s",
+                            env);
+      timed_upgrade = 0;
+    }
+    // Make sure that this does not get passed to potential processes inheriting
+    // this environment.
+    unsetenv("BIONIC_MEMTAG_UPGRADE_SECS");
+  }
+  if (timed_upgrade) {
+    if (level == M_HEAP_TAGGING_LEVEL_ASYNC) {
+      async_safe_format_log(ANDROID_LOG_INFO, "libc",
+                            "Attempting timed MTE upgrade from async to sync.");
+      __libc_shared_globals()->heap_tagging_upgrade_timer_sec = timed_upgrade;
+      level = M_HEAP_TAGGING_LEVEL_SYNC;
+    } else if (level != M_HEAP_TAGGING_LEVEL_SYNC) {
+      async_safe_format_log(
+          ANDROID_LOG_ERROR, "libc",
+          "Requested timed MTE upgrade from invalid %s to sync. Ignoring.",
+          DescribeTaggingLevel(level));
+    }
+  }
   if (level == M_HEAP_TAGGING_LEVEL_SYNC || level == M_HEAP_TAGGING_LEVEL_ASYNC) {
     unsigned long prctl_arg = PR_TAGGED_ADDR_ENABLE | PR_MTE_TAG_SET_NONZERO;
     prctl_arg |= (level == M_HEAP_TAGGING_LEVEL_SYNC) ? PR_MTE_TCF_SYNC : PR_MTE_TCF_ASYNC;
@@ -308,6 +351,17 @@
     if (prctl(PR_SET_TAGGED_ADDR_CTRL, prctl_arg | PR_MTE_TCF_SYNC, 0, 0, 0) == 0 ||
         prctl(PR_SET_TAGGED_ADDR_CTRL, prctl_arg, 0, 0, 0) == 0) {
       __libc_shared_globals()->initial_heap_tagging_level = level;
+      __libc_shared_globals()->initial_memtag_stack = memtag_stack;
+
+      if (memtag_stack) {
+        void* page_start =
+            reinterpret_cast<void*>(PAGE_START(reinterpret_cast<uintptr_t>(stack_top)));
+        if (mprotect(page_start, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_MTE | PROT_GROWSDOWN)) {
+          async_safe_fatal("error: failed to set PROT_MTE on main thread stack: %s\n",
+                           strerror(errno));
+        }
+      }
+
       return;
     }
   }
@@ -317,9 +371,11 @@
   if (prctl(PR_SET_TAGGED_ADDR_CTRL, PR_TAGGED_ADDR_ENABLE, 0, 0, 0) == 0) {
     __libc_shared_globals()->initial_heap_tagging_level = M_HEAP_TAGGING_LEVEL_TBI;
   }
+  // We did not enable MTE, so we do not need to arm the upgrade timer.
+  __libc_shared_globals()->heap_tagging_upgrade_timer_sec = 0;
 }
 #else   // __aarch64__
-void __libc_init_mte(const void*, size_t, uintptr_t) {}
+void __libc_init_mte(const void*, size_t, uintptr_t, void*) {}
 #endif  // __aarch64__
 
 void __libc_init_profiling_handlers() {
@@ -331,11 +387,9 @@
   signal(BIONIC_SIGNAL_ART_PROFILER, SIG_IGN);
 }
 
-__noreturn static void __real_libc_init(void *raw_args,
-                                        void (*onexit)(void) __unused,
-                                        int (*slingshot)(int, char**, char**),
-                                        structors_array_t const * const structors,
-                                        bionic_tcb* temp_tcb) {
+__attribute__((no_sanitize("memtag"))) __noreturn static void __real_libc_init(
+    void* raw_args, void (*onexit)(void) __unused, int (*slingshot)(int, char**, char**),
+    structors_array_t const* const structors, bionic_tcb* temp_tcb) {
   BIONIC_STOP_UNWIND;
 
   // Initialize TLS early so system calls and errno work.
@@ -349,7 +403,7 @@
   __libc_init_main_thread_final();
   __libc_init_common();
   __libc_init_mte(reinterpret_cast<ElfW(Phdr)*>(getauxval(AT_PHDR)), getauxval(AT_PHNUM),
-                  /*load_bias = */ 0);
+                  /*load_bias = */ 0, /*stack_top = */ raw_args);
   __libc_init_scudo();
   __libc_init_profiling_handlers();
   __libc_init_fork_handler();
@@ -370,6 +424,8 @@
     __cxa_atexit(__libc_fini,structors->fini_array,nullptr);
   }
 
+  __libc_init_mte_late();
+
   exit(slingshot(args.argc, args.argv, args.envp));
 }
 
@@ -379,11 +435,9 @@
 //
 // The 'structors' parameter contains pointers to various initializer
 // arrays that must be run before the program's 'main' routine is launched.
-__attribute__((no_sanitize("hwaddress")))
-__noreturn void __libc_init(void* raw_args,
-                            void (*onexit)(void) __unused,
-                            int (*slingshot)(int, char**, char**),
-                            structors_array_t const * const structors) {
+__attribute__((no_sanitize("hwaddress", "memtag"))) __noreturn void __libc_init(
+    void* raw_args, void (*onexit)(void) __unused, int (*slingshot)(int, char**, char**),
+    structors_array_t const* const structors) {
   bionic_tcb temp_tcb = {};
 #if __has_feature(hwaddress_sanitizer)
   // Install main thread TLS early. It will be initialized later in __libc_init_main_thread. For now
diff --git a/libc/bionic/locale.cpp b/libc/bionic/locale.cpp
index 0b7037a..2f4d206 100644
--- a/libc/bionic/locale.cpp
+++ b/libc/bionic/locale.cpp
@@ -54,23 +54,23 @@
 
 struct __locale_t {
   size_t mb_cur_max;
-
-  explicit __locale_t(size_t mb_cur_max) : mb_cur_max(mb_cur_max) {
-  }
-
-  explicit __locale_t(const __locale_t* other) {
-    if (other == LC_GLOBAL_LOCALE) {
-      mb_cur_max = __bionic_current_locale_is_utf8 ? 4 : 1;
-    } else {
-      mb_cur_max = other->mb_cur_max;
-    }
-  }
-
-  BIONIC_DISALLOW_IMPLICIT_CONSTRUCTORS(__locale_t);
 };
 
-size_t __ctype_get_mb_cur_max() {
-  locale_t l = uselocale(nullptr);
+// Avoid using new/delete in this file, because a user may have overridden
+// new/delete, and we want to avoid making extraneous calls to them. This isn't
+// an issue for libc.so in the platform, but this file is also compiled into the
+// NDK's libandroid_support.a, and there are libc++ tests that count the number
+// of calls to new/delete.
+#pragma clang poison new delete
+
+static inline locale_t __alloc_locale(size_t mb_cur_max) {
+  auto result = static_cast<__locale_t*>(malloc(sizeof(__locale_t)));
+  if (result == nullptr) return nullptr;
+  result->mb_cur_max = mb_cur_max;
+  return result;
+}
+
+static inline size_t get_locale_mb_cur_max(locale_t l) {
   if (l == LC_GLOBAL_LOCALE) {
     return __bionic_current_locale_is_utf8 ? 4 : 1;
   } else {
@@ -78,6 +78,10 @@
   }
 }
 
+size_t __ctype_get_mb_cur_max() {
+  return get_locale_mb_cur_max(uselocale(nullptr));
+}
+
 #if !USE_TLS_SLOT
 static thread_local locale_t g_current_locale;
 #endif
@@ -133,11 +137,11 @@
 }
 
 locale_t duplocale(locale_t l) {
-  return new __locale_t(l);
+  return __alloc_locale(get_locale_mb_cur_max(l));
 }
 
 void freelocale(locale_t l) {
-  delete l;
+  free(l);
 }
 
 locale_t newlocale(int category_mask, const char* locale_name, locale_t /*base*/) {
@@ -152,7 +156,7 @@
     return nullptr;
   }
 
-  return new __locale_t(__is_utf8_locale(locale_name) ? 4 : 1);
+  return __alloc_locale(__is_utf8_locale(locale_name) ? 4 : 1);
 }
 
 char* setlocale(int category, const char* locale_name) {
diff --git a/libc/bionic/malloc_common.cpp b/libc/bionic/malloc_common.cpp
index 9744968..e159fdc 100644
--- a/libc/bionic/malloc_common.cpp
+++ b/libc/bionic/malloc_common.cpp
@@ -333,6 +333,14 @@
 
     return EnableGwpAsan(*reinterpret_cast<android_mallopt_gwp_asan_options_t*>(arg));
   }
+  if (opcode == M_MEMTAG_STACK_IS_ON) {
+    if (arg == nullptr || arg_size != sizeof(bool)) {
+      errno = EINVAL;
+      return false;
+    }
+    *reinterpret_cast<bool*>(arg) = atomic_load(&__libc_globals->memtag_stack);
+    return true;
+  }
   errno = ENOTSUP;
   return false;
 }
diff --git a/libc/bionic/malloc_common_dynamic.cpp b/libc/bionic/malloc_common_dynamic.cpp
index 6c2f4d9..802a94f 100644
--- a/libc/bionic/malloc_common_dynamic.cpp
+++ b/libc/bionic/malloc_common_dynamic.cpp
@@ -371,6 +371,7 @@
 extern "C" const char* __scudo_get_stack_depot_addr();
 extern "C" const char* __scudo_get_region_info_addr();
 extern "C" const char* __scudo_get_ring_buffer_addr();
+extern "C" size_t __scudo_get_ring_buffer_size();
 
 // Initializes memory allocation framework once per process.
 static void MallocInitImpl(libc_globals* globals) {
@@ -383,6 +384,7 @@
   __libc_shared_globals()->scudo_stack_depot = __scudo_get_stack_depot_addr();
   __libc_shared_globals()->scudo_region_info = __scudo_get_region_info_addr();
   __libc_shared_globals()->scudo_ring_buffer = __scudo_get_ring_buffer_addr();
+  __libc_shared_globals()->scudo_ring_buffer_size = __scudo_get_ring_buffer_size();
 #endif
 
   // Prefer malloc debug since it existed first and is a more complete
@@ -533,6 +535,14 @@
 
     return EnableGwpAsan(*reinterpret_cast<android_mallopt_gwp_asan_options_t*>(arg));
   }
+  if (opcode == M_MEMTAG_STACK_IS_ON) {
+    if (arg == nullptr || arg_size != sizeof(bool)) {
+      errno = EINVAL;
+      return false;
+    }
+    *reinterpret_cast<bool*>(arg) = atomic_load(&__libc_globals->memtag_stack);
+    return true;
+  }
   // Try heapprofd's mallopt, as it handles options not covered here.
   return HeapprofdMallopt(opcode, arg, arg_size);
 }
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/bionic/memset_explicit.cpp
similarity index 81%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/bionic/memset_explicit.cpp
index bc1945c..2bcc20c 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/bionic/memset_explicit.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,11 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#include <string.h>
 
-#include <private/bionic_asm.h>
-
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
-
-NOTE_GNU_PROPERTY()
+void* memset_explicit(void* __dst, int __ch, size_t __n) {
+  void* result = memset(__dst, __ch, __n);
+  // https://bugs.llvm.org/show_bug.cgi?id=15495
+  __asm__ __volatile__("" : : "r"(__dst) : "memory");
+  return result;
+}
diff --git a/libc/bionic/mmap.cpp b/libc/bionic/mmap.cpp
index 9aad0b3..ed6b9c6 100644
--- a/libc/bionic/mmap.cpp
+++ b/libc/bionic/mmap.cpp
@@ -39,37 +39,20 @@
 
 #define MMAP2_SHIFT 12 // 2**12 == 4096
 
-static bool kernel_has_MADV_MERGEABLE = true;
-
 void* mmap64(void* addr, size_t size, int prot, int flags, int fd, off64_t offset) {
   if (offset < 0 || (offset & ((1UL << MMAP2_SHIFT)-1)) != 0) {
     errno = EINVAL;
     return MAP_FAILED;
   }
 
-  // prevent allocations large enough for `end - start` to overflow
+  // Prevent allocations large enough for `end - start` to overflow.
   size_t rounded = __BIONIC_ALIGN(size, PAGE_SIZE);
   if (rounded < size || rounded > PTRDIFF_MAX) {
     errno = ENOMEM;
     return MAP_FAILED;
   }
 
-  bool is_private_anonymous =
-      (flags & (MAP_PRIVATE | MAP_ANONYMOUS)) == (MAP_PRIVATE | MAP_ANONYMOUS);
-  bool is_stack_or_grows_down = (flags & (MAP_STACK | MAP_GROWSDOWN)) != 0;
-
-  void* result = __mmap2(addr, size, prot, flags, fd, offset >> MMAP2_SHIFT);
-
-  if (result != MAP_FAILED && kernel_has_MADV_MERGEABLE &&
-      is_private_anonymous && !is_stack_or_grows_down) {
-    ErrnoRestorer errno_restorer;
-    int rc = madvise(result, size, MADV_MERGEABLE);
-    if (rc == -1 && errno == EINVAL) {
-      kernel_has_MADV_MERGEABLE = false;
-    }
-  }
-
-  return result;
+  return __mmap2(addr, size, prot, flags, fd, offset >> MMAP2_SHIFT);
 }
 
 void* mmap(void* addr, size_t size, int prot, int flags, int fd, off_t offset) {
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index 121b26f..417ce76 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -40,15 +40,16 @@
 
 #include <async_safe/log.h>
 
+#include "platform/bionic/macros.h"
+#include "platform/bionic/mte.h"
+#include "private/ErrnoRestorer.h"
 #include "private/ScopedRWLock.h"
 #include "private/bionic_constants.h"
 #include "private/bionic_defs.h"
 #include "private/bionic_globals.h"
-#include "platform/bionic/macros.h"
 #include "private/bionic_ssp.h"
 #include "private/bionic_systrace.h"
 #include "private/bionic_tls.h"
-#include "private/ErrnoRestorer.h"
 
 // x86 uses segment descriptors rather than a direct pointer to TLS.
 #if defined(__i386__)
@@ -88,7 +89,13 @@
 
 static void __init_alternate_signal_stack(pthread_internal_t* thread) {
   // Create and set an alternate signal stack.
-  void* stack_base = mmap(nullptr, SIGNAL_STACK_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  int prot = PROT_READ | PROT_WRITE;
+#ifdef __aarch64__
+  if (atomic_load(&__libc_globals->memtag_stack)) {
+    prot |= PROT_MTE;
+  }
+#endif
+  void* stack_base = mmap(nullptr, SIGNAL_STACK_SIZE, prot, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (stack_base != MAP_FAILED) {
     // Create a guard to catch stack overflows in signal handlers.
     if (mprotect(stack_base, PTHREAD_GUARD_SIZE, PROT_NONE) == -1) {
@@ -224,12 +231,19 @@
     return {};
   }
   const size_t writable_size = mmap_size - stack_guard_size - PTHREAD_GUARD_SIZE;
-  if (mprotect(space + stack_guard_size,
-               writable_size,
-               PROT_READ | PROT_WRITE) != 0) {
-    async_safe_format_log(ANDROID_LOG_WARN, "libc",
-                          "pthread_create failed: couldn't mprotect R+W %zu-byte thread mapping region: %s",
-                          writable_size, strerror(errno));
+  int prot = PROT_READ | PROT_WRITE;
+  const char* prot_str = "R+W";
+#ifdef __aarch64__
+  if (atomic_load(&__libc_globals->memtag_stack)) {
+    prot |= PROT_MTE;
+    prot_str = "R+W+MTE";
+  }
+#endif
+  if (mprotect(space + stack_guard_size, writable_size, prot) != 0) {
+    async_safe_format_log(
+        ANDROID_LOG_WARN, "libc",
+        "pthread_create failed: couldn't mprotect %s %zu-byte thread mapping region: %s", prot_str,
+        writable_size, strerror(errno));
     munmap(space, mmap_size);
     return {};
   }
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index 071a5bc..7222b62 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -160,6 +160,13 @@
   bionic_tls* bionic_tls;
 
   int errno_value;
+
+  // The last observed value of SP in a vfork child process.
+  // The part of the stack between this address and the value of SP when the vfork parent process
+  // regains control may have stale MTE tags and needs cleanup. This field is only meaningful while
+  // the parent is waiting for the vfork child to return control by calling either exec*() or
+  // exit().
+  void* vfork_child_stack_bottom;
 };
 
 struct ThreadMapping {
diff --git a/libc/bionic/rename.cpp b/libc/bionic/rename.cpp
index 8295559..89786f7 100644
--- a/libc/bionic/rename.cpp
+++ b/libc/bionic/rename.cpp
@@ -30,5 +30,9 @@
 #include <stdio.h>
 
 int rename(const char* old_path, const char* new_path) {
-  return renameat(AT_FDCWD, old_path, AT_FDCWD, new_path);
+  return renameat2(AT_FDCWD, old_path, AT_FDCWD, new_path, 0);
+}
+
+int renameat(int old_dir_fd, const char* old_path, int new_dir_fd, const char* new_path) {
+  return renameat2(old_dir_fd, old_path, new_dir_fd, new_path, 0);
 }
diff --git a/libc/bionic/spawn.cpp b/libc/bionic/spawn.cpp
index 59f7631..7e80ef6 100644
--- a/libc/bionic/spawn.cpp
+++ b/libc/bionic/spawn.cpp
@@ -52,7 +52,7 @@
 // mark all open fds except stdin/out/err as close-on-exec
 static int cloexec_except_stdioe() {
   // requires 5.11+ or ACK 5.10-T kernel, otherwise returns ENOSYS or EINVAL
-  if (!syscall(SYS_close_range, 3, ~0U, CLOSE_RANGE_CLOEXEC)) return 0;
+  if (!close_range(3, ~0U, CLOSE_RANGE_CLOEXEC)) return 0;
 
   // unfortunately getrlimit can lie:
   // - both soft and hard limits can be lowered to 0, with fds still open, so it can underestimate
diff --git a/libc/bionic/strtol.cpp b/libc/bionic/strtol.cpp
index 77f1d92..05b4b53 100644
--- a/libc/bionic/strtol.cpp
+++ b/libc/bionic/strtol.cpp
@@ -32,11 +32,13 @@
 #include <inttypes.h>
 #include <limits.h>
 #include <stdlib.h>
+#include <wchar.h>
 
-template <typename T, T Min, T Max> T StrToI(const char* nptr, char** endptr, int base) {
+template <typename T, T Min, T Max, typename CharT>
+T StrToI(const CharT* nptr, CharT** endptr, int base) {
   // Ensure that base is between 2 and 36 inclusive, or the special value of 0.
   if (base < 0 || base == 1 || base > 36) {
-    if (endptr != nullptr) *endptr = const_cast<char*>(nptr);
+    if (endptr != nullptr) *endptr = const_cast<CharT*>(nptr);
     errno = EINVAL;
     return 0;
   }
@@ -44,7 +46,7 @@
   // Skip white space and pick up leading +/- sign if any.
   // If base is 0, allow 0x for hex and 0 for octal, else
   // assume decimal; if base is already 16, allow 0x.
-  const char* s = nptr;
+  const CharT* s = nptr;
   int c;
   do {
     c = *s++;
@@ -62,6 +64,11 @@
     s += 2;
     base = 16;
   }
+  if ((base == 0 || base == 2) && c == '0' && (*s == 'b' || *s == 'B') && isdigit(s[1])) {
+    c = s[1];
+    s += 2;
+    base = 2;
+  }
   if (base == 0) base = (c == '0') ? 8 : 10;
 
   // We always work in the negative space because the most negative value has a
@@ -91,7 +98,7 @@
       acc -= c;
     }
   }
-  if (endptr != nullptr) *endptr = const_cast<char*>(any ? s - 1 : nptr);
+  if (endptr != nullptr) *endptr = const_cast<CharT*>(any ? s - 1 : nptr);
   if (!neg) {
     if (acc == Min) {
       errno = ERANGE;
@@ -103,14 +110,15 @@
   return acc;
 }
 
-template <typename T, T Max> T StrToU(const char* nptr, char** endptr, int base) {
+template <typename T, T Max, typename CharT>
+T StrToU(const CharT* nptr, CharT** endptr, int base) {
   if (base < 0 || base == 1 || base > 36) {
-    if (endptr != nullptr) *endptr = const_cast<char*>(nptr);
+    if (endptr != nullptr) *endptr = const_cast<CharT*>(nptr);
     errno = EINVAL;
     return 0;
   }
 
-  const char* s = nptr;
+  const CharT* s = nptr;
   int c;
   do {
     c = *s++;
@@ -128,6 +136,11 @@
     s += 2;
     base = 16;
   }
+  if ((base == 0 || base == 2) && c == '0' && (*s == 'b' || *s == 'B') && isdigit(s[1])) {
+    c = s[1];
+    s += 2;
+    base = 2;
+  }
   if (base == 0) base = (c == '0') ? 8 : 10;
 
   T cutoff = Max / static_cast<T>(base);
@@ -155,7 +168,7 @@
     }
   }
   if (neg && any > 0) acc = -acc;
-  if (endptr != nullptr) *endptr = const_cast<char*>(any ? s - 1 : nptr);
+  if (endptr != nullptr) *endptr = const_cast<CharT*>(any ? s - 1 : nptr);
   return acc;
 }
 
@@ -172,31 +185,49 @@
 }
 
 intmax_t strtoimax(const char* s, char** end, int base) {
-  return StrToI<intmax_t, INTMAX_MIN, INTMAX_MAX>(s, end, base);
+  return StrToI<intmax_t, INTMAX_MIN, INTMAX_MAX, char>(s, end, base);
+}
+
+intmax_t wcstoimax(const wchar_t* s, wchar_t** end, int base) {
+  return StrToI<intmax_t, INTMAX_MIN, INTMAX_MAX, wchar_t>(s, end, base);
 }
 
 long strtol(const char* s, char** end, int base) {
-  return StrToI<long, LONG_MIN, LONG_MAX>(s, end, base);
+  return StrToI<long, LONG_MIN, LONG_MAX, char>(s, end, base);
+}
+
+long wcstol(const wchar_t* s, wchar_t** end, int base) {
+  return StrToI<long, LONG_MIN, LONG_MAX, wchar_t>(s, end, base);
 }
 
 long long strtoll(const char* s, char** end, int base) {
-  return StrToI<long long, LLONG_MIN, LLONG_MAX>(s, end, base);
+  return StrToI<long long, LLONG_MIN, LLONG_MAX, char>(s, end, base);
 }
 
-// Public API since L, but not in any header.
-__strong_alias(strtoq, strtoll);
+long long wcstoll(const wchar_t* s, wchar_t** end, int base) {
+  return StrToI<long long, LLONG_MIN, LLONG_MAX, wchar_t>(s, end, base);
+}
 
 unsigned long strtoul(const char* s, char** end, int base) {
-  return StrToU<unsigned long, ULONG_MAX>(s, end, base);
+  return StrToU<unsigned long, ULONG_MAX, char>(s, end, base);
+}
+
+unsigned long wcstoul(const wchar_t* s, wchar_t** end, int base) {
+  return StrToU<unsigned long, ULONG_MAX, wchar_t>(s, end, base);
 }
 
 unsigned long long strtoull(const char* s, char** end, int base) {
-  return StrToU<unsigned long long, ULLONG_MAX>(s, end, base);
+  return StrToU<unsigned long long, ULLONG_MAX, char>(s, end, base);
+}
+
+unsigned long long wcstoull(const wchar_t* s, wchar_t** end, int base) {
+  return StrToU<unsigned long long, ULLONG_MAX, wchar_t>(s, end, base);
 }
 
 uintmax_t strtoumax(const char* s, char** end, int base) {
-  return StrToU<uintmax_t, UINTMAX_MAX>(s, end, base);
+  return StrToU<uintmax_t, UINTMAX_MAX, char>(s, end, base);
 }
 
-// Public API since L, but not in any header.
-__strong_alias(strtouq, strtoull);
+uintmax_t wcstoumax(const wchar_t* s, wchar_t** end, int base) {
+  return StrToU<uintmax_t, UINTMAX_MAX, wchar_t>(s, end, base);
+}
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp
index dd6b129..1c06c9e 100644
--- a/libc/bionic/sysconf.cpp
+++ b/libc/bionic/sysconf.cpp
@@ -88,7 +88,7 @@
     case _SC_PAGESIZE:
     case _SC_PAGE_SIZE:
       // _SC_PAGESIZE and _SC_PAGE_SIZE are distinct, but return the same value.
-      return static_cast<long>(getauxval(AT_PAGESZ));
+      return getpagesize();
 
     case _SC_PHYS_PAGES:        return get_phys_pages();
 
diff --git a/libc/bionic/sysinfo.cpp b/libc/bionic/sysinfo.cpp
index 7ab8e9e..1e4a0e8 100644
--- a/libc/bionic/sysinfo.cpp
+++ b/libc/bionic/sysinfo.cpp
@@ -36,47 +36,31 @@
 #include "private/get_cpu_count_from_string.h"
 #include "private/ScopedReaddir.h"
 
-static bool __matches_cpuN(const char* s) {
-  // The %c trick is to ensure that we have the anchored match "^cpu[0-9]+$".
-  // We can't use %*c because the return value is how many were *assigned*.
-  unsigned cpu;
-  char unused;
-  return (sscanf(s, "cpu%u%c", &cpu, &unused) == 1);
-}
-
-int get_nprocs_conf() {
-  // On x86 kernels you can use /proc/cpuinfo for this, but on ARM kernels offline CPUs disappear
-  // from there. This method works on both.
-  ScopedReaddir reader("/sys/devices/system/cpu");
-  if (reader.IsBad()) {
-    return 1;
-  }
-
-  int result = 0;
-  dirent* entry;
-  while ((entry = reader.ReadEntry()) != nullptr) {
-    if (entry->d_type == DT_DIR && __matches_cpuN(entry->d_name)) {
-      ++result;
-    }
-  }
-  return result;
-}
-
-int get_nprocs() {
+int __get_cpu_count(const char* sys_file) {
   int cpu_count = 1;
-  FILE* fp = fopen("/sys/devices/system/cpu/online", "re");
+  FILE* fp = fopen(sys_file, "re");
   if (fp != nullptr) {
     char* line = nullptr;
-    size_t len = 0;
-    if (getline(&line, &len, fp) != -1) {
+    size_t allocated_size = 0;
+    if (getline(&line, &allocated_size, fp) != -1) {
       cpu_count = GetCpuCountFromString(line);
-      free(line);
     }
+    free(line);
     fclose(fp);
   }
   return cpu_count;
 }
 
+int get_nprocs_conf() {
+  // It's unclear to me whether this is intended to be "possible" or "present",
+  // but on mobile they're unlikely to differ.
+  return __get_cpu_count("/sys/devices/system/cpu/possible");
+}
+
+int get_nprocs() {
+  return __get_cpu_count("/sys/devices/system/cpu/online");
+}
+
 long get_phys_pages() {
   struct sysinfo si;
   sysinfo(&si);
diff --git a/libc/bionic/sysprop_helpers.cpp b/libc/bionic/sysprop_helpers.cpp
index edae6cc..5627034 100644
--- a/libc/bionic/sysprop_helpers.cpp
+++ b/libc/bionic/sysprop_helpers.cpp
@@ -53,9 +53,7 @@
         strncpy(cb_cookie->dest, value, cb_cookie->size);
       },
       &cb_cookie);
-  if (*dest != '\0' && *dest != '0') return true;
-
-  return false;
+  return *dest != '\0';
 }
 
 bool get_config_from_env_or_sysprops(const char* env_var_name, const char* const* sys_prop_names,
diff --git a/libc/bionic/time64.c b/libc/bionic/time64.c
index da38bf3..73f24ab 100644
--- a/libc/bionic/time64.c
+++ b/libc/bionic/time64.c
@@ -483,6 +483,11 @@
 }
 
 
+/* This implementation violates mktime specification, according to which
+   tm_yday, tm_wday, and tm_isdst fields should be updated. This function
+   leaves input_date unmodified. Given that there were no bug reports, fixing
+   it might cause more troubles than just leaving it as it is.
+ */
 Time64_T mktime64(const struct TM *input_date) {
     struct tm safe_date;
     struct TM date;
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/bionic/time_l.cpp
similarity index 84%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/bionic/time_l.cpp
index bc1945c..e5fa9a5 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/bionic/time_l.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,9 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#include <time.h>
+//#include <xlocale.h>
 
-#include <private/bionic_asm.h>
-
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
-
-NOTE_GNU_PROPERTY()
+char* strptime_l(const char* buf, const char* fmt, struct tm* tm, locale_t) {
+  return strptime(buf, fmt, tm);
+}
diff --git a/libc/dns/resolv/res_send.c b/libc/dns/resolv/res_send.c
index fa81e6d..a95997d 100644
--- a/libc/dns/resolv/res_send.c
+++ b/libc/dns/resolv/res_send.c
@@ -680,8 +680,7 @@
 /* Private */
 
 static int
-get_salen(sa)
-	const struct sockaddr *sa;
+get_salen(const struct sockaddr *sa)
 {
 
 #ifdef HAVE_SA_LEN
@@ -702,9 +701,7 @@
  * pick appropriate nsaddr_list for use.  see res_init() for initialization.
  */
 static struct sockaddr *
-get_nsaddr(statp, n)
-	res_state statp;
-	size_t n;
+get_nsaddr(res_state statp, size_t n)
 {
 
 	if (!statp->nsaddr_list[n].sin_family && EXT(statp).ext) {
diff --git a/libc/include/android/api-level.h b/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/libc/include/android/api-level.h
+++ b/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/libc/include/android/fdsan.h b/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/libc/include/android/fdsan.h
+++ b/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/libc/include/android/legacy_stdlib_inlines.h b/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/libc/include/android/legacy_stdlib_inlines.h
+++ b/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/libc/include/bits/elf_arm.h b/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/libc/include/bits/elf_arm64.h b/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/libc/include/bits/elf_common.h b/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/libc/include/bits/elf_x86.h b/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/libc/include/bits/elf_x86_64.h b/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/include/bits/fenv_riscv64.h
similarity index 69%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/include/bits/fenv_riscv64.h
index bc1945c..e1e43b6 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/include/bits/fenv_riscv64.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,27 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#pragma once
 
-#include <private/bionic_asm.h>
+#include <sys/types.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+__BEGIN_DECLS
 
-NOTE_GNU_PROPERTY()
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/libc/include/bits/fortify/fcntl.h b/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/libc/include/bits/fortify/fcntl.h
+++ b/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/libc/include/elf.h b/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/libc/include/elf.h
+++ b/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/libc/include/execinfo.h b/libc/include/execinfo.h
index 347ae92..88f4ae7 100644
--- a/libc/include/execinfo.h
+++ b/libc/include/execinfo.h
@@ -47,7 +47,7 @@
  *
  * Available since API level 33.
  */
-int backtrace(void** buffer, int size) __INTRODUCED_IN(33);
+int backtrace(void* _Nonnull * _Nonnull buffer, int size) __INTRODUCED_IN(33);
 
 /**
  * [backtrace_symbols(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols.3.html)
@@ -59,7 +59,7 @@
  *
  * Available since API level 33.
  */
-char** backtrace_symbols(void* const* buffer, int size) __INTRODUCED_IN(33);
+char* _Nullable * _Nullable backtrace_symbols(void* _Nonnull const* _Nonnull buffer, int size) __INTRODUCED_IN(33);
 
 /**
  * [backtrace_symbols_fd(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols_fd.3.html)
@@ -69,6 +69,6 @@
  *
  * Available since API level 33.
  */
-void backtrace_symbols_fd(void* const* buffer, int size, int fd) __INTRODUCED_IN(33);
+void backtrace_symbols_fd(void* _Nonnull const* _Nonnull buffer, int size, int fd) __INTRODUCED_IN(33);
 
 __END_DECLS
diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 1ea94e6..1ec932b 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -111,9 +111,9 @@
  * Returns a new file descriptor on success and returns -1 and sets `errno` on
  * failure.
  */
-int creat(const char* __path, mode_t __mode);
+int creat(const char* _Nonnull __path, mode_t __mode);
 /** See creat(). */
-int creat64(const char* __path, mode_t __mode) __INTRODUCED_IN(21);
+int creat64(const char* _Nonnull __path, mode_t __mode) __INTRODUCED_IN(21);
 
 /**
  * [openat(2)](http://man7.org/linux/man-pages/man2/openat.2.html)
@@ -122,9 +122,9 @@
  * Returns a new file descriptor on success and returns -1 and sets `errno` on
  * failure.
  */
-int openat(int __dir_fd, const char* __path, int __flags, ...);
+int openat(int __dir_fd, const char* _Nonnull __path, int __flags, ...);
 /** See openat(). */
-int openat64(int __dir_fd, const char* __path, int __flags, ...) __INTRODUCED_IN(21);
+int openat64(int __dir_fd, const char* _Nonnull __path, int __flags, ...) __INTRODUCED_IN(21);
 
 /**
  * [open(2)](http://man7.org/linux/man-pages/man2/open.2.html)
@@ -133,9 +133,9 @@
  * Returns a new file descriptor on success and returns -1 and sets `errno` on
  * failure.
  */
-int open(const char* __path, int __flags, ...);
+int open(const char* _Nonnull __path, int __flags, ...);
 /** See open(). */
-int open64(const char* __path, int __flags, ...) __INTRODUCED_IN(21);
+int open64(const char* _Nonnull __path, int __flags, ...) __INTRODUCED_IN(21);
 
 /**
  * [splice(2)](http://man7.org/linux/man-pages/man2/splice.2.html)
@@ -149,7 +149,7 @@
  *
  * Available since API level 21.
  */
-ssize_t splice(int __in_fd, off64_t* __in_offset, int __out_fd, off64_t* __out_offset, size_t __length, unsigned int __flags) __INTRODUCED_IN(21);
+ssize_t splice(int __in_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __in_offset, int __out_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __out_offset, size_t __length, unsigned int __flags) __INTRODUCED_IN(21);
 
 /**
  * [tee(2)](http://man7.org/linux/man-pages/man2/tee.2.html)
@@ -177,7 +177,7 @@
  *
  * Available since API level 21.
  */
-ssize_t vmsplice(int __fd, const struct iovec* __iov, size_t __count, unsigned int __flags) __INTRODUCED_IN(21);
+ssize_t vmsplice(int __fd, const struct iovec* _Nonnull __iov, size_t __count, unsigned int __flags) __INTRODUCED_IN(21);
 
 /**
  * [fallocate(2)](http://man7.org/linux/man-pages/man2/fallocate.2.html)
diff --git a/libc/include/fenv.h b/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/libc/include/fenv.h
+++ b/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h
index 7a409d8..f8b7f7d 100644
--- a/libc/include/inttypes.h
+++ b/libc/include/inttypes.h
@@ -257,10 +257,10 @@
 __BEGIN_DECLS
 intmax_t imaxabs(intmax_t __i) __attribute_const__ __INTRODUCED_IN(19);
 imaxdiv_t imaxdiv(intmax_t __numerator, intmax_t __denominator) __attribute_const__ __INTRODUCED_IN(19);
-intmax_t strtoimax(const char* __s, char** __end_ptr, int __base);
-uintmax_t strtoumax(const char* __s, char** __end_ptr, int __base);
-intmax_t wcstoimax(const wchar_t* __s, wchar_t** __end_ptr, int __base) __INTRODUCED_IN(21);
-uintmax_t wcstoumax(const wchar_t* __s, wchar_t** __end_ptr, int __base) __INTRODUCED_IN(21);
+intmax_t strtoimax(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+uintmax_t strtoumax(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+intmax_t wcstoimax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
+uintmax_t wcstoumax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
 __END_DECLS
 
 #endif
diff --git a/libc/include/langinfo.h b/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/libc/include/langinfo.h
+++ b/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/libc/include/libgen.h b/libc/include/libgen.h
index b910790..474f066 100644
--- a/libc/include/libgen.h
+++ b/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/libc/include/malloc.h b/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/libc/include/malloc.h
+++ b/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/libc/include/nl_types.h b/libc/include/nl_types.h
index 1c80e4e..f4d7f43 100644
--- a/libc/include/nl_types.h
+++ b/libc/include/nl_types.h
@@ -62,7 +62,7 @@
  *
  * Available since API level 28.
  */
-nl_catd catopen(const char* __name, int __flag) __INTRODUCED_IN(26);
+nl_catd _Nonnull catopen(const char* _Nonnull __name, int __flag) __INTRODUCED_IN(26);
 
 /**
  * [catgets(3)](http://man7.org/linux/man-pages/man3/catgets.3.html) translates the given message
@@ -72,13 +72,13 @@
  *
  * Available since API level 28.
  */
-char* catgets(nl_catd __catalog, int __set_number, int __msg_number, const char* __msg) __INTRODUCED_IN(26);
+char* _Nonnull catgets(nl_catd _Nonnull __catalog, int __set_number, int __msg_number, const char* _Nonnull __msg) __INTRODUCED_IN(26);
 
 /**
  * [catclose(3)](http://man7.org/linux/man-pages/man3/catclose.3.html) closes a message catalog.
  *
  * On Android, this always returns -1 with `errno` set to `EBADF`.
  */
-int catclose(nl_catd __catalog) __INTRODUCED_IN(26);
+int catclose(nl_catd _Nonnull __catalog) __INTRODUCED_IN(26);
 
 __END_DECLS
diff --git a/libc/include/regex.h b/libc/include/regex.h
index c4cc39c..be33819 100644
--- a/libc/include/regex.h
+++ b/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * __BIONIC_COMPLICATED_NULLNESS re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * __BIONIC_COMPLICATED_NULLNESS re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/libc/include/setjmp.h b/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/libc/include/setjmp.h
+++ b/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/libc/include/stdio_ext.h b/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/libc/include/stdio_ext.h
+++ b/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/libc/include/string.h b/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 5b9d99b..484757e 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -63,6 +63,14 @@
 #define __BIONIC_ALIGN(__value, __alignment) (((__value) + (__alignment)-1) & ~((__alignment)-1))
 
 /*
+ * The nullness constraints of this parameter or return value are
+ * quite complex. This is used to highlight spots where developers
+ * are encouraged to read relevant manuals or code to understand
+ * the full picture of nullness for this pointer.
+ */
+#define __BIONIC_COMPLICATED_NULLNESS _Null_unspecified
+
+/*
  * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
  * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
  * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/libc/include/sys/ucontext.h
+++ b/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/libc/include/sys/user.h b/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/libc/include/sys/user.h
+++ b/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/libc/include/termios.h b/libc/include/termios.h
index e3f388c..92ac24b 100644
--- a/libc/include/termios.h
+++ b/libc/include/termios.h
@@ -49,19 +49,19 @@
  * [cfgetispeed(3)](http://man7.org/linux/man-pages/man3/cfgetispeed.3.html)
  * returns the terminal input baud rate.
  */
-speed_t cfgetispeed(const struct termios* __t) __INTRODUCED_IN(21);
+speed_t cfgetispeed(const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
 
 /**
  * [cfgetospeed(3)](http://man7.org/linux/man-pages/man3/cfgetospeed.3.html)
  * returns the terminal output baud rate.
  */
-speed_t cfgetospeed(const struct termios* __t) __INTRODUCED_IN(21);
+speed_t cfgetospeed(const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
 
 /**
  * [cfmakeraw(3)](http://man7.org/linux/man-pages/man3/cfmakeraw.3.html)
  * configures the terminal for "raw" mode.
  */
-void cfmakeraw(struct termios* __t) __INTRODUCED_IN(21);
+void cfmakeraw(struct termios* _Nonnull __t) __INTRODUCED_IN(21);
 
 /**
  * [cfsetspeed(3)](http://man7.org/linux/man-pages/man3/cfsetspeed.3.html)
@@ -69,7 +69,7 @@
  *
  * Returns 0 on success and returns -1 and sets `errno` on failure.
  */
-int cfsetspeed(struct termios* __t, speed_t __speed) __INTRODUCED_IN(21);
+int cfsetspeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(21);
 
 /**
  * [cfsetispeed(3)](http://man7.org/linux/man-pages/man3/cfsetispeed.3.html)
@@ -77,7 +77,7 @@
  *
  * Returns 0 on success and returns -1 and sets `errno` on failure.
  */
-int cfsetispeed(struct termios* __t, speed_t __speed) __INTRODUCED_IN(21);
+int cfsetispeed(struct termios* _Nonnull _t, speed_t __speed) __INTRODUCED_IN(21);
 
 /**
  * [cfsetospeed(3)](http://man7.org/linux/man-pages/man3/cfsetospeed.3.html)
@@ -85,7 +85,7 @@
  *
  * Returns 0 on success and returns -1 and sets `errno` on failure.
  */
-int cfsetospeed(struct termios* __t, speed_t __speed) __INTRODUCED_IN(21);
+int cfsetospeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(21);
 
 /**
  * [tcdrain(3)](http://man7.org/linux/man-pages/man3/tcdrain.3.html)
@@ -120,7 +120,7 @@
  *
  * Returns 0 on success and returns -1 and sets `errno` on failure.
  */
-int tcgetattr(int __fd, struct termios* __t) __INTRODUCED_IN(21);
+int tcgetattr(int __fd, struct termios* _Nonnull __t) __INTRODUCED_IN(21);
 
 /**
  * [tcgetsid(3)](http://man7.org/linux/man-pages/man3/tcgetsid.3.html)
@@ -145,7 +145,7 @@
  *
  * Returns 0 on success and returns -1 and sets `errno` on failure.
  */
-int tcsetattr(int __fd, int __optional_actions, const struct termios* __t) __INTRODUCED_IN(21);
+int tcsetattr(int __fd, int __optional_actions, const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
 
 #endif
 
diff --git a/libc/include/time.h b/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/libc/include/time64.h b/libc/include/time64.h
index 905669d..7d70030 100644
--- a/libc/include/time64.h
+++ b/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/libc/include/utmp.h b/libc/include/utmp.h
index cb72ce2..7aa5718 100644
--- a/libc/include/utmp.h
+++ b/libc/include/utmp.h
@@ -99,7 +99,7 @@
 /**
  * Does nothing.
  */
-int utmpname(const char* __path);
+int utmpname(const char* _Nonnull __path);
 /**
  * Does nothing.
  */
@@ -107,11 +107,11 @@
 /**
  * Does nothing.
  */
-struct utmp* getutent(void);
+struct utmp* _Nullable getutent(void);
 /**
  * Does nothing.
  */
-struct utmp* pututline(const struct utmp* __entry);
+struct utmp* _Nullable pututline(const struct utmp* _Nonnull __entry);
 /**
  * Does nothing.
  */
diff --git a/libc/kernel/README.md b/libc/kernel/README.md
index 5f1c81d..3846a4f 100644
--- a/libc/kernel/README.md
+++ b/libc/kernel/README.md
@@ -99,6 +99,7 @@
 Run this command to automatically download the latest version of the headers
 and import them if there is no checked out kernel source tree:
 ```
+  # For testing only, not for use in production!
   bionic/libc/kernel/tools/generate_uapi_headers.sh --download-kernel
 ```
 
diff --git a/libc/kernel/android/BUILD b/libc/kernel/android/BUILD
new file mode 100644
index 0000000..b862a6d
--- /dev/null
+++ b/libc/kernel/android/BUILD
@@ -0,0 +1,43 @@
+# Copyright (C) 2022 The Android Open Source Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  * Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#  * Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+load("//build/bazel/rules/apis:cc_api_contribution.bzl", "cc_api_headers")
+
+package(default_visibility = ["//bionic/libc:__pkg__"])
+
+cc_api_headers(
+  name="libc_kernel_android_uapi_headers",
+  include_dir="uapi",
+  hdrs=glob(["uapi/**/*.h"]),
+  system=True,
+)
+
+cc_api_headers(
+  name="libc_kernel_android_scsi_headers",
+  include_dir="scsi",
+  hdrs=glob(["scsi/**/*.h"]),
+  system=True,
+)
diff --git a/libc/kernel/android/scsi/scsi/scsi_proto.h b/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index cfd301a..f15fab4 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -109,9 +109,6 @@
     if arch and arch in kernel_default_arch_macros:
         macros.update(kernel_default_arch_macros[arch])
 
-    if arch and arch in kernel_arch_token_replacements:
-        blocks.replaceTokens(kernel_arch_token_replacements[arch])
-
     blocks.removeStructs(kernel_structs_to_remove)
     blocks.optimizeMacros(macros)
     blocks.optimizeIf01()
diff --git a/libc/kernel/tools/cpp.py b/libc/kernel/tools/cpp.py
index 26121ca..40e1f26 100755
--- a/libc/kernel/tools/cpp.py
+++ b/libc/kernel/tools/cpp.py
@@ -14,7 +14,7 @@
     utils.panic('ANDROID_BUILD_TOP not set.\n')
 
 # Set up the env vars for libclang.
-site.addsitedir(os.path.join(top, 'prebuilts/clang/host/linux-x86/clang-stable/lib64/python3/site-packages/'))
+site.addsitedir(os.path.join(top, 'prebuilts/clang/host/linux-x86/clang-stable/lib/python3/site-packages/'))
 
 import clang.cindex
 from clang.cindex import conf
@@ -28,7 +28,7 @@
 
 # Set up LD_LIBRARY_PATH to include libclang.so, libLLVM.so, and etc.
 # Note that setting LD_LIBRARY_PATH with os.putenv() sometimes doesn't help.
-clang.cindex.Config.set_library_file(os.path.join(top, 'prebuilts/clang/host/linux-x86/clang-stable/lib64/libclang.so'))
+clang.cindex.Config.set_library_file(os.path.join(top, 'prebuilts/clang/host/linux-x86/clang-stable/lib/libclang.so'))
 
 from defaults import *
 
@@ -155,6 +155,11 @@
     pass
 
 
+class UnparseableStruct(Exception):
+    """An exception that will be raised for structs that cannot be parsed."""
+    pass
+
+
 # The __contains__ function in libclang SourceRange class contains a bug. It
 # gives wrong result when dealing with single line range.
 # Bug filed with upstream:
@@ -1197,22 +1202,38 @@
 
     def removeStructs(self, structs):
         """Remove structs."""
-        for b in self.blocks:
+        extra_includes = []
+        block_num = 0
+        num_blocks = len(self.blocks)
+        while block_num < num_blocks:
+            b = self.blocks[block_num]
+            block_num += 1
             # Have to look in each block for a top-level struct definition.
             if b.directive:
                 continue
             num_tokens = len(b.tokens)
-            # A struct definition has at least 5 tokens:
+            # A struct definition usually looks like:
             #   struct
             #   ident
             #   {
             #   }
             #   ;
-            if num_tokens < 5:
+            # However, the structure might be spread across multiple blocks
+            # if the structure looks like this:
+            #   struct ident
+            #   {
+            #   #ifdef VARIABLE
+            #     pid_t pid;
+            #   #endif
+            #   }:
+            # So the total number of tokens in the block might be less than
+            # five but assume at least three.
+            if num_tokens < 3:
                 continue
+
             # This is a simple struct finder, it might fail if a top-level
             # structure has an #if type directives that confuses the algorithm
-            # for finding th end of the structure. Or if there is another
+            # for finding the end of the structure. Or if there is another
             # structure definition embedded in the structure.
             i = 0
             while i < num_tokens - 2:
@@ -1223,24 +1244,58 @@
                 if (b.tokens[i + 1].kind == TokenKind.IDENTIFIER and
                     b.tokens[i + 2].kind == TokenKind.PUNCTUATION and
                     b.tokens[i + 2].id == "{" and b.tokens[i + 1].id in structs):
+                    # Add an include for the structure to be removed of the form:
+                    #  #include <bits/STRUCT_NAME.h>
+                    struct_token = b.tokens[i + 1]
+                    if not structs[struct_token.id]:
+                        extra_includes.append("<bits/%s.h>" % struct_token.id)
+
                     # Search forward for the end of the structure.
-                    # Very simple search, look for } and ; tokens. If something
-                    # more complicated is needed we can add it later.
+                    # Very simple search, look for } and ; tokens.
+                    # If we hit the end of the block, we'll need to start
+                    # looking at the next block.
                     j = i + 3
-                    while j < num_tokens - 1:
-                        if (b.tokens[j].kind == TokenKind.PUNCTUATION and
-                            b.tokens[j].id == "}" and
-                            b.tokens[j + 1].kind == TokenKind.PUNCTUATION and
-                            b.tokens[j + 1].id == ";"):
-                            b.tokens = b.tokens[0:i] + b.tokens[j + 2:num_tokens]
+                    depth = 1
+                    struct_removed = False
+                    while not struct_removed:
+                        while j < num_tokens:
+                            if b.tokens[j].kind == TokenKind.PUNCTUATION:
+                                if b.tokens[j].id == '{':
+                                    depth += 1
+                                elif b.tokens[j].id == '}':
+                                    depth -= 1
+                                elif b.tokens[j].id == ';' and depth == 0:
+                                    b.tokens = b.tokens[0:i] + b.tokens[j + 1:num_tokens]
+                                    num_tokens = len(b.tokens)
+                                    struct_removed = True
+                                    break
+                            j += 1
+                        if not struct_removed:
+                            b.tokens = b.tokens[0:i]
+
+                            # Skip directive blocks.
+                            start_block = block_num
+                            while block_num < num_blocks:
+                                if not self.blocks[block_num].directive:
+                                    break
+                                block_num += 1
+                            if block_num >= num_blocks:
+                                # Unparsable struct, error out.
+                                raise UnparseableStruct("Cannot remove struct %s: %s" % (struct_token.id, struct_token.location))
+                            self.blocks = self.blocks[0:start_block] + self.blocks[block_num:num_blocks]
+                            num_blocks = len(self.blocks)
+                            b = self.blocks[start_block]
+                            block_num = start_block + 1
                             num_tokens = len(b.tokens)
-                            j = i
-                            break
-                        j += 1
-                    i = j
+                            i = 0
+                            j = 0
                     continue
                 i += 1
 
+        for extra_include in extra_includes:
+            replacement = CppStringTokenizer(extra_include)
+            self.blocks.insert(2, Block(replacement.tokens, directive='include'))
+
     def optimizeAll(self, macros):
         self.optimizeMacros(macros)
         self.optimizeIf01()
@@ -1404,35 +1459,12 @@
 
     def replaceTokens(self, replacements):
         """Replace tokens according to the given dict."""
-        extra_includes = []
         for b in self.blocks:
             made_change = False
             if b.isInclude() is None:
                 i = 0
                 while i < len(b.tokens):
                     tok = b.tokens[i]
-                    if (tok.kind == TokenKind.KEYWORD and tok.id == 'struct'
-                        and (i + 2) < len(b.tokens) and b.tokens[i + 2].id == '{'):
-                        struct_name = b.tokens[i + 1].id
-                        if struct_name in kernel_struct_replacements:
-                            extra_includes.append("<bits/%s.h>" % struct_name)
-                            end = i + 2
-                            depth = 1
-                            while end < len(b.tokens) and depth > 0:
-                                if b.tokens[end].id == '}':
-                                    depth -= 1
-                                elif b.tokens[end].id == '{':
-                                    depth += 1
-                                end += 1
-                            end += 1 # Swallow last '}'
-                            while end < len(b.tokens) and b.tokens[end].id != ';':
-                                end += 1
-                            end += 1 # Swallow ';'
-                            # Remove these tokens. We'll replace them later with a #include block.
-                            b.tokens[i:end] = []
-                            made_change = True
-                            # We've just modified b.tokens, so revisit the current offset.
-                            continue
                     if tok.kind == TokenKind.IDENTIFIER:
                         if tok.id in replacements:
                             tok.id = replacements[tok.id]
@@ -1447,10 +1479,6 @@
                 # Keep 'expr' in sync with 'tokens'.
                 b.expr = CppExpr(b.tokens)
 
-        for extra_include in extra_includes:
-            replacement = CppStringTokenizer(extra_include)
-            self.blocks.insert(2, Block(replacement.tokens, directive='include'))
-
 
 
 def strip_space(s):
@@ -1647,7 +1675,7 @@
 
     def get_blocks(self, lines):
         blocks = BlockParser().parse(CppStringTokenizer('\n'.join(lines)))
-        return map(lambda a: str(a), blocks)
+        return list(map(lambda a: str(a), blocks))
 
     def test_hash(self):
         self.assertEqual(self.get_blocks(["#error hello"]), ["#error hello"])
@@ -2020,7 +2048,7 @@
   struct timeval val2;
 };
 """
-        self.assertEqual(self.parse(text, set(["remove"])), expected)
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
 
     def test_remove_struct_from_end(self):
         text = """\
@@ -2039,7 +2067,7 @@
   struct timeval val2;
 };
 """
-        self.assertEqual(self.parse(text, set(["remove"])), expected)
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
 
     def test_remove_minimal_struct(self):
         text = """\
@@ -2047,7 +2075,7 @@
 };
 """
         expected = "";
-        self.assertEqual(self.parse(text, set(["remove"])), expected)
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
 
     def test_remove_struct_with_struct_fields(self):
         text = """\
@@ -2067,7 +2095,7 @@
   struct remove val2;
 };
 """
-        self.assertEqual(self.parse(text, set(["remove"])), expected)
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
 
     def test_remove_consecutive_structs(self):
         text = """\
@@ -2099,7 +2127,7 @@
   struct timeval val2;
 };
 """
-        self.assertEqual(self.parse(text, set(["remove1", "remove2"])), expected)
+        self.assertEqual(self.parse(text, {"remove1": True, "remove2": True}), expected)
 
     def test_remove_multiple_structs(self):
         text = """\
@@ -2132,7 +2160,101 @@
   int val;
 };
 """
-        self.assertEqual(self.parse(text, set(["remove1", "remove2"])), expected)
+        self.assertEqual(self.parse(text, {"remove1": True, "remove2": True}), expected)
+
+    def test_remove_struct_with_inline_structs(self):
+        text = """\
+struct remove {
+  int val1;
+  int val2;
+  struct {
+    int val1;
+    struct {
+      int val1;
+    } level2;
+  } level1;
+};
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        expected = """\
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
+
+    def test_remove_struct_across_blocks(self):
+        text = """\
+struct remove {
+  int val1;
+  int val2;
+#ifdef PARAMETER1
+  PARAMETER1
+#endif
+#ifdef PARAMETER2
+  PARAMETER2
+#endif
+};
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        expected = """\
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        self.assertEqual(self.parse(text, {"remove": True}), expected)
+
+    def test_remove_struct_across_blocks_multiple_structs(self):
+        text = """\
+struct remove1 {
+  int val1;
+  int val2;
+#ifdef PARAMETER1
+  PARAMETER1
+#endif
+#ifdef PARAMETER2
+  PARAMETER2
+#endif
+};
+struct remove2 {
+};
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        expected = """\
+struct something {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        self.assertEqual(self.parse(text, {"remove1": True, "remove2": True}), expected)
+
+    def test_remove_multiple_struct_and_add_includes(self):
+        text = """\
+struct remove1 {
+  int val1;
+  int val2;
+};
+struct remove2 {
+  struct timeval val1;
+  struct timeval val2;
+};
+"""
+        expected = """\
+#include <bits/remove1.h>
+#include <bits/remove2.h>
+"""
+        self.assertEqual(self.parse(text, {"remove1": False, "remove2": False}), expected)
 
 
 class FullPathTest(unittest.TestCase):
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index 2089285..d0fe157 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -5,9 +5,6 @@
 import time, os, sys
 from utils import *
 
-# the list of supported architectures
-kernel_archs = [ 'arm', 'arm64', 'x86' ]
-
 # the list of include directories that belong to the kernel
 # tree. used when looking for sources...
 kernel_dirs = [ "linux", "asm", "asm-generic", "mtd" ]
@@ -35,34 +32,34 @@
     "__kernel_old_timeval": "1",
     }
 
-# this is the set of known kernel data structures we want to remove from
-# the final headers
-kernel_structs_to_remove = set(
-        [
-          # Remove the structures since they are still the same as
-          # timeval, itimerval.
-          "__kernel_old_timeval",
-          "__kernel_old_itimerval",
-        ]
-    )
+# This is the set of known kernel data structures we want to remove from
+# the final headers. If the map value is False, that means that in
+# addition to removing the structure, add an #include <bits/STRUCT.h>
+# to the file.
+kernel_structs_to_remove = {
+    # Remove the structures since they are still the same as
+    # timeval, itimerval.
+    "__kernel_old_timeval": True,
+    "__kernel_old_itimerval": True,
+    # Replace all of the below structures with #include <bits/STRUCT.h>
+    "epoll_event": False,
+    "flock": False,
+    "flock64": False,
+    "in_addr": False,
+    "ip_mreq_source": False,
+    "ip_msfilter": False,
+    }
 
 # define to true if you want to remove all defined(CONFIG_FOO) tests
 # from the clean headers. testing shows that this is not strictly necessary
 # but just generates cleaner results
 kernel_remove_config_macros = True
 
-# maps an architecture to a set of default macros that would be provided by
-# toolchain preprocessor
+# Maps an architecture to a set of default macros that would be provided by
+# the toolchain's preprocessor. Currently only used to remove confusing
+# big-endian junk from the 32-bit arm headers.
 kernel_default_arch_macros = {
     "arm": {"__ARMEB__": kCppUndefinedMacro, "__ARM_EABI__": "1"},
-    "arm64": {},
-    "x86": {},
-    }
-
-kernel_arch_token_replacements = {
-    "arm": {},
-    "arm64": {},
-    "x86": {},
     }
 
 # Replace tokens in the output according to this mapping.
@@ -97,23 +94,12 @@
     "__kernel_old_timeval": "timeval",
     # Do the same for __kernel_old_itimerval as for timeval.
     "__kernel_old_itimerval": "itimerval",
+    # Replace __packed with __attribute__((__packed__)) to avoid depending
+    # on sys/cdefs.h
+    "__packed": "__attribute__((__packed__))",
     }
 
 
-# This is the set of struct definitions that we want to replace with
-# a #include of <bits/struct.h> instead.
-kernel_struct_replacements = set(
-        [
-          "epoll_event",
-          "flock",
-          "flock64",
-          "in_addr",
-          "ip_mreq_source",
-          "ip_msfilter",
-        ]
-    )
-
-
 # This is the set of known static inline functions that we want to keep
 # in the final kernel headers.
 kernel_known_generic_statics = set(
diff --git a/libc/kernel/tools/generate_uapi_headers.sh b/libc/kernel/tools/generate_uapi_headers.sh
index 7e49cde..12f60e5 100755
--- a/libc/kernel/tools/generate_uapi_headers.sh
+++ b/libc/kernel/tools/generate_uapi_headers.sh
@@ -43,7 +43,7 @@
 ANDROID_KERNEL_BRANCH="android-mainline"
 KERNEL_DIR=""
 KERNEL_DOWNLOAD=0
-ARCH_LIST=("arm" "arm64" "x86")
+ARCH_LIST=("arm" "arm64" "riscv" "x86")
 ANDROID_KERNEL_DIR="external/kernel-headers/original"
 SKIP_GENERATION=0
 VERIFY_HEADERS_ONLY=0
diff --git a/libc/kernel/tools/update_all.py b/libc/kernel/tools/update_all.py
index f2e78da..abc72a4 100755
--- a/libc/kernel/tools/update_all.py
+++ b/libc/kernel/tools/update_all.py
@@ -27,8 +27,14 @@
 def ProcessFiles(updater, original_dir, modified_dir, src_rel_dir, update_rel_dir):
     # Delete the old headers before updating to the new headers.
     update_dir = os.path.join(get_kernel_dir(), update_rel_dir)
-    shutil.rmtree(update_dir)
-    os.mkdir(update_dir, 0o755)
+    for root, dirs, files in os.walk(update_dir, topdown=True):
+        for entry in files:
+            # BUILD is a special file that needs to be preserved.
+            if entry == "BUILD":
+                continue
+            os.remove(os.path.join(root, entry))
+        for entry in dirs:
+            shutil.rmtree(os.path.join(root, entry))
 
     src_dir = os.path.normpath(os.path.join(original_dir, src_rel_dir))
     src_dir_len = len(src_dir) + 1
diff --git a/libc/kernel/uapi/BUILD b/libc/kernel/uapi/BUILD
new file mode 100644
index 0000000..3c9bb69
--- /dev/null
+++ b/libc/kernel/uapi/BUILD
@@ -0,0 +1,67 @@
+# Copyright (C) 2022 The Android Open Source Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  * Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#  * Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+load("//build/bazel/rules/apis:cc_api_contribution.bzl", "cc_api_headers")
+
+package(default_visibility = ["//bionic/libc:__pkg__"])
+
+cc_api_headers(
+    name = "libc_kernel_uapi_headers",
+    hdrs = glob(["**/*.h"]),
+    system = True,
+)
+
+cc_api_headers(
+    name = "libc_kernel_uapi_asm_arm_headers",
+    hdrs = glob(["asm-arm/**/*.h"]),
+    arch = "arm",
+    include_dir = "asm-arm",
+    system = True,
+)
+
+cc_api_headers(
+    name = "libc_kernel_uapi_asm_arm64_headers",
+    hdrs = glob(["asm-arm64/**/*.h"]),
+    arch = "arm64",
+    include_dir = "asm-arm64",
+    system = True,
+)
+
+cc_api_headers(
+    name = "libc_kernel_uapi_asm_x86_headers",
+    hdrs = glob(["asm-x86/**/*.h"]),
+    arch = "x86",
+    include_dir = "asm-x86",
+    system = True,
+)
+
+cc_api_headers(
+    name = "libc_kernel_uapi_asm_x86_64_headers",
+    hdrs = glob(["asm-x86_64/**/*.h"]),
+    arch = "x86_64",
+    include_dir = "asm-x86_64",
+    system = True,
+)
diff --git a/libc/kernel/uapi/asm-arm/asm/signal.h b/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/libc/kernel/uapi/asm-generic/fcntl.h b/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/libc/kernel/uapi/asm-generic/mman-common.h b/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/libc/kernel/uapi/asm-generic/shmbuf.h b/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/libc/kernel/uapi/asm-generic/siginfo.h b/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/libc/kernel/uapi/asm-generic/signal.h b/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/libc/kernel/uapi/asm-generic/signal.h
+++ b/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-generic/socket.h b/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/libc/kernel/uapi/asm-generic/socket.h
+++ b/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/libc/kernel/uapi/asm-generic/termbits-common.h b/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/libc/kernel/uapi/asm-generic/termbits.h b/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/libc/kernel/uapi/asm-generic/termbits.h
+++ b/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/elf.h b/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/errno.h b/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/mman.h b/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/param.h b/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/poll.h b/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/resource.h b/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/setup.h b/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/signal.h b/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/socket.h b/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/sockios.h b/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/stat.h b/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/statfs.h b/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/swab.h b/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/termbits.h b/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/termios.h b/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/types.h b/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/unistd.h b/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/libc/kernel/uapi/asm-x86/asm/sgx.h b/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/libc/kernel/uapi/asm-x86/asm/signal.h b/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/svm.h b/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/libc/kernel/uapi/drm/msm_drm.h b/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/libc/kernel/uapi/drm/msm_drm.h
+++ b/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/libc/kernel/uapi/drm/panfrost_drm.h b/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/vmwgfx_drm.h b/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/libc/kernel/uapi/linux/acct.h b/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/libc/kernel/uapi/linux/acct.h
+++ b/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/libc/kernel/uapi/linux/agpgart.h b/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/libc/kernel/uapi/linux/agpgart.h
+++ b/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/libc/kernel/uapi/linux/ashmem.h b/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/libc/kernel/uapi/linux/ashmem.h
+++ b/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/libc/kernel/uapi/linux/btf.h
+++ b/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/libc/kernel/uapi/linux/cachefiles.h b/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/libc/kernel/uapi/linux/can/bcm.h b/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/libc/kernel/uapi/linux/can/bcm.h
+++ b/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/libc/kernel/uapi/linux/can/error.h b/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/libc/kernel/uapi/linux/can/error.h
+++ b/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/libc/kernel/uapi/linux/can/isotp.h b/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/libc/kernel/uapi/linux/can/isotp.h
+++ b/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/libc/kernel/uapi/linux/can/raw.h b/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/libc/kernel/uapi/linux/can/raw.h
+++ b/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/capability.h b/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/libc/kernel/uapi/linux/capability.h
+++ b/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/libc/kernel/uapi/linux/connector.h b/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/libc/kernel/uapi/linux/connector.h
+++ b/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/counter.h b/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/libc/kernel/uapi/linux/counter.h
+++ b/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/cxl_mem.h b/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/libc/kernel/uapi/linux/cxl_mem.h
+++ b/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/libc/kernel/uapi/linux/cycx_cfm.h b/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dlm.h b/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/libc/kernel/uapi/linux/dlm.h
+++ b/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/dm-log-userspace.h b/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/dma-buf.h b/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/libc/kernel/uapi/linux/dma-buf.h
+++ b/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/libc/kernel/uapi/linux/dn.h b/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/libc/kernel/uapi/linux/dns_resolver.h b/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/libc/kernel/uapi/linux/dns_resolver.h
+++ b/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/dw100.h b/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/libc/kernel/uapi/linux/elf-em.h b/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/libc/kernel/uapi/linux/elf-em.h
+++ b/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ethtool_netlink.h b/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/libc/kernel/uapi/linux/f2fs.h
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/libc/kernel/uapi/linux/fiemap.h b/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/libc/kernel/uapi/linux/fiemap.h
+++ b/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/libc/kernel/uapi/linux/firewire-cdev.h b/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/libc/kernel/uapi/linux/fsi.h b/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/libc/kernel/uapi/linux/fsi.h
+++ b/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/libc/kernel/uapi/linux/genetlink.h b/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/libc/kernel/uapi/linux/genetlink.h
+++ b/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/gpio.h b/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/libc/kernel/uapi/linux/gpio.h
+++ b/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/libc/kernel/uapi/linux/gtp.h b/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/libc/kernel/uapi/linux/gtp.h
+++ b/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/libc/kernel/uapi/linux/hid.h b/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/libc/kernel/uapi/linux/hid.h
+++ b/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/libc/kernel/uapi/linux/icmp.h b/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/libc/kernel/uapi/linux/icmp.h
+++ b/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/libc/kernel/uapi/linux/if_addr.h b/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/libc/kernel/uapi/linux/if_addr.h
+++ b/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/libc/kernel/uapi/linux/if_arcnet.h b/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/libc/kernel/uapi/linux/if_arcnet.h
+++ b/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/if_macsec.h b/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/libc/kernel/uapi/linux/if_macsec.h
+++ b/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/libc/kernel/uapi/linux/if_pppox.h b/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/libc/kernel/uapi/linux/if_pppox.h
+++ b/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/if_tunnel.h b/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/libc/kernel/uapi/linux/if_tunnel.h
+++ b/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/libc/kernel/uapi/linux/ioam6_iptunnel.h b/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/iommu.h b/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/libc/kernel/uapi/linux/iommu.h
+++ b/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/libc/kernel/uapi/linux/ip_vs.h b/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/libc/kernel/uapi/linux/ip_vs.h
+++ b/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/libc/kernel/uapi/linux/ipv6.h b/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/libc/kernel/uapi/linux/ipv6.h
+++ b/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/libc/kernel/uapi/linux/iso_fs.h b/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/libc/kernel/uapi/linux/iso_fs.h
+++ b/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/libc/kernel/uapi/linux/jffs2.h b/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/libc/kernel/uapi/linux/jffs2.h
+++ b/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/libc/kernel/uapi/linux/kcov.h b/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/libc/kernel/uapi/linux/kcov.h
+++ b/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/libc/kernel/uapi/linux/kexec.h b/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/libc/kernel/uapi/linux/kexec.h
+++ b/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/linux/l2tp.h b/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/libc/kernel/uapi/linux/l2tp.h
+++ b/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/libc/kernel/uapi/linux/landlock.h b/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/libc/kernel/uapi/linux/landlock.h
+++ b/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/libc/kernel/uapi/linux/loadpin.h b/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/libc/kernel/uapi/linux/lwtunnel.h b/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/libc/kernel/uapi/linux/lwtunnel.h
+++ b/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/libc/kernel/uapi/linux/mctp.h b/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/libc/kernel/uapi/linux/mctp.h
+++ b/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/mdio.h b/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/libc/kernel/uapi/linux/mdio.h
+++ b/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/libc/kernel/uapi/linux/media.h b/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/libc/kernel/uapi/linux/media.h
+++ b/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/libc/kernel/uapi/linux/minix_fs.h b/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/libc/kernel/uapi/linux/minix_fs.h
+++ b/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mmc/ioctl.h b/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/libc/kernel/uapi/linux/mptcp.h b/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/libc/kernel/uapi/linux/mptcp.h
+++ b/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/net_dropmon.h b/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/libc/kernel/uapi/linux/net_dropmon.h
+++ b/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/nfs4.h b/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/libc/kernel/uapi/linux/nfs4.h
+++ b/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/libc/kernel/uapi/linux/nvme_ioctl.h b/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/libc/kernel/uapi/linux/omap3isp.h b/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/libc/kernel/uapi/linux/omap3isp.h
+++ b/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/libc/kernel/uapi/linux/psci.h b/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/libc/kernel/uapi/linux/psci.h
+++ b/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/libc/kernel/uapi/linux/qrtr.h b/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/libc/kernel/uapi/linux/qrtr.h
+++ b/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/libc/kernel/uapi/linux/reiserfs_xattr.h b/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/rfkill.h b/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/libc/kernel/uapi/linux/rfkill.h
+++ b/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/libc/kernel/uapi/linux/rkisp1-config.h b/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/libc/kernel/uapi/linux/romfs_fs.h b/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/libc/kernel/uapi/linux/romfs_fs.h
+++ b/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/libc/kernel/uapi/linux/rpmsg.h b/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/libc/kernel/uapi/linux/rpmsg.h
+++ b/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/libc/kernel/uapi/linux/rseq.h b/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/libc/kernel/uapi/linux/rseq.h
+++ b/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/libc/kernel/uapi/linux/rtc.h b/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/libc/kernel/uapi/linux/rtc.h
+++ b/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/libc/kernel/uapi/linux/seccomp.h b/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/libc/kernel/uapi/linux/seccomp.h
+++ b/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/libc/kernel/uapi/linux/sed-opal.h b/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/libc/kernel/uapi/linux/sed-opal.h
+++ b/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/libc/kernel/uapi/linux/seg6.h b/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/libc/kernel/uapi/linux/seg6.h
+++ b/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/libc/kernel/uapi/linux/seg6_iptunnel.h b/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/seg6_local.h b/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/libc/kernel/uapi/linux/seg6_local.h
+++ b/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/libc/kernel/uapi/linux/sev-guest.h b/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/libc/kernel/uapi/linux/smc.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/libc/kernel/uapi/linux/socket.h b/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/libc/kernel/uapi/linux/socket.h
+++ b/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/libc/kernel/uapi/linux/spi/spi.h b/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/libc/kernel/uapi/linux/spi/spi.h
+++ b/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/libc/kernel/uapi/linux/stat.h
+++ b/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/libc/kernel/uapi/linux/stddef.h b/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/libc/kernel/uapi/linux/stddef.h
+++ b/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/libc/kernel/uapi/linux/stm.h b/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/libc/kernel/uapi/linux/stm.h
+++ b/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/libc/kernel/uapi/linux/taskstats.h b/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/libc/kernel/uapi/linux/taskstats.h
+++ b/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tee.h b/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/libc/kernel/uapi/linux/tee.h
+++ b/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/libc/kernel/uapi/linux/thermal.h b/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/libc/kernel/uapi/linux/thermal.h
+++ b/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tipc_config.h b/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/libc/kernel/uapi/linux/tipc_config.h
+++ b/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tty.h b/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/libc/kernel/uapi/linux/tty.h
+++ b/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/libc/kernel/uapi/linux/types.h b/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/libc/kernel/uapi/linux/types.h
+++ b/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/libc/kernel/uapi/linux/ublk_cmd.h b/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/cdc.h b/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/libc/kernel/uapi/linux/usb/cdc.h
+++ b/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/raw_gadget.h b/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/libc/kernel/uapi/linux/usbdevice_fs.h b/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/libc/kernel/uapi/linux/usbip.h b/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/libc/kernel/uapi/linux/usbip.h
+++ b/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/libc/kernel/uapi/linux/vdpa.h b/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/libc/kernel/uapi/linux/vdpa.h
+++ b/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/vduse.h b/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/libc/kernel/uapi/linux/vduse.h
+++ b/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/vfio_ccw.h b/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/vfio_zdev.h b/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/libc/kernel/uapi/linux/vhost_types.h
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 74bd328..3d8dd72 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -24,12 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-/* ---------------------------------------------------
- * This value manually changed due to b/228783882.
- * Next kernel update should keep this value as is.
- */
 #define VIDEO_MAX_FRAME 64
-/* --------------------------------------------------- */
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -190,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -260,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -277,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -284,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -303,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -370,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -404,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -787,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -906,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -958,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1005,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1308,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1479,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_9p.h b/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/libc/kernel/uapi/linux/virtio_9p.h
+++ b/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_blk.h b/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/libc/kernel/uapi/linux/virtio_blk.h
+++ b/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_crypto.h b/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/libc/kernel/uapi/linux/virtio_ids.h b/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/libc/kernel/uapi/linux/virtio_ids.h
+++ b/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/wmi.h b/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/libc/kernel/uapi/linux/wmi.h
+++ b/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/libc/kernel/uapi/linux/zorro.h b/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/libc/kernel/uapi/linux/zorro.h
+++ b/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/libc/kernel/uapi/misc/fastrpc.h b/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/libc/kernel/uapi/misc/fastrpc.h
+++ b/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/libc/kernel/uapi/misc/habanalabs.h
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/libc/kernel/uapi/misc/uacce/hisi_qm.h b/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/libc/kernel/uapi/mtd/mtd-abi.h b/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/rdma/efa-abi.h b/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/libc/kernel/uapi/rdma/efa-abi.h
+++ b/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/erdma-abi.h b/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/rdma_user_cm.h b/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_rxe.h b/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/libc/kernel/uapi/scsi/fc/fc_els.h b/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/libc/kernel/uapi/sound/asoc.h b/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/libc/kernel/uapi/sound/asoc.h
+++ b/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/libc/kernel/uapi/sound/intel/avs/tokens.h b/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/libc/kernel/uapi/sound/skl-tplg-interface.h b/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/sof/abi.h b/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/libc/kernel/uapi/sound/sof/abi.h
+++ b/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/libc/kernel/uapi/sound/sof/fw.h b/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/libc/kernel/uapi/sound/sof/fw.h
+++ b/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/sof/header.h b/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/libc/kernel/uapi/sound/sof/header.h
+++ b/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/libc/kernel/uapi/sound/sof/tokens.h b/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/libc/kernel/uapi/sound/sof/tokens.h
+++ b/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/libc/kernel/uapi/sound/usb_stream.h b/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/libc/kernel/uapi/sound/usb_stream.h
+++ b/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index 7397b68..4a4e607 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -680,28 +680,28 @@
     nftw64; # introduced=21
     nice;
     nrand48;
-    ns_format_ttl; # arm64 x86_64 introduced=22
-    ns_get16; # arm64 x86_64 introduced=22
-    ns_get32; # arm64 x86_64 introduced=22
-    ns_initparse; # arm64 x86_64 introduced=22
-    ns_makecanon; # arm64 x86_64 introduced=22
-    ns_msg_getflag; # arm64 x86_64 introduced=22
-    ns_name_compress; # arm64 x86_64 introduced=22
-    ns_name_ntol; # arm64 x86_64 introduced=22
-    ns_name_ntop; # arm64 x86_64 introduced=22
-    ns_name_pack; # arm64 x86_64 introduced=22
-    ns_name_pton; # arm64 x86_64 introduced=22
-    ns_name_rollback; # arm64 x86_64 introduced=22
-    ns_name_skip; # arm64 x86_64 introduced=22
-    ns_name_uncompress; # arm64 x86_64 introduced=22
-    ns_name_unpack; # arm64 x86_64 introduced=22
-    ns_parserr; # arm64 x86_64 introduced=22
-    ns_put16; # arm64 x86_64 introduced=22
-    ns_put32; # arm64 x86_64 introduced=22
-    ns_samename; # arm64 x86_64 introduced=22
-    ns_skiprr; # arm64 x86_64 introduced=22
-    ns_sprintrr; # arm64 x86_64 introduced=22
-    ns_sprintrrf; # arm64 x86_64 introduced=22
+    ns_format_ttl; # arm64 x86_64 riscv64 introduced=22
+    ns_get16; # arm64 x86_64 riscv64 introduced=22
+    ns_get32; # arm64 x86_64 riscv64 introduced=22
+    ns_initparse; # arm64 x86_64 riscv64 introduced=22
+    ns_makecanon; # arm64 x86_64 riscv64 introduced=22
+    ns_msg_getflag; # arm64 x86_64 riscv64 introduced=22
+    ns_name_compress; # arm64 x86_64 riscv64 introduced=22
+    ns_name_ntol; # arm64 x86_64 riscv64 introduced=22
+    ns_name_ntop; # arm64 x86_64 riscv64 introduced=22
+    ns_name_pack; # arm64 x86_64 riscv64 introduced=22
+    ns_name_pton; # arm64 x86_64 riscv64 introduced=22
+    ns_name_rollback; # arm64 x86_64 riscv64 introduced=22
+    ns_name_skip; # arm64 x86_64 riscv64 introduced=22
+    ns_name_uncompress; # arm64 x86_64 riscv64 introduced=22
+    ns_name_unpack; # arm64 x86_64 riscv64 introduced=22
+    ns_parserr; # arm64 x86_64 riscv64 introduced=22
+    ns_put16; # arm64 x86_64 riscv64 introduced=22
+    ns_put32; # arm64 x86_64 riscv64 introduced=22
+    ns_samename; # arm64 x86_64 riscv64 introduced=22
+    ns_skiprr; # arm64 x86_64 riscv64 introduced=22
+    ns_sprintrr; # arm64 x86_64 riscv64 introduced=22
+    ns_sprintrrf; # arm64 x86_64 riscv64 introduced=22
     nsdispatch;
     ntohl; # introduced=21
     ntohs; # introduced=21
@@ -740,7 +740,7 @@
     pread;
     pread64; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
     printf;
-    prlimit; # arm64 x86_64
+    prlimit; # arm64 x86_64 riscv64
     prlimit64; # introduced=21
     process_vm_readv; # introduced=23
     process_vm_writev; # introduced=23
@@ -1037,12 +1037,10 @@
     strtold_l; # introduced=21
     strtoll;
     strtoll_l; # introduced=21
-    strtoq; # introduced=21
     strtoul;
     strtoull;
     strtoull_l; # introduced=21
     strtoumax;
-    strtouq; # introduced=21
     strxfrm;
     strxfrm_l; # introduced=21
     swapoff; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
@@ -1449,7 +1447,7 @@
     ___tls_get_addr; # x86
     __aeabi_read_tp; # arm
     __res_randomid;
-    __tls_get_addr; # arm x86_64
+    __tls_get_addr; # arm riscv64 x86_64
     android_fdsan_close_with_tag;
     android_fdsan_create_owner_tag;
     android_fdsan_exchange_owner_tag;
@@ -1520,34 +1518,34 @@
     tss_set;
 
     # Unwinder implementation
-    __aeabi_unwind_cpp_pr0; # apex llndk arm
-    __aeabi_unwind_cpp_pr1; # apex llndk arm
-    __aeabi_unwind_cpp_pr2; # apex llndk arm
-    __deregister_frame; # apex llndk arm64 x86 x86_64
-    __gnu_unwind_frame; # apex llndk arm
-    __register_frame; # apex llndk arm64 x86 x86_64
-    _Unwind_Backtrace; # apex llndk
-    _Unwind_Complete; # apex llndk arm
-    _Unwind_DeleteException; # apex llndk
-    _Unwind_Find_FDE; # apex llndk
-    _Unwind_FindEnclosingFunction; # apex llndk
-    _Unwind_ForcedUnwind; # apex llndk arm64 x86 x86_64
-    _Unwind_GetCFA; # apex llndk
-    _Unwind_GetDataRelBase; # apex llndk
-    _Unwind_GetGR; # apex llndk
-    _Unwind_GetIP; # apex llndk
-    _Unwind_GetIPInfo; # apex llndk
-    _Unwind_GetLanguageSpecificData; # apex llndk
-    _Unwind_GetRegionStart; # apex llndk
-    _Unwind_GetTextRelBase; # apex llndk
-    _Unwind_RaiseException; # apex llndk
-    _Unwind_Resume; # apex llndk
-    _Unwind_Resume_or_Rethrow; # apex llndk
-    _Unwind_SetGR; # apex llndk
-    _Unwind_SetIP; # apex llndk
-    _Unwind_VRS_Get; # apex llndk arm
-    _Unwind_VRS_Pop; # apex llndk arm
-    _Unwind_VRS_Set; # apex llndk arm
+    __aeabi_unwind_cpp_pr0; # arm
+    __aeabi_unwind_cpp_pr1; # arm
+    __aeabi_unwind_cpp_pr2; # arm
+    __deregister_frame; # arm64 x86 x86_64
+    __gnu_unwind_frame; # arm
+    __register_frame; # arm64 x86 x86_64
+    _Unwind_Backtrace;
+    _Unwind_Complete; # arm
+    _Unwind_DeleteException;
+    _Unwind_Find_FDE;
+    _Unwind_FindEnclosingFunction;
+    _Unwind_ForcedUnwind; # arm64 x86 x86_64
+    _Unwind_GetCFA;
+    _Unwind_GetDataRelBase;
+    _Unwind_GetGR;
+    _Unwind_GetIP;
+    _Unwind_GetIPInfo;
+    _Unwind_GetLanguageSpecificData;
+    _Unwind_GetRegionStart;
+    _Unwind_GetTextRelBase;
+    _Unwind_RaiseException;
+    _Unwind_Resume;
+    _Unwind_Resume_or_Rethrow;
+    _Unwind_SetGR;
+    _Unwind_SetIP;
+    _Unwind_VRS_Get; # arm
+    _Unwind_VRS_Pop; # arm
+    _Unwind_VRS_Set; # arm
 } LIBC_Q;
 
 LIBC_S { # introduced=S
@@ -1576,6 +1574,14 @@
     pwritev64v2;
 } LIBC_S;
 
+LIBC_U { # introduced=UpsideDownCake
+  global:
+    __freadahead;
+    close_range;
+    copy_file_range;
+    memset_explicit;
+} LIBC_T;
+
 LIBC_PRIVATE {
   global:
     __accept4; # arm x86
diff --git a/libc/libstdc++.map.txt b/libc/libstdc++.map.txt
index bb7040f..8af3b91 100644
--- a/libc/libstdc++.map.txt
+++ b/libc/libstdc++.map.txt
@@ -7,12 +7,12 @@
     _ZdlPvRKSt9nothrow_t; # weak
     _Znaj; # arm x86 weak
     _ZnajRKSt9nothrow_t; # arm x86 weak
-    _Znam; # arm64 x86_64 weak
-    _ZnamRKSt9nothrow_t; # arm64 x86_64 weak
+    _Znam; # arm64 x86_64 riscv64 weak
+    _ZnamRKSt9nothrow_t; # arm64 x86_64 riscv64 weak
     _Znwj; # arm x86 weak
     _ZnwjRKSt9nothrow_t; # arm x86 weak
-    _Znwm; # arm64 x86_64 weak
-    _ZnwmRKSt9nothrow_t; # arm64 x86_64 weak
+    _Znwm; # arm64 x86_64 riscv64 weak
+    _ZnwmRKSt9nothrow_t; # arm64 x86_64 riscv64 weak
     __cxa_guard_abort;
     __cxa_guard_acquire;
     __cxa_guard_release;
diff --git a/libc/malloc_debug/Android.bp b/libc/malloc_debug/Android.bp
index 7ff3db2..373d497 100644
--- a/libc/malloc_debug/Android.bp
+++ b/libc/malloc_debug/Android.bp
@@ -64,6 +64,7 @@
         "malloc_debug.cpp",
         "PointerData.cpp",
         "RecordData.cpp",
+        "Unreachable.cpp",
         "UnwindBacktrace.cpp",
     ],
 
@@ -73,6 +74,7 @@
         "libasync_safe",
         "libbase",
         "libc_malloc_debug_backtrace",
+        "libmemunreachable",
     ],
 
     shared_libs: [
@@ -120,6 +122,7 @@
 cc_test {
     name: "malloc_debug_unit_tests",
     test_suites: ["device-tests"],
+    isolated: true,
 
     srcs: [
         "tests/backtrace_fake.cpp",
@@ -173,13 +176,17 @@
         "bionic_libc_platform_headers",
     ],
 
+    // The clang-analyzer-unix.Malloc and other warnings in these
+    // unit tests are either false positive or in
+    // negative tests that can be ignored.
+    tidy: false,
+
     srcs: [
         "tests/malloc_debug_system_tests.cpp",
     ],
 
     shared_libs: [
         "libbase",
-        "libbacktrace",
         "liblog",
         "libunwindstack",
     ],
diff --git a/libc/malloc_debug/Config.cpp b/libc/malloc_debug/Config.cpp
index 11887e2..be577bc 100644
--- a/libc/malloc_debug/Config.cpp
+++ b/libc/malloc_debug/Config.cpp
@@ -70,73 +70,139 @@
 
 const std::unordered_map<std::string, Config::OptionInfo> Config::kOptions = {
     {
-        "guard", {FRONT_GUARD | REAR_GUARD | TRACK_ALLOCS, &Config::SetGuard},
+        "guard",
+        {FRONT_GUARD | REAR_GUARD | TRACK_ALLOCS, &Config::SetGuard},
     },
     {
-        "front_guard", {FRONT_GUARD | TRACK_ALLOCS, &Config::SetFrontGuard},
+        "front_guard",
+        {FRONT_GUARD | TRACK_ALLOCS, &Config::SetFrontGuard},
     },
     {
-        "rear_guard", {REAR_GUARD | TRACK_ALLOCS, &Config::SetRearGuard},
+        "rear_guard",
+        {REAR_GUARD | TRACK_ALLOCS, &Config::SetRearGuard},
     },
 
     {
-        "backtrace", {BACKTRACE | TRACK_ALLOCS, &Config::SetBacktrace},
+        "backtrace_size",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceSize},
+    },
+    {
+        "bt_sz",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceSize},
+    },
+    {
+        "backtrace_min_size",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceMinSize},
+    },
+    {
+        "bt_min_sz",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceMinSize},
+    },
+    {
+        "backtrace_max_size",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceMaxSize},
+    },
+    {
+        "bt_max_sz",
+        {BACKTRACE_SPECIFIC_SIZES, &Config::SetBacktraceMaxSize},
+    },
+    {
+        "backtrace",
+        {BACKTRACE | TRACK_ALLOCS, &Config::SetBacktrace},
+    },
+    {
+        "bt",
+        {BACKTRACE | TRACK_ALLOCS, &Config::SetBacktrace},
     },
     {
         "backtrace_enable_on_signal",
         {BACKTRACE | TRACK_ALLOCS, &Config::SetBacktraceEnableOnSignal},
     },
-
     {
-        "backtrace_dump_on_exit", {0, &Config::SetBacktraceDumpOnExit},
+        "bt_en_on_sig",
+        {BACKTRACE | TRACK_ALLOCS, &Config::SetBacktraceEnableOnSignal},
     },
     {
-        "backtrace_dump_prefix", {0, &Config::SetBacktraceDumpPrefix},
+        "backtrace_dump_on_exit",
+        {0, &Config::SetBacktraceDumpOnExit},
     },
     {
-        "backtrace_full", {BACKTRACE_FULL, &Config::VerifyValueEmpty},
+        "bt_dmp_on_ex",
+        {0, &Config::SetBacktraceDumpOnExit},
+    },
+    {
+        "backtrace_dump_prefix",
+        {0, &Config::SetBacktraceDumpPrefix},
+    },
+    {
+        "bt_dmp_pre",
+        {0, &Config::SetBacktraceDumpPrefix},
+    },
+    {
+        "backtrace_full",
+        {BACKTRACE_FULL, &Config::VerifyValueEmpty},
+    },
+    {
+        "bt_full",
+        {BACKTRACE_FULL, &Config::VerifyValueEmpty},
     },
 
     {
-        "fill", {FILL_ON_ALLOC | FILL_ON_FREE, &Config::SetFill},
+        "fill",
+        {FILL_ON_ALLOC | FILL_ON_FREE, &Config::SetFill},
     },
     {
-        "fill_on_alloc", {FILL_ON_ALLOC, &Config::SetFillOnAlloc},
+        "fill_on_alloc",
+        {FILL_ON_ALLOC, &Config::SetFillOnAlloc},
     },
     {
-        "fill_on_free", {FILL_ON_FREE, &Config::SetFillOnFree},
+        "fill_on_free",
+        {FILL_ON_FREE, &Config::SetFillOnFree},
     },
 
     {
-        "expand_alloc", {EXPAND_ALLOC, &Config::SetExpandAlloc},
+        "expand_alloc",
+        {EXPAND_ALLOC, &Config::SetExpandAlloc},
     },
 
     {
-        "free_track", {FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, &Config::SetFreeTrack},
+        "free_track",
+        {FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, &Config::SetFreeTrack},
     },
     {
-        "free_track_backtrace_num_frames", {0, &Config::SetFreeTrackBacktraceNumFrames},
+        "free_track_backtrace_num_frames",
+        {0, &Config::SetFreeTrackBacktraceNumFrames},
     },
 
     {
-        "leak_track", {LEAK_TRACK | TRACK_ALLOCS, &Config::VerifyValueEmpty},
+        "leak_track",
+        {LEAK_TRACK | TRACK_ALLOCS, &Config::VerifyValueEmpty},
     },
 
     {
-        "record_allocs", {RECORD_ALLOCS, &Config::SetRecordAllocs},
+        "record_allocs",
+        {RECORD_ALLOCS, &Config::SetRecordAllocs},
     },
     {
-        "record_allocs_file", {0, &Config::SetRecordAllocsFile},
+        "record_allocs_file",
+        {0, &Config::SetRecordAllocsFile},
     },
 
     {
-        "verify_pointers", {TRACK_ALLOCS, &Config::VerifyValueEmpty},
+        "verify_pointers",
+        {TRACK_ALLOCS, &Config::VerifyValueEmpty},
     },
     {
-        "abort_on_error", {ABORT_ON_ERROR, &Config::VerifyValueEmpty},
+        "abort_on_error",
+        {ABORT_ON_ERROR, &Config::VerifyValueEmpty},
     },
     {
-        "verbose", {VERBOSE, &Config::VerifyValueEmpty},
+        "verbose",
+        {VERBOSE, &Config::VerifyValueEmpty},
+    },
+    {
+        "check_unreachable_on_signal",
+        {CHECK_UNREACHABLE_ON_SIGNAL, &Config::VerifyValueEmpty},
     },
 };
 
@@ -274,6 +340,23 @@
   return true;
 }
 
+bool Config::SetBacktraceSize(const std::string& option, const std::string& value) {
+  if (!ParseValue(option, value, 1, SIZE_MAX, &backtrace_min_size_bytes_)) {
+    return false;
+  }
+  backtrace_max_size_bytes_ = backtrace_min_size_bytes_;
+
+  return true;
+}
+
+bool Config::SetBacktraceMinSize(const std::string& option, const std::string& value) {
+  return ParseValue(option, value, 1, SIZE_MAX, &backtrace_min_size_bytes_);
+}
+
+bool Config::SetBacktraceMaxSize(const std::string& option, const std::string& value) {
+  return ParseValue(option, value, 1, SIZE_MAX, &backtrace_max_size_bytes_);
+}
+
 bool Config::SetExpandAlloc(const std::string& option, const std::string& value) {
   return ParseValue(option, value, DEFAULT_EXPAND_BYTES, 1, MAX_EXPAND_BYTES, &expand_alloc_bytes_);
 }
@@ -380,6 +463,9 @@
   backtrace_enabled_ = false;
   backtrace_dump_on_exit_ = false;
   backtrace_dump_prefix_ = DEFAULT_BACKTRACE_DUMP_PREFIX;
+  backtrace_min_size_bytes_ = 0;
+  backtrace_max_size_bytes_ = SIZE_MAX;
+  check_unreachable_signal_ = SIGRTMAX - 16;
 
   // Process each option name we can find.
   std::string option;
diff --git a/libc/malloc_debug/Config.h b/libc/malloc_debug/Config.h
index 1b5c748..ef1d2a9 100644
--- a/libc/malloc_debug/Config.h
+++ b/libc/malloc_debug/Config.h
@@ -46,6 +46,8 @@
 constexpr uint64_t BACKTRACE_FULL = 0x400;
 constexpr uint64_t ABORT_ON_ERROR = 0x800;
 constexpr uint64_t VERBOSE = 0x1000;
+constexpr uint64_t CHECK_UNREACHABLE_ON_SIGNAL = 0x2000;
+constexpr uint64_t BACKTRACE_SPECIFIC_SIZES = 0x4000;
 
 // In order to guarantee posix compliance, set the minimum alignment
 // to 8 bytes for 32 bit systems and 16 bytes for 64 bit systems.
@@ -89,10 +91,15 @@
   uint8_t fill_alloc_value() const { return fill_alloc_value_; }
   uint8_t fill_free_value() const { return fill_free_value_; }
 
+  size_t backtrace_min_size_bytes() const { return backtrace_min_size_bytes_; }
+  size_t backtrace_max_size_bytes() const { return backtrace_max_size_bytes_; }
+
   int record_allocs_signal() const { return record_allocs_signal_; }
   size_t record_allocs_num_entries() const { return record_allocs_num_entries_; }
   const std::string& record_allocs_file() const { return record_allocs_file_; }
 
+  int check_unreachable_signal() const { return check_unreachable_signal_; }
+
  private:
   struct OptionInfo {
     uint64_t option;
@@ -118,6 +125,10 @@
   bool SetBacktraceDumpOnExit(const std::string& option, const std::string& value);
   bool SetBacktraceDumpPrefix(const std::string& option, const std::string& value);
 
+  bool SetBacktraceSize(const std::string& option, const std::string& value);
+  bool SetBacktraceMinSize(const std::string& option, const std::string& value);
+  bool SetBacktraceMaxSize(const std::string& option, const std::string& value);
+
   bool SetExpandAlloc(const std::string& option, const std::string& value);
 
   bool SetFreeTrack(const std::string& option, const std::string& value);
@@ -142,6 +153,8 @@
   size_t backtrace_frames_ = 0;
   bool backtrace_dump_on_exit_ = false;
   std::string backtrace_dump_prefix_;
+  size_t backtrace_min_size_bytes_ = 0;
+  size_t backtrace_max_size_bytes_ = 0;
 
   size_t fill_on_alloc_bytes_ = 0;
   size_t fill_on_free_bytes_ = 0;
@@ -160,4 +173,6 @@
   uint8_t fill_free_value_;
   uint8_t front_guard_value_;
   uint8_t rear_guard_value_;
+
+  int check_unreachable_signal_ = 0;
 };
diff --git a/libc/malloc_debug/MapData.cpp b/libc/malloc_debug/MapData.cpp
index ded81a2..b22c109 100644
--- a/libc/malloc_debug/MapData.cpp
+++ b/libc/malloc_debug/MapData.cpp
@@ -210,7 +210,7 @@
         }
       }
     }
-    *rel_pc = pc - entry->start + entry->load_bias;
+    *rel_pc = pc - entry->start + entry->offset + entry->load_bias;
   }
   return entry;
 }
diff --git a/libc/malloc_debug/PointerData.cpp b/libc/malloc_debug/PointerData.cpp
index b982c0a..e3a35a6 100644
--- a/libc/malloc_debug/PointerData.cpp
+++ b/libc/malloc_debug/PointerData.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <signal.h>
@@ -35,6 +36,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <functional>
 #include <mutex>
 #include <string>
 #include <unordered_map>
@@ -53,8 +55,6 @@
 #include "malloc_debug.h"
 #include "UnwindBacktrace.h"
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 std::atomic_uint8_t PointerData::backtrace_enabled_;
 std::atomic_bool PointerData::backtrace_dump_;
 
@@ -135,7 +135,22 @@
   return true;
 }
 
-size_t PointerData::AddBacktrace(size_t num_frames) {
+static inline bool ShouldBacktraceAllocSize(size_t size_bytes) {
+  static bool only_backtrace_specific_sizes =
+      g_debug->config().options() & BACKTRACE_SPECIFIC_SIZES;
+  if (!only_backtrace_specific_sizes) {
+    return true;
+  }
+  static size_t min_size_bytes = g_debug->config().backtrace_min_size_bytes();
+  static size_t max_size_bytes = g_debug->config().backtrace_max_size_bytes();
+  return size_bytes >= min_size_bytes && size_bytes <= max_size_bytes;
+}
+
+size_t PointerData::AddBacktrace(size_t num_frames, size_t size_bytes) {
+  if (!ShouldBacktraceAllocSize(size_bytes)) {
+    return kBacktraceEmptyIndex;
+  }
+
   std::vector<uintptr_t> frames;
   std::vector<unwindstack::FrameData> frames_info;
   if (g_debug->config().options() & BACKTRACE_FULL) {
@@ -148,14 +163,14 @@
     if (num_frames == 0) {
       return kBacktraceEmptyIndex;
     }
+    frames.resize(num_frames);
   }
 
-  FrameKeyType key{.num_frames = num_frames, .frames = frames.data()};
+  FrameKeyType key{.num_frames = frames.size(), .frames = frames.data()};
   size_t hash_index;
   std::lock_guard<std::mutex> frame_guard(frame_mutex_);
   auto entry = key_to_index_.find(key);
   if (entry == key_to_index_.end()) {
-    frames.resize(num_frames);
     hash_index = cur_hash_index_++;
     key.frames = frames.data();
     key_to_index_.emplace(key, hash_index);
@@ -195,40 +210,41 @@
 }
 
 void PointerData::Add(const void* ptr, size_t pointer_size) {
-  uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
   size_t hash_index = 0;
   if (backtrace_enabled_) {
-    hash_index = AddBacktrace(g_debug->config().backtrace_frames());
+    hash_index = AddBacktrace(g_debug->config().backtrace_frames(), pointer_size);
   }
 
   std::lock_guard<std::mutex> pointer_guard(pointer_mutex_);
-  pointers_[pointer] = PointerInfoType{PointerInfoType::GetEncodedSize(pointer_size), hash_index};
+  uintptr_t mangled_ptr = ManglePointer(reinterpret_cast<uintptr_t>(ptr));
+  pointers_[mangled_ptr] =
+      PointerInfoType{PointerInfoType::GetEncodedSize(pointer_size), hash_index};
 }
 
 void PointerData::Remove(const void* ptr) {
-  uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
   size_t hash_index;
   {
     std::lock_guard<std::mutex> pointer_guard(pointer_mutex_);
-    auto entry = pointers_.find(pointer);
+    uintptr_t mangled_ptr = ManglePointer(reinterpret_cast<uintptr_t>(ptr));
+    auto entry = pointers_.find(mangled_ptr);
     if (entry == pointers_.end()) {
       // Attempt to remove unknown pointer.
-      error_log("No tracked pointer found for 0x%" PRIxPTR, pointer);
+      error_log("No tracked pointer found for 0x%" PRIxPTR, DemanglePointer(mangled_ptr));
       return;
     }
     hash_index = entry->second.hash_index;
-    pointers_.erase(pointer);
+    pointers_.erase(mangled_ptr);
   }
 
   RemoveBacktrace(hash_index);
 }
 
 size_t PointerData::GetFrames(const void* ptr, uintptr_t* frames, size_t max_frames) {
-  uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
   size_t hash_index;
   {
     std::lock_guard<std::mutex> pointer_guard(pointer_mutex_);
-    auto entry = pointers_.find(pointer);
+    uintptr_t mangled_ptr = ManglePointer(reinterpret_cast<uintptr_t>(ptr));
+    auto entry = pointers_.find(mangled_ptr);
     if (entry == pointers_.end()) {
       return 0;
     }
@@ -274,7 +290,8 @@
 
 void PointerData::LogFreeError(const FreePointerInfoType& info, size_t max_cmp_bytes) {
   error_log(LOG_DIVIDER);
-  uint8_t* memory = reinterpret_cast<uint8_t*>(info.pointer);
+  uintptr_t pointer = DemanglePointer(info.mangled_ptr);
+  uint8_t* memory = reinterpret_cast<uint8_t*>(pointer);
   error_log("+++ ALLOCATION %p USED AFTER FREE", memory);
   uint8_t fill_free_value = g_debug->config().fill_free_value();
   for (size_t i = 0; i < max_cmp_bytes; i++) {
@@ -296,13 +313,14 @@
 
 void PointerData::VerifyFreedPointer(const FreePointerInfoType& info) {
   size_t usable_size;
+  uintptr_t pointer = DemanglePointer(info.mangled_ptr);
   if (g_debug->HeaderEnabled()) {
     // Check to see if the tag data has been damaged.
-    Header* header = g_debug->GetHeader(reinterpret_cast<const void*>(info.pointer));
+    Header* header = g_debug->GetHeader(reinterpret_cast<const void*>(pointer));
     if (header->tag != DEBUG_FREE_TAG) {
       error_log(LOG_DIVIDER);
-      error_log("+++ ALLOCATION 0x%" PRIxPTR " HAS CORRUPTED HEADER TAG 0x%x AFTER FREE",
-                info.pointer, header->tag);
+      error_log("+++ ALLOCATION 0x%" PRIxPTR " HAS CORRUPTED HEADER TAG 0x%x AFTER FREE", pointer,
+                header->tag);
       error_log(LOG_DIVIDER);
       if (g_debug->config().options() & ABORT_ON_ERROR) {
         abort();
@@ -314,14 +332,14 @@
     }
     usable_size = header->usable_size;
   } else {
-    usable_size = g_dispatch->malloc_usable_size(reinterpret_cast<const void*>(info.pointer));
+    usable_size = g_dispatch->malloc_usable_size(reinterpret_cast<const void*>(pointer));
   }
 
   size_t bytes = (usable_size < g_debug->config().fill_on_free_bytes())
                      ? usable_size
                      : g_debug->config().fill_on_free_bytes();
   size_t max_cmp_bytes = bytes;
-  const uint8_t* memory = reinterpret_cast<const uint8_t*>(info.pointer);
+  const uint8_t* memory = reinterpret_cast<const uint8_t*>(pointer);
   while (bytes > 0) {
     size_t bytes_to_cmp = (bytes < g_cmp_mem.size()) ? bytes : g_cmp_mem.size();
     if (memcmp(memory, g_cmp_mem.data(), bytes_to_cmp) != 0) {
@@ -332,13 +350,11 @@
   }
 }
 
-void* PointerData::AddFreed(const void* ptr) {
-  uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
-
+void* PointerData::AddFreed(const void* ptr, size_t size_bytes) {
   size_t hash_index = 0;
   size_t num_frames = g_debug->config().free_track_backtrace_num_frames();
   if (num_frames) {
-    hash_index = AddBacktrace(num_frames);
+    hash_index = AddBacktrace(num_frames, size_bytes);
   }
 
   void* last = nullptr;
@@ -348,10 +364,11 @@
     free_pointers_.pop_front();
     VerifyFreedPointer(info);
     RemoveBacktrace(info.hash_index);
-    last = reinterpret_cast<void*>(info.pointer);
+    last = reinterpret_cast<void*>(DemanglePointer(info.mangled_ptr));
   }
 
-  free_pointers_.emplace_back(FreePointerInfoType{pointer, hash_index});
+  uintptr_t mangled_ptr = ManglePointer(reinterpret_cast<uintptr_t>(ptr));
+  free_pointers_.emplace_back(FreePointerInfoType{mangled_ptr, hash_index});
   return last;
 }
 
@@ -361,7 +378,7 @@
     uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
     std::lock_guard<std::mutex> freed_guard(free_pointer_mutex_);
     for (const auto& info : free_pointers_) {
-      if (info.pointer == pointer) {
+      if (DemanglePointer(info.mangled_ptr) == pointer) {
         hash_index = info.hash_index;
         break;
       }
@@ -388,6 +405,7 @@
   for (const auto& entry : pointers_) {
     FrameInfoType* frame_info = nullptr;
     std::vector<unwindstack::FrameData>* backtrace_info = nullptr;
+    uintptr_t pointer = DemanglePointer(entry.first);
     size_t hash_index = entry.second.hash_index;
     if (hash_index > kBacktraceEmptyIndex) {
       auto frame_entry = frames_.find(hash_index);
@@ -397,7 +415,7 @@
         // occurs after the hash_index and frame data have been added.
         // When removing a pointer, the pointer is deleted before the frame
         // data.
-        error_log("Pointer 0x%" PRIxPTR " hash_index %zu does not exist.", entry.first, hash_index);
+        error_log("Pointer 0x%" PRIxPTR " hash_index %zu does not exist.", pointer, hash_index);
       } else {
         frame_info = &frame_entry->second;
       }
@@ -405,7 +423,7 @@
       if (g_debug->config().options() & BACKTRACE_FULL) {
         auto backtrace_entry = backtraces_info_.find(hash_index);
         if (backtrace_entry == backtraces_info_.end()) {
-          error_log("Pointer 0x%" PRIxPTR " hash_index %zu does not exist.", entry.first, hash_index);
+          error_log("Pointer 0x%" PRIxPTR " hash_index %zu does not exist.", pointer, hash_index);
         } else {
           backtrace_info = &backtrace_entry->second;
         }
@@ -415,7 +433,7 @@
       continue;
     }
 
-    list->emplace_back(ListInfoType{entry.first, 1, entry.second.RealSize(),
+    list->emplace_back(ListInfoType{pointer, 1, entry.second.RealSize(),
                                     entry.second.ZygoteChildAlloc(), frame_info, backtrace_info});
   }
 
@@ -550,9 +568,9 @@
 }
 
 bool PointerData::Exists(const void* ptr) {
-  uintptr_t pointer = reinterpret_cast<uintptr_t>(ptr);
   std::lock_guard<std::mutex> pointer_guard(pointer_mutex_);
-  return pointers_.count(pointer) != 0;
+  uintptr_t mangled_ptr = ManglePointer(reinterpret_cast<uintptr_t>(ptr));
+  return pointers_.count(mangled_ptr) != 0;
 }
 
 void PointerData::DumpLiveToFile(int fd) {
@@ -598,8 +616,8 @@
         if (frame.function_name.empty()) {
           dprintf(fd, " \"\" 0}");
         } else {
-          char* demangled_name = __cxa_demangle(frame.function_name.c_str(), nullptr, nullptr,
-                                                nullptr);
+          char* demangled_name =
+              abi::__cxa_demangle(frame.function_name.c_str(), nullptr, nullptr, nullptr);
           const char* name;
           if (demangled_name != nullptr) {
             name = demangled_name;
@@ -637,3 +655,10 @@
   free_pointer_mutex_.try_lock();
   free_pointer_mutex_.unlock();
 }
+
+void PointerData::IteratePointers(std::function<void(uintptr_t pointer)> fn) {
+  std::lock_guard<std::mutex> pointer_guard(pointer_mutex_);
+  for (const auto entry : pointers_) {
+    fn(DemanglePointer(entry.first));
+  }
+}
diff --git a/libc/malloc_debug/PointerData.h b/libc/malloc_debug/PointerData.h
index 92d2653..3194bab 100644
--- a/libc/malloc_debug/PointerData.h
+++ b/libc/malloc_debug/PointerData.h
@@ -33,6 +33,7 @@
 
 #include <atomic>
 #include <deque>
+#include <functional>
 #include <mutex>
 #include <string>
 #include <unordered_map>
@@ -99,7 +100,7 @@
 };
 
 struct FreePointerInfoType {
-  uintptr_t pointer;
+  uintptr_t mangled_ptr;
   size_t hash_index;
 };
 
@@ -134,17 +135,15 @@
   void PostForkParent();
   void PostForkChild();
 
-  static size_t AddBacktrace(size_t num_frames);
+  static void IteratePointers(std::function<void(uintptr_t pointer)> fn);
+
+  static size_t AddBacktrace(size_t num_frames, size_t size_bytes);
   static void RemoveBacktrace(size_t hash_index);
 
   static void Add(const void* pointer, size_t size);
   static void Remove(const void* pointer);
 
-  typedef std::unordered_map<uintptr_t, PointerInfoType>::iterator iterator;
-  static iterator begin() { return pointers_.begin(); }
-  static iterator end() { return pointers_.end(); }
-
-  static void* AddFreed(const void* pointer);
+  static void* AddFreed(const void* pointer, size_t size_bytes);
   static void LogFreeError(const FreePointerInfoType& info, size_t usable_size);
   static void LogFreeBacktrace(const void* ptr);
   static void VerifyFreedPointer(const FreePointerInfoType& info);
@@ -162,6 +161,12 @@
   static bool Exists(const void* pointer);
 
  private:
+  // Only keep mangled pointers in internal data structures. This avoids
+  // problems where libmemunreachable finds these pointers and thinks they
+  // are not unreachable.
+  static inline uintptr_t ManglePointer(uintptr_t pointer) { return pointer ^ UINTPTR_MAX; }
+  static inline uintptr_t DemanglePointer(uintptr_t pointer) { return pointer ^ UINTPTR_MAX; }
+
   static std::string GetHashString(uintptr_t* frames, size_t num_frames);
   static void LogBacktrace(size_t hash_index);
 
diff --git a/libc/malloc_debug/README.md b/libc/malloc_debug/README.md
index 662f5f8..fddc4a3 100644
--- a/libc/malloc_debug/README.md
+++ b/libc/malloc_debug/README.md
@@ -114,7 +114,7 @@
 option will not add a special header.
 
 As of P, this option will also enable dumping backtrace heap data to a
-file when the process receives the signal SIGRTMAX - 17 ( which is 47 on most
+file when the process receives the signal SIGRTMAX - 17 ( which is 47 on
 Android devices). The format of this dumped data is the same format as
 that dumped when running am dumpheap -n. The default is to dump this data
 to the file /data/local/tmp/backtrace\_heap.**PID**.txt. This is useful when
@@ -127,7 +127,7 @@
 ### backtrace\_enable\_on\_signal[=MAX\_FRAMES]
 Enable capturing the backtrace of each allocation site. If the
 backtrace capture is toggled when the process receives the signal
-SIGRTMAX - 19 (which is 45 on most Android devices). When this
+SIGRTMAX - 19 (which is 45 on Android devices). When this
 option is used alone, backtrace capture starts out disabled until the signal
 is received. If both this option and the backtrace option are set, then
 backtrace capture is enabled until the signal is received.
@@ -160,11 +160,83 @@
 on the signal will be backtrace\_dump\_prefix.**PID**.txt. The filename chosen
 when the program exits will be backtrace\_dump\_prefix.**PID**.exit.txt.
 
+### backtrace\_min\_size=ALLOCATION\_SIZE\_BYTES
+As of U, setting this in combination with the backtrace option means
+that only allocations of a size greater than or equal to
+**ALLOCATION\_SIZE\_BYTES** will be backtraced. When used in combination
+with the backtrace\_max\_size option, then allocations greater than or
+equal to backtrace\_min\_size and less than or equal to
+backtrace\_max\_size will be backtraced. The backtrace\_size option
+overrides this option, and should not be used at the same time.
+
+This option can also be used in combination with other tools such
+as [libmemunreachable](https://android.googlesource.com/platform/system/memory/libmemunreachable/+/master/README.md)
+to only get backtraces for sizes of allocations listed as being leaked.
+
+### backtrace\_max\_size=ALLOCATION\_SIZE\_BYTES
+As of U, setting this in combination with the backtrace option means
+that only allocations of a size less than or equal to
+**ALLOCATION\_SIZE\_BYTES** will be backtraced. When used in combination
+with the backtrace\_min\_size option, then allocations greater than or
+equal to backtrace\_min\_size and less than or equal to
+backtrace\_max\_size will be backtraced. The backtrace\_size option
+overrides this option, and should not be used at the same time.
+
+This option can also be used in combination with other tools such
+as [libmemunreachable](https://android.googlesource.com/platform/system/memory/libmemunreachable/+/master/README.md)
+to only get backtraces for sizes of allocations listed as being leaked.
+
+### backtrace\_size=ALLOCATION\_SIZE\_BYTES
+As of U, setting this in combination with the backtrace option means
+that only allocations of size **ALLOCATION\_SIZE\_BYTES** will be backtraced.
+This option overrides the backtrace\_min\_size and the backtrace\_max\_size.
+
+This option can also be used in combination with other tools such
+as [libmemunreachable](https://android.googlesource.com/platform/system/memory/libmemunreachable/+/master/README.md)
+to only get backtraces for sizes of allocations listed as being leaked.
+
 ### backtrace\_full
 As of Q, any time that a backtrace is gathered, a different algorithm is used
 that is extra thorough and can unwind through Java frames. This will run
 slower than the normal backtracing function.
 
+### bt, bt\_dmp\_on\_ex, bt\_dmp\_pre, bt\_en\_on\_sig, bt\_full, bt\_max\_sz, bt\_min\_sz, bt\_sz
+As of U, add shorter aliases for backtrace related options to avoid property length restrictions.
+
+| Alias           | Option                        |
+|:----------------|:------------------------------|
+| bt              | backtrace                     |
+| bt\_dmp\_on\_ex | backtrace\_dump\_on\_exit     |
+| bt\_dmp\_pre    | backtrace\_dump\_prefix       |
+| bt\_en\_on\_sig | backtrace\_enable\_on\_signal |
+| bt\_full        | backtrace\_full               |
+| bt\_max\_sz     | backtrace\_max\_size          |
+| bt\_min\_sz     | backtrace\_min\_size          |
+| bt\_sz          | backtrace\_size               |
+
+### check\_unreachable\_on\_signal
+As of Android U, this option will trigger a check for unreachable memory
+in a process. Specifically, if the signal SIGRTMAX - 16 (which is 48 on
+Android devices). The best way to see the exact signal being used is to
+enable the verbose option then look at the log for the message:
+
+    Run: 'kill -48 <PID>' to check for unreachable memory.
+
+When the signal is received, the actual unreachable check only triggers
+on the next allocation that happens in the process (malloc/free, etc).
+
+If a process is not doing any allocations, it can be forced to trigger when
+running:
+
+    debuggerd -b <PID>
+
+**NOTE**: The unreachable check can fail for protected processes, so it
+might be necessary to run:
+
+    setenforce 0
+
+To get the unreachable data.
+
 ### fill\_on\_alloc[=MAX\_FILLED\_BYTES]
 Any allocation routine, other than calloc, will result in the allocation being
 filled with the value 0xeb. When doing a realloc to a larger size, the bytes
@@ -270,7 +342,7 @@
 
 ### record\_allocs[=TOTAL\_ENTRIES]
 Keep track of every allocation/free made on every thread and dump them
-to a file when the signal SIGRTMAX - 18 (which is 46 on most Android devices)
+to a file when the signal SIGRTMAX - 18 (which is 46 on Android devices)
 is received.
 
 If TOTAL\_ENTRIES is set, then it indicates the total number of
diff --git a/libc/malloc_debug/RecordData.cpp b/libc/malloc_debug/RecordData.cpp
index 5c550c0..8a77170 100644
--- a/libc/malloc_debug/RecordData.cpp
+++ b/libc/malloc_debug/RecordData.cpp
@@ -28,6 +28,7 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <pthread.h>
 #include <stdatomic.h>
 #include <stdint.h>
@@ -48,44 +49,55 @@
 RecordEntry::RecordEntry() : tid_(gettid()) {
 }
 
-std::string ThreadCompleteEntry::GetString() const {
-  return android::base::StringPrintf("%d: thread_done 0x0\n", tid_);
+bool ThreadCompleteEntry::Write(int fd) const {
+  return dprintf(fd, "%d: thread_done 0x0\n", tid_) > 0;
 }
 
-AllocEntry::AllocEntry(void* pointer) : pointer_(pointer) {}
+AllocEntry::AllocEntry(void* pointer, uint64_t start_ns, uint64_t end_ns)
+    : pointer_(pointer), start_ns_(start_ns), end_ns_(end_ns) {}
 
-MallocEntry::MallocEntry(void* pointer, size_t size) : AllocEntry(pointer), size_(size) {}
+MallocEntry::MallocEntry(void* pointer, size_t size, uint64_t start_ns, uint64_t end_ns)
+    : AllocEntry(pointer, start_ns, end_ns), size_(size) {}
 
-std::string MallocEntry::GetString() const {
-  return android::base::StringPrintf("%d: malloc %p %zu\n", tid_, pointer_, size_);
+bool MallocEntry::Write(int fd) const {
+  return dprintf(fd, "%d: malloc %p %zu %" PRIu64 " %" PRIu64 "\n", tid_, pointer_, size_,
+                 start_ns_, end_ns_) > 0;
 }
 
-FreeEntry::FreeEntry(void* pointer) : AllocEntry(pointer) {}
+FreeEntry::FreeEntry(void* pointer, uint64_t start_ns, uint64_t end_ns)
+    : AllocEntry(pointer, start_ns, end_ns) {}
 
-std::string FreeEntry::GetString() const {
-  return android::base::StringPrintf("%d: free %p\n", tid_, pointer_);
+bool FreeEntry::Write(int fd) const {
+  return dprintf(fd, "%d: free %p %" PRIu64 " %" PRIu64 "\n", tid_, pointer_, start_ns_, end_ns_) >
+         0;
 }
 
-CallocEntry::CallocEntry(void* pointer, size_t nmemb, size_t size)
-    : MallocEntry(pointer, size), nmemb_(nmemb) {}
+CallocEntry::CallocEntry(void* pointer, size_t nmemb, size_t size, uint64_t start_ns,
+                         uint64_t end_ns)
+    : MallocEntry(pointer, size, start_ns, end_ns), nmemb_(nmemb) {}
 
-std::string CallocEntry::GetString() const {
-  return android::base::StringPrintf("%d: calloc %p %zu %zu\n", tid_, pointer_, nmemb_, size_);
+bool CallocEntry::Write(int fd) const {
+  return dprintf(fd, "%d: calloc %p %zu %zu %" PRIu64 " %" PRIu64 "\n", tid_, pointer_, nmemb_,
+                 size_, start_ns_, end_ns_) > 0;
 }
 
-ReallocEntry::ReallocEntry(void* pointer, size_t size, void* old_pointer)
-    : MallocEntry(pointer, size), old_pointer_(old_pointer) {}
+ReallocEntry::ReallocEntry(void* pointer, size_t size, void* old_pointer, uint64_t start_ns,
+                           uint64_t end_ns)
+    : MallocEntry(pointer, size, start_ns, end_ns), old_pointer_(old_pointer) {}
 
-std::string ReallocEntry::GetString() const {
-  return android::base::StringPrintf("%d: realloc %p %p %zu\n", tid_, pointer_, old_pointer_, size_);
+bool ReallocEntry::Write(int fd) const {
+  return dprintf(fd, "%d: realloc %p %p %zu %" PRIu64 " %" PRIu64 "\n", tid_, pointer_,
+                 old_pointer_, size_, start_ns_, end_ns_) > 0;
 }
 
 // aligned_alloc, posix_memalign, memalign, pvalloc, valloc all recorded with this class.
-MemalignEntry::MemalignEntry(void* pointer, size_t size, size_t alignment)
-    : MallocEntry(pointer, size), alignment_(alignment) {}
+MemalignEntry::MemalignEntry(void* pointer, size_t size, size_t alignment, uint64_t start_ns,
+                             uint64_t end_ns)
+    : MallocEntry(pointer, size, start_ns, end_ns), alignment_(alignment) {}
 
-std::string MemalignEntry::GetString() const {
-  return android::base::StringPrintf("%d: memalign %p %zu %zu\n", tid_, pointer_, alignment_, size_);
+bool MemalignEntry::Write(int fd) const {
+  return dprintf(fd, "%d: memalign %p %zu %zu %" PRIu64 " %" PRIu64 "\n", tid_, pointer_,
+                 alignment_, size_, start_ns_, end_ns_) > 0;
 }
 
 struct ThreadData {
@@ -112,59 +124,37 @@
   }
 }
 
-static void RecordDump(int, siginfo_t*, void*) {
-  // It's not necessarily safe to do the dump here, instead wait for the
-  // next allocation call to do the dump.
-  g_debug->record->SetToDump();
+RecordData* RecordData::record_obj_ = nullptr;
+
+void RecordData::WriteData(int, siginfo_t*, void*) {
+  // Dump from here, the function must not allocate so this is safe.
+  record_obj_->WriteEntries();
 }
 
-void RecordData::Dump() {
-  std::lock_guard<std::mutex> lock(dump_lock_);
-
-  // Make it so that no more entries can be added while dumping.
-  unsigned int last_entry_index = cur_index_.exchange(static_cast<unsigned int>(num_entries_));
-  if (dump_ == false) {
-    // Multiple Dump() calls from different threads, and we lost. Do nothing.
+void RecordData::WriteEntries() {
+  std::lock_guard<std::mutex> entries_lock(entries_lock_);
+  if (cur_index_ == 0) {
+    info_log("No alloc entries to write.");
     return;
   }
 
-  // cur_index_ keeps getting incremented even if we hit the num_entries_.
-  // If that happens, cap the entries to dump by num_entries_.
-  if (last_entry_index > num_entries_) {
-    last_entry_index = num_entries_;
-  }
-
   int dump_fd =
       open(dump_file_.c_str(), O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW, 0755);
-  if (dump_fd != -1) {
-    for (size_t i = 0; i < last_entry_index; i++) {
-      std::string line = entries_[i]->GetString();
-      ssize_t bytes = write(dump_fd, line.c_str(), line.length());
-      if (bytes == -1 || static_cast<size_t>(bytes) != line.length()) {
-        error_log("Failed to write record alloc information: %s", strerror(errno));
-        // Free all of the rest of the errors, we don't have any way
-        // to dump a partial list of the entries.
-        for (i++; i < last_entry_index; i++) {
-          delete entries_[i];
-          entries_[i] = nullptr;
-        }
-        break;
-      }
-      delete entries_[i];
-      entries_[i] = nullptr;
-    }
-    close(dump_fd);
-
-    // Mark the entries dumped.
-    cur_index_ = 0U;
-  } else {
+  if (dump_fd == -1) {
     error_log("Cannot create record alloc file %s: %s", dump_file_.c_str(), strerror(errno));
-    // Since we couldn't create the file, reset the entries dumped back
-    // to the original value.
-    cur_index_ = last_entry_index;
+    return;
   }
 
-  dump_ = false;
+  for (size_t i = 0; i < cur_index_; i++) {
+    if (!entries_[i]->Write(dump_fd)) {
+      error_log("Failed to write record alloc information: %s", strerror(errno));
+      break;
+    }
+  }
+  close(dump_fd);
+
+  // Mark the entries dumped.
+  cur_index_ = 0U;
 }
 
 RecordData::RecordData() {
@@ -172,8 +162,9 @@
 }
 
 bool RecordData::Initialize(const Config& config) {
+  record_obj_ = this;
   struct sigaction64 dump_act = {};
-  dump_act.sa_sigaction = RecordDump;
+  dump_act.sa_sigaction = RecordData::WriteData;
   dump_act.sa_flags = SA_RESTART | SA_SIGINFO | SA_ONSTACK;
   if (sigaction64(config.record_allocs_signal(), &dump_act, nullptr) != 0) {
     error_log("Unable to set up record dump signal function: %s", strerror(errno));
@@ -186,24 +177,27 @@
              config.record_allocs_signal(), getpid());
   }
 
-  num_entries_ = config.record_allocs_num_entries();
-  entries_ = new const RecordEntry*[num_entries_];
-  cur_index_ = 0;
-  dump_ = false;
+  entries_.resize(config.record_allocs_num_entries());
+  cur_index_ = 0U;
   dump_file_ = config.record_allocs_file();
 
   return true;
 }
 
 RecordData::~RecordData() {
-  delete[] entries_;
   pthread_key_delete(key_);
 }
 
 void RecordData::AddEntryOnly(const RecordEntry* entry) {
-  unsigned int entry_index = cur_index_.fetch_add(1);
-  if (entry_index < num_entries_) {
-    entries_[entry_index] = entry;
+  std::lock_guard<std::mutex> entries_lock(entries_lock_);
+  if (cur_index_ == entries_.size()) {
+    // Maxed out, throw the entry away.
+    return;
+  }
+
+  entries_[cur_index_++].reset(entry);
+  if (cur_index_ == entries_.size()) {
+    info_log("Maximum number of records added, all new operations will be dropped.");
   }
 }
 
@@ -215,9 +209,4 @@
   }
 
   AddEntryOnly(entry);
-
-  // Check to see if it's time to dump the entries.
-  if (dump_) {
-    Dump();
-  }
 }
diff --git a/libc/malloc_debug/RecordData.h b/libc/malloc_debug/RecordData.h
index 3d37529..a02c956 100644
--- a/libc/malloc_debug/RecordData.h
+++ b/libc/malloc_debug/RecordData.h
@@ -29,12 +29,15 @@
 #pragma once
 
 #include <pthread.h>
+#include <signal.h>
 #include <stdint.h>
 #include <unistd.h>
 
 #include <atomic>
+#include <memory>
 #include <mutex>
 #include <string>
+#include <vector>
 
 #include <platform/bionic/macros.h>
 
@@ -43,7 +46,7 @@
   RecordEntry();
   virtual ~RecordEntry() = default;
 
-  virtual std::string GetString() const = 0;
+  virtual bool Write(int fd) const = 0;
 
  protected:
   pid_t tid_;
@@ -57,7 +60,7 @@
   ThreadCompleteEntry() = default;
   virtual ~ThreadCompleteEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  private:
   BIONIC_DISALLOW_COPY_AND_ASSIGN(ThreadCompleteEntry);
@@ -65,22 +68,26 @@
 
 class AllocEntry : public RecordEntry {
  public:
-  explicit AllocEntry(void* pointer);
+  explicit AllocEntry(void* pointer, uint64_t st, uint64_t et);
   virtual ~AllocEntry() = default;
 
  protected:
   void* pointer_;
 
+  // The start/end time of this operation.
+  uint64_t start_ns_;
+  uint64_t end_ns_;
+
  private:
   BIONIC_DISALLOW_COPY_AND_ASSIGN(AllocEntry);
 };
 
 class MallocEntry : public AllocEntry {
  public:
-  MallocEntry(void* pointer, size_t size);
+  MallocEntry(void* pointer, size_t size, uint64_t st, uint64_t et);
   virtual ~MallocEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  protected:
   size_t size_;
@@ -91,10 +98,10 @@
 
 class FreeEntry : public AllocEntry {
  public:
-  explicit FreeEntry(void* pointer);
+  explicit FreeEntry(void* pointer, uint64_t st, uint64_t et);
   virtual ~FreeEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  private:
   BIONIC_DISALLOW_COPY_AND_ASSIGN(FreeEntry);
@@ -102,10 +109,10 @@
 
 class CallocEntry : public MallocEntry {
  public:
-  CallocEntry(void* pointer, size_t size, size_t nmemb);
+  CallocEntry(void* pointer, size_t nmemb, size_t size, uint64_t st, uint64_t et);
   virtual ~CallocEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  protected:
   size_t nmemb_;
@@ -116,10 +123,10 @@
 
 class ReallocEntry : public MallocEntry {
  public:
-  ReallocEntry(void* pointer, size_t size, void* old_pointer);
+  ReallocEntry(void* pointer, size_t size, void* old_pointer, uint64_t st, uint64_t et);
   virtual ~ReallocEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  protected:
   void* old_pointer_;
@@ -131,10 +138,10 @@
 // aligned_alloc, posix_memalign, memalign, pvalloc, valloc all recorded with this class.
 class MemalignEntry : public MallocEntry {
  public:
-  MemalignEntry(void* pointer, size_t size, size_t alignment);
+  MemalignEntry(void* pointer, size_t size, size_t alignment, uint64_t st, uint64_t et);
   virtual ~MemalignEntry() = default;
 
-  std::string GetString() const override;
+  bool Write(int fd) const override;
 
  protected:
   size_t alignment_;
@@ -155,19 +162,18 @@
   void AddEntry(const RecordEntry* entry);
   void AddEntryOnly(const RecordEntry* entry);
 
-  void SetToDump() { dump_ = true; }
-
   pthread_key_t key() { return key_; }
 
  private:
-  void Dump();
+  static void WriteData(int, siginfo_t*, void*);
+  static RecordData* record_obj_;
 
-  std::mutex dump_lock_;
+  void WriteEntries();
+
+  std::mutex entries_lock_;
   pthread_key_t key_;
-  const RecordEntry** entries_ = nullptr;
-  size_t num_entries_ = 0;
-  std::atomic_uint cur_index_;
-  std::atomic_bool dump_;
+  std::vector<std::unique_ptr<const RecordEntry>> entries_;
+  size_t cur_index_;
   std::string dump_file_;
 
   BIONIC_DISALLOW_COPY_AND_ASSIGN(RecordData);
diff --git a/libc/malloc_debug/Unreachable.cpp b/libc/malloc_debug/Unreachable.cpp
new file mode 100644
index 0000000..af47257
--- /dev/null
+++ b/libc/malloc_debug/Unreachable.cpp
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <errno.h>
+#include <signal.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <atomic>
+#include <string>
+
+#include <memunreachable/memunreachable.h>
+#include <platform/bionic/macros.h>
+
+#include "Config.h"
+#include "Unreachable.h"
+#include "debug_log.h"
+
+std::atomic_bool Unreachable::do_check_;
+
+static void EnableUnreachableCheck(int, struct siginfo*, void*) {
+  Unreachable::EnableCheck();
+}
+
+void Unreachable::CheckIfRequested(const Config& config) {
+  if ((config.options() & CHECK_UNREACHABLE_ON_SIGNAL) && do_check_.exchange(false)) {
+    info_log("Starting to check for unreachable memory.");
+    if (!LogUnreachableMemory(false, 100)) {
+      error_log("Unreachable check failed, run setenforce 0 and try again.");
+    }
+  }
+}
+
+bool Unreachable::Initialize(const Config& config) {
+  if (!(config.options() & CHECK_UNREACHABLE_ON_SIGNAL)) {
+    return true;
+  }
+
+  struct sigaction64 unreachable_act = {};
+  unreachable_act.sa_sigaction = EnableUnreachableCheck;
+  unreachable_act.sa_flags = SA_RESTART | SA_SIGINFO | SA_ONSTACK;
+  if (sigaction64(config.check_unreachable_signal(), &unreachable_act, nullptr) != 0) {
+    error_log("Unable to set up check unreachable signal function: %s", strerror(errno));
+    return false;
+  }
+
+  if (config.options() & VERBOSE) {
+    info_log("%s: Run: 'kill -%d %d' to check for unreachable memory.", getprogname(),
+             config.check_unreachable_signal(), getpid());
+  }
+
+  return true;
+}
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/malloc_debug/Unreachable.h
similarity index 74%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libc/malloc_debug/Unreachable.h
index bc1945c..36c0bdb 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/malloc_debug/Unreachable.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,24 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
+#pragma once
 
-#include <private/bionic_asm.h>
+#include <stdint.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+#include <atomic>
 
-NOTE_GNU_PROPERTY()
+// Forward declarations
+class ConfigData;
+
+class Unreachable {
+ public:
+  static bool Initialize(const Config& config);
+  static void CheckIfRequested(const Config& config);
+
+  static void EnableCheck() { do_check_ = true; }
+
+ private:
+  static std::atomic_bool do_check_;
+
+  BIONIC_DISALLOW_IMPLICIT_CONSTRUCTORS(Unreachable);
+};
diff --git a/libc/malloc_debug/UnwindBacktrace.cpp b/libc/malloc_debug/UnwindBacktrace.cpp
index f6c3e69..8a6ff7b 100644
--- a/libc/malloc_debug/UnwindBacktrace.cpp
+++ b/libc/malloc_debug/UnwindBacktrace.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <inttypes.h>
 #include <pthread.h>
 #include <stdint.h>
@@ -36,11 +37,7 @@
 #include <vector>
 
 #include <android-base/stringprintf.h>
-#include <unwindstack/MapInfo.h>
-#include <unwindstack/Maps.h>
-#include <unwindstack/Memory.h>
-#include <unwindstack/Regs.h>
-#include <unwindstack/RegsGetLocal.h>
+#include <unwindstack/AndroidUnwinder.h>
 #include <unwindstack/Unwinder.h>
 
 #include "UnwindBacktrace.h"
@@ -52,53 +49,22 @@
 #define PAD_PTR "08" PRIx64
 #endif
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
-static pthread_once_t g_setup_once = PTHREAD_ONCE_INIT;
-
-static unwindstack::LocalUpdatableMaps* g_maps;
-static std::shared_ptr<unwindstack::Memory> g_process_memory;
-#if defined(__LP64__)
-static std::vector<std::string> g_skip_libraries{"/system/lib64/libunwindstack.so",
-                                                 "/system/lib64/libc_malloc_debug.so"};
-#else
-static std::vector<std::string> g_skip_libraries{"/system/lib/libunwindstack.so",
-                                                 "/system/lib/libc_malloc_debug.so"};
-#endif
-
-static void Setup() {
-  g_maps = new unwindstack::LocalUpdatableMaps;
-  if (!g_maps->Parse()) {
-    delete g_maps;
-    g_maps = nullptr;
-  }
-
-  g_process_memory = unwindstack::Memory::CreateProcessMemoryThreadCached(getpid());
-}
-
 bool Unwind(std::vector<uintptr_t>* frames, std::vector<unwindstack::FrameData>* frame_info,
             size_t max_frames) {
-  pthread_once(&g_setup_once, Setup);
-
-  if (g_maps == nullptr) {
-    return false;
-  }
-
-  std::unique_ptr<unwindstack::Regs> regs(unwindstack::Regs::CreateFromLocal());
-  unwindstack::RegsGetLocal(regs.get());
-  unwindstack::Unwinder unwinder(max_frames, g_maps, regs.get(), g_process_memory);
-  unwinder.Unwind(&g_skip_libraries);
-  if (unwinder.NumFrames() == 0) {
+  [[clang::no_destroy]] static unwindstack::AndroidLocalUnwinder unwinder(
+      std::vector<std::string>{"libc_malloc_debug.so"});
+  unwindstack::AndroidUnwinderData data(max_frames);
+  if (!unwinder.Unwind(data)) {
     frames->clear();
     frame_info->clear();
     return false;
   }
-  *frame_info = unwinder.ConsumeFrames();
 
-  frames->resize(frame_info->size());
-  for (size_t i = 0; i < frame_info->size(); i++) {
-    frames->at(i) = frame_info->at(i).pc;
+  frames->resize(data.frames.size());
+  for (const auto& frame : data.frames) {
+    frames->at(frame.num) = frame.pc;
   }
+  *frame_info = std::move(data.frames);
   return true;
 }
 
@@ -122,7 +88,8 @@
 
     if (!info->function_name.empty()) {
       line += " (";
-      char* demangled_name = __cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
+      char* demangled_name =
+          abi::__cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
       if (demangled_name != nullptr) {
         line += demangled_name;
         free(demangled_name);
diff --git a/libc/malloc_debug/UnwindBacktrace.h b/libc/malloc_debug/UnwindBacktrace.h
index 7f89907..091865e 100644
--- a/libc/malloc_debug/UnwindBacktrace.h
+++ b/libc/malloc_debug/UnwindBacktrace.h
@@ -30,10 +30,8 @@
 
 #include <stdint.h>
 
-#include <string>
 #include <vector>
 
-#include <unwindstack/MapInfo.h>
 #include <unwindstack/Unwinder.h>
 
 bool Unwind(std::vector<uintptr_t>* frames, std::vector<unwindstack::FrameData>* info,
diff --git a/libc/malloc_debug/backtrace.cpp b/libc/malloc_debug/backtrace.cpp
index ab5c505..ecb3a80 100644
--- a/libc/malloc_debug/backtrace.cpp
+++ b/libc/malloc_debug/backtrace.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <inttypes.h>
@@ -48,8 +49,6 @@
 
 typedef struct _Unwind_Context __unwind_context;
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 static MapData g_map_data;
 static const MapEntry* g_current_code_map = nullptr;
 
@@ -83,41 +82,24 @@
 
   uintptr_t ip = _Unwind_GetIP(context);
 
-  // The instruction pointer is pointing at the instruction after the return
-  // call on all architectures.
-  // Modify the pc to point at the real function.
-  if (ip != 0) {
-#if defined(__arm__)
-    // If the ip is suspiciously low, do nothing to avoid a segfault trying
-    // to access this memory.
-    if (ip >= 4096) {
-      // Check bits [15:11] of the first halfword assuming the instruction
-      // is 32 bits long. If the bits are any of these values, then our
-      // assumption was correct:
-      //  b11101
-      //  b11110
-      //  b11111
-      // Otherwise, this is a 16 bit instruction.
-      uint16_t value = (*reinterpret_cast<uint16_t*>(ip - 2)) >> 11;
-      if (value == 0x1f || value == 0x1e || value == 0x1d) {
-        ip -= 4;
-      } else {
-        ip -= 2;
-      }
-    }
-#elif defined(__aarch64__)
-    // All instructions are 4 bytes long, skip back one instruction.
-    ip -= 4;
+  // `ip` is the address of the instruction *after* the call site in
+  // `context`, so we want to back up by one instruction. This is hard for
+  // every architecture except arm64, so we just make sure we're *inside*
+  // that instruction, not necessarily at the start of it. (If the value
+  // is too low to be valid, we just leave it alone.)
+  if (ip >= 4096) {
+#if defined(__aarch64__)
+    ip -= 4;  // Exactly.
+#elif defined(__arm__) || defined(__riscv)
+    ip -= 2;  // At least.
 #elif defined(__i386__) || defined(__x86_64__)
-    // It's difficult to decode exactly where the previous instruction is,
-    // so subtract 1 to estimate where the instruction lives.
-    ip--;
+    ip -= 1;  // At least.
 #endif
+  }
 
-    // Do not record the frames that fall in our own shared library.
-    if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
-      return _URC_NO_REASON;
-    }
+  // Do not record the frames that fall in our own shared library.
+  if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
+    return _URC_NO_REASON;
   }
 
   state->frames[state->cur_frame++] = ip;
@@ -162,7 +144,7 @@
 
     char buf[1024];
     if (symbol != nullptr) {
-      char* demangled_name = __cxa_demangle(symbol, nullptr, nullptr, nullptr);
+      char* demangled_name = abi::__cxa_demangle(symbol, nullptr, nullptr, nullptr);
       const char* name;
       if (demangled_name != nullptr) {
         name = demangled_name;
diff --git a/libc/malloc_debug/malloc_debug.cpp b/libc/malloc_debug/malloc_debug.cpp
index 9f38946..7b0f599 100644
--- a/libc/malloc_debug/malloc_debug.cpp
+++ b/libc/malloc_debug/malloc_debug.cpp
@@ -53,11 +53,12 @@
 
 #include "Config.h"
 #include "DebugData.h"
+#include "Unreachable.h"
+#include "UnwindBacktrace.h"
 #include "backtrace.h"
 #include "debug_disable.h"
 #include "debug_log.h"
 #include "malloc_debug.h"
-#include "UnwindBacktrace.h"
 
 // ------------------------------------------------------------------------
 // Global Data
@@ -67,6 +68,100 @@
 bool* g_zygote_child;
 
 const MallocDispatch* g_dispatch;
+
+static __always_inline uint64_t Nanotime() {
+  struct timespec t = {};
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return static_cast<uint64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec;
+}
+
+namespace {
+// A TimedResult contains the result of from malloc end_ns al. functions and the
+// start/end timestamps.
+struct TimedResult {
+  uint64_t start_ns = 0;
+  uint64_t end_ns = 0;
+  union {
+    size_t s;
+    int i;
+    void* p;
+  } v;
+
+  uint64_t GetStartTimeNS() const { return start_ns; }
+  uint64_t GetEndTimeNS() const { return end_ns; }
+  void SetStartTimeNS(uint64_t t) { start_ns = t; }
+  void SetEndTimeNS(uint64_t t) { end_ns = t; }
+
+  template <typename T>
+  void setValue(T);
+  template <>
+  void setValue(size_t s) {
+    v.s = s;
+  }
+  template <>
+  void setValue(int i) {
+    v.i = i;
+  }
+  template <>
+  void setValue(void* p) {
+    v.p = p;
+  }
+
+  template <typename T>
+  T getValue() const;
+  template <>
+  size_t getValue<size_t>() const {
+    return v.s;
+  }
+  template <>
+  int getValue<int>() const {
+    return v.i;
+  }
+  template <>
+  void* getValue<void*>() const {
+    return v.p;
+  }
+};
+
+class ScopedTimer {
+ public:
+  ScopedTimer(TimedResult& res) : res_(res) { res_.start_ns = Nanotime(); }
+
+  ~ScopedTimer() { res_.end_ns = Nanotime(); }
+
+ private:
+  TimedResult& res_;
+};
+
+}  // namespace
+
+template <typename MallocFn, typename... Args>
+static TimedResult TimerCall(MallocFn fn, Args... args) {
+  TimedResult ret;
+  decltype((g_dispatch->*fn)(args...)) r;
+  if (g_debug->config().options() & RECORD_ALLOCS) {
+    ScopedTimer t(ret);
+    r = (g_dispatch->*fn)(args...);
+  } else {
+    r = (g_dispatch->*fn)(args...);
+  }
+  ret.setValue<decltype(r)>(r);
+  return ret;
+}
+
+template <typename MallocFn, typename... Args>
+static TimedResult TimerCallVoid(MallocFn fn, Args... args) {
+  TimedResult ret;
+  {
+    ScopedTimer t(ret);
+    (g_dispatch->*fn)(args...);
+  }
+  return ret;
+}
+
+#define TCALL(FUNC, ...) TimerCall(&MallocDispatch::FUNC, __VA_ARGS__);
+#define TCALLVOID(FUNC, ...) TimerCallVoid(&MallocDispatch::FUNC, __VA_ARGS__);
+
 // ------------------------------------------------------------------------
 
 // ------------------------------------------------------------------------
@@ -315,7 +410,7 @@
   }
 
   DebugData* debug = new DebugData();
-  if (!debug->Initialize(options)) {
+  if (!debug->Initialize(options) || !Unreachable::Initialize(debug->config())) {
     delete debug;
     DebugDisableFinalize();
     return false;
@@ -399,9 +494,14 @@
 
 void debug_free_malloc_leak_info(uint8_t* info) {
   g_dispatch->free(info);
+  // Purge the memory that was freed since a significant amount of
+  // memory could have been allocated and freed.
+  g_dispatch->mallopt(M_PURGE, 0);
 }
 
 size_t debug_malloc_usable_size(void* pointer) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled() || pointer == nullptr) {
     return g_dispatch->malloc_usable_size(pointer);
   }
@@ -416,7 +516,7 @@
   return InternalMallocUsableSize(pointer);
 }
 
-static void* InternalMalloc(size_t size) {
+static TimedResult InternalMalloc(size_t size) {
   if ((g_debug->config().options() & BACKTRACE) && g_debug->pointer->ShouldDumpAndReset()) {
     debug_dump_heap(android::base::StringPrintf(
                         "%s.%d.txt", g_debug->config().backtrace_dump_prefix().c_str(), getpid())
@@ -427,30 +527,35 @@
     size = 1;
   }
 
+  TimedResult result;
+
   size_t real_size = size + g_debug->extra_bytes();
   if (real_size < size) {
     // Overflow.
     errno = ENOMEM;
-    return nullptr;
+    result.setValue<void*>(nullptr);
+    return result;
   }
 
   if (size > PointerInfoType::MaxSize()) {
     errno = ENOMEM;
-    return nullptr;
+    result.setValue<void*>(nullptr);
+    return result;
   }
 
-  void* pointer;
   if (g_debug->HeaderEnabled()) {
-    Header* header =
-        reinterpret_cast<Header*>(g_dispatch->memalign(MINIMUM_ALIGNMENT_BYTES, real_size));
+    result = TCALL(memalign, MINIMUM_ALIGNMENT_BYTES, real_size);
+    Header* header = reinterpret_cast<Header*>(result.getValue<void*>());
     if (header == nullptr) {
-      return nullptr;
+      return result;
     }
-    pointer = InitHeader(header, header, size);
+    result.setValue<void*>(InitHeader(header, header, size));
   } else {
-    pointer = g_dispatch->malloc(real_size);
+    result = TCALL(malloc, real_size);
   }
 
+  void* pointer = result.getValue<void*>();
+
   if (pointer != nullptr) {
     if (g_debug->TrackPointers()) {
       PointerData::Add(pointer, size);
@@ -463,10 +568,13 @@
       memset(pointer, g_debug->config().fill_alloc_value(), bytes);
     }
   }
-  return pointer;
+
+  return result;
 }
 
 void* debug_malloc(size_t size) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->malloc(size);
   }
@@ -474,16 +582,17 @@
   ScopedDisableDebugCalls disable;
   ScopedBacktraceSignalBlocker blocked;
 
-  void* pointer = InternalMalloc(size);
+  TimedResult result = InternalMalloc(size);
 
   if (g_debug->config().options() & RECORD_ALLOCS) {
-    g_debug->record->AddEntry(new MallocEntry(pointer, size));
+    g_debug->record->AddEntry(new MallocEntry(result.getValue<void*>(), size,
+                                              result.GetStartTimeNS(), result.GetEndTimeNS()));
   }
 
-  return pointer;
+  return result.getValue<void*>();
 }
 
-static void InternalFree(void* pointer) {
+static TimedResult InternalFree(void* pointer) {
   if ((g_debug->config().options() & BACKTRACE) && g_debug->pointer->ShouldDumpAndReset()) {
     debug_dump_heap(android::base::StringPrintf(
                         "%s.%d.txt", g_debug->config().backtrace_dump_prefix().c_str(), getpid())
@@ -517,33 +626,36 @@
 
   if (g_debug->config().options() & FILL_ON_FREE) {
     size_t fill_bytes = g_debug->config().fill_on_free_bytes();
-    bytes = (bytes < fill_bytes) ? bytes : fill_bytes;
-    memset(pointer, g_debug->config().fill_free_value(), bytes);
+    fill_bytes = (bytes < fill_bytes) ? bytes : fill_bytes;
+    memset(pointer, g_debug->config().fill_free_value(), fill_bytes);
   }
 
   if (g_debug->TrackPointers()) {
     PointerData::Remove(pointer);
   }
 
+  TimedResult result;
   if (g_debug->config().options() & FREE_TRACK) {
     // Do not add the allocation until we are done modifying the pointer
     // itself. This avoids a race if a lot of threads are all doing
     // frees at the same time and we wind up trying to really free this
     // pointer from another thread, while still trying to free it in
     // this function.
-    pointer = PointerData::AddFreed(pointer);
-    if (pointer != nullptr) {
-      if (g_debug->HeaderEnabled()) {
-        pointer = g_debug->GetHeader(pointer)->orig_pointer;
-      }
-      g_dispatch->free(pointer);
+    pointer = PointerData::AddFreed(pointer, bytes);
+    if (pointer != nullptr && g_debug->HeaderEnabled()) {
+      pointer = g_debug->GetHeader(pointer)->orig_pointer;
     }
+    result = TCALLVOID(free, pointer);
   } else {
-    g_dispatch->free(free_pointer);
+    result = TCALLVOID(free, free_pointer);
   }
+
+  return result;
 }
 
 void debug_free(void* pointer) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled() || pointer == nullptr) {
     return g_dispatch->free(pointer);
   }
@@ -551,18 +663,21 @@
   ScopedDisableDebugCalls disable;
   ScopedBacktraceSignalBlocker blocked;
 
-  if (g_debug->config().options() & RECORD_ALLOCS) {
-    g_debug->record->AddEntry(new FreeEntry(pointer));
-  }
-
   if (!VerifyPointer(pointer, "free")) {
     return;
   }
 
-  InternalFree(pointer);
+  TimedResult result = InternalFree(pointer);
+
+  if (g_debug->config().options() & RECORD_ALLOCS) {
+    g_debug->record->AddEntry(
+        new FreeEntry(pointer, result.GetStartTimeNS(), result.GetEndTimeNS()));
+  }
 }
 
 void* debug_memalign(size_t alignment, size_t bytes) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->memalign(alignment, bytes);
   }
@@ -579,6 +694,7 @@
     return nullptr;
   }
 
+  TimedResult result;
   void* pointer;
   if (g_debug->HeaderEnabled()) {
     // Make the alignment a power of two.
@@ -601,7 +717,8 @@
       return nullptr;
     }
 
-    pointer = g_dispatch->malloc(real_size);
+    result = TCALL(malloc, real_size);
+    pointer = result.getValue<void*>();
     if (pointer == nullptr) {
       return nullptr;
     }
@@ -611,6 +728,7 @@
     value += (-value % alignment);
 
     Header* header = g_debug->GetHeader(reinterpret_cast<void*>(value));
+    // Don't need to update `result` here because we only need the timestamps.
     pointer = InitHeader(header, pointer, bytes);
   } else {
     size_t real_size = bytes + g_debug->extra_bytes();
@@ -619,7 +737,8 @@
       errno = ENOMEM;
       return nullptr;
     }
-    pointer = g_dispatch->memalign(alignment, real_size);
+    result = TCALL(memalign, alignment, real_size);
+    pointer = result.getValue<void*>();
   }
 
   if (pointer != nullptr) {
@@ -635,7 +754,8 @@
     }
 
     if (g_debug->config().options() & RECORD_ALLOCS) {
-      g_debug->record->AddEntry(new MemalignEntry(pointer, bytes, alignment));
+      g_debug->record->AddEntry(new MemalignEntry(pointer, bytes, alignment,
+                                                  result.GetStartTimeNS(), result.GetEndTimeNS()));
     }
   }
 
@@ -643,6 +763,8 @@
 }
 
 void* debug_realloc(void* pointer, size_t bytes) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->realloc(pointer, bytes);
   }
@@ -651,10 +773,12 @@
   ScopedBacktraceSignalBlocker blocked;
 
   if (pointer == nullptr) {
-    pointer = InternalMalloc(bytes);
+    TimedResult result = InternalMalloc(bytes);
     if (g_debug->config().options() & RECORD_ALLOCS) {
-      g_debug->record->AddEntry(new ReallocEntry(pointer, bytes, nullptr));
+      g_debug->record->AddEntry(new ReallocEntry(result.getValue<void*>(), bytes, nullptr,
+                                                 result.GetStartTimeNS(), result.GetEndTimeNS()));
     }
+    pointer = result.getValue<void*>();
     return pointer;
   }
 
@@ -663,11 +787,13 @@
   }
 
   if (bytes == 0) {
+    TimedResult result = InternalFree(pointer);
+
     if (g_debug->config().options() & RECORD_ALLOCS) {
-      g_debug->record->AddEntry(new ReallocEntry(nullptr, bytes, pointer));
+      g_debug->record->AddEntry(new ReallocEntry(nullptr, bytes, pointer, result.GetStartTimeNS(),
+                                                 result.GetEndTimeNS()));
     }
 
-    InternalFree(pointer);
     return nullptr;
   }
 
@@ -686,6 +812,7 @@
     return nullptr;
   }
 
+  TimedResult result;
   void* new_pointer;
   size_t prev_size;
   if (g_debug->HeaderEnabled()) {
@@ -719,7 +846,8 @@
     }
 
     // Allocate the new size.
-    new_pointer = InternalMalloc(bytes);
+    result = InternalMalloc(bytes);
+    new_pointer = result.getValue<void*>();
     if (new_pointer == nullptr) {
       errno = ENOMEM;
       return nullptr;
@@ -727,14 +855,18 @@
 
     prev_size = header->usable_size;
     memcpy(new_pointer, pointer, prev_size);
-    InternalFree(pointer);
+    TimedResult free_time = InternalFree(pointer);
+    // `realloc` is split into two steps, update the end time to the finish time
+    // of the second operation.
+    result.SetEndTimeNS(free_time.GetEndTimeNS());
   } else {
     if (g_debug->TrackPointers()) {
       PointerData::Remove(pointer);
     }
 
     prev_size = g_dispatch->malloc_usable_size(pointer);
-    new_pointer = g_dispatch->realloc(pointer, real_size);
+    result = TCALL(realloc, pointer, real_size);
+    new_pointer = result.getValue<void*>();
     if (new_pointer == nullptr) {
       return nullptr;
     }
@@ -756,13 +888,16 @@
   }
 
   if (g_debug->config().options() & RECORD_ALLOCS) {
-    g_debug->record->AddEntry(new ReallocEntry(new_pointer, bytes, pointer));
+    g_debug->record->AddEntry(new ReallocEntry(new_pointer, bytes, pointer, result.GetStartTimeNS(),
+                                               result.GetEndTimeNS()));
   }
 
   return new_pointer;
 }
 
 void* debug_calloc(size_t nmemb, size_t bytes) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->calloc(nmemb, bytes);
   }
@@ -794,21 +929,24 @@
   }
 
   void* pointer;
+  TimedResult result;
   if (g_debug->HeaderEnabled()) {
     // Need to guarantee the alignment of the header.
-    Header* header =
-        reinterpret_cast<Header*>(g_dispatch->memalign(MINIMUM_ALIGNMENT_BYTES, real_size));
+    result = TCALL(memalign, MINIMUM_ALIGNMENT_BYTES, real_size);
+    Header* header = reinterpret_cast<Header*>(result.getValue<void*>());
     if (header == nullptr) {
       return nullptr;
     }
     memset(header, 0, g_dispatch->malloc_usable_size(header));
     pointer = InitHeader(header, header, size);
   } else {
-    pointer = g_dispatch->calloc(1, real_size);
+    result = TCALL(calloc, 1, real_size);
+    pointer = result.getValue<void*>();
   }
 
   if (g_debug->config().options() & RECORD_ALLOCS) {
-    g_debug->record->AddEntry(new CallocEntry(pointer, bytes, nmemb));
+    g_debug->record->AddEntry(
+        new CallocEntry(pointer, nmemb, bytes, result.GetStartTimeNS(), result.GetEndTimeNS()));
   }
 
   if (pointer != nullptr && g_debug->TrackPointers()) {
@@ -862,6 +1000,8 @@
 }
 
 void* debug_aligned_alloc(size_t alignment, size_t size) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->aligned_alloc(alignment, size);
   }
@@ -873,6 +1013,8 @@
 }
 
 int debug_posix_memalign(void** memptr, size_t alignment, size_t size) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->posix_memalign(memptr, alignment, size);
   }
@@ -890,10 +1032,9 @@
                   void* arg) {
   ScopedConcurrentLock lock;
   if (g_debug->TrackPointers()) {
-    // Since malloc is disabled, don't bother acquiring any locks.
-    for (auto it = PointerData::begin(); it != PointerData::end(); ++it) {
-      callback(it->first, InternalMallocUsableSize(reinterpret_cast<void*>(it->first)), arg);
-    }
+    PointerData::IteratePointers([&callback, &arg](uintptr_t pointer) {
+      callback(pointer, InternalMallocUsableSize(reinterpret_cast<void*>(pointer)), arg);
+    });
     return 0;
   }
 
@@ -935,6 +1076,8 @@
 
 #if defined(HAVE_DEPRECATED_MALLOC_FUNCS)
 void* debug_pvalloc(size_t bytes) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->pvalloc(bytes);
   }
@@ -950,6 +1093,8 @@
 }
 
 void* debug_valloc(size_t size) {
+  Unreachable::CheckIfRequested(g_debug->config());
+
   if (DebugCallsDisabled()) {
     return g_dispatch->valloc(size);
   }
@@ -975,6 +1120,10 @@
     dprintf(fd, "%s", content.c_str());
   }
   dprintf(fd, "END\n");
+
+  // Purge the memory that was allocated and freed during this operation
+  // since it can be large enough to expand the RSS significantly.
+  g_dispatch->mallopt(M_PURGE, 0);
 }
 
 bool debug_write_malloc_leak_info(FILE* fp) {
diff --git a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp
index 42d1415..bc7af6d 100644
--- a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp
+++ b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp
@@ -215,6 +215,13 @@
   ASSERT_FALSE(config->backtrace_enable_on_signal());
   ASSERT_FALSE(config->backtrace_dump_on_exit());
 
+  ASSERT_TRUE(InitConfig("bt=23")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
+  ASSERT_EQ(23U, config->backtrace_frames());
+  ASSERT_TRUE(config->backtrace_enabled());
+  ASSERT_FALSE(config->backtrace_enable_on_signal());
+  ASSERT_FALSE(config->backtrace_dump_on_exit());
+
   ASSERT_TRUE(InitConfig("backtrace")) << getFakeLogPrint();
   ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
   ASSERT_EQ(16U, config->backtrace_frames());
@@ -222,6 +229,13 @@
   ASSERT_FALSE(config->backtrace_enable_on_signal());
   ASSERT_FALSE(config->backtrace_dump_on_exit());
 
+  ASSERT_TRUE(InitConfig("bt")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
+  ASSERT_EQ(16U, config->backtrace_frames());
+  ASSERT_TRUE(config->backtrace_enabled());
+  ASSERT_FALSE(config->backtrace_enable_on_signal());
+  ASSERT_FALSE(config->backtrace_dump_on_exit());
+
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
 }
@@ -234,6 +248,13 @@
   ASSERT_TRUE(config->backtrace_enable_on_signal());
   ASSERT_FALSE(config->backtrace_dump_on_exit());
 
+  ASSERT_TRUE(InitConfig("bt_en_on_sig=64")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
+  ASSERT_EQ(64U, config->backtrace_frames());
+  ASSERT_FALSE(config->backtrace_enabled());
+  ASSERT_TRUE(config->backtrace_enable_on_signal());
+  ASSERT_FALSE(config->backtrace_dump_on_exit());
+
   ASSERT_TRUE(InitConfig("backtrace_enable_on_signal")) << getFakeLogPrint();
   ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
   ASSERT_EQ(16U, config->backtrace_frames());
@@ -241,6 +262,13 @@
   ASSERT_TRUE(config->backtrace_enable_on_signal());
   ASSERT_FALSE(config->backtrace_dump_on_exit());
 
+  ASSERT_TRUE(InitConfig("bt_en_on_sig")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE | TRACK_ALLOCS, config->options());
+  ASSERT_EQ(16U, config->backtrace_frames());
+  ASSERT_FALSE(config->backtrace_enabled());
+  ASSERT_TRUE(config->backtrace_enable_on_signal());
+  ASSERT_FALSE(config->backtrace_dump_on_exit());
+
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
 }
@@ -288,6 +316,10 @@
   ASSERT_EQ(0U, config->options());
   ASSERT_TRUE(config->backtrace_dump_on_exit());
 
+  ASSERT_TRUE(InitConfig("bt_dmp_on_ex")) << getFakeLogPrint();
+  ASSERT_EQ(0U, config->options());
+  ASSERT_TRUE(config->backtrace_dump_on_exit());
+
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
 }
@@ -307,10 +339,18 @@
   ASSERT_EQ(0U, config->options());
   ASSERT_EQ("/data/local/tmp/backtrace_heap", config->backtrace_dump_prefix());
 
+  ASSERT_TRUE(InitConfig("bt_dmp_pre")) << getFakeLogPrint();
+  ASSERT_EQ(0U, config->options());
+  ASSERT_EQ("/data/local/tmp/backtrace_heap", config->backtrace_dump_prefix());
+
   ASSERT_TRUE(InitConfig("backtrace_dump_prefix=/fake/location")) << getFakeLogPrint();
   ASSERT_EQ(0U, config->options());
   ASSERT_EQ("/fake/location", config->backtrace_dump_prefix());
 
+  ASSERT_TRUE(InitConfig("bt_dmp_pre=/fake/location")) << getFakeLogPrint();
+  ASSERT_EQ(0U, config->options());
+  ASSERT_EQ("/fake/location", config->backtrace_dump_prefix());
+
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
 }
@@ -319,6 +359,9 @@
   ASSERT_TRUE(InitConfig("backtrace_full")) << getFakeLogPrint();
   ASSERT_EQ(BACKTRACE_FULL, config->options());
 
+  ASSERT_TRUE(InitConfig("bt_full")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_FULL, config->options());
+
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
 }
@@ -761,3 +804,102 @@
       "which does not take a value\n");
   ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str());
 }
+
+TEST_F(MallocDebugConfigTest, check_unreachable_on_signal) {
+  ASSERT_TRUE(InitConfig("check_unreachable_on_signal")) << getFakeLogPrint();
+  ASSERT_EQ(CHECK_UNREACHABLE_ON_SIGNAL, config->options());
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  ASSERT_STREQ("", getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugConfigTest, trigger_check_unreachable_on_signal_fail) {
+  ASSERT_FALSE(InitConfig("check_unreachable_on_signal=200")) << getFakeLogPrint();
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string log_msg(
+      "6 malloc_debug malloc_testing: value set for option 'check_unreachable_on_signal' "
+      "which does not take a value\n");
+  ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugConfigTest, size) {
+  ASSERT_TRUE(InitConfig("backtrace_size=37")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(37U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(37U, config->backtrace_max_size_bytes());
+
+  ASSERT_TRUE(InitConfig("bt_sz=39")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(39U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(39U, config->backtrace_max_size_bytes());
+
+  ASSERT_FALSE(InitConfig("backtrace_size")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_size=0")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_size=-1")) << getFakeLogPrint();
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string log_msg("6 malloc_debug malloc_testing: bad value for option 'backtrace_size'\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_size', value "
+                      "must be >= 1: 0\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_size', value "
+                      "cannot be negative: -1\n" +
+                      usage_string);
+  ASSERT_STREQ(log_msg.c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugConfigTest, min_size) {
+  ASSERT_TRUE(InitConfig("backtrace_min_size=9")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(9U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(SIZE_MAX, config->backtrace_max_size_bytes());
+
+  ASSERT_TRUE(InitConfig("bt_min_sz=11")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(11U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(SIZE_MAX, config->backtrace_max_size_bytes());
+
+  ASSERT_FALSE(InitConfig("backtrace_min_size")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_min_size=0")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_min_size=-1")) << getFakeLogPrint();
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string log_msg("6 malloc_debug malloc_testing: bad value for option 'backtrace_min_size'\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_min_size', "
+                      "value must be >= 1: 0\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_min_size', "
+                      "value cannot be negative: -1\n" +
+                      usage_string);
+  ASSERT_STREQ(log_msg.c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugConfigTest, max_size) {
+  ASSERT_TRUE(InitConfig("backtrace_max_size=13")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(0U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(13U, config->backtrace_max_size_bytes());
+
+  ASSERT_TRUE(InitConfig("bt_max_sz=15")) << getFakeLogPrint();
+  ASSERT_EQ(BACKTRACE_SPECIFIC_SIZES, config->options());
+  ASSERT_EQ(0U, config->backtrace_min_size_bytes());
+  ASSERT_EQ(15U, config->backtrace_max_size_bytes());
+
+  ASSERT_FALSE(InitConfig("backtrace_max_size")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_max_size=0")) << getFakeLogPrint();
+  ASSERT_FALSE(InitConfig("backtrace_max_size=-1")) << getFakeLogPrint();
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string log_msg("6 malloc_debug malloc_testing: bad value for option 'backtrace_max_size'\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_max_size', "
+                      "value must be >= 1: 0\n" +
+                      usage_string +
+                      "6 malloc_debug malloc_testing: bad value for option 'backtrace_max_size', "
+                      "value cannot be negative: -1\n" +
+                      usage_string);
+  ASSERT_STREQ(log_msg.c_str(), getFakeLogPrint().c_str());
+}
diff --git a/libc/malloc_debug/tests/malloc_debug_system_tests.cpp b/libc/malloc_debug/tests/malloc_debug_system_tests.cpp
index 92679e4..aee2572 100644
--- a/libc/malloc_debug/tests/malloc_debug_system_tests.cpp
+++ b/libc/malloc_debug/tests/malloc_debug_system_tests.cpp
@@ -52,8 +52,7 @@
 #include <thread>
 #include <vector>
 
-#include <backtrace/Backtrace.h>
-#include <backtrace/BacktraceMap.h>
+#include <unwindstack/AndroidUnwinder.h>
 
 #include <bionic/malloc.h>
 #include <tests/utils.h>
@@ -452,12 +451,19 @@
   static constexpr size_t kMaxRetries = 3;
 };
 
-TEST(MallocTests, DISABLED_smoke) {}
+TEST(MallocTests, DISABLED_smoke) {
+  void* ptr = malloc(128);
+  free(ptr);
+}
 
 TEST_F(MallocDebugSystemTest, smoke) {
   Exec("MallocTests.DISABLED_smoke", "verbose backtrace");
 }
 
+TEST_F(MallocDebugSystemTest, backtrace_full_smoke) {
+  Exec("MallocTests.DISABLED_smoke", "verbose backtrace backtrace_full");
+}
+
 static void SetAllocationLimit() {
   // Set to a large value, this is only to enable the limit code and
   // verify that malloc debug is still called properly.
@@ -763,13 +769,14 @@
   }
 
   static constexpr size_t kNumUnwinds = 1000;
+  unwindstack::AndroidLocalUnwinder unwinder;
   for (size_t i = 0; i < kNumUnwinds; i++) {
-    std::unique_ptr<Backtrace> backtrace(Backtrace::Create(getpid(), tid));
     // Only verify that there is at least one frame in the unwind.
     // This is not a test of the unwinder and clang for arm seems to
     // produces an increasing number of code that does not have unwind
     // information.
-    ASSERT_TRUE(backtrace->Unwind(0)) << "Failed on unwind " << i;
+    unwindstack::AndroidUnwinderData data;
+    ASSERT_TRUE(unwinder.Unwind(data)) << "Failed on unwind " << i;
   }
   running = false;
   thread.join();
diff --git a/libc/malloc_debug/tests/malloc_debug_unit_tests.cpp b/libc/malloc_debug/tests/malloc_debug_unit_tests.cpp
index ea2dc78..bf3ed14 100644
--- a/libc/malloc_debug/tests/malloc_debug_unit_tests.cpp
+++ b/libc/malloc_debug/tests/malloc_debug_unit_tests.cpp
@@ -81,8 +81,19 @@
 bool debug_write_malloc_leak_info(FILE*);
 void debug_dump_heap(const char*);
 
+void malloc_enable();
+void malloc_disable();
+
 __END_DECLS
 
+// Change the slow threshold since some tests take more than 2 seconds.
+extern "C" bool GetInitialArgs(const char*** args, size_t* num_args) {
+  static const char* initial_args[] = {"--slow_threshold_ms=5000"};
+  *args = initial_args;
+  *num_args = 1;
+  return true;
+}
+
 constexpr char DIVIDER[] =
     "6 malloc_debug *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n";
 
@@ -90,7 +101,7 @@
   return __BIONIC_ALIGN(sizeof(Header), MINIMUM_ALIGNMENT_BYTES);
 }
 
-static constexpr const char RECORD_ALLOCS_FILE[] = "/data/local/tmp/record_allocs.txt";
+static constexpr const char RECORD_ALLOCS_FILE[] = "/data/local/tmp/record_allocs";
 
 static constexpr const char BACKTRACE_DUMP_PREFIX[] = "/data/local/tmp/backtrace_heap";
 
@@ -100,14 +111,16 @@
     initialized = false;
     resetLogs();
     backtrace_fake_clear_all();
-    // Delete the record data file if it exists.
-    unlink(RECORD_ALLOCS_FILE);
   }
 
   void TearDown() override {
     if (initialized) {
       debug_finalize();
     }
+    if (!record_filename.empty()) {
+      // Try to delete the record data file even it doesn't exist.
+      unlink(record_filename.c_str());
+    }
   }
 
   void Init(const char* options) {
@@ -116,6 +129,13 @@
     initialized = true;
   }
 
+  void InitRecordAllocs(const char* options) {
+    record_filename = android::base::StringPrintf("%s.%d.txt", RECORD_ALLOCS_FILE, getpid());
+    std::string init(options);
+    init += android::base::StringPrintf(" record_allocs_file=%s", record_filename.c_str());
+    Init(init.c_str());
+  }
+
   void BacktraceDumpOnSignal(bool trigger_with_alloc);
 
   static size_t GetInfoEntrySize(size_t max_frames) {
@@ -126,6 +146,8 @@
 
   bool zygote_child;
 
+  std::string record_filename;
+
   static MallocDispatch dispatch;
 };
 
@@ -162,6 +184,23 @@
   return diff;
 }
 
+static void VerifyRecords(std::vector<std::string>& expected, std::string& actual) {
+  size_t offset = 0;
+  for (std::string& str : expected) {
+    ASSERT_STREQ(str.c_str(), actual.substr(offset, str.size()).c_str());
+    if (str.find("thread_done") != std::string::npos) {
+      offset = actual.find_first_of("\n", offset) + 1;
+      continue;
+    }
+    offset += str.size() + 1;
+    uint64_t st = strtoull(&actual[offset], nullptr, 10);
+    offset = actual.find_first_of(" ", offset) + 1;
+    uint64_t et = strtoull(&actual[offset], nullptr, 10);
+    ASSERT_GT(et, st);
+    offset = actual.find_first_of("\n", offset) + 1;
+  }
+}
+
 void VerifyAllocCalls(bool all_options) {
   size_t alloc_size = 1024;
 
@@ -227,6 +266,9 @@
     expected_log += android::base::StringPrintf(
         "4 malloc_debug malloc_testing: Run: 'kill -%d %d' to dump the allocation records.\n",
         SIGRTMAX - 18, getpid());
+    expected_log += android::base::StringPrintf(
+        "4 malloc_debug malloc_testing: Run: 'kill -%d %d' to check for unreachable memory.\n",
+        SIGRTMAX - 16, getpid());
   }
   expected_log += "4 malloc_debug malloc_testing: malloc debug enabled\n";
   ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
@@ -296,6 +338,16 @@
   ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
 }
 
+TEST_F(MallocDebugTest, verbose_check_unreachable_on_signal) {
+  Init("verbose check_unreachable_on_signal");
+
+  std::string expected_log = android::base::StringPrintf(
+      "4 malloc_debug malloc_testing: Run: 'kill -%d %d' to check for unreachable memory.\n",
+      SIGRTMAX - 16, getpid());
+  expected_log += "4 malloc_debug malloc_testing: malloc debug enabled\n";
+  ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
+}
+
 TEST_F(MallocDebugTest, fill_on_free) {
   Init("fill_on_free free_track free_track_backtrace_num_frames=0");
 
@@ -359,7 +411,7 @@
 TEST_F(MallocDebugTest, all_options) {
   Init(
       "guard backtrace backtrace_enable_on_signal fill expand_alloc free_track leak_track "
-      "record_allocs verify_pointers abort_on_error verbose");
+      "record_allocs verify_pointers abort_on_error verbose check_unreachable_on_signal");
   VerifyAllocCalls(true);
 }
 
@@ -2135,143 +2187,128 @@
 }
 #endif
 
-void VerifyRecordAllocs() {
-  std::string expected;
+void VerifyRecordAllocs(const std::string& record_filename) {
+  std::vector<std::string> expected;
 
   void* pointer = debug_malloc(10);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 10\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 10", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
-  pointer = debug_calloc(1, 20);
+  pointer = debug_calloc(20, 1);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: calloc %p 20 1\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: calloc %p 20 1", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   pointer = debug_realloc(nullptr, 30);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: realloc %p 0x0 30\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: realloc %p 0x0 30", getpid(), pointer));
   void* old_pointer = pointer;
   pointer = debug_realloc(pointer, 2048);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: realloc %p %p 2048\n", getpid(),
-                                          pointer, old_pointer);
+  expected.push_back(
+      android::base::StringPrintf("%d: realloc %p %p 2048", getpid(), pointer, old_pointer));
   debug_realloc(pointer, 0);
-  expected += android::base::StringPrintf("%d: realloc 0x0 %p 0\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: realloc 0x0 %p 0", getpid(), pointer));
 
   pointer = debug_memalign(16, 40);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: memalign %p 16 40\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: memalign %p 16 40", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   pointer = debug_aligned_alloc(32, 64);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: memalign %p 32 64\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: memalign %p 32 64", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   ASSERT_EQ(0, debug_posix_memalign(&pointer, 32, 50));
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: memalign %p 32 50\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: memalign %p 32 50", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
 #if defined(HAVE_DEPRECATED_MALLOC_FUNCS)
   pointer = debug_pvalloc(60);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: memalign %p 4096 4096\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: memalign %p 4096 4096", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   pointer = debug_valloc(70);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: memalign %p 4096 70\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: memalign %p 4096 70", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 #endif
 
   // Dump all of the data accumulated so far.
   ASSERT_TRUE(kill(getpid(), SIGRTMAX - 18) == 0);
-  sleep(1);
-
-  // This triggers the dumping.
-  pointer = debug_malloc(110);
-  ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 110\n", getpid(), pointer);
 
   // Read all of the contents.
   std::string actual;
-  ASSERT_TRUE(android::base::ReadFileToString(RECORD_ALLOCS_FILE, &actual));
-  ASSERT_EQ(0, unlink(RECORD_ALLOCS_FILE));
+  ASSERT_TRUE(android::base::ReadFileToString(record_filename, &actual));
 
-  ASSERT_STREQ(expected.c_str(), actual.c_str());
+  VerifyRecords(expected, actual);
 
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
-
-  debug_free(pointer);
 }
 
 TEST_F(MallocDebugTest, record_allocs_no_header) {
-  Init("record_allocs");
+  InitRecordAllocs("record_allocs");
 
-  VerifyRecordAllocs();
+  VerifyRecordAllocs(record_filename);
 }
 
 TEST_F(MallocDebugTest, record_allocs_with_header) {
-  Init("record_allocs front_guard");
+  InitRecordAllocs("record_allocs front_guard");
 
-  VerifyRecordAllocs();
+  VerifyRecordAllocs(record_filename);
 }
 
 TEST_F(MallocDebugTest, record_allocs_max) {
-  Init("record_allocs=5");
+  InitRecordAllocs("record_allocs=5");
 
-  std::string expected;
+  std::vector<std::string> expected;
 
   void* pointer = debug_malloc(10);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 10\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 10", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   pointer = debug_malloc(20);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 20\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 20", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   pointer = debug_malloc(1024);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 1024\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 1024", getpid(), pointer));
   debug_free(pointer);
 
   // Dump all of the data accumulated so far.
   ASSERT_TRUE(kill(getpid(), SIGRTMAX - 18) == 0);
-  sleep(1);
-
-  // This triggers the dumping.
-  pointer = debug_malloc(110);
-  ASSERT_TRUE(pointer != nullptr);
 
   // Read all of the contents.
   std::string actual;
-  ASSERT_TRUE(android::base::ReadFileToString(RECORD_ALLOCS_FILE, &actual));
-  ASSERT_EQ(0, unlink(RECORD_ALLOCS_FILE));
+  ASSERT_TRUE(android::base::ReadFileToString(record_filename, &actual));
 
-  ASSERT_STREQ(expected.c_str(), actual.c_str());
+  VerifyRecords(expected, actual);
 
   ASSERT_STREQ("", getFakeLogBuf().c_str());
-  ASSERT_STREQ("", getFakeLogPrint().c_str());
-
-  debug_free(pointer);
+  ASSERT_STREQ(
+      "4 malloc_debug Maximum number of records added, all new operations will be dropped.\n",
+      getFakeLogPrint().c_str());
 }
 
 TEST_F(MallocDebugTest, record_allocs_thread_done) {
-  Init("record_allocs=5");
+  InitRecordAllocs("record_allocs=5");
 
   static pid_t tid = 0;
   static void* pointer = nullptr;
@@ -2283,84 +2320,101 @@
   });
   thread.join();
 
-  std::string expected = android::base::StringPrintf("%d: malloc %p 100\n", tid, pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", tid, pointer);
-  expected += android::base::StringPrintf("%d: thread_done 0x0\n", tid);
+  std::vector<std::string> expected;
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 100", tid, pointer));
+  expected.push_back(android::base::StringPrintf("%d: free %p", tid, pointer));
+  expected.push_back(android::base::StringPrintf("%d: thread_done 0x0", tid));
 
   // Dump all of the data accumulated so far.
   ASSERT_TRUE(kill(getpid(), SIGRTMAX - 18) == 0);
-  sleep(1);
-
-  // This triggers the dumping.
-  pointer = debug_malloc(23);
-  ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 23\n", getpid(), pointer);
 
   // Read all of the contents.
   std::string actual;
-  ASSERT_TRUE(android::base::ReadFileToString(RECORD_ALLOCS_FILE, &actual));
-  ASSERT_EQ(0, unlink(RECORD_ALLOCS_FILE));
+  ASSERT_TRUE(android::base::ReadFileToString(record_filename, &actual));
 
-  ASSERT_STREQ(expected.c_str(), actual.c_str());
+  VerifyRecords(expected, actual);
 
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   ASSERT_STREQ("", getFakeLogPrint().c_str());
-
-  debug_free(pointer);
 }
 
 TEST_F(MallocDebugTest, record_allocs_file_name_fail) {
-  Init("record_allocs=5");
+  InitRecordAllocs("record_allocs=5");
 
-  // Delete the special.txt file and create a symbolic link there to
+  // Delete the records file and create a symbolic link there to
   // make sure the create file will fail.
-  unlink(RECORD_ALLOCS_FILE);
+  unlink(record_filename.c_str());
 
-  ASSERT_EQ(0, symlink("/data/local/tmp/does_not_exist", RECORD_ALLOCS_FILE));
+  ASSERT_EQ(0, symlink("/data/local/tmp/does_not_exist", record_filename.c_str()));
 
-  std::string expected;
+  std::vector<std::string> expected;
 
   void* pointer = debug_malloc(10);
   ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 10\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 10", getpid(), pointer));
   debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
 
   // Dump all of the data accumulated so far.
   ASSERT_TRUE(kill(getpid(), SIGRTMAX - 18) == 0);
-  sleep(1);
-
-  // This triggers the dumping.
-  pointer = debug_malloc(110);
-  ASSERT_TRUE(pointer != nullptr);
-  expected += android::base::StringPrintf("%d: malloc %p 110\n", getpid(), pointer);
 
   // Read all of the contents.
   std::string actual;
-  ASSERT_FALSE(android::base::ReadFileToString(RECORD_ALLOCS_FILE, &actual));
+  ASSERT_FALSE(android::base::ReadFileToString(record_filename, &actual));
 
   // Unlink the file so the next dump passes.
-  ASSERT_EQ(0, unlink(RECORD_ALLOCS_FILE));
+  ASSERT_EQ(0, unlink(record_filename.c_str()));
 
   // Dump all of the data accumulated so far.
   ASSERT_TRUE(kill(getpid(), SIGRTMAX - 18) == 0);
-  sleep(1);
 
-  // This triggers the dumping.
-  debug_free(pointer);
-  expected += android::base::StringPrintf("%d: free %p\n", getpid(), pointer);
+  ASSERT_TRUE(android::base::ReadFileToString(record_filename, &actual));
 
-  ASSERT_TRUE(android::base::ReadFileToString(RECORD_ALLOCS_FILE, &actual));
-  ASSERT_EQ(0, unlink(RECORD_ALLOCS_FILE));
-  ASSERT_STREQ(expected.c_str(), actual.c_str());
+  VerifyRecords(expected, actual);
 
   ASSERT_STREQ("", getFakeLogBuf().c_str());
   std::string expected_log = android::base::StringPrintf(
       "6 malloc_debug Cannot create record alloc file %s: Too many symbolic links encountered\n",
-      RECORD_ALLOCS_FILE);
+      record_filename.c_str());
   ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
 }
 
+TEST_F(MallocDebugTest, record_allocs_no_entries_to_write) {
+  InitRecordAllocs("record_allocs=5");
+
+  kill(getpid(), SIGRTMAX - 18);
+
+  std::string actual;
+  ASSERT_FALSE(android::base::ReadFileToString(record_filename, &actual));
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  ASSERT_STREQ("4 malloc_debug No alloc entries to write.\n", getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugTest, record_allocs_write_entries_does_not_allocate) {
+  InitRecordAllocs("record_allocs=5");
+
+  std::vector<std::string> expected;
+
+  void* pointer = debug_malloc(10);
+  ASSERT_TRUE(pointer != nullptr);
+  expected.push_back(android::base::StringPrintf("%d: malloc %p 10", getpid(), pointer));
+  debug_free(pointer);
+  expected.push_back(android::base::StringPrintf("%d: free %p", getpid(), pointer));
+
+  malloc_disable();
+  kill(getpid(), SIGRTMAX - 18);
+  malloc_enable();
+
+  std::string actual;
+  ASSERT_TRUE(android::base::ReadFileToString(record_filename, &actual));
+
+  VerifyRecords(expected, actual);
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  ASSERT_STREQ("", getFakeLogPrint().c_str());
+}
+
 TEST_F(MallocDebugTest, verify_pointers) {
   Init("verify_pointers");
 
@@ -2695,3 +2749,209 @@
   std::string expected_log = std::string("6 malloc_debug Dumping to file: ") + tf.path + "\n\n";
   ASSERT_EQ(expected_log, getFakeLogPrint());
 }
+
+extern "C" bool LogUnreachableMemory(bool, size_t) {
+  static bool return_value = false;
+  return_value = !return_value;
+  return return_value;
+}
+
+TEST_F(MallocDebugTest, check_unreachable_on_signal) {
+  Init("check_unreachable_on_signal");
+
+  ASSERT_TRUE(kill(getpid(), SIGRTMAX - 16) == 0);
+  sleep(1);
+
+  // The first unreachable check will pass.
+  void* pointer = debug_malloc(110);
+  ASSERT_TRUE(pointer != nullptr);
+
+  ASSERT_TRUE(kill(getpid(), SIGRTMAX - 16) == 0);
+  sleep(1);
+
+  // The second unreachable check will fail.
+  debug_free(pointer);
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string expected_log = "4 malloc_debug Starting to check for unreachable memory.\n";
+  ASSERT_STREQ(
+      "4 malloc_debug Starting to check for unreachable memory.\n"
+      "4 malloc_debug Starting to check for unreachable memory.\n"
+      "6 malloc_debug Unreachable check failed, run setenforce 0 and try again.\n",
+      getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugTest, backtrace_only_some_sizes_with_backtrace_size) {
+  Init("leak_track backtrace backtrace_size=120");
+
+  backtrace_fake_add(std::vector<uintptr_t>{0x1000, 0x2000, 0x3000});
+
+  void* pointer1 = debug_malloc(119);
+  ASSERT_TRUE(pointer1 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xa000, 0xb000, 0xc000, 0xd000});
+
+  void* pointer2 = debug_malloc(120);
+  ASSERT_TRUE(pointer2 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xfe000, 0xde000, 0xce000, 0xbe000, 0xae000});
+
+  void* pointer3 = debug_malloc(121);
+  ASSERT_TRUE(pointer3 != nullptr);
+
+  debug_finalize();
+  initialized = false;
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string expected_log = android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 121 at %p (leak 1 of 3)\n", pointer3);
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 120 at %p (leak 2 of 3)\n", pointer2);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0x1000\n";
+  expected_log += "6 malloc_debug   #01 pc 0x2000\n";
+  expected_log += "6 malloc_debug   #02 pc 0x3000\n";
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 119 at %p (leak 3 of 3)\n", pointer1);
+  ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugTest, backtrace_only_some_sizes_with_backtrace_min_size) {
+  Init("leak_track backtrace backtrace_min_size=1000");
+
+  backtrace_fake_add(std::vector<uintptr_t>{0x1000, 0x2000, 0x3000});
+
+  void* pointer1 = debug_malloc(500);
+  ASSERT_TRUE(pointer1 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xa000, 0xb000, 0xc000, 0xd000});
+
+  void* pointer2 = debug_malloc(1000);
+  ASSERT_TRUE(pointer2 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xfe000, 0xde000, 0xce000, 0xbe000, 0xae000});
+
+  void* pointer3 = debug_malloc(1001);
+  ASSERT_TRUE(pointer3 != nullptr);
+
+  debug_finalize();
+  initialized = false;
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string expected_log = android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1001 at %p (leak 1 of 3)\n",
+      pointer3);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0xa000\n";
+  expected_log += "6 malloc_debug   #01 pc 0xb000\n";
+  expected_log += "6 malloc_debug   #02 pc 0xc000\n";
+  expected_log += "6 malloc_debug   #03 pc 0xd000\n";
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1000 at %p (leak 2 of 3)\n",
+      pointer2);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0x1000\n";
+  expected_log += "6 malloc_debug   #01 pc 0x2000\n";
+  expected_log += "6 malloc_debug   #02 pc 0x3000\n";
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 500 at %p (leak 3 of 3)\n", pointer1);
+  ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugTest, backtrace_only_some_sizes_with_backtrace_max_size) {
+  Init("leak_track backtrace backtrace_max_size=1000");
+
+  backtrace_fake_add(std::vector<uintptr_t>{0x1000, 0x2000, 0x3000});
+
+  void* pointer1 = debug_malloc(1000);
+  ASSERT_TRUE(pointer1 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xa000, 0xb000, 0xc000, 0xd000});
+
+  void* pointer2 = debug_malloc(1001);
+  ASSERT_TRUE(pointer2 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xfe000, 0xde000, 0xce000, 0xbe000, 0xae000});
+
+  void* pointer3 = debug_malloc(5000);
+  ASSERT_TRUE(pointer3 != nullptr);
+
+  debug_finalize();
+  initialized = false;
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string expected_log = android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 5000 at %p (leak 1 of 3)\n",
+      pointer3);
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1001 at %p (leak 2 of 3)\n",
+      pointer2);
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1000 at %p (leak 3 of 3)\n",
+      pointer1);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0x1000\n";
+  expected_log += "6 malloc_debug   #01 pc 0x2000\n";
+  expected_log += "6 malloc_debug   #02 pc 0x3000\n";
+
+  ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
+}
+
+TEST_F(MallocDebugTest, backtrace_only_some_sizes_with_backtrace_min_max_size) {
+  Init("leak_track backtrace backtrace_min_size=50 backtrace_max_size=1000");
+
+  backtrace_fake_add(std::vector<uintptr_t>{0x1000, 0x2000, 0x3000});
+
+  void* pointer1 = debug_malloc(49);
+  ASSERT_TRUE(pointer1 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xa000, 0xb000, 0xc000, 0xd000});
+
+  void* pointer2 = debug_malloc(50);
+  ASSERT_TRUE(pointer2 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0xfe000, 0xde000, 0xce000, 0xbe000, 0xae000});
+
+  void* pointer3 = debug_malloc(1000);
+  ASSERT_TRUE(pointer3 != nullptr);
+
+  backtrace_fake_add(std::vector<uintptr_t>{0x1a000, 0x1b000, 0x1c000, 0x1d000, 0x1e000});
+
+  void* pointer4 = debug_malloc(1001);
+  ASSERT_TRUE(pointer4 != nullptr);
+
+  debug_finalize();
+  initialized = false;
+
+  ASSERT_STREQ("", getFakeLogBuf().c_str());
+  std::string expected_log = android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1001 at %p (leak 1 of 4)\n",
+      pointer4);
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 1000 at %p (leak 2 of 4)\n",
+      pointer3);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0xa000\n";
+  expected_log += "6 malloc_debug   #01 pc 0xb000\n";
+  expected_log += "6 malloc_debug   #02 pc 0xc000\n";
+  expected_log += "6 malloc_debug   #03 pc 0xd000\n";
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 50 at %p (leak 3 of 4)\n", pointer2);
+  expected_log += "6 malloc_debug Backtrace at time of allocation:\n";
+  expected_log += "6 malloc_debug   #00 pc 0x1000\n";
+  expected_log += "6 malloc_debug   #01 pc 0x2000\n";
+  expected_log += "6 malloc_debug   #02 pc 0x3000\n";
+
+  expected_log += android::base::StringPrintf(
+      "6 malloc_debug +++ malloc_testing leaked block of size 49 at %p (leak 4 of 4)\n", pointer1);
+
+  ASSERT_STREQ(expected_log.c_str(), getFakeLogPrint().c_str());
+}
diff --git a/libc/malloc_hooks/Android.bp b/libc/malloc_hooks/Android.bp
index 01394da..6b4e606 100644
--- a/libc/malloc_hooks/Android.bp
+++ b/libc/malloc_hooks/Android.bp
@@ -59,6 +59,11 @@
     name: "malloc_hooks_system_tests",
     isolated: true,
 
+    // The clang-analyzer-unix.Malloc and other warnings in these
+    // unit tests are either false positive or in
+    // negative tests that can be ignored.
+    tidy: false,
+
     srcs: [
         "tests/malloc_hooks_tests.cpp",
     ],
diff --git a/libc/platform/bionic/macros.h b/libc/platform/bionic/macros.h
index 076cff1..9e13e0d 100644
--- a/libc/platform/bionic/macros.h
+++ b/libc/platform/bionic/macros.h
@@ -55,6 +55,8 @@
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined x30")
 #elif defined(__i386__)
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%eip")
+#elif defined(__riscv)
+#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined ra")
 #elif defined(__x86_64__)
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%rip")
 #endif
diff --git a/libc/platform/bionic/malloc.h b/libc/platform/bionic/malloc.h
index f0f13d0..ecc8743 100644
--- a/libc/platform/bionic/malloc.h
+++ b/libc/platform/bionic/malloc.h
@@ -100,6 +100,9 @@
   //   arg_size = sizeof(android_mallopt_gwp_asan_options_t)
   M_INITIALIZE_GWP_ASAN = 10,
 #define M_INITIALIZE_GWP_ASAN M_INITIALIZE_GWP_ASAN
+  // Query whether memtag stack is enabled for this process.
+  M_MEMTAG_STACK_IS_ON = 11,
+#define M_MEMTAG_STACK_IS_ON M_MEMTAG_STACK_IS_ON
 };
 
 typedef struct {
@@ -133,7 +136,7 @@
 } android_mallopt_gwp_asan_options_t;
 
 // Manipulates bionic-specific handling of memory allocation APIs such as
-// malloc. Only for use by the Android platform itself.
+// malloc. Only for use by the Android platform and APEXes.
 //
 // On success, returns true. On failure, returns false and sets errno.
 extern "C" bool android_mallopt(int opcode, void* arg, size_t arg_size);
diff --git a/libc/platform/bionic/tls.h b/libc/platform/bionic/tls.h
index bf9e65b..e01eccd 100644
--- a/libc/platform/bionic/tls.h
+++ b/libc/platform/bionic/tls.h
@@ -34,6 +34,8 @@
 # define __get_tls() ({ void** __val; __asm__("mrc p15, 0, %0, c13, c0, 3" : "=r"(__val)); __val; })
 #elif defined(__i386__)
 # define __get_tls() ({ void** __val; __asm__("movl %%gs:0, %0" : "=r"(__val)); __val; })
+#elif defined(__riscv)
+# define __get_tls() ({ void** __val; __asm__("mv %0, tp" : "=r"(__val)); __val; })
 #elif defined(__x86_64__)
 # define __get_tls() ({ void** __val; __asm__("mov %%fs:0, %0" : "=r"(__val)); __val; })
 #else
diff --git a/libc/platform/bionic/tls_defines.h b/libc/platform/bionic/tls_defines.h
index 78099b3..3e2efa3 100644
--- a/libc/platform/bionic/tls_defines.h
+++ b/libc/platform/bionic/tls_defines.h
@@ -114,6 +114,28 @@
 #define TLS_SLOT_BIONIC_TLS       9
 #define MAX_TLS_SLOT              9 // update this value when reserving a slot
 
+#elif defined(__riscv)
+
+// RISC-V ELF Specification[1] specifies that RISC-V uses Variant I as described
+// by the ELF TLS specification, with tp containing the address one past the end
+// of the TCB.
+//
+// [1]: RISC-V ELF Specification. Section: Thread Local Storage
+// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#thread-local-storage
+
+#define MIN_TLS_SLOT             (-9) // update this value when reserving a slot
+
+#define TLS_SLOT_BIONIC_TLS      (-9)
+#define TLS_SLOT_DTV             (-8)
+#define TLS_SLOT_THREAD_ID       (-7)
+#define TLS_SLOT_APP             (-6)
+#define TLS_SLOT_OPENGL          (-5)
+#define TLS_SLOT_OPENGL_API      (-4)
+#define TLS_SLOT_STACK_GUARD     (-3)
+#define TLS_SLOT_SANITIZER       (-2)
+#define TLS_SLOT_ART_THREAD_SELF (-1)
+#define MAX_TLS_SLOT             (-1)
+
 #endif
 
 #define BIONIC_TLS_SLOTS (MAX_TLS_SLOT - MIN_TLS_SLOT + 1)
diff --git a/libc/private/bionic_asm.h b/libc/private/bionic_asm.h
index d68a2d6..78e5046 100644
--- a/libc/private/bionic_asm.h
+++ b/libc/private/bionic_asm.h
@@ -45,6 +45,8 @@
 #include <private/bionic_asm_arm.h>
 #elif defined(__i386__)
 #include <private/bionic_asm_x86.h>
+#elif defined(__riscv)
+#include <private/bionic_asm_riscv64.h>
 #elif defined(__x86_64__)
 #include <private/bionic_asm_x86_64.h>
 #endif
diff --git a/libc/private/bionic_asm_arm64.h b/libc/private/bionic_asm_arm64.h
index 5d83d9b..ffc7181 100644
--- a/libc/private/bionic_asm_arm64.h
+++ b/libc/private/bionic_asm_arm64.h
@@ -76,3 +76,4 @@
 #define NT_MEMTAG_LEVEL_ASYNC 1
 #define NT_MEMTAG_LEVEL_SYNC 2
 #define NT_MEMTAG_HEAP 4
+#define NT_MEMTAG_STACK 8
diff --git a/libc/private/bionic_asm_riscv64.h b/libc/private/bionic_asm_riscv64.h
new file mode 100644
index 0000000..463ca31
--- /dev/null
+++ b/libc/private/bionic_asm_riscv64.h
@@ -0,0 +1,43 @@
+/*	$OpenBSD: asm.h,v 1.1 2004/02/01 05:09:49 drahn Exp $	*/
+/*	$NetBSD: asm.h,v 1.4 2001/07/16 05:43:32 matt Exp $	*/
+
+/*
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * William Jolitz.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	from: @(#)asm.h	5.5 (Berkeley) 5/7/91
+ */
+
+#pragma once
+
+#define __bionic_asm_align 16
+
+#undef __bionic_asm_function_type
+#define __bionic_asm_function_type %function
diff --git a/libc/private/bionic_elf_tls.h b/libc/private/bionic_elf_tls.h
index e0ec7b5..79ffcc4 100644
--- a/libc/private/bionic_elf_tls.h
+++ b/libc/private/bionic_elf_tls.h
@@ -201,3 +201,18 @@
 struct bionic_tcb;
 void __free_dynamic_tls(bionic_tcb* tcb);
 void __notify_thread_exit_callbacks();
+
+#if defined(__riscv)
+// TLS_DTV_OFFSET is a constant used in relocation fields, defined in RISC-V ELF Specification[1]
+// The front of the TCB contains a pointer to the DTV, and each pointer in DTV
+// points to 0x800 past the start of a TLS block to make full use of the range
+// of load/store instructions, refer to [2].
+//
+// [1]: RISC-V ELF Specification.
+// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#constants
+// [2]: Documentation of TLS data structures
+// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/53
+#define TLS_DTV_OFFSET 0x800
+#else
+#define TLS_DTV_OFFSET 0
+#endif
diff --git a/libc/private/bionic_globals.h b/libc/private/bionic_globals.h
index e105c18..520e50f 100644
--- a/libc/private/bionic_globals.h
+++ b/libc/private/bionic_globals.h
@@ -29,24 +29,25 @@
 #ifndef _PRIVATE_BIONIC_GLOBALS_H
 #define _PRIVATE_BIONIC_GLOBALS_H
 
+#include <inttypes.h>
+#include <link.h>
+#include <platform/bionic/malloc.h>
+#include <pthread.h>
 #include <stdatomic.h>
 #include <sys/cdefs.h>
-#include <link.h>
-#include <pthread.h>
 
+#include "private/WriteProtected.h"
 #include "private/bionic_allocator.h"
 #include "private/bionic_elf_tls.h"
 #include "private/bionic_fdsan.h"
 #include "private/bionic_malloc_dispatch.h"
 #include "private/bionic_vdso.h"
-#include "private/WriteProtected.h"
-
-#include <platform/bionic/malloc.h>
 
 struct libc_globals {
   vdso_entry vdso[VDSO_END];
   long setjmp_cookie;
   uintptr_t heap_pointer_tag;
+  _Atomic(bool) memtag_stack;
 
   // In order to allow a complete switch between dispatch tables without
   // the need for copying each function by function in the structure,
@@ -110,8 +111,11 @@
   const char* scudo_stack_depot = nullptr;
   const char* scudo_region_info = nullptr;
   const char* scudo_ring_buffer = nullptr;
+  size_t scudo_ring_buffer_size = 0;
 
   HeapTaggingLevel initial_heap_tagging_level = M_HEAP_TAGGING_LEVEL_NONE;
+  bool initial_memtag_stack = false;
+  int64_t heap_tagging_upgrade_timer_sec = 0;
 };
 
 __LIBC_HIDDEN__ libc_shared_globals* __libc_shared_globals();
diff --git a/libc/seccomp/seccomp_bpfs.h b/libc/seccomp/seccomp_bpfs.h
index 3bdffa9..34219e2 100644
--- a/libc/seccomp/seccomp_bpfs.h
+++ b/libc/seccomp/seccomp_bpfs.h
@@ -33,6 +33,13 @@
 extern const struct sock_filter arm64_system_filter[];
 extern const size_t arm64_system_filter_size;
 
+extern const struct sock_filter riscv64_app_filter[];
+extern const size_t riscv64_app_filter_size;
+extern const struct sock_filter riscv64_app_zygote_filter[];
+extern const size_t riscv64_app_zygote_filter_size;
+extern const struct sock_filter riscv64_system_filter[];
+extern const size_t riscv64_system_filter_size;
+
 extern const struct sock_filter x86_app_filter[];
 extern const size_t x86_app_filter_size;
 extern const struct sock_filter x86_app_zygote_filter[];
diff --git a/libc/seccomp/seccomp_policy.cpp b/libc/seccomp/seccomp_policy.cpp
index a42816e..1ca4eec 100644
--- a/libc/seccomp/seccomp_policy.cpp
+++ b/libc/seccomp/seccomp_policy.cpp
@@ -25,13 +25,13 @@
 #include <vector>
 
 #include <android-base/logging.h>
+#include <android-base/macros.h>
 
 #include "func_to_syscall_nrs.h"
 #include "seccomp_bpfs.h"
 
 #if defined __arm__ || defined __aarch64__
 
-#define DUAL_ARCH
 #define PRIMARY_ARCH AUDIT_ARCH_AARCH64
 static const struct sock_filter* primary_app_filter = arm64_app_filter;
 static const size_t primary_app_filter_size = arm64_app_filter_size;
@@ -52,9 +52,9 @@
 
 static const long secondary_setresgid = __arm_setresgid;
 static const long secondary_setresuid = __arm_setresuid;
+
 #elif defined __i386__ || defined __x86_64__
 
-#define DUAL_ARCH
 #define PRIMARY_ARCH AUDIT_ARCH_X86_64
 static const struct sock_filter* primary_app_filter = x86_64_app_filter;
 static const size_t primary_app_filter_size = x86_64_app_filter_size;
@@ -75,6 +75,20 @@
 
 static const long secondary_setresgid = __x86_setresgid;
 static const long secondary_setresuid = __x86_setresuid;
+
+#elif defined(__riscv)
+
+#define PRIMARY_ARCH AUDIT_ARCH_RISCV64
+static const struct sock_filter* primary_app_filter = riscv64_app_filter;
+static const size_t primary_app_filter_size = riscv64_app_filter_size;
+static const struct sock_filter* primary_app_zygote_filter = riscv64_app_zygote_filter;
+static const size_t primary_app_zygote_filter_size = riscv64_app_zygote_filter_size;
+static const struct sock_filter* primary_system_filter = riscv64_system_filter;
+static const size_t primary_system_filter_size = riscv64_system_filter_size;
+
+static const long primary_setresgid = __riscv64_setresgid;
+static const long primary_setresuid = __riscv64_setresuid;
+
 #else
 #error No architecture was defined!
 #endif
@@ -98,7 +112,7 @@
     f.push_back(BPF_STMT(BPF_LD|BPF_W|BPF_ABS, syscall_nr));
 }
 
-#ifdef DUAL_ARCH
+#if defined(SECONDARY_ARCH)
 static bool SetValidateArchitectureJumpTarget(size_t offset, filter& f) {
     size_t jump_length = f.size() - offset - 1;
     auto u8_jump_length = (__u8) jump_length;
@@ -149,9 +163,17 @@
 // that's the only system call we need to check here. A CTS test ensures the other
 // calls will remain blocked.
 static void ValidateSetUidGid(filter& f, uint32_t uid_gid_min, uint32_t uid_gid_max, bool primary) {
+#if defined(SECONDARY_ARCH)
+    __u32 setresuid_nr = primary ? primary_setresuid : secondary_setresuid;
+    __u32 setresgid_nr = primary ? primary_setresgid : secondary_setresgid;
+#else
+    __u32 setresuid_nr = primary_setresuid;
+    __u32 setresgid_nr = primary_setresgid;
+    UNUSED(primary);
+#endif
+
     // Check setresuid(ruid, euid, sguid) fall within range
     ExamineSyscall(f);
-    __u32 setresuid_nr = primary ? primary_setresuid : secondary_setresuid;
     f.push_back(BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, setresuid_nr, 0, 12));
     for (int arg = 0; arg < 3; arg++) {
         ValidateSyscallArgInRange(f, arg, uid_gid_min, uid_gid_max);
@@ -159,7 +181,6 @@
 
     // Check setresgid(rgid, egid, sgid) fall within range
     ExamineSyscall(f);
-    __u32 setresgid_nr = primary ? primary_setresgid : secondary_setresgid;
     f.push_back(BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, setresgid_nr, 0, 12));
     for (int arg = 0; arg < 3; arg++) {
         ValidateSyscallArgInRange(f, arg, uid_gid_min, uid_gid_max);
@@ -184,7 +205,7 @@
 
 bool _install_setuidgid_filter(uint32_t uid_gid_min, uint32_t uid_gid_max) {
     filter f;
-#ifdef DUAL_ARCH
+#if defined(SECONDARY_ARCH)
     // Note that for mixed 64/32 bit architectures, ValidateArchitecture inserts a
     // jump that must be changed to point to the start of the 32-bit policy
     // 32 bit syscalls will not hit the policy between here and the call to SetJump
@@ -195,7 +216,7 @@
 
     ValidateSetUidGid(f, uid_gid_min, uid_gid_max, true /* primary */);
 
-#ifdef DUAL_ARCH
+#if defined(SECONDARY_ARCH)
     if (!SetValidateArchitectureJumpTarget(offset_to_secondary_filter, f)) {
         return false;
     }
@@ -213,32 +234,43 @@
 };
 
 bool _set_seccomp_filter(FilterType type) {
-    const sock_filter *p, *s;
-    size_t p_size, s_size;
     filter f;
 
+    const sock_filter* p;
+    size_t p_size;
+#if defined(SECONDARY_ARCH)
+    const sock_filter* s;
+    size_t s_size;
+#endif
+
     switch (type) {
       case APP:
         p = primary_app_filter;
         p_size = primary_app_filter_size;
+#if defined(SECONDARY_ARCH)
         s = secondary_app_filter;
         s_size = secondary_app_filter_size;
+#endif
         break;
       case APP_ZYGOTE:
         p = primary_app_zygote_filter;
         p_size = primary_app_zygote_filter_size;
+#if defined(SECONDARY_ARCH)
         s = secondary_app_zygote_filter;
         s_size = secondary_app_zygote_filter_size;
+#endif
         break;
       case SYSTEM:
         p = primary_system_filter;
         p_size = primary_system_filter_size;
+#if defined(SECONDARY_ARCH)
         s = secondary_system_filter;
         s_size = secondary_system_filter_size;
+#endif
         break;
     }
 
-#ifdef DUAL_ARCH
+#if defined(SECONDARY_ARCH)
     // Note that for mixed 64/32 bit architectures, ValidateArchitecture inserts a
     // jump that must be changed to point to the start of the 32-bit policy
     // 32 bit syscalls will not hit the policy between here and the call to SetJump
@@ -254,7 +286,7 @@
     }
     Disallow(f);
 
-#ifdef DUAL_ARCH
+#if defined(SECONDARY_ARCH)
     if (!SetValidateArchitectureJumpTarget(offset_to_secondary_filter, f)) {
         return false;
     }
diff --git a/libc/stdio/printf_common.h b/libc/stdio/printf_common.h
index 4dc5ca1..e761835 100644
--- a/libc/stdio/printf_common.h
+++ b/libc/stdio/printf_common.h
@@ -524,6 +524,8 @@
       case 'u':
       case 'X':
       case 'x':
+      case 'B':
+      case 'b':
         ADDUARG();
         break;
       default: /* "%?" prints ?, unless ? is NUL */
diff --git a/libc/stdio/stdio.cpp b/libc/stdio/stdio.cpp
index 08df2eb..27813a6 100644
--- a/libc/stdio/stdio.cpp
+++ b/libc/stdio/stdio.cpp
@@ -1129,7 +1129,9 @@
 
   // Read directly into the caller's buffer.
   while (total > 0) {
-    ssize_t bytes_read = (*fp->_read)(fp->_cookie, dst, total);
+    // The _read function pointer takes an int instead of a size_t.
+    int chunk_size = MIN(total, INT_MAX);
+    ssize_t bytes_read = (*fp->_read)(fp->_cookie, dst, chunk_size);
     if (bytes_read <= 0) {
       fp->_flags |= (bytes_read == 0) ? __SEOF : __SERR;
       break;
diff --git a/libc/stdio/stdio_ext.cpp b/libc/stdio/stdio_ext.cpp
index 945813e..99a8af7 100644
--- a/libc/stdio/stdio_ext.cpp
+++ b/libc/stdio/stdio_ext.cpp
@@ -67,6 +67,12 @@
   return fp->_p - fp->_bf._base;
 }
 
+size_t __freadahead(FILE* fp) {
+  // Normally _r is the amount of input already available.
+  // When there's ungetc() data, _r counts that and _ur is the previous _r.
+  return fp->_r + (HASUB(fp) ? fp->_ur : 0);
+}
+
 void _flushlbf() {
   // If we flush all streams, we know we've flushed all the line-buffered streams.
   fflush(nullptr);
diff --git a/libc/stdio/vfprintf.cpp b/libc/stdio/vfprintf.cpp
index d99d09c..d83a5bf 100644
--- a/libc/stdio/vfprintf.cpp
+++ b/libc/stdio/vfprintf.cpp
@@ -81,8 +81,8 @@
   char* dtoaresult = nullptr;
 
   uintmax_t _umax;             /* integer arguments %[diouxX] */
-  enum { OCT, DEC, HEX } base; /* base for %[diouxX] conversion */
-  int dprec;                   /* a copy of prec if %[diouxX], 0 otherwise */
+  enum { BIN, OCT, DEC, HEX } base; /* base for %[bBdiouxX] conversion */
+  int dprec;                   /* a copy of prec if %[bBdiouxX], 0 otherwise */
   int realsz;                  /* field size expanded by dprec */
   int size;                    /* size of converted field or string */
   const char* xdigs;           /* digits for %[xX] conversion */
@@ -304,6 +304,12 @@
       case 'z':
         flags |= SIZEINT;
         goto rflag;
+      case 'B':
+      case 'b':
+        _umax = UARG();
+        base = BIN;
+        if (flags & ALT && _umax != 0) ox[1] = ch;
+        goto nosign;
       case 'C':
         flags |= LONGINT;
         __BIONIC_FALLTHROUGH;
@@ -550,6 +556,13 @@
            * a variable; hence this switch.
            */
           switch (base) {
+            case BIN:
+              do {
+                *--cp = to_char(_umax & 1);
+                _umax >>= 1;
+              } while (_umax);
+              break;
+
             case OCT:
               do {
                 *--cp = to_char(_umax & 7);
@@ -599,7 +612,7 @@
      * first be prefixed by any sign or other prefix; otherwise,
      * it should be blank padded before the prefix is emitted.
      * After any left-hand padding and prefixing, emit zeroes
-     * required by a decimal %[diouxX] precision, then print the
+     * required by a decimal %[bBdiouxX] precision, then print the
      * string proper, then emit zeroes required by any leftover
      * floating precision; finally, if LADJUST, pad with blanks.
      *
diff --git a/libc/stdio/vfscanf.cpp b/libc/stdio/vfscanf.cpp
index 424c4ef..d05a3a6 100644
--- a/libc/stdio/vfscanf.cpp
+++ b/libc/stdio/vfscanf.cpp
@@ -69,7 +69,8 @@
 #define HAVESIGN   0x04000 // Sign detected
 #define NDIGITS    0x08000 // No digits detected
 #define PFXOK      0x10000 // "0x" prefix is (still) legal
-#define NZDIGITS   0x20000 // No zero digits detected
+#define PFBOK      0x20000 // "0b" prefix is (still) legal
+#define NZDIGITS   0x40000 // No zero digits detected
 
 // Conversion types.
 #define CT_CHAR 0   // %c conversion
@@ -101,9 +102,6 @@
   void* allocation = nullptr; // Allocated but unassigned result for %mc/%ms/%m[.
   size_t capacity = 0; // Number of char/wchar_t units allocated in `allocation`.
 
-  /* `basefix' is used to avoid `if' tests in the integer scanner */
-  static short basefix[17] = { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
-
   _SET_ORIENTATION(fp, -1);
 
   nassigned = 0;
@@ -188,6 +186,12 @@
        * Conversions.
        * Those marked `compat' are for 4.[123]BSD compatibility.
        */
+      case 'b':
+        c = CT_INT;
+        base = 2;
+        flags |= PFBOK; /* enable 0b prefixing */
+        break;
+
       case 'D': /* compat */
         flags |= LONG;
         __BIONIC_FALLTHROUGH;
@@ -558,7 +562,7 @@
              * digits (zero or nonzero) have been
              * scanned (only signs), we will have
              * base==0.  In that case, we should set
-             * it to 8 and enable 0x prefixing.
+             * it to 8 and enable 0b/0x prefixing.
              * Also, if we have not scanned zero digits
              * before this, do not turn off prefixing
              * (someone else will turn it off if we
@@ -567,15 +571,24 @@
             case '0':
               if (base == 0) {
                 base = 8;
-                flags |= PFXOK;
+                flags |= PFBOK | PFXOK;
               }
-              if (flags & NZDIGITS)
+              if (flags & NZDIGITS) {
                 flags &= ~(SIGNOK | NZDIGITS | NDIGITS);
-              else
-                flags &= ~(SIGNOK | PFXOK | NDIGITS);
+              } else {
+                flags &= ~(SIGNOK | PFBOK | PFXOK | NDIGITS);
+              }
               goto ok;
-
-            /* 1 through 7 always legal */
+            case 'B':
+            case 'b':
+              // Is this 'b' or 'B' potentially part of an "0b" prefix?
+              if ((flags & PFBOK) && p == buf + 1 + !!(flags & HAVESIGN)) {
+                base = 2;
+                flags &= ~PFBOK;
+                goto ok;
+              }
+              // No? Fall through and see if it's a hex digit instead then...
+              __BIONIC_FALLTHROUGH;
             case '1':
             case '2':
             case '3':
@@ -583,34 +596,21 @@
             case '5':
             case '6':
             case '7':
-              base = basefix[base];
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
-              goto ok;
-
-            /* digits 8 and 9 ok iff decimal or hex */
             case '8':
             case '9':
-              base = basefix[base];
-              if (base <= 8) break; /* not legal here */
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
-              goto ok;
-
-            /* letters ok iff hex */
             case 'A':
-            case 'B':
             case 'C':
             case 'D':
             case 'E':
             case 'F':
             case 'a':
-            case 'b':
             case 'c':
             case 'd':
             case 'e':
             case 'f':
-              /* no need to fix base here */
-              if (base <= 10) break; /* not legal here */
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
+              if (base == 0) base = 10;
+              if (base != 16 && (c - '0') >= base) break; /* not legal here */
+              flags &= ~(SIGNOK | PFBOK | PFXOK | NDIGITS);
               goto ok;
 
             /* sign ok only as first character */
@@ -653,17 +653,16 @@
             break; /* EOF */
         }
         /*
-         * If we had only a sign, it is no good; push
-         * back the sign.  If the number ends in `x',
-         * it was [sign] '0' 'x', so push back the x
-         * and treat it as [sign] '0'.
+         * If we had only a sign, it is no good; push back the sign.
+         * If the number was `[-+]0[BbXx]`, push back and treat it
+         * as `[-+]0`.
          */
         if (flags & NDIGITS) {
           if (p > buf) (void)ungetc(*(u_char*)--p, fp);
           goto match_failure;
         }
         c = ((u_char*)p)[-1];
-        if (c == 'x' || c == 'X') {
+        if ((base == 2 && (c == 'b' || c == 'B')) || c == 'x' || c == 'X') {
           --p;
           (void)ungetc(c, fp);
         }
diff --git a/libc/stdio/vfwprintf.cpp b/libc/stdio/vfwprintf.cpp
index dd51eec..9819a73 100644
--- a/libc/stdio/vfwprintf.cpp
+++ b/libc/stdio/vfwprintf.cpp
@@ -81,8 +81,8 @@
   char* dtoaresult = nullptr;
 
   uintmax_t _umax;             /* integer arguments %[diouxX] */
-  enum { OCT, DEC, HEX } base; /* base for %[diouxX] conversion */
-  int dprec;                   /* a copy of prec if %[diouxX], 0 otherwise */
+  enum { BIN, OCT, DEC, HEX } base; /* base for %[bBdiouxX] conversion */
+  int dprec;                   /* a copy of prec if %[bBdiouxX], 0 otherwise */
   int realsz;                  /* field size expanded by dprec */
   int size;                    /* size of converted field or string */
   const char* xdigs;           /* digits for %[xX] conversion */
@@ -293,6 +293,12 @@
       case 'z':
         flags |= SIZEINT;
         goto rflag;
+      case 'B':
+      case 'b':
+        _umax = UARG();
+        base = BIN;
+        if (flags & ALT && _umax != 0) ox[1] = ch;
+        goto nosign;
       case 'C':
         flags |= LONGINT;
         __BIONIC_FALLTHROUGH;
@@ -539,6 +545,13 @@
            * a variable; hence this switch.
            */
           switch (base) {
+            case BIN:
+              do {
+                *--cp = to_char(_umax & 1);
+                _umax >>= 1;
+              } while (_umax);
+              break;
+
             case OCT:
               do {
                 *--cp = to_char(_umax & 7);
@@ -588,7 +601,7 @@
      * first be prefixed by any sign or other prefix; otherwise,
      * it should be blank padded before the prefix is emitted.
      * After any left-hand padding and prefixing, emit zeroes
-     * required by a decimal %[diouxX] precision, then print the
+     * required by a decimal %[bBdiouxX] precision, then print the
      * string proper, then emit zeroes required by any leftover
      * floating precision; finally, if LADJUST, pad with blanks.
      *
diff --git a/libc/stdio/vfwscanf.c b/libc/stdio/vfwscanf.cpp
similarity index 91%
rename from libc/stdio/vfwscanf.c
rename to libc/stdio/vfwscanf.cpp
index 71cd49b..06f706a 100644
--- a/libc/stdio/vfwscanf.c
+++ b/libc/stdio/vfwscanf.cpp
@@ -42,6 +42,8 @@
 #include <wctype.h>
 #include "local.h"
 
+#include <platform/bionic/macros.h>
+
 #define BUF 513 /* Maximum length of numeric string. */
 
 /*
@@ -65,15 +67,16 @@
  * SIGNOK, HAVESIGN, NDIGITS, DPTOK, and EXPOK are for floating point;
  * SIGNOK, HAVESIGN, NDIGITS, PFXOK, and NZDIGITS are for integral.
  */
-#define SIGNOK 0x01000   /* +/- is (still) legal */
+#define SIGNOK   0x01000  /* +/- is (still) legal */
 #define HAVESIGN 0x02000 /* sign detected */
-#define NDIGITS 0x04000  /* no digits detected */
+#define NDIGITS  0x04000 /* no digits detected */
 
-#define DPTOK 0x08000 /* (float) decimal point is still legal */
-#define EXPOK 0x10000 /* (float) exponent (e+3, etc) still legal */
+#define DPTOK    0x08000 /* (float) decimal point is still legal */
+#define EXPOK    0x10000 /* (float) exponent (e+3, etc) still legal */
 
-#define PFXOK 0x08000    /* 0x prefix is (still) legal */
-#define NZDIGITS 0x10000 /* no zero digits detected */
+#define PFBOK    0x20000 /* 0x prefix is (still) legal */
+#define PFXOK    0x40000 /* 0x prefix is (still) legal */
+#define NZDIGITS 0x80000 /* no zero digits detected */
 
 /*
  * Conversion types.
@@ -147,9 +150,6 @@
   char mbbuf[MB_LEN_MAX]; /* temporary mb. character buffer */
   mbstate_t mbs;
 
-  /* `basefix' is used to avoid `if' tests in the integer scanner */
-  static short basefix[17] = { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
-
   _SET_ORIENTATION(fp, 1);
 
   nassigned = 0;
@@ -239,9 +239,15 @@
        * Conversions.
        * Those marked `compat' are for 4.[123]BSD compatibility.
        */
+      case 'b':
+        c = CT_INT;
+        base = 2;
+        flags |= PFBOK; /* enable 0b prefixing */
+        break;
+
       case 'D': /* compat */
         flags |= LONG;
-        /* FALLTHROUGH */
+        __BIONIC_FALLTHROUGH;
       case 'd':
         c = CT_INT;
         base = 10;
@@ -254,7 +260,7 @@
 
       case 'O': /* compat */
         flags |= LONG;
-        /* FALLTHROUGH */
+        __BIONIC_FALLTHROUGH;
       case 'o':
         c = CT_INT;
         flags |= UNSIGNED;
@@ -468,7 +474,7 @@
              * digits (zero or nonzero) have been
              * scanned (only signs), we will have
              * base==0.  In that case, we should set
-             * it to 8 and enable 0x prefixing.
+             * it to 8 and enable 0b/0x prefixing.
              * Also, if we have not scanned zero digits
              * before this, do not turn off prefixing
              * (someone else will turn it off if we
@@ -477,15 +483,26 @@
             case '0':
               if (base == 0) {
                 base = 8;
-                flags |= PFXOK;
+                flags |= PFBOK | PFXOK;
               }
-              if (flags & NZDIGITS)
+              if (flags & NZDIGITS) {
                 flags &= ~(SIGNOK | NZDIGITS | NDIGITS);
-              else
-                flags &= ~(SIGNOK | PFXOK | NDIGITS);
+              } else {
+                flags &= ~(SIGNOK | PFBOK | PFXOK | NDIGITS);
+              }
               goto ok;
 
             /* 1 through 7 always legal */
+            case 'B':
+            case 'b':
+              // Is this 'b' potentially part of an "0b" prefix?
+              if ((flags & PFBOK) && p == buf + 1 + !!(flags & HAVESIGN)) {
+                base = 2;
+                flags &= ~PFBOK;
+                goto ok;
+              }
+              // No? Fall through and see if it's a hex digit instead then...
+              __BIONIC_FALLTHROUGH;
             case '1':
             case '2':
             case '3':
@@ -493,34 +510,21 @@
             case '5':
             case '6':
             case '7':
-              base = basefix[base];
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
-              goto ok;
-
-            /* digits 8 and 9 ok iff decimal or hex */
             case '8':
             case '9':
-              base = basefix[base];
-              if (base <= 8) break; /* not legal here */
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
-              goto ok;
-
-            /* letters ok iff hex */
             case 'A':
-            case 'B':
             case 'C':
             case 'D':
             case 'E':
             case 'F':
             case 'a':
-            case 'b':
             case 'c':
             case 'd':
             case 'e':
             case 'f':
-              /* no need to fix base here */
-              if (base <= 10) break; /* not legal here */
-              flags &= ~(SIGNOK | PFXOK | NDIGITS);
+              if (base == 0) base = 10;
+              if (base != 16 && (int)(c - '0') >= base) break; /* not legal here */
+              flags &= ~(SIGNOK | PFBOK | PFXOK | NDIGITS);
               goto ok;
 
             /* sign ok only as first character */
@@ -560,17 +564,16 @@
           *p++ = (wchar_t)c;
         }
         /*
-         * If we had only a sign, it is no good; push
-         * back the sign.  If the number ends in `x',
-         * it was [sign] '0' 'x', so push back the x
-         * and treat it as [sign] '0'.
+         * If we had only a sign, it is no good; push back the sign.
+         * If the number was `[-+]0[BbXx]`, push back and treat it
+         * as `[-+]0`.
          */
         if (flags & NDIGITS) {
           if (p > buf) __ungetwc(*--p, fp);
           goto match_failure;
         }
         c = p[-1];
-        if (c == 'x' || c == 'X') {
+        if ((base == 2 && (c == 'b' || c == 'B')) || c == 'x' || c == 'X') {
           --p;
           __ungetwc(c, fp);
         }
diff --git a/libc/tools/Android.bp b/libc/tools/Android.bp
index 116b853..c7fce64 100644
--- a/libc/tools/Android.bp
+++ b/libc/tools/Android.bp
@@ -8,8 +8,8 @@
     default_applicable_licenses: ["bionic_libc_license"],
 }
 
-filegroup {
-    name: "bionic-gensyscalls",
+python_binary_host {
+    name: "gensyscalls",
     srcs: ["gensyscalls.py"],
 }
 
diff --git a/libc/tools/genfunctosyscallnrs.py b/libc/tools/genfunctosyscallnrs.py
index fa48844..9b8f7ee 100755
--- a/libc/tools/genfunctosyscallnrs.py
+++ b/libc/tools/genfunctosyscallnrs.py
@@ -21,12 +21,12 @@
 
 
 def gen_syscall_nrs(out_file, base_syscall_file, syscall_NRs):
-    for arch in SupportedArchitectures:
+    for arch in syscall_NRs.keys():
         base_names = load_syscall_names_from_file(base_syscall_file, arch)
 
         for func, syscall in base_names.items():
             out_file.write("#define __" + arch + "_" + func + " " +
-                           str(syscall_NRs[arch][syscall]) + ";\n")
+                           str(syscall_NRs[arch][syscall]) + "\n")
 
 
 def main():
diff --git a/libc/tools/genseccomp.py b/libc/tools/genseccomp.py
index 33bf470..8a07caf 100755
--- a/libc/tools/genseccomp.py
+++ b/libc/tools/genseccomp.py
@@ -5,9 +5,10 @@
 import operator
 import os
 import re
+import sys
 import textwrap
 
-from gensyscalls import SupportedArchitectures, SysCallsTxtParser
+from gensyscalls import SysCallsTxtParser
 
 
 BPF_JGE = "BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, {0}, {1}, {2})"
@@ -84,42 +85,46 @@
   #    #define __(ARM_)?NR_${NAME} ${VALUE}
   #
   # Where ${VALUE} is a preprocessor expression.
+  #
+  # Newer architectures have things like this though:
+  #
+  #    #define __NR3264_fcntl 25
+  #    #define __NR_fcntl __NR3264_fcntl
+  #
+  # So we need to keep track of the __NR3264_* constants and substitute them.
 
-  constant_re = re.compile(
-      r'^\s*#define\s+([A-Za-z_][A-Za-z0-9_]+)\s+(.+)\s*$')
+  line_re = re.compile(r'^# \d+ ".*".*')
+  undef_re = re.compile(r'^#undef\s.*')
+  define_re = re.compile(r'^\s*#define\s+([A-Za-z0-9_(,)]+)(?:\s+(.+))?\s*$')
   token_re = re.compile(r'\b[A-Za-z_][A-Za-z0-9_]+\b')
   constants = {}
+  nr3264s = {}
   with open(names_path) as f:
     for line in f:
-      m = constant_re.match(line)
-      if m is None:
-        continue
-      try:
+      line = line.strip()
+      m = define_re.match(line)
+      if m:
         name = m.group(1)
-        # eval() takes care of any arithmetic that may be done
-        value = eval(token_re.sub(lambda x: str(constants[x.group(0)]),
-                                  m.group(2)))
+        value = m.group(2)
+        if name.startswith('__NR3264'):
+          nr3264s[name] = value
+        elif name.startswith('__NR_') or name.startswith('__ARM_NR_'):
+          if value in nr3264s:
+            value = nr3264s[value]
+          # eval() takes care of any arithmetic that may be done
+          value = eval(token_re.sub(lambda x: str(constants[x.group(0)]), value))
 
-        constants[name] = value
-      except:  # pylint: disable=bare-except
-        # TODO: This seems wrong.
-        # Key error doesn't seem like the error the original author was trying
-        # to catch. It looks like the intent was to catch IndexError from
-        # match.group() for non-matching lines, but that's impossible because
-        # the match object is checked and continued if not matched. What
-        # actually happens is that KeyError is thrown by constants[x.group(0)]
-        # on at least the first run because the dict is empty.
-        #
-        # It's also matching syntax errors because not all C integer literals
-        # are valid Python integer literals, e.g. 10L.
-        logging.debug('Failed to parse %s', line)
+          constants[name] = value
+      else:
+        if not line_re.match(line) and not undef_re.match(line) and line:
+          print('%s: failed to parse line `%s`' % (names_path, line))
+          sys.exit(1)
 
   syscalls = {}
   for name, value in constants.items():
-    if not name.startswith("__NR_") and not name.startswith("__ARM_NR"):
-      continue
+    # Remove the __NR_ prefix.
+    # TODO: why not __ARM_NR too?
     if name.startswith("__NR_"):
-      # Remote the __NR_ prefix
       name = name[len("__NR_"):]
     syscalls[name] = value
 
@@ -237,7 +242,7 @@
 
 def gen_policy(name_modifier, out_dir, base_syscall_file, syscall_files,
                syscall_NRs, priority_file):
-  for arch in SupportedArchitectures:
+  for arch in syscall_NRs.keys():
     base_names = load_syscall_names_from_file(base_syscall_file, arch)
     allowlist_names = set()
     blocklist_names = set()
@@ -251,11 +256,11 @@
       priorities = load_syscall_priorities_from_file(priority_file)
 
     allowed_syscalls = []
-    for name in merge_names(base_names, allowlist_names, blocklist_names):
+    for name in sorted(merge_names(base_names, allowlist_names, blocklist_names)):
       try:
         allowed_syscalls.append((name, syscall_NRs[arch][name]))
       except:
-        logging.exception("Failed to find %s in %s", name, arch)
+        logging.exception("Failed to find %s in %s (%s)", name, arch, syscall_NRs[arch])
         raise
     output = construct_bpf(allowed_syscalls, arch, name_modifier, priorities)
 
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index baaa52d..a525a98 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -15,7 +15,7 @@
 import tempfile
 
 
-SupportedArchitectures = [ "arm", "arm64", "x86", "x86_64" ]
+SupportedArchitectures = [ "arm", "arm64", "riscv64", "x86", "x86_64" ]
 
 syscall_stub_header = \
 """
@@ -80,6 +80,24 @@
 
 
 #
+# RISC-V64 assembler templates for each syscall stub
+#
+
+riscv64_call = syscall_stub_header + """\
+    li      a7, %(__NR_name)s
+    ecall
+
+    li      a7, -MAX_ERRNO
+    bgtu    a0, a7, 1f
+
+    ret
+1:
+    neg     a0, a0
+    j       __set_errno_internal
+END(%(func)s)
+"""
+
+#
 # x86 assembler templates for each syscall stub
 #
 
@@ -228,6 +246,10 @@
     return arm64_call % syscall
 
 
+def riscv64_genstub(syscall):
+    return riscv64_call % syscall
+
+
 def x86_genstub(syscall):
     result     = syscall_stub_header % syscall
 
@@ -311,10 +333,12 @@
 class SysCallsTxtParser:
     def __init__(self):
         self.syscalls = []
-        self.lineno   = 0
+        self.lineno = 0
+        self.errors = False
 
     def E(self, msg):
         print("%d: %s" % (self.lineno, msg))
+        self.errors = True
 
     def parse_line(self, line):
         """ parse a syscall spec line.
@@ -421,6 +445,8 @@
             if not line: continue
             if line[0] == '#': continue
             self.parse_line(line)
+        if self.errors:
+            sys.exit(1)
 
     def parse_file(self, file_path):
         with open(file_path) as fp:
@@ -440,6 +466,9 @@
         if "arm64" in syscall:
             syscall["asm-arm64"] = add_footer(64, arm64_genstub(syscall), syscall)
 
+        if "riscv64" in syscall:
+            syscall["asm-riscv64"] = add_footer(64, riscv64_genstub(syscall), syscall)
+
         if "x86" in syscall:
             if syscall["socketcall_id"] >= 0:
                 syscall["asm-x86"] = add_footer(32, x86_genstub_socketcall(syscall), syscall)
diff --git a/libc/tzcode/asctime.c b/libc/tzcode/asctime.c
index 337a313..ce5d4be 100644
--- a/libc/tzcode/asctime.c
+++ b/libc/tzcode/asctime.c
@@ -1,3 +1,5 @@
+/* asctime and asctime_r a la POSIX and ISO C, except pad years before 1000.  */
+
 /*
 ** This file is in the public domain, so clarified as of
 ** 1996-06-05 by Arthur David Olson.
@@ -12,7 +14,7 @@
 /*LINTLIBRARY*/
 
 #include "private.h"
-#include "tzfile.h"
+#include <stdio.h>
 
 /*
 ** Some systems only handle "%.2d"; others only handle "%02d";
@@ -29,13 +31,13 @@
 ** leading zeroes to get the newline in the traditional place.
 ** The -4 ensures that we get four characters of output even if
 ** we call a strftime variant that produces fewer characters for some years.
-** The ISO C 1999 and POSIX 1003.1-2004 standards prohibit padding the year,
+** The ISO C and POSIX standards prohibit padding the year,
 ** but many implementations pad anyway; most likely the standards are buggy.
 */
 #ifdef __GNUC__
-#define ASCTIME_FMT	"%.3s %.3s%3d %2.2d:%2.2d:%2.2d %-4s\n"
+#define ASCTIME_FMT	"%s %s%3d %2.2d:%2.2d:%2.2d %-4s\n"
 #else /* !defined __GNUC__ */
-#define ASCTIME_FMT	"%.3s %.3s%3d %02.2d:%02.2d:%02.2d %-4s\n"
+#define ASCTIME_FMT	"%s %s%3d %02.2d:%02.2d:%02.2d %-4s\n"
 #endif /* !defined __GNUC__ */
 /*
 ** For years that are more than four digits we put extra spaces before the year
@@ -44,9 +46,9 @@
 ** that no output is better than wrong output).
 */
 #ifdef __GNUC__
-#define ASCTIME_FMT_B	"%.3s %.3s%3d %2.2d:%2.2d:%2.2d     %s\n"
+#define ASCTIME_FMT_B	"%s %s%3d %2.2d:%2.2d:%2.2d     %s\n"
 #else /* !defined __GNUC__ */
-#define ASCTIME_FMT_B	"%.3s %.3s%3d %02.2d:%02.2d:%02.2d     %s\n"
+#define ASCTIME_FMT_B	"%s %s%3d %02.2d:%02.2d:%02.2d     %s\n"
 #endif /* !defined __GNUC__ */
 
 #define STD_ASCTIME_BUF_SIZE	26
@@ -64,17 +66,13 @@
 
 static char	buf_asctime[MAX_ASCTIME_BUF_SIZE];
 
-/*
-** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
-*/
-
 char *
 asctime_r(register const struct tm *timeptr, char *buf)
 {
-	static const char	wday_name[][3] = {
+	static const char	wday_name[][4] = {
 		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
 	};
-	static const char	mon_name[][3] = {
+	static const char	mon_name[][4] = {
 		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
 		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
 	};
@@ -117,10 +115,6 @@
 	}
 }
 
-/*
-** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
-*/
-
 char *
 asctime(register const struct tm *timeptr)
 {
diff --git a/libc/tzcode/bionic.cpp b/libc/tzcode/bionic.cpp
index e134aaa..d2b5d80 100644
--- a/libc/tzcode/bionic.cpp
+++ b/libc/tzcode/bionic.cpp
@@ -190,6 +190,18 @@
     // Give up now, and don't try fallback tzdata files. We don't log here
     // because for all we know the given olson id was nonsense.
     close(fd);
+    // This file descriptor (-1) is passed to localtime.c. In invalid fd case
+    // upstream passes errno value around methods and having 0 there will
+    // indicate that time zone was found and read successfully and localtime's
+    // internal state was properly initialized (which wasn't as we couldn't find
+    // requested time zone in the tzdata file).
+    // If we reached this point errno is unlikely to be touched. It is only
+    // close(fd) which can do it, but that is very unlikely to happen. And
+    // even if it happens we can't extract any useful insights from it.
+    // We are overriding it to ENOENT as it matches upstream expectations -
+    // time zone is absent in the tzdata file == there is no TZif file in
+    // /usr/share/zoneinfo.
+    errno = ENOENT;
     return -1;
   }
 
@@ -206,24 +218,14 @@
 int __bionic_open_tzdata(const char* olson_id, int32_t* entry_length) {
   int fd;
 
-  // Try the three locations for the tzdata file in a strict order:
-  // 1: The O-MR1 time zone updates via APK update mechanism. This is
-  //    tried first because it allows us to test that the time zone updates
-  //    via APK mechanism still works even on devices with the time zone
-  //    module.
-  //    TODO: remove this when those devices are no longer supported.
-  // 2: The time zone data module which contains the main copy. This is the
+  // Try the two locations for the tzdata file in a strict order:
+  // 1: The time zone data module which contains the main copy. This is the
   //    common case for current devices.
-  // 3: The ultimate fallback: the non-updatable copy in /system.
+  // 2: The ultimate fallback: the non-updatable copy in /system.
 
 #if defined(__ANDROID__)
   // On Android devices, bionic has to work even if exec takes place without
   // environment variables set. So, all paths are hardcoded here.
-
-  fd = __bionic_open_tzdata_path("/data/misc/zoneinfo/current/tzdata",
-                                 olson_id, entry_length);
-  if (fd >= -1) return fd;
-
   fd = __bionic_open_tzdata_path("/apex/com.android.tzdata/etc/tz/tzdata",
                                  olson_id, entry_length);
   if (fd >= -1) return fd;
@@ -233,16 +235,10 @@
   if (fd >= -1) return fd;
 #else
   // On the host, we don't expect the hard-coded locations above to exist, and
-  // we're not worried about security so we trust $ANDROID_DATA,
-  // $ANDROID_TZDATA_ROOT, and $ANDROID_ROOT to point us in the right direction
-  // instead.
+  // we're not worried about security so we trust $ANDROID_TZDATA_ROOT, and
+  // $ANDROID_ROOT to point us in the right direction instead.
 
-  char* path = make_path("ANDROID_DATA", "/misc/zoneinfo/current/tzdata");
-  fd = __bionic_open_tzdata_path(path, olson_id, entry_length);
-  free(path);
-  if (fd >= -1) return fd;
-
-  path = make_path("ANDROID_TZDATA_ROOT", "/etc/tz/tzdata");
+  char* path = make_path("ANDROID_TZDATA_ROOT", "/etc/tz/tzdata");
   fd = __bionic_open_tzdata_path(path, olson_id, entry_length);
   free(path);
   if (fd >= -1) return fd;
diff --git a/libc/tzcode/difftime.c b/libc/tzcode/difftime.c
index ba2fd03..ff78f03 100644
--- a/libc/tzcode/difftime.c
+++ b/libc/tzcode/difftime.c
@@ -1,3 +1,5 @@
+/* Return the difference between two timestamps.  */
+
 /*
 ** This file is in the public domain, so clarified as of
 ** 1996-06-05 by Arthur David Olson.
@@ -14,14 +16,14 @@
   return -x;
 }
 
-double ATTRIBUTE_CONST
+double
 difftime(time_t time1, time_t time0)
 {
 	/*
 	** If double is large enough, simply convert and subtract
 	** (assuming that the larger type has more precision).
 	*/
-	if (sizeof (time_t) < sizeof (double)) {
+	if (sizeof(time_t) < sizeof(double)) {
 	  double t1 = time1, t0 = time0;
 	  return t1 - t0;
 	}
@@ -34,7 +36,7 @@
 	  return time0 <= time1 ? time1 - time0 : dminus(time0 - time1);
 
 	/* Use uintmax_t if wide enough.  */
-	if (sizeof (time_t) <= sizeof (uintmax_t)) {
+	if (sizeof(time_t) <= sizeof(uintmax_t)) {
 	  uintmax_t t1 = time1, t0 = time0;
 	  return time0 <= time1 ? t1 - t0 : dminus(t0 - t1);
 	}
diff --git a/libc/tzcode/localedef.h b/libc/tzcode/localedef.h
new file mode 100644
index 0000000..19d4df9
--- /dev/null
+++ b/libc/tzcode/localedef.h
@@ -0,0 +1,106 @@
+/*	$OpenBSD: localedef.h,v 1.1 2016/05/23 00:05:15 guenther Exp $	*/
+/*	$NetBSD: localedef.h,v 1.4 1996/04/09 20:55:31 cgd Exp $	*/
+
+/*
+ * Copyright (c) 1994 Winning Strategies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Winning Strategies, Inc.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LOCALEDEF_H_
+#define _LOCALEDEF_H_
+
+#include <sys/types.h>
+
+typedef struct
+{
+	char *yesexpr;
+	char *noexpr;
+	char *yesstr;
+	char *nostr;
+} _MessagesLocale;
+
+
+typedef struct
+{
+	char *int_curr_symbol;
+	char *currency_symbol;
+	char *mon_decimal_point;
+	char *mon_thousands_sep;
+	char *mon_grouping;
+	char *positive_sign;
+	char *negative_sign;
+	char int_frac_digits;
+	char frac_digits;
+	char p_cs_precedes;
+	char p_sep_by_space;
+	char n_cs_precedes;
+	char n_sep_by_space;
+	char p_sign_posn;
+	char n_sign_posn;
+	char int_p_cs_precedes;
+	char int_p_sep_by_space;
+	char int_n_cs_precedes;
+	char int_n_sep_by_space;
+	char int_p_sign_posn;
+	char int_n_sign_posn;
+} _MonetaryLocale;
+
+
+typedef struct
+{
+	const char *decimal_point;
+	const char *thousands_sep;
+	const char *grouping;
+} _NumericLocale;
+
+
+typedef struct {
+	const char *abday[7];
+	const char *day[7];
+	const char *abmon[12];
+	const char *mon[12];
+	const char *am_pm[2];
+	const char *d_t_fmt;
+	const char *d_fmt;
+	const char *t_fmt;
+	const char *t_fmt_ampm;
+} _TimeLocale;
+
+
+//__BEGIN_HIDDEN_DECLS
+extern const _MessagesLocale *_CurrentMessagesLocale;
+extern const _MessagesLocale  _DefaultMessagesLocale;
+extern const _MonetaryLocale *_CurrentMonetaryLocale;
+extern const _MonetaryLocale  _DefaultMonetaryLocale;
+extern const _NumericLocale *_CurrentNumericLocale;
+extern const _NumericLocale  _DefaultNumericLocale;
+extern const _TimeLocale *_CurrentTimeLocale;
+extern const _TimeLocale  _DefaultTimeLocale;
+//__END_HIDDEN_DECLS
+
+#endif /* !_LOCALEDEF_H_ */
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 091bab0..8ff5cee 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -1,3 +1,5 @@
+/* Convert timestamp from time_t to struct tm.  */
+
 /*
 ** This file is in the public domain, so clarified as of
 ** 1996-06-05 by Arthur David Olson.
@@ -14,9 +16,9 @@
 #include "private.h"
 
 #include "tzfile.h"
-#include "fcntl.h"
+#include <fcntl.h>
 
-#if THREAD_SAFE
+#if defined THREAD_SAFE && THREAD_SAFE
 # include <pthread.h>
 static pthread_mutex_t locallock = PTHREAD_MUTEX_INITIALIZER;
 static int lock(void) { return pthread_mutex_lock(&locallock); }
@@ -26,14 +28,6 @@
 static void unlock(void) { }
 #endif
 
-/* NETBSD_INSPIRED_EXTERN functions are exported to callers if
-   NETBSD_INSPIRED is defined, and are private otherwise.  */
-#if NETBSD_INSPIRED
-# define NETBSD_INSPIRED_EXTERN
-#else
-# define NETBSD_INSPIRED_EXTERN static
-#endif
-
 #ifndef TZ_ABBR_MAX_LEN
 #define TZ_ABBR_MAX_LEN 16
 #endif /* !defined TZ_ABBR_MAX_LEN */
@@ -87,31 +81,39 @@
 
 /*
 ** The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
-** We default to US rules as of 1999-08-17.
-** POSIX 1003.1 section 8.1.1 says that the default DST rules are
-** implementation dependent; for historical reasons, US rules are a
-** common default.
+** Default to US rules as of 2017-05-07.
+** POSIX does not specify the default DST rules;
+** for historical reasons, US rules are a common default.
 */
 #ifndef TZDEFRULESTRING
-#define TZDEFRULESTRING ",M4.1.0,M10.5.0"
-#endif /* !defined TZDEFDST */
+#define TZDEFRULESTRING ",M3.2.0,M11.1.0"
+#endif
 
 struct ttinfo {              /* time type information */
-    int_fast32_t tt_gmtoff;  /* UT offset in seconds */
+    int_fast32_t tt_utoff; /* UT offset in seconds */
     bool         tt_isdst;   /* used to set tm_isdst */
-    int          tt_abbrind; /* abbreviation list index */
+    int          tt_desigidx; /* abbreviation list index */
     bool         tt_ttisstd; /* transition is std time */
-    bool         tt_ttisgmt; /* transition is UT */
+    bool         tt_ttisut; /* transition is UT */
 };
 
 struct lsinfo {              /* leap second information */
     time_t       ls_trans;   /* transition time */
-    int_fast64_t ls_corr;    /* correction to apply */
+    int_fast32_t ls_corr;    /* correction to apply */
 };
 
 #define SMALLEST(a, b)	(((a) < (b)) ? (a) : (b))
 #define BIGGEST(a, b)   (((a) > (b)) ? (a) : (b))
 
+/* This abbreviation means local time is unspecified.  */
+static char const UNSPEC[] = "-00";
+
+/* How many extra bytes are needed at the end of struct state's chars array.
+   This needs to be at least 1 for null termination in case the input
+   data isn't properly terminated, and it also needs to be big enough
+   for ttunspecified to work without crashing.  */
+enum { CHARS_EXTRA = BIGGEST(sizeof UNSPEC, 2) - 1 };
+
 #ifdef TZNAME_MAX
 #define MY_TZNAME_MAX   TZNAME_MAX
 #endif /* defined TZNAME_MAX */
@@ -129,10 +131,14 @@
     time_t        ats[TZ_MAX_TIMES];
     unsigned char types[TZ_MAX_TIMES];
     struct ttinfo ttis[TZ_MAX_TYPES];
-    char          chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt),
+    char          chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + CHARS_EXTRA,
+                            sizeof gmt),
                   (2 * (MY_TZNAME_MAX + 1)))];
     struct lsinfo lsis[TZ_MAX_LEAPS];
-    int           defaulttype; /* for early times or if no transitions */
+    /* The time type to use for early times or if no transitions.
+       It is always zero for recent tzdb releases.
+       It might be nonzero for data from tzdb 2018e or earlier.  */
+    int defaulttype;
 };
 
 enum r_type {
@@ -153,11 +159,12 @@
 			 struct tm *);
 static bool increment_overflow(int *, int);
 static bool increment_overflow_time(time_t *, int_fast32_t);
+static int_fast32_t leapcorr(struct state const *, time_t);
 static bool normalize_overflow32(int_fast32_t *, int *, int);
 static struct tm *timesub(time_t const *, int_fast32_t, struct state const *,
 			  struct tm *);
 static bool typesequiv(struct state const *, int, int);
-static bool tzparse(char const *, struct state *, bool);
+static bool tzparse(char const *, struct state *, struct state *);
 
 #ifdef ALL_STATE
 static struct state * lclptr;
@@ -188,30 +195,39 @@
 
 static struct tm	tm;
 
-#if !HAVE_POSIX_DECLS
+#if 2 <= HAVE_TZNAME + TZ_TIME_T
 char *			tzname[2] = {
 	(char *) wildabbr,
 	(char *) wildabbr
 };
-#ifdef USG_COMPAT
+#endif
+#if 2 <= USG_COMPAT + TZ_TIME_T
 long			timezone;
 int			daylight;
-# endif
 #endif
 
-#ifdef ALTZONE
+#if 2 <= ALTZONE + TZ_TIME_T
 long			altzone;
-#endif /* defined ALTZONE */
+#endif
 
-/* Initialize *S to a value based on GMTOFF, ISDST, and ABBRIND.  */
+/* Initialize *S to a value based on UTOFF, ISDST, and DESIGIDX.  */
 static void
-init_ttinfo(struct ttinfo *s, int_fast32_t gmtoff, bool isdst, int abbrind)
+init_ttinfo(struct ttinfo *s, int_fast32_t utoff, bool isdst, int desigidx)
 {
-  s->tt_gmtoff = gmtoff;
+  s->tt_utoff = utoff;
   s->tt_isdst = isdst;
-  s->tt_abbrind = abbrind;
+  s->tt_desigidx = desigidx;
   s->tt_ttisstd = false;
-  s->tt_ttisgmt = false;
+  s->tt_ttisut = false;
+}
+
+/* Return true if SP's time type I does not specify local time.  */
+static bool
+ttunspecified(struct state const *sp, int i)
+{
+  char const *abbr = &sp->chars[sp->ttis[i].tt_desigidx];
+  /* memcmp is likely faster than strcmp, and is safe due to CHARS_EXTRA.  */
+  return memcmp(abbr, UNSPEC, sizeof UNSPEC) == 0;
 }
 
 static int_fast32_t
@@ -240,7 +256,7 @@
 static int_fast64_t
 detzcode64(const char *const codep)
 {
-	register uint_fast64_t result;
+	register int_fast64_t result;
 	register int	i;
 	int_fast64_t one = 1;
 	int_fast64_t halfmaxval = one << (64 - 2);
@@ -263,52 +279,71 @@
 static void
 update_tzname_etc(struct state const *sp, struct ttinfo const *ttisp)
 {
-  tzname[ttisp->tt_isdst] = (char *) &sp->chars[ttisp->tt_abbrind];
-#ifdef USG_COMPAT
+#if HAVE_TZNAME
+  tzname[ttisp->tt_isdst] = (char *) &sp->chars[ttisp->tt_desigidx];
+#endif
+#if USG_COMPAT
   if (!ttisp->tt_isdst)
-    timezone = - ttisp->tt_gmtoff;
+    timezone = - ttisp->tt_utoff;
 #endif
-#ifdef ALTZONE
+#if ALTZONE
   if (ttisp->tt_isdst)
-    altzone = - ttisp->tt_gmtoff;
+    altzone = - ttisp->tt_utoff;
 #endif
 }
 
+/* If STDDST_MASK indicates that SP's TYPE provides useful info,
+   update tzname, timezone, and/or altzone and return STDDST_MASK,
+   diminished by the provided info if it is a specified local time.
+   Otherwise, return STDDST_MASK.  See settzname for STDDST_MASK.  */
+static int
+may_update_tzname_etc(int stddst_mask, struct state *sp, int type)
+{
+  struct ttinfo *ttisp = &sp->ttis[type];
+  int this_bit = 1 << ttisp->tt_isdst;
+  if (stddst_mask & this_bit) {
+    update_tzname_etc(sp, ttisp);
+    if (!ttunspecified(sp, type))
+      return stddst_mask & ~this_bit;
+  }
+  return stddst_mask;
+}
+
 static void
 settzname(void)
 {
 	register struct state * const	sp = lclptr;
 	register int			i;
 
-	tzname[0] = tzname[1] = (char *) wildabbr;
-#ifdef USG_COMPAT
-	daylight = 0;
+	/* If STDDST_MASK & 1 we need info about a standard time.
+	   If STDDST_MASK & 2 we need info about a daylight saving time.
+	   When STDDST_MASK becomes zero we can stop looking.  */
+	int stddst_mask = 0;
+
+#if HAVE_TZNAME
+	tzname[0] = tzname[1] = (char *) (sp ? wildabbr : gmt);
+	stddst_mask = 3;
+#endif
+#if USG_COMPAT
 	timezone = 0;
-#endif /* defined USG_COMPAT */
-#ifdef ALTZONE
+	stddst_mask = 3;
+#endif
+#if ALTZONE
 	altzone = 0;
-#endif /* defined ALTZONE */
-	if (sp == NULL) {
-		tzname[0] = tzname[1] = (char *) gmt;
-		return;
-	}
+	stddst_mask |= 2;
+#endif
 	/*
-	** And to get the latest zone names into tzname. . .
+	** And to get the latest time zone abbreviations into tzname. . .
 	*/
-	for (i = 0; i < sp->typecnt; ++i) {
-		register const struct ttinfo * const	ttisp = &sp->ttis[i];
-		update_tzname_etc(sp, ttisp);
+	if (sp) {
+	  for (i = sp->timecnt - 1; stddst_mask && 0 <= i; i--)
+	    stddst_mask = may_update_tzname_etc(stddst_mask, sp, sp->types[i]);
+	  for (i = sp->typecnt - 1; stddst_mask && 0 <= i; i--)
+	    stddst_mask = may_update_tzname_etc(stddst_mask, sp, i);
 	}
-	for (i = 0; i < sp->timecnt; ++i) {
-		register const struct ttinfo * const	ttisp =
-							&sp->ttis[
-								sp->types[i]];
-		update_tzname_etc(sp, ttisp);
-#ifdef USG_COMPAT
-		if (ttisp->tt_isdst)
-			daylight = 1;
-#endif /* defined USG_COMPAT */
-	}
+#if USG_COMPAT
+	daylight = stddst_mask >> 1 ^ 1;
+#endif
 }
 
 static void
@@ -326,7 +361,7 @@
 	*/
 	for (i = 0; i < sp->typecnt; ++i) {
 		register const struct ttinfo * const	ttisp = &sp->ttis[i];
-		register char *				cp = &sp->chars[ttisp->tt_abbrind];
+		char *cp = &sp->chars[ttisp->tt_desigidx];
 
 		if (strlen(cp) > TZ_ABBR_MAX_LEN &&
 			strcmp(cp, GRANDPARENTED) != 0)
@@ -334,39 +369,39 @@
 	}
 }
 
-static bool
-differ_by_repeat(const time_t t1, const time_t t0)
-{
-    if (TYPE_BIT(time_t) - TYPE_SIGNED(time_t) < SECSPERREPEAT_BITS)
-        return 0;
-#if defined(__LP64__) // 32-bit Android/glibc has a signed 32-bit time_t; 64-bit doesn't.
-    return t1 - t0 == SECSPERREPEAT;
-#endif
-}
-
 /* Input buffer for data read from a compiled tz file.  */
 union input_buffer {
   /* The first part of the buffer, interpreted as a header.  */
   struct tzhead tzhead;
 
   /* The entire buffer.  */
-  char buf[2 * sizeof(struct tzhead) + 2 * sizeof (struct state)
-	   + 4 * TZ_MAX_TIMES];
+  char buf[2 * sizeof(struct tzhead) + 2 * sizeof(struct state)
+     + 4 * TZ_MAX_TIMES];
 };
 
+// Android-removed: There is no directory with file-per-time zone on Android.
+#ifndef __BIONIC__
+/* TZDIR with a trailing '/' rather than a trailing '\0'.  */
+static char const tzdirslash[sizeof TZDIR] = TZDIR "/";
+#endif
+
 /* Local storage needed for 'tzloadbody'.  */
 union local_storage {
-  /* The file name to be opened.  */
-  char fullname[FILENAME_MAX + 1];
-
   /* The results of analyzing the file's contents after it is opened.  */
-  struct {
+  struct file_analysis {
     /* The input buffer.  */
     union input_buffer u;
 
     /* A temporary state used for parsing a TZ string in the file.  */
     struct state st;
   } u;
+
+  // Android-removed: There is no directory with file-per-time zone on Android.
+  #ifndef __BIONIC__
+  /* The file name to be opened.  */
+  char fullname[BIGGEST(sizeof(struct file_analysis),
+      sizeof tzdirslash + 1024)];
+  #endif
 };
 
 /* Load tz data from the file named NAME into *SP.  Read extended
@@ -385,7 +420,7 @@
 	register char *fullname = lsp->fullname;
 #endif
 	register union input_buffer *up = &lsp->u.u;
-	register int tzheadsize = sizeof (struct tzhead);
+	register int tzheadsize = sizeof(struct tzhead);
 
 	sp->goback = sp->goahead = false;
 
@@ -402,20 +437,36 @@
 #else
 	if (name[0] == ':')
 		++name;
+#ifdef SUPPRESS_TZDIR
+	/* Do not prepend TZDIR.  This is intended for specialized
+	   applications only, due to its security implications.  */
+	doaccess = true;
+#else
 	doaccess = name[0] == '/';
+#endif
 	if (!doaccess) {
-		char const *p = TZDIR;
-		if (! p)
-		  return EINVAL;
-		if (sizeof lsp->fullname - 1 <= strlen(p) + strlen(name))
+		char const *dot;
+		size_t namelen = strlen(name);
+		if (sizeof lsp->fullname - sizeof tzdirslash <= namelen)
 		  return ENAMETOOLONG;
-		strcpy(fullname, p);
-		strcat(fullname, "/");
-		strcat(fullname, name);
-		/* Set doaccess if '.' (as in "../") shows up in name.  */
-		if (strchr(name, '.'))
-			doaccess = true;
-		name = fullname;
+
+		/* Create a string "TZDIR/NAME".  Using sprintf here
+		   would pull in stdio (and would fail if the
+		   resulting string length exceeded INT_MAX!).  */
+		memcpy(lsp->fullname, tzdirslash, sizeof tzdirslash);
+		strcpy(lsp->fullname + sizeof tzdirslash, name);
+
+		/* Set doaccess if NAME contains a ".." file name
+		   component, as such a name could read a file outside
+		   the TZDIR virtual subtree.  */
+		for (dot = name; (dot = strchr(dot, '.')); dot++)
+		  if ((dot == name || dot[-1] == '/') && dot[1] == '.'
+		      && (dot[2] == '/' || !dot[2])) {
+		    doaccess = true;
+		    break;
+		  }
+
+		name = lsp->fullname;
 	}
 	if (doaccess && access(name, R_OK) != 0)
 	  return errno;
@@ -437,47 +488,62 @@
 	if (close(fid) < 0)
 	  return errno;
 	for (stored = 4; stored <= 8; stored *= 2) {
-		int_fast32_t ttisstdcnt = detzcode(up->tzhead.tzh_ttisstdcnt);
-		int_fast32_t ttisgmtcnt = detzcode(up->tzhead.tzh_ttisgmtcnt);
-		int_fast32_t leapcnt = detzcode(up->tzhead.tzh_leapcnt);
-		int_fast32_t timecnt = detzcode(up->tzhead.tzh_timecnt);
-		int_fast32_t typecnt = detzcode(up->tzhead.tzh_typecnt);
-		int_fast32_t charcnt = detzcode(up->tzhead.tzh_charcnt);
-		char const *p = up->buf + tzheadsize;
-		if (! (0 <= leapcnt && leapcnt < TZ_MAX_LEAPS
-		       && 0 < typecnt && typecnt < TZ_MAX_TYPES
-		       && 0 <= timecnt && timecnt < TZ_MAX_TIMES
-		       && 0 <= charcnt && charcnt < TZ_MAX_CHARS
-		       && (ttisstdcnt == typecnt || ttisstdcnt == 0)
-		       && (ttisgmtcnt == typecnt || ttisgmtcnt == 0)))
-		  return EINVAL;
-		if (nread
-		    < (tzheadsize		/* struct tzhead */
-		       + timecnt * stored	/* ats */
+	    char version = up->tzhead.tzh_version[0];
+	    bool skip_datablock = stored == 4 && version;
+	    int_fast32_t datablock_size;
+	    int_fast32_t ttisstdcnt = detzcode(up->tzhead.tzh_ttisstdcnt);
+	    int_fast32_t ttisutcnt = detzcode(up->tzhead.tzh_ttisutcnt);
+	    int_fast64_t prevtr = -1;
+	    int_fast32_t prevcorr;
+	    int_fast32_t leapcnt = detzcode(up->tzhead.tzh_leapcnt);
+	    int_fast32_t timecnt = detzcode(up->tzhead.tzh_timecnt);
+	    int_fast32_t typecnt = detzcode(up->tzhead.tzh_typecnt);
+	    int_fast32_t charcnt = detzcode(up->tzhead.tzh_charcnt);
+	    char const *p = up->buf + tzheadsize;
+	    /* Although tzfile(5) currently requires typecnt to be nonzero,
+	       support future formats that may allow zero typecnt
+	       in files that have a TZ string and no transitions.  */
+	    if (! (0 <= leapcnt && leapcnt < TZ_MAX_LEAPS
+		   && 0 <= typecnt && typecnt < TZ_MAX_TYPES
+		   && 0 <= timecnt && timecnt < TZ_MAX_TIMES
+		   && 0 <= charcnt && charcnt < TZ_MAX_CHARS
+		   && 0 <= ttisstdcnt && ttisstdcnt < TZ_MAX_TYPES
+		   && 0 <= ttisutcnt && ttisutcnt < TZ_MAX_TYPES))
+	      return EINVAL;
+	    datablock_size
+		    = (timecnt * stored		/* ats */
 		       + timecnt		/* types */
 		       + typecnt * 6		/* ttinfos */
 		       + charcnt		/* chars */
 		       + leapcnt * (stored + 4)	/* lsinfos */
 		       + ttisstdcnt		/* ttisstds */
-		       + ttisgmtcnt))		/* ttisgmts */
+		       + ttisutcnt);		/* ttisuts */
+	    if (nread < tzheadsize + datablock_size)
+	      return EINVAL;
+	    if (skip_datablock)
+		p += datablock_size;
+	    else {
+		if (! ((ttisstdcnt == typecnt || ttisstdcnt == 0)
+		       && (ttisutcnt == typecnt || ttisutcnt == 0)))
 		  return EINVAL;
+
 		sp->leapcnt = leapcnt;
 		sp->timecnt = timecnt;
 		sp->typecnt = typecnt;
 		sp->charcnt = charcnt;
 
 		/* Read transitions, discarding those out of time_t range.
-		   But pretend the last transition before time_t_min
-		   occurred at time_t_min.  */
+		   But pretend the last transition before TIME_T_MIN
+		   occurred at TIME_T_MIN.  */
 		timecnt = 0;
 		for (i = 0; i < sp->timecnt; ++i) {
 			int_fast64_t at
 			  = stored == 4 ? detzcode(p) : detzcode64(p);
-			sp->types[i] = at <= time_t_max;
+			sp->types[i] = at <= TIME_T_MAX;
 			if (sp->types[i]) {
 			  time_t attime
-			    = ((TYPE_SIGNED(time_t) ? at < time_t_min : at < 0)
-			       ? time_t_min : at);
+			    = ((TYPE_SIGNED(time_t) ? at < TIME_T_MIN : at < 0)
+			       ? TIME_T_MIN : at);
 			  if (timecnt && attime <= sp->ats[timecnt - 1]) {
 			    if (attime < sp->ats[timecnt - 1])
 			      return EINVAL;
@@ -500,23 +566,25 @@
 		sp->timecnt = timecnt;
 		for (i = 0; i < sp->typecnt; ++i) {
 			register struct ttinfo *	ttisp;
-			unsigned char isdst, abbrind;
+			unsigned char isdst, desigidx;
 
 			ttisp = &sp->ttis[i];
-			ttisp->tt_gmtoff = detzcode(p);
+			ttisp->tt_utoff = detzcode(p);
 			p += 4;
 			isdst = *p++;
 			if (! (isdst < 2))
 			  return EINVAL;
 			ttisp->tt_isdst = isdst;
-			abbrind = *p++;
-			if (! (abbrind < sp->charcnt))
+			desigidx = *p++;
+			if (! (desigidx < sp->charcnt))
 			  return EINVAL;
-			ttisp->tt_abbrind = abbrind;
+			ttisp->tt_desigidx = desigidx;
 		}
 		for (i = 0; i < sp->charcnt; ++i)
 			sp->chars[i] = *p++;
-		sp->chars[i] = '\0';	/* ensure '\0' at end */
+		/* Ensure '\0'-terminated, and make it safe to call
+		   ttunspecified later.  */
+		memset(&sp->chars[i], 0, CHARS_EXTRA);
 
 		/* Read leap seconds, discarding those out of time_t range.  */
 		leapcnt = 0;
@@ -524,16 +592,28 @@
 		  int_fast64_t tr = stored == 4 ? detzcode(p) : detzcode64(p);
 		  int_fast32_t corr = detzcode(p + stored);
 		  p += stored + 4;
-		  if (tr <= time_t_max) {
-		    time_t trans
-		      = ((TYPE_SIGNED(time_t) ? tr < time_t_min : tr < 0)
-			 ? time_t_min : tr);
-		    if (leapcnt && trans <= sp->lsis[leapcnt - 1].ls_trans) {
-		      if (trans < sp->lsis[leapcnt - 1].ls_trans)
-			return EINVAL;
-		      leapcnt--;
-		    }
-		    sp->lsis[leapcnt].ls_trans = trans;
+
+		  /* Leap seconds cannot occur before the Epoch,
+		     or out of order.  */
+		  if (tr <= prevtr)
+		    return EINVAL;
+
+		  /* To avoid other botches in this code, each leap second's
+		     correction must differ from the previous one's by 1
+		     second or less, except that the first correction can be
+		     any value; these requirements are more generous than
+		     RFC 8536, to allow future RFC extensions.  */
+		  if (! (i == 0
+			 || (prevcorr < corr
+			     ? corr == prevcorr + 1
+			     : (corr == prevcorr
+				|| corr == prevcorr - 1))))
+		    return EINVAL;
+		  prevtr = tr;
+		  prevcorr = corr;
+
+		  if (tr <= TIME_T_MAX) {
+		    sp->lsis[leapcnt].ls_trans = tr;
 		    sp->lsis[leapcnt].ls_corr = corr;
 		    leapcnt++;
 		  }
@@ -556,21 +636,22 @@
 			register struct ttinfo *	ttisp;
 
 			ttisp = &sp->ttis[i];
-			if (ttisgmtcnt == 0)
-				ttisp->tt_ttisgmt = false;
+			if (ttisutcnt == 0)
+				ttisp->tt_ttisut = false;
 			else {
 				if (*p != true && *p != false)
 						return EINVAL;
-				ttisp->tt_ttisgmt = *p++;
+				ttisp->tt_ttisut = *p++;
 			}
 		}
-		/*
-		** If this is an old file, we're done.
-		*/
-		if (up->tzhead.tzh_version[0] == '\0')
-			break;
-		nread -= p - up->buf;
-		memmove(up->buf, p, nread);
+	    }
+
+	    nread -= p - up->buf;
+	    memmove(up->buf, p, nread);
+
+	    /* If this is an old file, we're done.  */
+	    if (!version)
+	      break;
 	}
 	if (doextend && nread > 2 &&
 		up->buf[0] == '\n' && up->buf[nread - 1] == '\n' &&
@@ -578,24 +659,23 @@
 			struct state	*ts = &lsp->u.st;
 
 			up->buf[nread - 1] = '\0';
-			if (tzparse(&up->buf[1], ts, false)
-			    && ts->typecnt == 2) {
+			if (tzparse(&up->buf[1], ts, sp)) {
 
 			  /* Attempt to reuse existing abbreviations.
-			     Without this, America/Anchorage would stop
-			     working after 2037 when TZ_MAX_CHARS is 50, as
-			     sp->charcnt equals 42 (for LMT CAT CAWT CAPT AHST
+			     Without this, America/Anchorage would be right on
+			     the edge after 2037 when TZ_MAX_CHARS is 50, as
+			     sp->charcnt equals 40 (for LMT AST AWT APT AHST
 			     AHDT YST AKDT AKST) and ts->charcnt equals 10
 			     (for AKST AKDT).  Reusing means sp->charcnt can
-			     stay 42 in this example.  */
+			     stay 40 in this example.  */
 			  int gotabbr = 0;
 			  int charcnt = sp->charcnt;
-			  for (i = 0; i < 2; i++) {
-			    char *tsabbr = ts->chars + ts->ttis[i].tt_abbrind;
+			  for (i = 0; i < ts->typecnt; i++) {
+			    char *tsabbr = ts->chars + ts->ttis[i].tt_desigidx;
 			    int j;
 			    for (j = 0; j < charcnt; j++)
 			      if (strcmp(sp->chars + j, tsabbr) == 0) {
-				ts->ttis[i].tt_abbrind = j;
+				ts->ttis[i].tt_desigidx = j;
 				gotabbr++;
 				break;
 			      }
@@ -604,53 +684,83 @@
 			      if (j + tsabbrlen < TZ_MAX_CHARS) {
 				strcpy(sp->chars + j, tsabbr);
 				charcnt = j + tsabbrlen + 1;
-				ts->ttis[i].tt_abbrind = j;
+				ts->ttis[i].tt_desigidx = j;
 				gotabbr++;
 			      }
 			    }
 			  }
-			  if (gotabbr == 2) {
+			  if (gotabbr == ts->typecnt) {
 			    sp->charcnt = charcnt;
-			    for (i = 0; i < ts->timecnt; i++)
-			      if (sp->ats[sp->timecnt - 1] < ts->ats[i])
-				break;
-			    while (i < ts->timecnt
-				   && sp->timecnt < TZ_MAX_TIMES) {
-			      sp->ats[sp->timecnt] = ts->ats[i];
+
+			    /* Ignore any trailing, no-op transitions generated
+			       by zic as they don't help here and can run afoul
+			       of bugs in zic 2016j or earlier.  */
+			    while (1 < sp->timecnt
+				   && (sp->types[sp->timecnt - 1]
+				       == sp->types[sp->timecnt - 2]))
+			      sp->timecnt--;
+
+			    for (i = 0;
+				 i < ts->timecnt && sp->timecnt < TZ_MAX_TIMES;
+				 i++) {
+			      time_t t = ts->ats[i];
+			      if (increment_overflow_time(&t, leapcorr(sp, t))
+				  || (0 < sp->timecnt
+				      && t <= sp->ats[sp->timecnt - 1]))
+				continue;
+			      sp->ats[sp->timecnt] = t;
 			      sp->types[sp->timecnt] = (sp->typecnt
 							+ ts->types[i]);
 			      sp->timecnt++;
-			      i++;
 			    }
-			    sp->ttis[sp->typecnt++] = ts->ttis[0];
-			    sp->ttis[sp->typecnt++] = ts->ttis[1];
+			    for (i = 0; i < ts->typecnt; i++)
+			      sp->ttis[sp->typecnt++] = ts->ttis[i];
 			  }
 			}
 	}
+	if (sp->typecnt == 0)
+	  return EINVAL;
 	if (sp->timecnt > 1) {
+	    if (sp->ats[0] <= TIME_T_MAX - SECSPERREPEAT) {
+		time_t repeatat = sp->ats[0] + SECSPERREPEAT;
+		int repeattype = sp->types[0];
 		for (i = 1; i < sp->timecnt; ++i)
-			if (typesequiv(sp, sp->types[i], sp->types[0]) &&
-				differ_by_repeat(sp->ats[i], sp->ats[0])) {
+		  if (sp->ats[i] == repeatat
+		      && typesequiv(sp, sp->types[i], repeattype)) {
 					sp->goback = true;
 					break;
-				}
+		  }
+	    }
+	    if (TIME_T_MIN + SECSPERREPEAT <= sp->ats[sp->timecnt - 1]) {
+		time_t repeatat = sp->ats[sp->timecnt - 1] - SECSPERREPEAT;
+		int repeattype = sp->types[sp->timecnt - 1];
 		for (i = sp->timecnt - 2; i >= 0; --i)
-			if (typesequiv(sp, sp->types[sp->timecnt - 1],
-				sp->types[i]) &&
-				differ_by_repeat(sp->ats[sp->timecnt - 1],
-				sp->ats[i])) {
+		  if (sp->ats[i] == repeatat
+		      && typesequiv(sp, sp->types[i], repeattype)) {
 					sp->goahead = true;
 					break;
-		}
+		  }
+	    }
 	}
+
+	/* Infer sp->defaulttype from the data.  Although this default
+	   type is always zero for data from recent tzdb releases,
+	   things are trickier for data from tzdb 2018e or earlier.
+
+	   The first set of heuristics work around bugs in 32-bit data
+	   generated by tzdb 2013c or earlier.  The workaround is for
+	   zones like Australia/Macquarie where timestamps before the
+	   first transition have a time type that is not the earliest
+	   standard-time type.  See:
+	   https://mm.icann.org/pipermail/tz/2013-May/019368.html */
 	/*
-	** If type 0 is is unused in transitions,
+	** If type 0 does not specify local time, or is unused in transitions,
 	** it's the type to use for early times.
 	*/
 	for (i = 0; i < sp->timecnt; ++i)
 		if (sp->types[i] == 0)
 			break;
-	i = i < sp->timecnt ? -1 : 0;
+	i = i < sp->timecnt && ! ttunspecified(sp, 0) ? -1 : 0;
 	/*
 	** Absent the above,
 	** if there are transition times
@@ -664,6 +774,9 @@
 			if (!sp->ttis[i].tt_isdst)
 				break;
 	}
+	/* The next heuristics are for data generated by tzdb 2018e or
+	   earlier, for zones like EST5EDT where the first transition
+	   is to DST.  */
 	/*
 	** If no result yet, find the first standard type.
 	** If there is none, punt to type zero.
@@ -676,7 +789,12 @@
 				break;
 			}
 	}
+	/* A simple 'sp->defaulttype = 0;' would suffice here if we
+	   didn't have to worry about 2018e-or-earlier data.  Even
+	   simpler would be to remove the defaulttype member and just
+	   use 0 in its place.  */
 	sp->defaulttype = i;
+
 	return 0;
 }
 
@@ -687,9 +805,9 @@
 {
 #ifdef ALL_STATE
   union local_storage *lsp = malloc(sizeof *lsp);
-  if (!lsp)
-    return errno;
-  else {
+  if (!lsp) {
+    return HAVE_MALLOC_ERRNO ? errno : ENOMEM;
+  } else {
     int err = tzloadbody(name, sp, doextend, lsp);
     free(lsp);
     return err;
@@ -712,12 +830,13 @@
 	else {
 		register const struct ttinfo *	ap = &sp->ttis[a];
 		register const struct ttinfo *	bp = &sp->ttis[b];
-		result = ap->tt_gmtoff == bp->tt_gmtoff &&
-			ap->tt_isdst == bp->tt_isdst &&
-			ap->tt_ttisstd == bp->tt_ttisstd &&
-			ap->tt_ttisgmt == bp->tt_ttisgmt &&
-			strcmp(&sp->chars[ap->tt_abbrind],
-			&sp->chars[bp->tt_abbrind]) == 0;
+		result = (ap->tt_utoff == bp->tt_utoff
+			  && ap->tt_isdst == bp->tt_isdst
+			  && ap->tt_ttisstd == bp->tt_ttisstd
+			  && ap->tt_ttisut == bp->tt_ttisut
+			  && (strcmp(&sp->chars[ap->tt_desigidx],
+				     &sp->chars[bp->tt_desigidx])
+			      == 0));
 	}
 	return result;
 }
@@ -731,13 +850,20 @@
 	DAYSPERNYEAR, DAYSPERLYEAR
 };
 
+/* Is C an ASCII digit?  */
+static bool
+is_digit(char c)
+{
+  return '0' <= c && c <= '9';
+}
+
 /*
-** Given a pointer into a time zone string, scan until a character that is not
-** a valid character in a zone name is found. Return a pointer to that
-** character.
+** Given a pointer into a timezone string, scan until a character that is not
+** a valid character in a time zone abbreviation is found.
+** Return a pointer to that character.
 */
 
-static const char * ATTRIBUTE_PURE
+static ATTRIBUTE_PURE const char *
 getzname(register const char *strp)
 {
 	register char	c;
@@ -749,15 +875,16 @@
 }
 
 /*
-** Given a pointer into an extended time zone string, scan until the ending
-** delimiter of the zone name is located. Return a pointer to the delimiter.
+** Given a pointer into an extended timezone string, scan until the ending
+** delimiter of the time zone abbreviation is located.
+** Return a pointer to the delimiter.
 **
 ** As with getzname above, the legal character set is actually quite
 ** restricted, with other characters producing undefined results.
 ** We don't do any checking here; checking is done later in common-case code.
 */
 
-static const char * ATTRIBUTE_PURE
+static ATTRIBUTE_PURE const char *
 getqzname(register const char *strp, const int delim)
 {
 	register int	c;
@@ -768,7 +895,7 @@
 }
 
 /*
-** Given a pointer into a time zone string, extract a number from that string.
+** Given a pointer into a timezone string, extract a number from that string.
 ** Check that the number is within a specified range; if it is not, return
 ** NULL.
 ** Otherwise, return a pointer to the first character not part of the number.
@@ -796,7 +923,7 @@
 }
 
 /*
-** Given a pointer into a time zone string, extract a number of seconds,
+** Given a pointer into a timezone string, extract a number of seconds,
 ** in hh[:mm[:ss]] form, from the string.
 ** If any error occurs, return NULL.
 ** Otherwise, return a pointer to the first character not part of the number
@@ -807,6 +934,7 @@
 getsecs(register const char *strp, int_fast32_t *const secsp)
 {
 	int	num;
+	int_fast32_t secsperhour = SECSPERHOUR;
 
 	/*
 	** 'HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-Posix rules like
@@ -817,7 +945,7 @@
 	strp = getnum(strp, &num, 0, HOURSPERDAY * DAYSPERWEEK - 1);
 	if (strp == NULL)
 		return NULL;
-	*secsp = num * (int_fast32_t) SECSPERHOUR;
+	*secsp = num * secsperhour;
 	if (*strp == ':') {
 		++strp;
 		strp = getnum(strp, &num, 0, MINSPERHOUR - 1);
@@ -837,7 +965,7 @@
 }
 
 /*
-** Given a pointer into a time zone string, extract an offset, in
+** Given a pointer into a timezone string, extract an offset, in
 ** [+-]hh[:mm[:ss]] form, from the string.
 ** If any error occurs, return NULL.
 ** Otherwise, return a pointer to the first character not part of the time.
@@ -862,7 +990,7 @@
 }
 
 /*
-** Given a pointer into a time zone string, extract a rule in the form
+** Given a pointer into a timezone string, extract a rule in the form
 ** date[/time]. See POSIX section 8 for the format of "date" and "time".
 ** If a valid rule is not found, return NULL.
 ** Otherwise, return a pointer to the first character not part of the rule.
@@ -919,7 +1047,7 @@
 ** effect, calculate the year-relative time that rule takes effect.
 */
 
-static int_fast32_t ATTRIBUTE_PURE
+static int_fast32_t
 transtime(const int year, register const struct rule *const rulep,
           const int_fast32_t offset)
 {
@@ -928,7 +1056,6 @@
     register int          i;
     int d, m1, yy0, yy1, yy2, dow;
 
-    INITIALIZE(value);
     leapyear = isleap(year);
     switch (rulep->r_type) {
 
@@ -994,6 +1121,8 @@
         for (i = 0; i < rulep->r_mon - 1; ++i)
             value += mon_lengths[leapyear][i] * SECSPERDAY;
         break;
+
+        default: UNREACHABLE();
     }
 
     /*
@@ -1011,7 +1140,7 @@
 */
 
 static bool
-tzparse(const char *name, struct state *sp, bool lastditch)
+tzparse(const char *name, struct state *sp, struct state *basep)
 {
 	const char *			stdname;
 	const char *			dstname;
@@ -1022,37 +1151,42 @@
 	int_fast32_t			dstoffset;
 	register char *			cp;
 	register bool			load_ok;
+	time_t atlo = TIME_T_MIN, leaplo = TIME_T_MIN;
 
 	stdname = name;
-	if (lastditch) {
-		stdlen = sizeof gmt - 1;
-		name += stdlen;
-		stdoffset = 0;
+	if (*name == '<') {
+	  name++;
+	  stdname = name;
+	  name = getqzname(name, '>');
+	  if (*name != '>')
+	    return false;
+	  stdlen = name - stdname;
+	  name++;
 	} else {
-		if (*name == '<') {
-			name++;
-			stdname = name;
-			name = getqzname(name, '>');
-			if (*name != '>')
-			  return false;
-			stdlen = name - stdname;
-			name++;
-		} else {
-			name = getzname(name);
-			stdlen = name - stdname;
-		}
-		if (!stdlen)
-		  return false;
-		name = getoffset(name, &stdoffset);
-		if (name == NULL)
-		  return false;
+	  name = getzname(name);
+	  stdlen = name - stdname;
 	}
+	if (!stdlen)
+	  return false;
+	name = getoffset(name, &stdoffset);
+	if (name == NULL)
+	  return false;
 	charcnt = stdlen + 1;
 	if (sizeof sp->chars < charcnt)
 	  return false;
-	load_ok = tzload(TZDEFRULES, sp, false) == 0;
-	if (!load_ok)
-		sp->leapcnt = 0;		/* so, we're off a little */
+	if (basep) {
+	  if (0 < basep->timecnt)
+	    atlo = basep->ats[basep->timecnt - 1];
+	  load_ok = false;
+	  sp->leapcnt = basep->leapcnt;
+	  memcpy(sp->lsis, basep->lsis, sp->leapcnt * sizeof *sp->lsis);
+	} else {
+	  load_ok = tzload(TZDEFRULES, sp, false) == 0;
+	  if (!load_ok)
+	    sp->leapcnt = 0;	/* So, we're off a little.  */
+	}
+	if (0 < sp->leapcnt)
+	  leaplo = sp->lsis[sp->leapcnt - 1].ls_trans;
 	if (*name != '\0') {
 		if (*name == '<') {
 			dstname = ++name;
@@ -1064,7 +1198,7 @@
 		} else {
 			dstname = name;
 			name = getzname(name);
-			dstlen = name - dstname; /* length of DST zone name */
+			dstlen = name - dstname; /* length of DST abbr. */
 		}
 		if (!dstlen)
 		  return false;
@@ -1082,9 +1216,10 @@
 			struct rule	start;
 			struct rule	end;
 			register int	year;
-			register int	yearlim;
 			register int	timecnt;
 			time_t		janfirst;
+			int_fast32_t janoffset = 0;
+			int yearbeg, yearlim;
 
 			++name;
 			if ((name = getrule(name, &start)) == NULL)
@@ -1099,13 +1234,41 @@
 			/*
 			** Two transitions per year, from EPOCH_YEAR forward.
 			*/
-			init_ttinfo(&sp->ttis[0], -dstoffset, true, stdlen + 1);
-			init_ttinfo(&sp->ttis[1], -stdoffset, false, 0);
+			init_ttinfo(&sp->ttis[0], -stdoffset, false, 0);
+			init_ttinfo(&sp->ttis[1], -dstoffset, true, stdlen + 1);
 			sp->defaulttype = 0;
 			timecnt = 0;
 			janfirst = 0;
-			yearlim = EPOCH_YEAR + YEARSPERREPEAT;
-			for (year = EPOCH_YEAR; year < yearlim; year++) {
+			yearbeg = EPOCH_YEAR;
+
+			do {
+			  int_fast32_t yearsecs
+			    = year_lengths[isleap(yearbeg - 1)] * SECSPERDAY;
+			  yearbeg--;
+			  if (increment_overflow_time(&janfirst, -yearsecs)) {
+			    janoffset = -yearsecs;
+			    break;
+			  }
+			} while (atlo < janfirst
+				 && EPOCH_YEAR - YEARSPERREPEAT / 2 < yearbeg);
+
+			while (true) {
+			  int_fast32_t yearsecs
+			    = year_lengths[isleap(yearbeg)] * SECSPERDAY;
+			  int yearbeg1 = yearbeg;
+			  time_t janfirst1 = janfirst;
+			  if (increment_overflow_time(&janfirst1, yearsecs)
+			      || increment_overflow(&yearbeg1, 1)
+			      || atlo <= janfirst1)
+			    break;
+			  yearbeg = yearbeg1;
+			  janfirst = janfirst1;
+			}
+
+			yearlim = yearbeg;
+			if (increment_overflow(&yearlim, YEARSPERREPEAT + 1))
+			  yearlim = INT_MAX;
+			for (year = yearbeg; year < yearlim; year++) {
 				int_fast32_t
 				  starttime = transtime(year, &start, stdoffset),
 				  endtime = transtime(year, &end, dstoffset);
@@ -1120,29 +1283,40 @@
 				}
 				if (reversed
 				    || (starttime < endtime
-					&& (endtime - starttime
-					    < (yearsecs
-					       + (stdoffset - dstoffset))))) {
+					&& endtime - starttime < yearsecs)) {
 					if (TZ_MAX_TIMES - 2 < timecnt)
 						break;
-					yearlim = year + YEARSPERREPEAT + 1;
 					sp->ats[timecnt] = janfirst;
-					if (increment_overflow_time
-					    (&sp->ats[timecnt], starttime))
-						break;
-					sp->types[timecnt++] = reversed;
+					if (! increment_overflow_time
+					    (&sp->ats[timecnt],
+					     janoffset + starttime)
+					    && atlo <= sp->ats[timecnt])
+					  sp->types[timecnt++] = !reversed;
 					sp->ats[timecnt] = janfirst;
-					if (increment_overflow_time
-					    (&sp->ats[timecnt], endtime))
-						break;
-					sp->types[timecnt++] = !reversed;
+					if (! increment_overflow_time
+					    (&sp->ats[timecnt],
+					     janoffset + endtime)
+					    && atlo <= sp->ats[timecnt]) {
+					  sp->types[timecnt++] = reversed;
+					}
 				}
-				if (increment_overflow_time(&janfirst, yearsecs))
+				if (endtime < leaplo) {
+				  yearlim = year;
+				  if (increment_overflow(&yearlim,
+							 YEARSPERREPEAT + 1))
+				    yearlim = INT_MAX;
+				}
+				if (increment_overflow_time
+				    (&janfirst, janoffset + yearsecs))
 					break;
+				janoffset = 0;
 			}
 			sp->timecnt = timecnt;
-			if (!timecnt)
+			if (! timecnt) {
+				sp->ttis[0] = sp->ttis[1];
 				sp->typecnt = 1;	/* Perpetual DST.  */
+			} else if (YEARSPERREPEAT < year - yearbeg)
+				sp->goback = sp->goahead = true;
 		} else {
 			register int_fast32_t	theirstdoffset;
 			register int_fast32_t	theirdstoffset;
@@ -1161,7 +1335,7 @@
 				j = sp->types[i];
 				if (!sp->ttis[j].tt_isdst) {
 					theirstdoffset =
-						-sp->ttis[j].tt_gmtoff;
+						- sp->ttis[j].tt_utoff;
 					break;
 				}
 			}
@@ -1170,7 +1344,7 @@
 				j = sp->types[i];
 				if (sp->ttis[j].tt_isdst) {
 					theirdstoffset =
-						-sp->ttis[j].tt_gmtoff;
+						- sp->ttis[j].tt_utoff;
 					break;
 				}
 			}
@@ -1178,7 +1352,6 @@
 			** Initially we're assumed to be in standard time.
 			*/
 			isdst = false;
-			theiroffset = theirstdoffset;
 			/*
 			** Now juggle transition times and types
 			** tracking offsets as you do.
@@ -1186,16 +1359,17 @@
 			for (i = 0; i < sp->timecnt; ++i) {
 				j = sp->types[i];
 				sp->types[i] = sp->ttis[j].tt_isdst;
-				if (sp->ttis[j].tt_ttisgmt) {
+				if (sp->ttis[j].tt_ttisut) {
 					/* No adjustment to transition time */
 				} else {
 					/*
-					** If summer time is in effect, and the
-					** transition time was not specified as
-					** standard time, add the summer time
-					** offset to the transition time;
-					** otherwise, add the standard time
-					** offset to the transition time.
+					** If daylight saving time is in
+					** effect, and the transition time was
+					** not specified as standard time, add
+					** the daylight saving time offset to
+					** the transition time; otherwise, add
+					** the standard time offset to the
+					** transition time.
 					*/
 					/*
 					** Transitions from DST to DDST
@@ -1211,7 +1385,7 @@
 							theirstdoffset;
 					}
 				}
-				theiroffset = -sp->ttis[j].tt_gmtoff;
+				theiroffset = -sp->ttis[j].tt_utoff;
 				if (sp->ttis[j].tt_isdst)
 					theirdstoffset = theiroffset;
 				else	theirstdoffset = theiroffset;
@@ -1247,7 +1421,7 @@
 gmtload(struct state *const sp)
 {
 	if (tzload(gmt, sp, true) != 0)
-		tzparse(gmt, sp, true);
+	  tzparse("GMT0", sp, NULL);
 }
 
 /* Initialize *SP to a value appropriate for the TZ setting NAME.
@@ -1270,7 +1444,7 @@
     return 0;
   } else {
     int err = tzload(name, sp, true);
-    if (err != 0 && name && name[0] != ':' && tzparse(name, sp, false))
+    if (err != 0 && name && name[0] != ':' && tzparse(name, sp, NULL))
       err = 0;
     if (err == 0)
       scrub_abbrs(sp);
@@ -1301,17 +1475,6 @@
   lcl_is_set = lcl;
 }
 
-#ifdef STD_INSPIRED
-void
-tzsetwall(void)
-{
-  if (lock() != 0)
-    return;
-  tzsetlcl(NULL);
-  unlock();
-}
-#endif
-
 #if defined(__BIONIC__)
 extern void tzset_unlocked(void);
 #else
@@ -1361,7 +1524,8 @@
       errno = err;
       return NULL;
     }
-  }
+  } else if (!HAVE_MALLOC_ERRNO)
+    errno = ENOMEM;
   return sp;
 }
 
@@ -1391,7 +1555,7 @@
 **
 ** If successful and SETNAME is nonzero,
 ** set the applicable parts of tzname, timezone and altzone;
-** however, it's OK to omit this step if the time zone is POSIX-compatible,
+** however, it's OK to omit this step if the timezone is POSIX-compatible,
 ** since in that case tzset should have already done this step correctly.
 ** SETNAME's type is intfast32_t for compatibility with gmtsub,
 ** but it is actually a boolean and its value should be 0 or 1.
@@ -1413,7 +1577,7 @@
 	}
 	if ((sp->goback && t < sp->ats[0]) ||
 		(sp->goahead && t > sp->ats[sp->timecnt - 1])) {
-			time_t			newt = t;
+			time_t newt;
 			register time_t		seconds;
 			register time_t		years;
 
@@ -1421,11 +1585,17 @@
 				seconds = sp->ats[0] - t;
 			else	seconds = t - sp->ats[sp->timecnt - 1];
 			--seconds;
-			years = (seconds / SECSPERREPEAT + 1) * YEARSPERREPEAT;
+
+			/* Beware integer overflow, as SECONDS might
+			   be close to the maximum time_t.  */
+			years = seconds / SECSPERREPEAT * YEARSPERREPEAT;
 			seconds = years * AVGSECSPERYEAR;
+			years += YEARSPERREPEAT;
 			if (t < sp->ats[0])
-				newt += seconds;
-			else	newt -= seconds;
+			  newt = t + seconds + SECSPERREPEAT;
+			else
+			  newt = t - seconds - SECSPERREPEAT;
+
 			if (newt < sp->ats[0] ||
 				newt > sp->ats[sp->timecnt - 1])
 					return NULL;	/* "cannot happen" */
@@ -1456,20 +1626,20 @@
 				hi = mid;
 			else	lo = mid + 1;
 		}
-		i = (int) sp->types[lo - 1];
+		i = sp->types[lo - 1];
 	}
 	ttisp = &sp->ttis[i];
 	/*
 	** To get (wrong) behavior that's compatible with System V Release 2.0
 	** you'd replace the statement below with
-	**	t += ttisp->tt_gmtoff;
+	**	t += ttisp->tt_utoff;
 	**	timesub(&t, 0L, sp, tmp);
 	*/
-	result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
+	result = timesub(&t, ttisp->tt_utoff, sp, tmp);
 	if (result) {
 	  result->tm_isdst = ttisp->tt_isdst;
 #ifdef TM_ZONE
-	  result->TM_ZONE = (char *) &sp->chars[ttisp->tt_abbrind];
+	  result->TM_ZONE = (char *) &sp->chars[ttisp->tt_desigidx];
 #endif /* defined TM_ZONE */
 	  if (setname)
 	    update_tzname_etc(sp, ttisp);
@@ -1534,7 +1704,7 @@
 #ifdef TM_ZONE
 	/*
 	** Could get fancy here and deliver something such as
-	** "UT+xxxx" or "UT-xxxx" if offset is non-zero,
+	** "+xx" or "-xx" if offset is non-zero,
 	** but this is no time for a treasure hunt.
 	*/
 	tmp->TM_ZONE = ((char *)
@@ -1576,11 +1746,18 @@
 ** where, to make the math easy, the answer for year zero is defined as zero.
 */
 
-static int ATTRIBUTE_PURE
-leaps_thru_end_of(register const int y)
+static time_t
+leaps_thru_end_of_nonneg(time_t y)
 {
-	return (y >= 0) ? (y / 4 - y / 100 + y / 400) :
-		-(leaps_thru_end_of(-(y + 1)) + 1);
+  return y / 4 - y / 100 + y / 400;
+}
+
+static time_t
+leaps_thru_end_of(time_t y)
+{
+  return (y < 0
+	  ? -1 - leaps_thru_end_of_nonneg(-1 - y)
+	  : leaps_thru_end_of_nonneg(y));
 }
 
 static struct tm *
@@ -1589,122 +1766,106 @@
 {
 	register const struct lsinfo *	lp;
 	register time_t			tdays;
-	register int			idays;	/* unsigned would be so 2003 */
-	register int_fast64_t		rem;
-	int				y;
 	register const int *		ip;
-	register int_fast64_t		corr;
-	register bool			hit;
+	register int_fast32_t		corr;
 	register int			i;
+	int_fast32_t idays, rem, dayoff, dayrem;
+	time_t y;
+
+	/* If less than SECSPERMIN, the number of seconds since the
+	   most recent positive leap second; otherwise, do not add 1
+	   to localtime tm_sec because of leap seconds.  */
+	time_t secs_since_posleap = SECSPERMIN;
 
 	corr = 0;
-	hit = false;
 	i = (sp == NULL) ? 0 : sp->leapcnt;
 	while (--i >= 0) {
 		lp = &sp->lsis[i];
 		if (*timep >= lp->ls_trans) {
-			if (*timep == lp->ls_trans) {
-				hit = ((i == 0 && lp->ls_corr > 0) ||
-					lp->ls_corr > sp->lsis[i - 1].ls_corr);
-				if (hit)
-					while (i > 0 &&
-						sp->lsis[i].ls_trans ==
-						sp->lsis[i - 1].ls_trans + 1 &&
-						sp->lsis[i].ls_corr ==
-						sp->lsis[i - 1].ls_corr + 1) {
-							++hit;
-							--i;
-					}
-			}
 			corr = lp->ls_corr;
+			if ((i == 0 ? 0 : lp[-1].ls_corr) < corr)
+			  secs_since_posleap = *timep - lp->ls_trans;
 			break;
 		}
 	}
-	y = EPOCH_YEAR;
+
+	/* Calculate the year, avoiding integer overflow even if
+	   time_t is unsigned.  */
 	tdays = *timep / SECSPERDAY;
 	rem = *timep % SECSPERDAY;
-	while (tdays < 0 || tdays >= year_lengths[isleap(y)]) {
-		int		newy;
-		register time_t	tdelta;
-		register int	idelta;
+	rem += offset % SECSPERDAY - corr % SECSPERDAY + 3 * SECSPERDAY;
+	dayoff = offset / SECSPERDAY - corr / SECSPERDAY + rem / SECSPERDAY - 3;
+	rem %= SECSPERDAY;
+	/* y = (EPOCH_YEAR
+	        + floor((tdays + dayoff) / DAYSPERREPEAT) * YEARSPERREPEAT),
+	   sans overflow.  But calculate against 1570 (EPOCH_YEAR -
+	   YEARSPERREPEAT) instead of against 1970 so that things work
+	   for localtime values before 1970 when time_t is unsigned.  */
+	dayrem = tdays % DAYSPERREPEAT;
+	dayrem += dayoff % DAYSPERREPEAT;
+	y = (EPOCH_YEAR - YEARSPERREPEAT
+	     + ((1 + dayoff / DAYSPERREPEAT + dayrem / DAYSPERREPEAT
+		 - ((dayrem % DAYSPERREPEAT) < 0)
+		 + tdays / DAYSPERREPEAT)
+		* YEARSPERREPEAT));
+	/* idays = (tdays + dayoff) mod DAYSPERREPEAT, sans overflow.  */
+	idays = tdays % DAYSPERREPEAT;
+	idays += dayoff % DAYSPERREPEAT + 2 * DAYSPERREPEAT;
+	idays %= DAYSPERREPEAT;
+	/* Increase Y and decrease IDAYS until IDAYS is in range for Y.  */
+	while (year_lengths[isleap(y)] <= idays) {
+		int tdelta = idays / DAYSPERLYEAR;
+		int_fast32_t ydelta = tdelta + !tdelta;
+		time_t newy = y + ydelta;
 		register int	leapdays;
-
-		tdelta = tdays / DAYSPERLYEAR;
-		if (! ((! TYPE_SIGNED(time_t) || INT_MIN <= tdelta)
-		       && tdelta <= INT_MAX))
-		  goto out_of_range;
-		idelta = tdelta;
-		if (idelta == 0)
-			idelta = (tdays < 0) ? -1 : 1;
-		newy = y;
-		if (increment_overflow(&newy, idelta))
-		  goto out_of_range;
 		leapdays = leaps_thru_end_of(newy - 1) -
 			leaps_thru_end_of(y - 1);
-		tdays -= ((time_t) newy - y) * DAYSPERNYEAR;
-		tdays -= leapdays;
+		idays -= ydelta * DAYSPERNYEAR;
+		idays -= leapdays;
 		y = newy;
 	}
-	/*
-	** Given the range, we can now fearlessly cast...
-	*/
-	idays = tdays;
-	rem += offset - corr;
-	while (rem < 0) {
-		rem += SECSPERDAY;
-		--idays;
+
+	if (!TYPE_SIGNED(time_t) && y < TM_YEAR_BASE) {
+	  int signed_y = y;
+	  tmp->tm_year = signed_y - TM_YEAR_BASE;
+	} else if ((!TYPE_SIGNED(time_t) || INT_MIN + TM_YEAR_BASE <= y)
+		   && y - TM_YEAR_BASE <= INT_MAX)
+	  tmp->tm_year = y - TM_YEAR_BASE;
+	else {
+	  errno = EOVERFLOW;
+	  return NULL;
 	}
-	while (rem >= SECSPERDAY) {
-		rem -= SECSPERDAY;
-		++idays;
-	}
-	while (idays < 0) {
-		if (increment_overflow(&y, -1))
-		  goto out_of_range;
-		idays += year_lengths[isleap(y)];
-	}
-	while (idays >= year_lengths[isleap(y)]) {
-		idays -= year_lengths[isleap(y)];
-		if (increment_overflow(&y, 1))
-		  goto out_of_range;
-	}
-	tmp->tm_year = y;
-	if (increment_overflow(&tmp->tm_year, -TM_YEAR_BASE))
-	  goto out_of_range;
 	tmp->tm_yday = idays;
 	/*
 	** The "extra" mods below avoid overflow problems.
 	*/
-	tmp->tm_wday = EPOCH_WDAY +
-		((y - EPOCH_YEAR) % DAYSPERWEEK) *
-		(DAYSPERNYEAR % DAYSPERWEEK) +
-		leaps_thru_end_of(y - 1) -
-		leaps_thru_end_of(EPOCH_YEAR - 1) +
-		idays;
+	tmp->tm_wday = (TM_WDAY_BASE
+			+ ((tmp->tm_year % DAYSPERWEEK)
+			   * (DAYSPERNYEAR % DAYSPERWEEK))
+			+ leaps_thru_end_of(y - 1)
+			- leaps_thru_end_of(TM_YEAR_BASE - 1)
+			+ idays);
 	tmp->tm_wday %= DAYSPERWEEK;
 	if (tmp->tm_wday < 0)
 		tmp->tm_wday += DAYSPERWEEK;
-	tmp->tm_hour = (int) (rem / SECSPERHOUR);
+	tmp->tm_hour = rem / SECSPERHOUR;
 	rem %= SECSPERHOUR;
-	tmp->tm_min = (int) (rem / SECSPERMIN);
-	/*
-	** A positive leap second requires a special
-	** representation. This uses "... ??:59:60" et seq.
-	*/
-	tmp->tm_sec = (int) (rem % SECSPERMIN) + hit;
+	tmp->tm_min = rem / SECSPERMIN;
+	tmp->tm_sec = rem % SECSPERMIN;
+
+	/* Use "... ??:??:60" at the end of the localtime minute containing
+	   the second just before the positive leap second.  */
+	tmp->tm_sec += secs_since_posleap <= tmp->tm_sec;
+
 	ip = mon_lengths[isleap(y)];
 	for (tmp->tm_mon = 0; idays >= ip[tmp->tm_mon]; ++(tmp->tm_mon))
 		idays -= ip[tmp->tm_mon];
-	tmp->tm_mday = (int) (idays + 1);
+	tmp->tm_mday = idays + 1;
 	tmp->tm_isdst = 0;
 #ifdef TM_GMTOFF
 	tmp->TM_GMTOFF = offset;
 #endif /* defined TM_GMTOFF */
 	return tmp;
-
- out_of_range:
-	errno = EOVERFLOW;
-	return NULL;
 }
 
 char *
@@ -1778,12 +1939,12 @@
 {
 	/*
 	** This is like
-	** 'if (! (time_t_min <= *tp + j && *tp + j <= time_t_max)) ...',
+	** 'if (! (TIME_T_MIN <= *tp + j && *tp + j <= TIME_T_MAX)) ...',
 	** except that it does the right thing even if *tp + j would overflow.
 	*/
 	if (! (j < 0
-	       ? (TYPE_SIGNED(time_t) ? time_t_min - j <= *tp : -1 - j < *tp)
-	       : *tp <= time_t_max - j))
+	       ? (TYPE_SIGNED(time_t) ? TIME_T_MIN - j <= *tp : -1 - j < *tp)
+	       : *tp <= TIME_T_MAX - j))
 		return true;
 	*tp += j;
 	return false;
@@ -1919,8 +2080,8 @@
 	/*
 	** Do a binary search (this works whatever time_t's type is).
 	*/
-	lo = time_t_min;
-	hi = time_t_max;
+	lo = TIME_T_MIN;
+	hi = TIME_T_MAX;
 	for ( ; ; ) {
 		t = lo / 2 + hi / 2;
 		if (t < lo)
@@ -1937,12 +2098,12 @@
 		} else	dir = tmcomp(&mytm, &yourtm);
 		if (dir != 0) {
 			if (t == lo) {
-				if (t == time_t_max)
+				if (t == TIME_T_MAX)
 					return WRONG;
 				++t;
 				++lo;
 			} else if (t == hi) {
-				if (t == time_t_min)
+				if (t == TIME_T_MIN)
 					return WRONG;
 				--t;
 				--hi;
@@ -1959,13 +2120,13 @@
 		    && (yourtm.TM_GMTOFF < 0
 			? (-SECSPERDAY <= yourtm.TM_GMTOFF
 			   && (mytm.TM_GMTOFF <=
-			       (SMALLEST (INT_FAST32_MAX, LONG_MAX)
+			       (SMALLEST(INT_FAST32_MAX, LONG_MAX)
 				+ yourtm.TM_GMTOFF)))
 			: (yourtm.TM_GMTOFF <= SECSPERDAY
-			   && ((BIGGEST (INT_FAST32_MIN, LONG_MIN)
+			   && ((BIGGEST(INT_FAST32_MIN, LONG_MIN)
 				+ yourtm.TM_GMTOFF)
 			       <= mytm.TM_GMTOFF)))) {
-		  /* MYTM matches YOURTM except with the wrong UTC offset.
+		  /* MYTM matches YOURTM except with the wrong UT offset.
 		     YOURTM.TM_GMTOFF is plausible, so try it instead.
 		     It's OK if YOURTM.TM_GMTOFF contains uninitialized data,
 		     since the guess gets checked.  */
@@ -1999,8 +2160,10 @@
 			for (j = sp->typecnt - 1; j >= 0; --j) {
 				if (sp->ttis[j].tt_isdst == yourtm.tm_isdst)
 					continue;
-				newt = t + sp->ttis[j].tt_gmtoff -
-					sp->ttis[i].tt_gmtoff;
+				if (ttunspecified(sp, j))
+				  continue;
+				newt = (t + sp->ttis[j].tt_utoff
+					- sp->ttis[i].tt_utoff);
 				if (! funcp(sp, &newt, offset, &mytm))
 					continue;
 				if (tmcomp(&mytm, &yourtm) != 0)
@@ -2047,8 +2210,8 @@
 
 static time_t
 time1(struct tm *const tmp,
-      struct tm *(*funcp) (struct state const *, time_t const *,
-			   int_fast32_t, struct tm *),
+      struct tm *(*funcp)(struct state const *, time_t const *,
+			  int_fast32_t, struct tm *),
       struct state const *sp,
       const int_fast32_t offset)
 {
@@ -2091,7 +2254,7 @@
 		seen[i] = false;
 	nseen = 0;
 	for (i = sp->timecnt - 1; i >= 0; --i)
-		if (!seen[sp->types[i]]) {
+		if (!seen[sp->types[i]] && !ttunspecified(sp, sp->types[i])) {
 			seen[sp->types[i]] = true;
 			types[nseen++] = sp->types[i];
 		}
@@ -2103,14 +2266,14 @@
 			otheri = types[otherind];
 			if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst)
 				continue;
-			tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
-					sp->ttis[samei].tt_gmtoff;
+			tmp->tm_sec += (sp->ttis[otheri].tt_utoff
+					- sp->ttis[samei].tt_utoff);
 			tmp->tm_isdst = !tmp->tm_isdst;
 			t = time2(tmp, funcp, sp, offset, &okay);
 			if (okay)
 				return t;
-			tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
-					sp->ttis[samei].tt_gmtoff;
+			tmp->tm_sec -= (sp->ttis[otheri].tt_utoff
+					- sp->ttis[samei].tt_utoff);
 			tmp->tm_isdst = !tmp->tm_isdst;
 		}
 	}
@@ -2188,21 +2351,7 @@
 
 #endif /* defined STD_INSPIRED */
 
-/*
-** XXX--is the below the right way to conditionalize??
-*/
-
-#ifdef STD_INSPIRED
-
-/*
-** IEEE Std 1003.1-1988 (POSIX) legislates that 536457599
-** shall correspond to "Wed Dec 31 23:59:59 UTC 1986", which
-** is not the case if we are accounting for leap seconds.
-** So, we provide the following conversion routines for use
-** when exchanging timestamps with POSIX conforming systems.
-*/
-
-static int_fast64_t
+static int_fast32_t
 leapcorr(struct state const *sp, time_t t)
 {
 	register struct lsinfo const *	lp;
@@ -2217,7 +2366,29 @@
 	return 0;
 }
 
-NETBSD_INSPIRED_EXTERN time_t ATTRIBUTE_PURE
+/*
+** XXX--is the below the right way to conditionalize??
+*/
+
+#ifdef STD_INSPIRED
+
+/* NETBSD_INSPIRED_EXTERN functions are exported to callers if
+   NETBSD_INSPIRED is defined, and are private otherwise.  */
+# if NETBSD_INSPIRED
+#  define NETBSD_INSPIRED_EXTERN
+# else
+#  define NETBSD_INSPIRED_EXTERN static
+# endif
+
+/*
+** IEEE Std 1003.1 (POSIX) says that 536457599
+** shall correspond to "Wed Dec 31 23:59:59 UTC 1986", which
+** is not the case if we are accounting for leap seconds.
+** So, we provide the following conversion routines for use
+** when exchanging timestamps with POSIX conforming systems.
+*/
+
+NETBSD_INSPIRED_EXTERN time_t
 time2posix_z(struct state *sp, time_t t)
 {
   return t - leapcorr(sp, t);
@@ -2239,7 +2410,7 @@
   return t;
 }
 
-NETBSD_INSPIRED_EXTERN time_t ATTRIBUTE_PURE
+NETBSD_INSPIRED_EXTERN time_t
 posix2time_z(struct state *sp, time_t t)
 {
 	time_t	x;
@@ -2286,15 +2457,39 @@
 
 #endif /* defined STD_INSPIRED */
 
-#ifdef time_tz
+#if TZ_TIME_T
+
+# if !USG_COMPAT
+#  define daylight 0
+#  define timezone 0
+# endif
+# if !ALTZONE
+#  define altzone 0
+# endif
 
 /* Convert from the underlying system's time_t to the ersatz time_tz,
-   which is called 'time_t' in this file.  */
+   which is called 'time_t' in this file.  Typically, this merely
+   converts the time's integer width.  On some platforms, the system
+   time is local time not UT, or uses some epoch other than the POSIX
+   epoch.
+
+   Although this code appears to define a function named 'time' that
+   returns time_t, the macros in private.h cause this code to actually
+   define a function named 'tz_time' that returns tz_time_t.  The call
+   to sys_time invokes the underlying system's 'time' function.  */
 
 time_t
 time(time_t *p)
 {
   time_t r = sys_time(0);
+  if (r != (time_t) -1) {
+    int_fast32_t offset = EPOCH_LOCAL ? (daylight ? timezone : altzone) : 0;
+    if (increment_overflow32(&offset, -EPOCH_OFFSET)
+	|| increment_overflow_time(&r, offset)) {
+      errno = EOVERFLOW;
+      r = -1;
+    }
+  }
   if (p)
     *p = r;
   return r;
diff --git a/libc/tzcode/private.h b/libc/tzcode/private.h
index 941e91b..4c03324 100644
--- a/libc/tzcode/private.h
+++ b/libc/tzcode/private.h
@@ -1,3 +1,5 @@
+/* Private header for tzdb code.  */
+
 #ifndef PRIVATE_H
 
 #define PRIVATE_H
@@ -15,6 +17,17 @@
 ** Thank you!
 */
 
+/*
+** zdump has been made independent of the rest of the time
+** conversion package to increase confidence in the verification it provides.
+** You can use zdump to help in verifying other implementations.
+** To do this, compile with -DUSE_LTZ=0 and link without the tz library.
+*/
+#ifndef USE_LTZ
+# define USE_LTZ 1
+#endif
+
+/* This string was in the Factory zone through version 2016f.  */
 #define GRANDPARENTED	"Local time zone must be set--see zic manual page"
 
 /*
@@ -26,26 +39,53 @@
 #define HAVE_DECL_ASCTIME_R 1
 #endif
 
+#if !defined HAVE_GENERIC && defined __has_extension
+# if __has_extension(c_generic_selections)
+#  define HAVE_GENERIC 1
+# else
+#  define HAVE_GENERIC 0
+# endif
+#endif
+/* _Generic is buggy in pre-4.9 GCC.  */
+#if !defined HAVE_GENERIC && defined __GNUC__
+# define HAVE_GENERIC (4 < __GNUC__ + (9 <= __GNUC_MINOR__))
+#endif
+#ifndef HAVE_GENERIC
+# define HAVE_GENERIC (201112 <= __STDC_VERSION__)
+#endif
+
 #ifndef HAVE_GETTEXT
 #define HAVE_GETTEXT		0
 #endif /* !defined HAVE_GETTEXT */
 
 #ifndef HAVE_INCOMPATIBLE_CTIME_R
 #define HAVE_INCOMPATIBLE_CTIME_R	0
-#endif /* !defined INCOMPATIBLE_CTIME_R */
+#endif
 
 #ifndef HAVE_LINK
 #define HAVE_LINK		1
 #endif /* !defined HAVE_LINK */
 
+#ifndef HAVE_MALLOC_ERRNO
+#define HAVE_MALLOC_ERRNO 1
+#endif
+
 #ifndef HAVE_POSIX_DECLS
 #define HAVE_POSIX_DECLS 1
 #endif
 
+#ifndef HAVE_STDBOOL_H
+#define HAVE_STDBOOL_H (199901 <= __STDC_VERSION__)
+#endif
+
 #ifndef HAVE_STRDUP
 #define HAVE_STRDUP 1
 #endif
 
+#ifndef HAVE_STRTOLL
+#define HAVE_STRTOLL 1
+#endif
+
 #ifndef HAVE_SYMLINK
 #define HAVE_SYMLINK		1
 #endif /* !defined HAVE_SYMLINK */
@@ -54,10 +94,6 @@
 #define HAVE_SYS_STAT_H		1
 #endif /* !defined HAVE_SYS_STAT_H */
 
-#ifndef HAVE_SYS_WAIT_H
-#define HAVE_SYS_WAIT_H		1
-#endif /* !defined HAVE_SYS_WAIT_H */
-
 #ifndef HAVE_UNISTD_H
 #define HAVE_UNISTD_H		1
 #endif /* !defined HAVE_UNISTD_H */
@@ -75,22 +111,37 @@
 #define ctime_r _incompatible_ctime_r
 #endif /* HAVE_INCOMPATIBLE_CTIME_R */
 
-/* Enable tm_gmtoff and tm_zone on GNUish systems.  */
+/* Enable tm_gmtoff, tm_zone, and environ on GNUish systems.  */
 #define _GNU_SOURCE 1
-/* Fix asctime_r on Solaris 10.  */
+/* Fix asctime_r on Solaris 11.  */
 #define _POSIX_PTHREAD_SEMANTICS 1
-/* Enable strtoimax on Solaris 10.  */
+/* Enable strtoimax on pre-C99 Solaris 11.  */
 #define __EXTENSIONS__ 1
 
+/* To avoid having 'stat' fail unnecessarily with errno == EOVERFLOW,
+   enable large files on GNUish systems ...  */
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
+/* ... and on AIX ...  */
+#define _LARGE_FILES 1
+/* ... and enable large inode numbers on Mac OS X 10.5 and later.  */
+#define _DARWIN_USE_64_BIT_INODE 1
+
 /*
 ** Nested includes
 */
 
-/* Avoid clashes with NetBSD by renaming NetBSD's declarations.  */
+/* Avoid clashes with NetBSD by renaming NetBSD's declarations.
+   If defining the 'timezone' variable, avoid a clash with FreeBSD's
+   'timezone' function by renaming its declaration.  */
 #define localtime_rz sys_localtime_rz
 #define mktime_z sys_mktime_z
 #define posix2time_z sys_posix2time_z
 #define time2posix_z sys_time2posix_z
+#if defined USG_COMPAT && USG_COMPAT == 2
+# define timezone sys_timezone
+#endif
 #define timezone_t sys_timezone_t
 #define tzalloc sys_tzalloc
 #define tzfree sys_tzfree
@@ -99,21 +150,30 @@
 #undef mktime_z
 #undef posix2time_z
 #undef time2posix_z
+#if defined USG_COMPAT && USG_COMPAT == 2
+# undef timezone
+#endif
 #undef timezone_t
 #undef tzalloc
 #undef tzfree
 
-#include "sys/types.h"	/* for time_t */
-#include "stdio.h"
-#include "string.h"
-#include "limits.h"	/* for CHAR_BIT et al. */
-#include "stdlib.h"
+#include <sys/types.h>	/* for time_t */
+#include <string.h>
+#include <limits.h>	/* for CHAR_BIT et al. */
+#include <stdlib.h>
 
-#include "errno.h"
+#include <errno.h>
+
+#ifndef EINVAL
+# define EINVAL ERANGE
+#endif
 
 #ifndef ENAMETOOLONG
 # define ENAMETOOLONG EINVAL
 #endif
+#ifndef ENOMEM
+# define ENOMEM EINVAL
+#endif
 #ifndef ENOTSUP
 # define ENOTSUP EINVAL
 #endif
@@ -122,22 +182,11 @@
 #endif
 
 #if HAVE_GETTEXT
-#include "libintl.h"
+#include <libintl.h>
 #endif /* HAVE_GETTEXT */
 
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>	/* for WIFEXITED and WEXITSTATUS */
-#endif /* HAVE_SYS_WAIT_H */
-
-#ifndef WIFEXITED
-#define WIFEXITED(status)	(((status) & 0xff) == 0)
-#endif /* !defined WIFEXITED */
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(status)	(((status) >> 8) & 0xff)
-#endif /* !defined WEXITSTATUS */
-
 #if HAVE_UNISTD_H
-#include "unistd.h"	/* for F_OK, R_OK, and other POSIX goodness */
+#include <unistd.h>	/* for R_OK, and other POSIX goodness */
 #endif /* HAVE_UNISTD_H */
 
 #ifndef HAVE_STRFTIME_L
@@ -148,31 +197,49 @@
 # endif
 #endif
 
-#ifndef F_OK
-#define F_OK	0
-#endif /* !defined F_OK */
+#ifndef USG_COMPAT
+# ifndef _XOPEN_VERSION
+#  define USG_COMPAT 0
+# else
+#  define USG_COMPAT 1
+# endif
+#endif
+
+#ifndef HAVE_TZNAME
+# if _POSIX_VERSION < 198808 && !USG_COMPAT
+#  define HAVE_TZNAME 0
+# else
+#  define HAVE_TZNAME 1
+# endif
+#endif
+
+#ifndef ALTZONE
+# if defined __sun || defined _M_XENIX
+#  define ALTZONE 1
+# else
+#  define ALTZONE 0
+# endif
+#endif
+
 #ifndef R_OK
 #define R_OK	4
 #endif /* !defined R_OK */
 
-/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
-#define is_digit(c) ((unsigned)(c) - '0' <= 9)
-
 /*
 ** Define HAVE_STDINT_H's default value here, rather than at the
-** start, since __GLIBC__'s value depends on previously-included
-** files.
-** (glibc 2.1 and later have stdint.h, even with pre-C99 compilers.)
+** start, since __GLIBC__ and INTMAX_MAX's values depend on
+** previously-included files.  glibc 2.1 and Solaris 10 and later have
+** stdint.h, even with pre-C99 compilers.
 */
 #ifndef HAVE_STDINT_H
 #define HAVE_STDINT_H \
    (199901 <= __STDC_VERSION__ \
     || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__)	\
-    || __CYGWIN__)
+    || __CYGWIN__ || INTMAX_MAX)
 #endif /* !defined HAVE_STDINT_H */
 
 #if HAVE_STDINT_H
-#include "stdint.h"
+#include <stdint.h>
 #endif /* !HAVE_STDINT_H */
 
 #ifndef HAVE_INTTYPES_H
@@ -208,14 +275,18 @@
 # endif
 #endif
 
-#ifndef SCNdFAST64
+#ifndef PRIdFAST64
 # if INT_FAST64_MAX == LLONG_MAX
-#  define SCNdFAST64 "lld"
+#  define PRIdFAST64 "lld"
 # else
-#  define SCNdFAST64 "ld"
+#  define PRIdFAST64 "ld"
 # endif
 #endif
 
+#ifndef SCNdFAST64
+# define SCNdFAST64 PRIdFAST64
+#endif
+
 #ifndef INT_FAST32_MAX
 # if INT_MAX >> 31 == 0
 typedef long int_fast32_t;
@@ -231,15 +302,19 @@
 #ifndef INTMAX_MAX
 # ifdef LLONG_MAX
 typedef long long intmax_t;
-#  define strtoimax strtoll
+#  if HAVE_STRTOLL
+#   define strtoimax strtoll
+#  endif
 #  define INTMAX_MAX LLONG_MAX
 #  define INTMAX_MIN LLONG_MIN
 # else
 typedef long intmax_t;
-#  define strtoimax strtol
 #  define INTMAX_MAX LONG_MAX
 #  define INTMAX_MIN LONG_MIN
 # endif
+# ifndef strtoimax
+#  define strtoimax strtol
+# endif
 #endif
 
 #ifndef PRIdMAX
@@ -250,6 +325,10 @@
 # endif
 #endif
 
+#ifndef UINT_FAST32_MAX
+typedef unsigned long uint_fast32_t;
+#endif
+
 #ifndef UINT_FAST64_MAX
 # if defined ULLONG_MAX || defined __LONG_LONG_MAX__
 typedef unsigned long long uint_fast64_t;
@@ -289,19 +368,21 @@
 #define SIZE_MAX ((size_t) -1)
 #endif
 
-#if 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-# define ATTRIBUTE_CONST __attribute__ ((const))
-# define ATTRIBUTE_PURE __attribute__ ((__pure__))
-# define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#if 3 <= __GNUC__
+# define ATTRIBUTE_CONST __attribute__((const))
+# define ATTRIBUTE_MALLOC __attribute__((__malloc__))
+# define ATTRIBUTE_PURE __attribute__((__pure__))
+# define ATTRIBUTE_FORMAT(spec) __attribute__((__format__ spec))
 #else
 # define ATTRIBUTE_CONST /* empty */
+# define ATTRIBUTE_MALLOC /* empty */
 # define ATTRIBUTE_PURE /* empty */
 # define ATTRIBUTE_FORMAT(spec) /* empty */
 #endif
 
 #if !defined _Noreturn && __STDC_VERSION__ < 201112
 # if 2 < __GNUC__ + (8 <= __GNUC_MINOR__)
-#  define _Noreturn __attribute__ ((__noreturn__))
+#  define _Noreturn __attribute__((__noreturn__))
 # else
 #  define _Noreturn
 # endif
@@ -315,6 +396,23 @@
 ** Workarounds for compilers/systems.
 */
 
+#ifndef EPOCH_LOCAL
+# define EPOCH_LOCAL 0
+#endif
+#ifndef EPOCH_OFFSET
+# define EPOCH_OFFSET 0
+#endif
+#ifndef RESERVE_STD_EXT_IDS
+# define RESERVE_STD_EXT_IDS 0
+#endif
+
+/* If standard C identifiers with external linkage (e.g., localtime)
+   are reserved and are not already being renamed anyway, rename them
+   as if compiling with '-Dtime_tz=time_t'.  */
+#if !defined time_tz && RESERVE_STD_EXT_IDS && USE_LTZ
+# define time_tz time_t
+#endif
+
 /*
 ** Compile with -Dtime_tz=T to build the tz package with a private
 ** time_t type equivalent to T rather than the system-supplied time_t.
@@ -322,13 +420,24 @@
 ** (e.g., time_t wider than 'long', or unsigned time_t) even on
 ** typical platforms.
 */
-#ifdef time_tz
-# ifdef LOCALTIME_IMPLEMENTATION
+#if defined time_tz || EPOCH_LOCAL || EPOCH_OFFSET != 0
+# define TZ_TIME_T 1
+#else
+# define TZ_TIME_T 0
+#endif
+
+#if defined LOCALTIME_IMPLEMENTATION && TZ_TIME_T
 static time_t sys_time(time_t *x) { return time(x); }
-# endif
+#endif
+
+#if TZ_TIME_T
 
 typedef time_tz tz_time_t;
 
+# undef  asctime
+# define asctime tz_asctime
+# undef  asctime_r
+# define asctime_r tz_asctime_r
 # undef  ctime
 # define ctime tz_ctime
 # undef  ctime_r
@@ -355,6 +464,8 @@
 # define posix2time tz_posix2time
 # undef  posix2time_z
 # define posix2time_z tz_posix2time_z
+# undef  strftime
+# define strftime tz_strftime
 # undef  time
 # define time tz_time
 # undef  time2posix
@@ -375,12 +486,36 @@
 # define tzfree tz_tzfree
 # undef  tzset
 # define tzset tz_tzset
-# undef  tzsetwall
-# define tzsetwall tz_tzsetwall
+# if HAVE_STRFTIME_L
+#  undef  strftime_l
+#  define strftime_l tz_strftime_l
+# endif
+# if HAVE_TZNAME
+#  undef  tzname
+#  define tzname tz_tzname
+# endif
+# if USG_COMPAT
+#  undef  daylight
+#  define daylight tz_daylight
+#  undef  timezone
+#  define timezone tz_timezone
+# endif
+# if ALTZONE
+#  undef  altzone
+#  define altzone tz_altzone
+# endif
 
+char *asctime(struct tm const *);
+char *asctime_r(struct tm const *restrict, char *restrict);
 char *ctime(time_t const *);
 char *ctime_r(time_t const *, char *);
-double difftime(time_t, time_t);
+double difftime(time_t, time_t) ATTRIBUTE_CONST;
+size_t strftime(char *restrict, size_t, char const *restrict,
+		struct tm const *restrict);
+# if HAVE_STRFTIME_L
+size_t strftime_l(char *restrict, size_t, char const *restrict,
+		  struct tm const *restrict, locale_t);
+# endif
 struct tm *gmtime(time_t const *);
 struct tm *gmtime_r(time_t const *restrict, struct tm *restrict);
 struct tm *localtime(time_t const *);
@@ -394,18 +529,26 @@
 extern char *asctime_r(struct tm const *restrict, char *restrict);
 #endif
 
-#if !HAVE_POSIX_DECLS
-# ifdef USG_COMPAT
-#  ifndef timezone
-extern long timezone;
-#  endif
-#  ifndef daylight
-extern int daylight;
-#  endif
+#ifndef HAVE_DECL_ENVIRON
+# if defined environ || defined __USE_GNU
+#  define HAVE_DECL_ENVIRON 1
+# else
+#  define HAVE_DECL_ENVIRON 0
 # endif
 #endif
 
-#if defined ALTZONE && !defined altzone
+#if !HAVE_DECL_ENVIRON
+extern char **environ;
+#endif
+
+#if 2 <= HAVE_TZNAME + (TZ_TIME_T || !HAVE_POSIX_DECLS)
+extern char *tzname[];
+#endif
+#if 2 <= USG_COMPAT + (TZ_TIME_T || !HAVE_POSIX_DECLS)
+extern long timezone;
+extern int daylight;
+#endif
+#if 2 <= ALTZONE + (TZ_TIME_T || !HAVE_POSIX_DECLS)
 extern long altzone;
 #endif
 
@@ -415,25 +558,22 @@
 */
 
 #ifdef STD_INSPIRED
-# if !defined tzsetwall || defined time_tz
-void tzsetwall(void);
-# endif
-# if !defined offtime || defined time_tz
+# if TZ_TIME_T || !defined offtime
 struct tm *offtime(time_t const *, long);
 # endif
-# if !defined timegm || defined time_tz
+# if TZ_TIME_T || !defined timegm
 time_t timegm(struct tm *);
 # endif
-# if !defined timelocal || defined time_tz
+# if TZ_TIME_T || !defined timelocal
 time_t timelocal(struct tm *);
 # endif
-# if !defined timeoff || defined time_tz
+# if TZ_TIME_T || !defined timeoff
 time_t timeoff(struct tm *, long);
 # endif
-# if !defined time2posix || defined time_tz
+# if TZ_TIME_T || !defined time2posix
 time_t time2posix(time_t);
 # endif
-# if !defined posix2time || defined time_tz
+# if TZ_TIME_T || !defined posix2time
 time_t posix2time(time_t);
 # endif
 #endif
@@ -467,10 +607,10 @@
 timezone_t tzalloc(char const *);
 void tzfree(timezone_t);
 # ifdef STD_INSPIRED
-#  if !defined posix2time_z || defined time_tz
+#  if TZ_TIME_T || !defined posix2time_z
 time_t posix2time_z(timezone_t, time_t) ATTRIBUTE_PURE;
 #  endif
-#  if !defined time2posix_z || defined time_tz
+#  if TZ_TIME_T || !defined time2posix_z
 time_t time2posix_z(timezone_t, time_t) ATTRIBUTE_PURE;
 #  endif
 # endif
@@ -480,22 +620,16 @@
 ** Finally, some convenience items.
 */
 
-#if __STDC_VERSION__ < 199901
+#if HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
 # define true 1
 # define false 0
 # define bool int
-#else
-# include <stdbool.h>
 #endif
 
-#ifndef TYPE_BIT
-#define TYPE_BIT(type)	(sizeof (type) * CHAR_BIT)
-#endif /* !defined TYPE_BIT */
-
-#ifndef TYPE_SIGNED
+#define TYPE_BIT(type)	(sizeof(type) * CHAR_BIT)
 #define TYPE_SIGNED(type) (((type) -1) < 0)
-#endif /* !defined TYPE_SIGNED */
-
 #define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0)
 
 /* Max and min values of the integer type T, of which only the bottom
@@ -507,11 +641,34 @@
 #define MINVAL(t, b)						\
   ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0))
 
-/* The minimum and maximum finite time values.  This assumes no padding.  */
-static time_t const time_t_min = MINVAL(time_t, TYPE_BIT(time_t));
-static time_t const time_t_max = MAXVAL(time_t, TYPE_BIT(time_t));
+/* The extreme time values, assuming no padding.  */
+#define TIME_T_MIN_NO_PADDING MINVAL(time_t, TYPE_BIT(time_t))
+#define TIME_T_MAX_NO_PADDING MAXVAL(time_t, TYPE_BIT(time_t))
 
-#ifndef INT_STRLEN_MAXIMUM
+/* The extreme time values.  These are macros, not constants, so that
+   any portability problems occur only when compiling .c files that use
+   the macros, which is safer for applications that need only zdump and zic.
+   This implementation assumes no padding if time_t is signed and
+   either the compiler lacks support for _Generic or time_t is not one
+   of the standard signed integer types.  */
+#if HAVE_GENERIC
+# define TIME_T_MIN \
+    _Generic((time_t) 0, \
+	     signed char: SCHAR_MIN, short: SHRT_MIN, \
+	     int: INT_MIN, long: LONG_MIN, long long: LLONG_MIN, \
+	     default: TIME_T_MIN_NO_PADDING)
+# define TIME_T_MAX \
+    (TYPE_SIGNED(time_t) \
+     ? _Generic((time_t) 0, \
+		signed char: SCHAR_MAX, short: SHRT_MAX, \
+		int: INT_MAX, long: LONG_MAX, long long: LLONG_MAX, \
+		default: TIME_T_MAX_NO_PADDING)			    \
+     : (time_t) -1)
+#else
+# define TIME_T_MIN TIME_T_MIN_NO_PADDING
+# define TIME_T_MAX TIME_T_MAX_NO_PADDING
+#endif
+
 /*
 ** 302 / 1000 is log10(2.0) rounded up.
 ** Subtract one for the sign bit if the type is signed;
@@ -521,13 +678,12 @@
 #define INT_STRLEN_MAXIMUM(type) \
 	((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
 	1 + TYPE_SIGNED(type))
-#endif /* !defined INT_STRLEN_MAXIMUM */
 
 /*
 ** INITIALIZE(x)
 */
 
-#ifdef lint
+#ifdef GCC_LINT
 # define INITIALIZE(x)	((x) = 0)
 #else
 # define INITIALIZE(x)
@@ -537,19 +693,30 @@
 # define UNINIT_TRAP 0
 #endif
 
+#ifdef DEBUG
+# define UNREACHABLE() abort()
+#elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+# define UNREACHABLE() __builtin_unreachable()
+#elif defined __has_builtin
+# if __has_builtin(__builtin_unreachable)
+#  define UNREACHABLE() __builtin_unreachable()
+# endif
+#endif
+#ifndef UNREACHABLE
+# define UNREACHABLE() ((void) 0)
+#endif
+
 /*
 ** For the benefit of GNU folk...
 ** '_(MSGID)' uses the current locale's message library string for MSGID.
 ** The default is to use gettext if available, and use MSGID otherwise.
 */
 
-#ifndef _
 #if HAVE_GETTEXT
 #define _(msgid) gettext(msgid)
 #else /* !HAVE_GETTEXT */
 #define _(msgid) msgid
 #endif /* !HAVE_GETTEXT */
-#endif /* !defined _ */
 
 #if !defined TZ_DOMAIN && defined HAVE_GETTEXT
 # define TZ_DOMAIN "tz"
@@ -562,24 +729,64 @@
 char *ctime_r(time_t const *, char *);
 #endif /* HAVE_INCOMPATIBLE_CTIME_R */
 
-#ifndef YEARSPERREPEAT
+/* Handy macros that are independent of tzfile implementation.  */
+
+#define SECSPERMIN	60
+#define MINSPERHOUR	60
+#define HOURSPERDAY	24
+#define DAYSPERWEEK	7
+#define DAYSPERNYEAR	365
+#define DAYSPERLYEAR	366
+#define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR)
+#define SECSPERDAY	((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
+#define MONSPERYEAR	12
+
 #define YEARSPERREPEAT		400	/* years before a Gregorian repeat */
-#endif /* !defined YEARSPERREPEAT */
+#define DAYSPERREPEAT		((int_fast32_t) 400 * 365 + 100 - 4 + 1)
+#define SECSPERREPEAT		((int_fast64_t) DAYSPERREPEAT * SECSPERDAY)
+#define AVGSECSPERYEAR		(SECSPERREPEAT / YEARSPERREPEAT)
+
+#define TM_SUNDAY	0
+#define TM_MONDAY	1
+#define TM_TUESDAY	2
+#define TM_WEDNESDAY	3
+#define TM_THURSDAY	4
+#define TM_FRIDAY	5
+#define TM_SATURDAY	6
+
+#define TM_JANUARY	0
+#define TM_FEBRUARY	1
+#define TM_MARCH	2
+#define TM_APRIL	3
+#define TM_MAY		4
+#define TM_JUNE		5
+#define TM_JULY		6
+#define TM_AUGUST	7
+#define TM_SEPTEMBER	8
+#define TM_OCTOBER	9
+#define TM_NOVEMBER	10
+#define TM_DECEMBER	11
+
+#define TM_YEAR_BASE	1900
+#define TM_WDAY_BASE	TM_MONDAY
+
+#define EPOCH_YEAR	1970
+#define EPOCH_WDAY	TM_THURSDAY
+
+#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
 
 /*
-** The Gregorian year averages 365.2425 days, which is 31556952 seconds.
+** Since everything in isleap is modulo 400 (or a factor of 400), we know that
+**	isleap(y) == isleap(y % 400)
+** and so
+**	isleap(a + b) == isleap((a + b) % 400)
+** or
+**	isleap(a + b) == isleap(a % 400 + b % 400)
+** This is true even if % means modulo rather than Fortran remainder
+** (which is allowed by C89 but not by C99 or later).
+** We use this to avoid addition overflow problems.
 */
 
-#ifndef AVGSECSPERYEAR
-#define AVGSECSPERYEAR		31556952L
-#endif /* !defined AVGSECSPERYEAR */
-
-#ifndef SECSPERREPEAT
-#define SECSPERREPEAT		((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
-#endif /* !defined SECSPERREPEAT */
-
-#ifndef SECSPERREPEAT_BITS
-#define SECSPERREPEAT_BITS	34	/* ceil(log2(SECSPERREPEAT)) */
-#endif /* !defined SECSPERREPEAT_BITS */
+#define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
 
 #endif /* !defined PRIVATE_H */
diff --git a/libc/tzcode/strftime.c b/libc/tzcode/strftime.c
index 7c4be49..d04c5ba 100644
--- a/libc/tzcode/strftime.c
+++ b/libc/tzcode/strftime.c
@@ -1,4 +1,4 @@
-/* Convert a broken-down time stamp to a string.  */
+/* Convert a broken-down timestamp to a string.  */
 
 /* Copyright 1989 The Regents of the University of California.
    All rights reserved.
@@ -35,9 +35,13 @@
 
 #include "private.h"
 
-#include "tzfile.h"
-#include "fcntl.h"
-#include "locale.h"
+#include <fcntl.h>
+#include <locale.h>
+#include <stdio.h>
+
+#ifndef DEPRECATE_TWO_DIGIT_YEARS
+# define DEPRECATE_TWO_DIGIT_YEARS false
+#endif
 
 #if defined(__BIONIC__)
 
@@ -45,6 +49,7 @@
 #if defined(__LP64__)
 #define time64_t time_t
 #define mktime64 mktime
+#define localtime64_r localtime_r
 #else
 #include <time64.h>
 #endif
@@ -88,7 +93,7 @@
 
     /*
     ** x_fmt
-    ** C99 requires this format.
+    ** C99 and later require this format.
     ** Using just numbers (as here) makes Quakers happier;
     ** it's also compatible with SVR4.
     */
@@ -96,7 +101,7 @@
 
     /*
     ** c_fmt
-    ** C99 requires this format.
+    ** C99 and later require this format.
     ** Previously this code used "%D %X", but we now conform to C99.
     ** Note that
     **  "%a %b %d %H:%M:%S %Y"
@@ -114,25 +119,18 @@
     "%a %b %e %H:%M:%S %Z %Y"
 };
 
+enum warn { IN_NONE, IN_SOME, IN_THIS, IN_ALL };
+
 static char *   _add(const char *, char *, const char *, int);
 static char *   _conv(int, const char *, char *, const char *);
 static char *   _fmt(const char *, const struct tm *, char *, const char *,
-            int *);
+            enum warn *);
 static char *   _yconv(int, int, bool, bool, char *, const char *, int);
 
-#if !HAVE_POSIX_DECLS
-extern char *   tzname[];
-#endif
-
 #ifndef YEAR_2000_NAME
 #define YEAR_2000_NAME  "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS"
 #endif /* !defined YEAR_2000_NAME */
 
-#define IN_NONE 0
-#define IN_SOME 1
-#define IN_THIS 2
-#define IN_ALL  3
-
 #if HAVE_STRFTIME_L
 size_t
 strftime_l(char *s, size_t maxsize, char const *format, struct tm const *t,
@@ -149,18 +147,19 @@
 strftime(char *s, size_t maxsize, const char *format, const struct tm *t)
 {
     char *  p;
-    int warn;
+    int saved_errno = errno;
+    enum warn warn = IN_NONE;
 
     tzset();
-    warn = IN_NONE;
-    p = _fmt(((format == NULL) ? "%c" : format), t, s, s + maxsize, &warn);
-#ifndef NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU
-    if (warn != IN_NONE && getenv(YEAR_2000_NAME) != NULL) {
+    p = _fmt(format, t, s, s + maxsize, &warn);
+    if (!p) {
+       errno = EOVERFLOW;
+       return 0;
+    }
+    if (DEPRECATE_TWO_DIGIT_YEARS
+          && warn != IN_NONE && getenv(YEAR_2000_NAME)) {
         fprintf(stderr, "\n");
-        if (format == NULL)
-            fprintf(stderr, "NULL strftime format ");
-        else    fprintf(stderr, "strftime format \"%s\" ",
-                format);
+        fprintf(stderr, "strftime format \"%s\" ", format);
         fprintf(stderr, "yields only two digits of years in ");
         if (warn == IN_SOME)
             fprintf(stderr, "some locales");
@@ -169,10 +168,12 @@
         else    fprintf(stderr, "all locales");
         fprintf(stderr, "\n");
     }
-#endif /* !defined NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU */
-    if (p == s + maxsize)
+    if (p == s + maxsize) {
+        errno = ERANGE;
         return 0;
+    }
     *p = '\0';
+    errno = saved_errno;
     return p - s;
 }
 
@@ -189,9 +190,32 @@
     return normal;
 }
 
+// Android-added: fall back mechanism when TM_ZONE is not initialized.
+#ifdef TM_ZONE
+static const char* _safe_tm_zone(const struct tm* tm) {
+  const char* zone = tm->TM_ZONE;
+  if (!zone || !*zone) {
+    // "The value of tm_isdst shall be positive if Daylight Savings Time is
+    // in effect, 0 if Daylight Savings Time is not in effect, and negative
+    // if the information is not available."
+    if (tm->tm_isdst == 0) {
+      zone = tzname[0];
+    } else if (tm->tm_isdst > 0) {
+      zone = tzname[1];
+    }
+
+    // "Replaced by the timezone name or abbreviation, or by no bytes if no
+    // timezone information exists."
+    if (!zone || !*zone) zone = "";
+  }
+
+  return zone;
+}
+#endif
+
 static char *
 _fmt(const char *format, const struct tm *t, char *pt,
-        const char *ptlim, int *warnp)
+        const char *ptlim, enum warn *warnp)
 {
     for ( ; *format; ++format) {
         if (*format == '%') {
@@ -239,7 +263,7 @@
                 continue;
             case 'c':
                 {
-                int warn2 = IN_SOME;
+                enum warn warn2 = IN_SOME;
 
                 pt = _fmt(Locale->c_fmt, t, pt, ptlim, &warn2);
                 if (warn2 == IN_ALL)
@@ -257,12 +281,12 @@
             case 'E':
             case 'O':
                 /*
-                ** C99 locale modifiers.
+                ** Locale modifiers of C99 and later.
                 ** The sequences
                 **  %Ec %EC %Ex %EX %Ey %EY
                 **  %Od %oe %OH %OI %Om %OM
                 **  %OS %Ou %OU %OV %Ow %OW %Oy
-                ** are supposed to provide alternate
+                ** are supposed to provide alternative
                 ** representations.
                 */
                 goto label;
@@ -356,11 +380,17 @@
 
                     tm = *t;
                     mkt = mktime64(&tm);
-                    if (TYPE_SIGNED(time64_t))
-                        snprintf(buf, sizeof(buf), "%"PRIdMAX,
-                                 (intmax_t) mkt);
-                    else    snprintf(buf, sizeof(buf), "%"PRIuMAX,
-                                     (uintmax_t) mkt);
+					/* There is no portable, definitive
+					   test for whether whether mktime
+					   succeeded, so treat (time_t) -1 as
+					   the success that it might be.  */
+                    if (TYPE_SIGNED(time64_t)) {
+                      intmax_t n = mkt;
+                      sprintf(buf, "%"PRIdMAX, n);
+                    } else {
+                      uintmax_t n = mkt;
+                      sprintf(buf, "%"PRIuMAX, n);
+                    }
                     pt = _add(buf, pt, ptlim, modifier);
                 }
                 continue;
@@ -392,7 +422,7 @@
 ** (01-53)."
 ** (ado, 1993-05-24)
 **
-** From <http://www.ft.uni-erlangen.de/~mskuhn/iso-time.html> by Markus Kuhn:
+** From <https://www.cl.cam.ac.uk/~mgk25/iso-time.html> by Markus Kuhn:
 ** "Week 01 of a year is per definition the first week which has the
 ** Thursday in this year, which is equivalent to the week which contains
 ** the fourth day of January. In other words, the first week of a new year
@@ -494,7 +524,7 @@
                 continue;
             case 'x':
                 {
-                int warn2 = IN_SOME;
+                enum warn warn2 = IN_SOME;
 
                 pt = _fmt(Locale->x_fmt, t, pt, ptlim, &warn2);
                 if (warn2 == IN_ALL)
@@ -517,45 +547,32 @@
             case 'Z':
 #ifdef TM_ZONE
                 // BEGIN: Android-changed.
-                {
-                    const char* zone = t->TM_ZONE;
-                    if (!zone || !*zone) {
-                        // "The value of tm_isdst shall be positive if Daylight Savings Time is
-                        // in effect, 0 if Daylight Savings Time is not in effect, and negative
-                        // if the information is not available."
-                        if (t->tm_isdst == 0) zone = tzname[0];
-                        else if (t->tm_isdst > 0) zone = tzname[1];
-
-                        // "Replaced by the timezone name or abbreviation, or by no bytes if no
-                        // timezone information exists."
-                        if (!zone || !*zone) zone = "";
-                    }
-                    pt = _add(zone, pt, ptlim, modifier);
-                }
+                pt = _add(_safe_tm_zone(t), pt, ptlim, modifier);
                 // END: Android-changed.
-#else
+#elif HAVE_TZNAME
                 if (t->tm_isdst >= 0)
                     pt = _add(tzname[t->tm_isdst != 0],
                         pt, ptlim);
 #endif
                 /*
-                ** C99 says that %Z must be replaced by the
-                ** empty string if the time zone is not
+                ** C99 and later say that %Z must be
+                ** replaced by the empty string if the
+                ** time zone abbreviation is not
                 ** determinable.
                 */
                 continue;
             case 'z':
+#if defined TM_GMTOFF || USG_COMPAT || ALTZONE
                 {
                 long     diff;
                 char const *    sign;
+                bool negative;
 
-                if (t->tm_isdst < 0)
-                    continue;
-#ifdef TM_GMTOFF
+# ifdef TM_GMTOFF
                 diff = t->TM_GMTOFF;
-#else /* !defined TM_GMTOFF */
+# else
                 /*
-                ** C99 says that the UT offset must
+                ** C99 and later say that the UT offset must
                 ** be computed by looking only at
                 ** tm_isdst. This requirement is
                 ** incorrect, since it means the code
@@ -563,30 +580,48 @@
                 ** altzone and timezone), and the
                 ** magic might not have the correct
                 ** offset. Doing things correctly is
-                ** tricky and requires disobeying C99;
+                ** tricky and requires disobeying the standard;
                 ** see GNU C strftime for details.
                 ** For now, punt and conform to the
                 ** standard, even though it's incorrect.
                 **
-                ** C99 says that %z must be replaced by the
-                ** empty string if the time zone is not
+                ** C99 and later say that %z must be replaced by
+                ** the empty string if the time zone is not
                 ** determinable, so output nothing if the
                 ** appropriate variables are not available.
                 */
+                if (t->tm_isdst < 0)
+                    continue;
                 if (t->tm_isdst == 0)
-#ifdef USG_COMPAT
+#  if USG_COMPAT
                     diff = -timezone;
-#else /* !defined USG_COMPAT */
+#  else
                     continue;
-#endif /* !defined USG_COMPAT */
+#  endif
                 else
-#ifdef ALTZONE
+#  if ALTZONE
                     diff = -altzone;
-#else /* !defined ALTZONE */
+#  else
                     continue;
-#endif /* !defined ALTZONE */
-#endif /* !defined TM_GMTOFF */
-                if (diff < 0) {
+#  endif
+# endif
+                negative = diff < 0;
+                if (diff == 0) {
+#ifdef TM_ZONE
+                  // Android-changed: do not use TM_ZONE as it is as it may be null.
+                  {
+                    const char* zone = _safe_tm_zone(t);
+                    negative = zone[0] == '-';
+                  }
+#else
+                    negative = t->tm_isdst < 0;
+# if HAVE_TZNAME
+                    if (tzname[t->tm_isdst != 0][0] == '-')
+                        negative = true;
+# endif
+#endif
+                }
+                if (negative) {
                     sign = "-";
                     diff = -diff;
                 } else  sign = "+";
@@ -596,6 +631,7 @@
                     (diff % MINSPERHOUR);
                 pt = _conv(diff, getformat(modifier, "04", " 4", "  ", "04"), pt, ptlim);
                 }
+#endif
                 continue;
             case '+':
                 pt = _fmt(Locale->date_fmt, t, pt, ptlim,
diff --git a/libc/tzcode/strptime.c b/libc/tzcode/strptime.c
index 7e8e234..fe9e10f 100644
--- a/libc/tzcode/strptime.c
+++ b/libc/tzcode/strptime.c
@@ -1,8 +1,7 @@
-/*  $OpenBSD: strptime.c,v 1.11 2005/08/08 08:05:38 espie Exp $ */
-/*  $NetBSD: strptime.c,v 1.12 1998/01/20 21:39:40 mycroft Exp $    */
-
+/*	$OpenBSD: strptime.c,v 1.30 2019/05/12 12:49:52 schwarze Exp $ */
+/*	$NetBSD: strptime.c,v 1.12 1998/01/20 21:39:40 mycroft Exp $	*/
 /*-
- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997, 1998, 2005, 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code was contributed to The NetBSD Foundation by Klaus Klein.
@@ -15,13 +14,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
@@ -36,65 +28,40 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-//#include <sys/localedef.h>
 #include <ctype.h>
-#include <errno.h>
 #include <locale.h>
-#include <stdlib.h>
+#include <stdint.h>
 #include <string.h>
 #include <time.h>
+
+#include "localedef.h"
+#include "private.h"
 #include "tzfile.h"
 
-static const struct {
-    const char *abday[7];
-    const char *day[7];
-    const char *abmon[12];
-    const char *mon[12];
-    const char *am_pm[2];
-    const char *d_t_fmt;
-    const char *d_fmt;
-    const char *t_fmt;
-    const char *t_fmt_ampm;
-} _DefaultTimeLocale = {
-    {
-        "Sun","Mon","Tue","Wed","Thu","Fri","Sat",
-    },
-    {
-        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
-        "Friday", "Saturday"
-    },
-    {
-        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
-        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-    },
-    {
-        "January", "February", "March", "April", "May", "June", "July",
-        "August", "September", "October", "November", "December"
-    },
-    {
-        "AM", "PM"
-    },
-    "%a %b %d %H:%M:%S %Y",
-    "%m/%d/%y",
-    "%H:%M:%S",
-    "%I:%M:%S %p"
-};
+// Android: ignore OpenBSD's DEF_WEAK() stuff.
+#define DEF_WEAK(sym) /* */
+// Android: this code is not pointer-sign clean.
+#pragma clang diagnostic ignored "-Wpointer-sign"
+#pragma clang diagnostic ignored "-Wunused-function"
 
-#define _ctloc(x) (_DefaultTimeLocale.x)
+#define	_ctloc(x)		(_CurrentTimeLocale->x)
 
 /*
  * We do not implement alternate representations. However, we always
  * check whether a given modifier is allowed for a certain conversion.
  */
-#define _ALT_E          0x01
-#define _ALT_O          0x02
-#define _LEGAL_ALT(x)       { if (alt_format & ~(x)) return (0); }
+#define _ALT_E			0x01
+#define _ALT_O			0x02
+#define	_LEGAL_ALT(x)		{ if (alt_format & ~(x)) return (0); }
 
-
-struct century_relyear {
-    int century;
-    int relyear;
-};
+/*
+ * We keep track of some of the fields we set in order to compute missing ones.
+ */
+#define FIELD_TM_MON	(1 << 0)
+#define FIELD_TM_MDAY	(1 << 1)
+#define FIELD_TM_WDAY	(1 << 2)
+#define FIELD_TM_YDAY	(1 << 3)
+#define FIELD_TM_YEAR	(1 << 4)
 
 static char gmt[] = { "GMT" };
 static char utc[] = { "UTC" };
@@ -106,9 +73,15 @@
        "EDT",    "CDT",    "MDT",    "PDT",    "\0\0\0"
 };
 
-static  int _conv_num(const unsigned char **, int *, int, int);
-static  unsigned char *_strptime(const unsigned char *, const char *, struct tm *,
-        struct century_relyear *);
+static const int mon_lengths[2][MONSPERYEAR] = {
+        { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
+        { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+};
+
+static	int _conv_num64(const unsigned char **, int64_t *, int64_t, int64_t);
+static	int _conv_num(const unsigned char **, int *, int, int);
+static	int leaps_thru_end_of(const int y);
+static	char *_strptime(const char *, const char *, struct tm *, int);
 static	const u_char *_find_string(const u_char *, int *, const char * const *,
 	    const char * const *, int);
 
@@ -116,335 +89,353 @@
 char *
 strptime(const char *buf, const char *fmt, struct tm *tm)
 {
-    struct century_relyear cr;
-    cr.century = TM_YEAR_BASE;
-    cr.relyear = -1;
-    return (char*)(_strptime((const unsigned char*)buf, fmt, tm, &cr));
+	return(_strptime(buf, fmt, tm, 1));
 }
+DEF_WEAK(strptime);
 
-static unsigned char *
-_strptime(const unsigned char *buf, const char *fmt, struct tm *tm, struct century_relyear *cr)
+static char *
+_strptime(const char *buf, const char *fmt, struct tm *tm, int initialize)
 {
-    unsigned char c;
-    const unsigned char *bp, *ep;
-    size_t len = 0;
-    int alt_format, i, offs;
-    int neg = 0;
+	unsigned char c;
+	const unsigned char *bp, *ep;
+	size_t len;
+	int alt_format, i, offs;
+	int neg = 0;
+	static int century, relyear, fields;
 
-    bp = (unsigned char *)buf;
-    while ((c = *fmt) != '\0') {
-        /* Clear `alternate' modifier prior to new conversion. */
-        alt_format = 0;
+	if (initialize) {
+		century = TM_YEAR_BASE;
+		relyear = -1;
+		fields = 0;
+	}
 
-        /* Eat up white-space. */
-        if (isspace(c)) {
-            while (isspace(*bp))
-                bp++;
+	bp = (const unsigned char *)buf;
+	while ((c = *fmt) != '\0') {
+		/* Clear `alternate' modifier prior to new conversion. */
+		alt_format = 0;
 
-            fmt++;
-            continue;
-        }
+		/* Eat up white-space. */
+		if (isspace(c)) {
+			while (isspace(*bp))
+				bp++;
 
-        if ((c = *fmt++) != '%')
-            goto literal;
+			fmt++;
+			continue;
+		}
+
+		if ((c = *fmt++) != '%')
+			goto literal;
 
 
-again:      switch (c = *fmt++) {
-        case '%':   /* "%%" is converted to "%". */
+again:		switch (c = *fmt++) {
+		case '%':	/* "%%" is converted to "%". */
 literal:
-        if (c != *bp++)
-            return (NULL);
+		if (c != *bp++)
+			return (NULL);
 
-        break;
+		break;
 
-        /*
-         * "Alternative" modifiers. Just set the appropriate flag
-         * and start over again.
-         */
-        case 'E':   /* "%E?" alternative conversion modifier. */
-            _LEGAL_ALT(0);
-            alt_format |= _ALT_E;
-            goto again;
+		/*
+		 * "Alternative" modifiers. Just set the appropriate flag
+		 * and start over again.
+		 */
+		case 'E':	/* "%E?" alternative conversion modifier. */
+			_LEGAL_ALT(0);
+			alt_format |= _ALT_E;
+			goto again;
 
-        case 'O':   /* "%O?" alternative conversion modifier. */
-            _LEGAL_ALT(0);
-            alt_format |= _ALT_O;
-            goto again;
+		case 'O':	/* "%O?" alternative conversion modifier. */
+			_LEGAL_ALT(0);
+			alt_format |= _ALT_O;
+			goto again;
 
-        /*
-         * "Complex" conversion rules, implemented through recursion.
-         */
-        case 'c':   /* Date and time, using the locale's format. */
-            _LEGAL_ALT(_ALT_E);
-            if (!(bp = _strptime(bp, _ctloc(d_t_fmt), tm, cr)))
-                return (NULL);
-            break;
+		/*
+		 * "Complex" conversion rules, implemented through recursion.
+		 */
+		case 'c':	/* Date and time, using the locale's format. */
+			_LEGAL_ALT(_ALT_E);
+			if (!(bp = _strptime(bp, _ctloc(d_t_fmt), tm, 0)))
+				return (NULL);
+			break;
 
-        case 'D':   /* The date as "%m/%d/%y". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%m/%d/%y", tm, cr)))
-                return (NULL);
-            break;
+		case 'D':	/* The date as "%m/%d/%y". */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%m/%d/%y", tm, 0)))
+				return (NULL);
+			break;
 
-        case 'F':  /* The date as "%Y-%m-%d". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%Y-%m-%d", tm, cr)))
-                return (NULL);
-            continue;
+		case 'F':	/* The date as "%Y-%m-%d". */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%Y-%m-%d", tm, 0)))
+				return (NULL);
+			continue;
 
-        case 'R':   /* The time as "%H:%M". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%H:%M", tm, cr)))
-                return (NULL);
-            break;
+		case 'R':	/* The time as "%H:%M". */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%H:%M", tm, 0)))
+				return (NULL);
+			break;
 
-        case 'r':   /* The time as "%I:%M:%S %p". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%I:%M:%S %p", tm, cr)))
-                return (NULL);
-            break;
+		case 'r':	/* The time as "%I:%M:%S %p". */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%I:%M:%S %p", tm, 0)))
+				return (NULL);
+			break;
 
-        case 'T':   /* The time as "%H:%M:%S". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%H:%M:%S", tm, cr)))
-                return (NULL);
-            break;
+		case 'T':	/* The time as "%H:%M:%S". */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%H:%M:%S", tm, 0)))
+				return (NULL);
+			break;
 
-        case 'v':  /* The date as "%e-%b-%Y". */
-            _LEGAL_ALT(0);
-            if (!(bp = _strptime(bp, "%e-%b-%Y", tm, cr)))
-                return (NULL);
-            break;
+		case 'v':	/* Android: the date as "%e-%b-%Y" for strftime() compat; glibc does this too. */
+			_LEGAL_ALT(0);
+			if (!(bp = _strptime(bp, "%e-%b-%Y", tm, 0)))
+				return (NULL);
+			break;
 
-        case 'X':   /* The time, using the locale's format. */
-            _LEGAL_ALT(_ALT_E);
-            if (!(bp = _strptime(bp, _ctloc(t_fmt), tm, cr)))
-                return (NULL);
-            break;
+		case 'X':	/* The time, using the locale's format. */
+			_LEGAL_ALT(_ALT_E);
+			if (!(bp = _strptime(bp, _ctloc(t_fmt), tm, 0)))
+				return (NULL);
+			break;
 
-        case 'x':   /* The date, using the locale's format. */
-            _LEGAL_ALT(_ALT_E);
-            if (!(bp = _strptime(bp, _ctloc(d_fmt), tm, cr)))
-                return (NULL);
-            break;
+		case 'x':	/* The date, using the locale's format. */
+			_LEGAL_ALT(_ALT_E);
+			if (!(bp = _strptime(bp, _ctloc(d_fmt), tm, 0)))
+				return (NULL);
+			break;
 
-        /*
-         * "Elementary" conversion rules.
-         */
-        case 'A':   /* The day of week, using the locale's form. */
-        case 'a':
-            _LEGAL_ALT(0);
-            for (i = 0; i < 7; i++) {
-                /* Full name. */
-                len = strlen(_ctloc(day[i]));
-                if (strncasecmp(_ctloc(day[i]), (const char*)bp, len) == 0)
-                    break;
+		/*
+		 * "Elementary" conversion rules.
+		 */
+		case 'A':	/* The day of week, using the locale's form. */
+		case 'a':
+			_LEGAL_ALT(0);
+			for (i = 0; i < 7; i++) {
+				/* Full name. */
+				len = strlen(_ctloc(day[i]));
+				if (strncasecmp(_ctloc(day[i]), bp, len) == 0)
+					break;
 
-                /* Abbreviated name. */
-                len = strlen(_ctloc(abday[i]));
-                if (strncasecmp(_ctloc(abday[i]), (const char*)bp, len) == 0)
-                    break;
-            }
+				/* Abbreviated name. */
+				len = strlen(_ctloc(abday[i]));
+				if (strncasecmp(_ctloc(abday[i]), bp, len) == 0)
+					break;
+			}
 
-            /* Nothing matched. */
-            if (i == 7)
-                return (NULL);
+			/* Nothing matched. */
+			if (i == 7)
+				return (NULL);
 
-            tm->tm_wday = i;
-            bp += len;
-            break;
+			tm->tm_wday = i;
+			bp += len;
+			fields |= FIELD_TM_WDAY;
+			break;
 
-        case 'B':   /* The month, using the locale's form. */
-        case 'b':
-        case 'h':
-            _LEGAL_ALT(0);
-            for (i = 0; i < 12; i++) {
-                /* Full name. */
-                len = strlen(_ctloc(mon[i]));
-                if (strncasecmp(_ctloc(mon[i]), (const char*)bp, len) == 0)
-                    break;
+		case 'B':	/* The month, using the locale's form. */
+		case 'b':
+		case 'h':
+			_LEGAL_ALT(0);
+			for (i = 0; i < 12; i++) {
+				/* Full name. */
+				len = strlen(_ctloc(mon[i]));
+				if (strncasecmp(_ctloc(mon[i]), bp, len) == 0)
+					break;
 
-                /* Abbreviated name. */
-                len = strlen(_ctloc(abmon[i]));
-                if (strncasecmp(_ctloc(abmon[i]), (const char*)bp, len) == 0)
-                    break;
-            }
+				/* Abbreviated name. */
+				len = strlen(_ctloc(abmon[i]));
+				if (strncasecmp(_ctloc(abmon[i]), bp, len) == 0)
+					break;
+			}
 
-            /* Nothing matched. */
-            if (i == 12)
-                return (NULL);
+			/* Nothing matched. */
+			if (i == 12)
+				return (NULL);
 
-            tm->tm_mon = i;
-            bp += len;
-            break;
+			tm->tm_mon = i;
+			bp += len;
+			fields |= FIELD_TM_MON;
+			break;
 
-        case 'C':   /* The century number. */
-            _LEGAL_ALT(_ALT_E);
-            if (!(_conv_num(&bp, &i, 0, 99)))
-                return (NULL);
+		case 'C':	/* The century number. */
+			_LEGAL_ALT(_ALT_E);
+			if (!(_conv_num(&bp, &i, 0, 99)))
+				return (NULL);
 
-            cr->century = i * 100;
-            break;
+			century = i * 100;
+			break;
 
-        case 'd':   /* The day of month. */
-        case 'e':
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_mday, 1, 31)))
-                return (NULL);
-            break;
+		case 'e':	/* The day of month. */
+			if (isspace(*bp))
+				bp++;
+			/* FALLTHROUGH */
+		case 'd':
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_mday, 1, 31)))
+				return (NULL);
+			fields |= FIELD_TM_MDAY;
+			break;
 
-        case 'k':   /* The hour (24-hour clock representation). */
-            _LEGAL_ALT(0);
-            /* FALLTHROUGH */
-        case 'H':
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_hour, 0, 23)))
-                return (NULL);
-            break;
+		case 'k':	/* The hour (24-hour clock representation). */
+			_LEGAL_ALT(0);
+			/* FALLTHROUGH */
+		case 'H':
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_hour, 0, 23)))
+				return (NULL);
+			break;
 
-        case 'l':   /* The hour (12-hour clock representation). */
-            _LEGAL_ALT(0);
-            /* FALLTHROUGH */
-        case 'I':
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_hour, 1, 12)))
-                return (NULL);
-            break;
+		case 'l':	/* The hour (12-hour clock representation). */
+			_LEGAL_ALT(0);
+			/* FALLTHROUGH */
+		case 'I':
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_hour, 1, 12)))
+				return (NULL);
+			break;
 
-        case 'j':   /* The day of year. */
-            _LEGAL_ALT(0);
-            if (!(_conv_num(&bp, &tm->tm_yday, 1, 366)))
-                return (NULL);
-            tm->tm_yday--;
-            break;
+		case 'j':	/* The day of year. */
+			_LEGAL_ALT(0);
+			if (!(_conv_num(&bp, &tm->tm_yday, 1, 366)))
+				return (NULL);
+			tm->tm_yday--;
+			fields |= FIELD_TM_YDAY;
+			break;
 
-        case 'M':   /* The minute. */
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_min, 0, 59)))
-                return (NULL);
-            break;
+		case 'M':	/* The minute. */
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_min, 0, 59)))
+				return (NULL);
+			break;
 
-        case 'm':   /* The month. */
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_mon, 1, 12)))
-                return (NULL);
-            tm->tm_mon--;
-            break;
+		case 'm':	/* The month. */
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_mon, 1, 12)))
+				return (NULL);
+			tm->tm_mon--;
+			fields |= FIELD_TM_MON;
+			break;
 
-        case 'P':
-        case 'p':   /* The locale's equivalent of AM/PM. */
-            _LEGAL_ALT(0);
-            /* AM? */
-            len = strlen(_ctloc(am_pm[0]));
-            if (strncasecmp(_ctloc(am_pm[0]), (const char*)bp, len) == 0) {
-                if (tm->tm_hour > 12)   /* i.e., 13:00 AM ?! */
-                    return (NULL);
-                else if (tm->tm_hour == 12)
-                    tm->tm_hour = 0;
+		case 'P':	/* Android addition for strftime() compat; glibc does this too. */
+		case 'p':	/* The locale's equivalent of AM/PM. */
+			_LEGAL_ALT(0);
+			/* AM? */
+			len = strlen(_ctloc(am_pm[0]));
+			if (strncasecmp(_ctloc(am_pm[0]), bp, len) == 0) {
+				if (tm->tm_hour > 12)	/* i.e., 13:00 AM ?! */
+					return (NULL);
+				else if (tm->tm_hour == 12)
+					tm->tm_hour = 0;
 
-                bp += len;
-                break;
-            }
-            /* PM? */
-            len = strlen(_ctloc(am_pm[1]));
-            if (strncasecmp(_ctloc(am_pm[1]), (const char*)bp, len) == 0) {
-                if (tm->tm_hour > 12)   /* i.e., 13:00 PM ?! */
-                    return (NULL);
-                else if (tm->tm_hour < 12)
-                    tm->tm_hour += 12;
+				bp += len;
+				break;
+			}
+			/* PM? */
+			len = strlen(_ctloc(am_pm[1]));
+			if (strncasecmp(_ctloc(am_pm[1]), bp, len) == 0) {
+				if (tm->tm_hour > 12)	/* i.e., 13:00 PM ?! */
+					return (NULL);
+				else if (tm->tm_hour < 12)
+					tm->tm_hour += 12;
 
-                bp += len;
-                break;
-            }
+				bp += len;
+				break;
+			}
 
-            /* Nothing matched. */
-            return (NULL);
+			/* Nothing matched. */
+			return (NULL);
 
-        case 'S':   /* The seconds. */
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_sec, 0, 61)))
-                return (NULL);
-            break;
+		case 'S':	/* The seconds. */
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_sec, 0, 60)))
+				return (NULL);
+			break;
+		case 's':	/* Seconds since epoch */
+			{
+				// Android change based on FreeBSD's implementation.
+				int saved_errno = errno;
+				errno = 0;
+				const unsigned char* old_bp = bp;
+				long n = strtol((const char*) bp, (char**) &bp, 10);
+				errno = saved_errno;
+				time_t t = n;
+				if (bp == old_bp || errno == ERANGE ||
+				    ((long) t) != n) return NULL;
 
-        case 's':
-            {
-                // Android addition, based on FreeBSD's implementation.
-                int saved_errno = errno;
-                errno = 0;
-                const unsigned char* old_bp = bp;
-                long n = strtol((const char*) bp, (char**) &bp, 10);
-                time_t t = n;
-                if (bp == old_bp || errno == ERANGE || ((long) t) != n) {
-                    errno = saved_errno;
-                    return NULL;
-                }
-                errno = saved_errno;
+				if (localtime_r(&t, tm) == NULL) return NULL;
 
-                if (localtime_r(&t, tm) == NULL) return NULL;
-            }
-            break;
+				//int64_t i64;
+				//if (!(_conv_num64(&bp, &i64, 0, INT64_MAX)))
+				//	return (NULL);
+				//if (!gmtime_r(&i64, tm))
+				//	return (NULL);
+				fields = 0xffff;	 /* everything */
+			}
+			break;
+		case 'U':	/* The week of year, beginning on sunday. */
+		case 'W':	/* The week of year, beginning on monday. */
+			_LEGAL_ALT(_ALT_O);
+			/*
+			 * XXX This is bogus, as we can not assume any valid
+			 * information present in the tm structure at this
+			 * point to calculate a real value, so just check the
+			 * range for now.
+			 */
+			 if (!(_conv_num(&bp, &i, 0, 53)))
+				return (NULL);
+			 break;
 
+		case 'w':	/* The day of week, beginning on sunday. */
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &tm->tm_wday, 0, 6)))
+				return (NULL);
+			fields |= FIELD_TM_WDAY;
+			break;
 
-        case 'U':   /* The week of year, beginning on sunday. */
-        case 'W':   /* The week of year, beginning on monday. */
-            _LEGAL_ALT(_ALT_O);
-            /*
-             * XXX This is bogus, as we can not assume any valid
-             * information present in the tm structure at this
-             * point to calculate a real value, so just check the
-             * range for now.
-             */
-             if (!(_conv_num(&bp, &i, 0, 53)))
-                return (NULL);
-             break;
+		case 'u':	/* The day of week, monday = 1. */
+			_LEGAL_ALT(_ALT_O);
+			if (!(_conv_num(&bp, &i, 1, 7)))
+				return (NULL);
+			tm->tm_wday = i % 7;
+			fields |= FIELD_TM_WDAY;
+			continue;
 
-        case 'w':   /* The day of week, beginning on sunday. */
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &tm->tm_wday, 0, 6)))
-                return (NULL);
-            break;
+		case 'g':	/* The year corresponding to the ISO week
+				 * number but without the century.
+				 */
+			if (!(_conv_num(&bp, &i, 0, 99)))
+				return (NULL);
+			continue;
 
-        case 'u':  /* The day of week, monday = 1. */
-            _LEGAL_ALT(_ALT_O);
-            if (!(_conv_num(&bp, &i, 1, 7)))
-                return (NULL);
-            tm->tm_wday = i % 7;
-            continue;
+		case 'G':	/* The year corresponding to the ISO week
+				 * number with century.
+				 */
+			do
+				bp++;
+			while (isdigit(*bp));
+			continue;
 
-        case 'g':  /* The year corresponding to the ISO week
-                    * number but without the century.
-                    */
-            if (!(_conv_num(&bp, &i, 0, 99)))
-                return (NULL);
-            continue;
+		case 'V':	/* The ISO 8601:1988 week number as decimal */
+			if (!(_conv_num(&bp, &i, 0, 53)))
+				return (NULL);
+			continue;
 
-        case 'G':  /* The year corresponding to the ISO week
-                    * number with century.
-                    */
-            do
-                bp++;
-            while (isdigit(*bp));
-            continue;
+		case 'Y':	/* The year. */
+			_LEGAL_ALT(_ALT_E);
+			if (!(_conv_num(&bp, &i, 0, 9999)))
+				return (NULL);
 
-        case 'V':  /* The ISO 8601:1988 week number as decimal */
-            if (!(_conv_num(&bp, &i, 0, 53)))
-                return (NULL);
-            continue;
+			relyear = -1;
+			tm->tm_year = i - TM_YEAR_BASE;
+			fields |= FIELD_TM_YEAR;
+			break;
 
-        case 'Y':   /* The year. */
-            _LEGAL_ALT(_ALT_E);
-            if (!(_conv_num(&bp, &i, 0, 9999)))
-                return (NULL);
-
-            cr->relyear = -1;
-            tm->tm_year = i - TM_YEAR_BASE;
-            break;
-
-        case 'y':   /* The year within the century (2 digits). */
-            _LEGAL_ALT(_ALT_E | _ALT_O);
-            if (!(_conv_num(&bp, &cr->relyear, 0, 99)))
-                return (NULL);
-            break;
+		case 'y':	/* The year within the century (2 digits). */
+			_LEGAL_ALT(_ALT_E | _ALT_O);
+			if (!(_conv_num(&bp, &relyear, 0, 99)))
+				return (NULL);
+			break;
 
 		case 'Z':
 			tzset();
@@ -548,42 +539,78 @@
 			tm->tm_zone = NULL;	/* XXX */
 			continue;
 
-        /*
-         * Miscellaneous conversions.
-         */
-        case 'n':   /* Any kind of white-space. */
-        case 't':
-            _LEGAL_ALT(0);
-            while (isspace(*bp))
-                bp++;
-            break;
+		/*
+		 * Miscellaneous conversions.
+		 */
+		case 'n':	/* Any kind of white-space. */
+		case 't':
+			_LEGAL_ALT(0);
+			while (isspace(*bp))
+				bp++;
+			break;
 
 
-        default:    /* Unknown/unsupported conversion. */
-            return (NULL);
-        }
+		default:	/* Unknown/unsupported conversion. */
+			return (NULL);
+		}
 
 
-    }
+	}
 
-    /*
-     * We need to evaluate the two digit year spec (%y)
-     * last as we can get a century spec (%C) at any time.
-     */
-    if (cr->relyear != -1) {
-        if (cr->century == TM_YEAR_BASE) {
-            if (cr->relyear <= 68)
-                tm->tm_year = cr->relyear + 2000 - TM_YEAR_BASE;
-            else
-                tm->tm_year = cr->relyear + 1900 - TM_YEAR_BASE;
-        } else {
-            tm->tm_year = cr->relyear + cr->century - TM_YEAR_BASE;
-        }
-    }
+	/*
+	 * We need to evaluate the two digit year spec (%y)
+	 * last as we can get a century spec (%C) at any time.
+	 */
+	if (relyear != -1) {
+		if (century == TM_YEAR_BASE) {
+			if (relyear <= 68)
+				tm->tm_year = relyear + 2000 - TM_YEAR_BASE;
+			else
+				tm->tm_year = relyear + 1900 - TM_YEAR_BASE;
+		} else {
+			tm->tm_year = relyear + century - TM_YEAR_BASE;
+		}
+		fields |= FIELD_TM_YEAR;
+	}
 
-    return (unsigned char*)bp;
+	/* Compute some missing values when possible. */
+	if (fields & FIELD_TM_YEAR) {
+		const int year = tm->tm_year + TM_YEAR_BASE;
+		const int *mon_lens = mon_lengths[isleap(year)];
+		if (!(fields & FIELD_TM_YDAY) &&
+		    (fields & FIELD_TM_MON) && (fields & FIELD_TM_MDAY)) {
+			tm->tm_yday = tm->tm_mday - 1;
+			for (i = 0; i < tm->tm_mon; i++)
+				tm->tm_yday += mon_lens[i];
+			fields |= FIELD_TM_YDAY;
+		}
+		if (fields & FIELD_TM_YDAY) {
+			int days = tm->tm_yday;
+			if (!(fields & FIELD_TM_WDAY)) {
+				tm->tm_wday = EPOCH_WDAY +
+				    ((year - EPOCH_YEAR) % DAYSPERWEEK) *
+				    (DAYSPERNYEAR % DAYSPERWEEK) +
+				    leaps_thru_end_of(year - 1) -
+				    leaps_thru_end_of(EPOCH_YEAR - 1) +
+				    tm->tm_yday;
+				tm->tm_wday %= DAYSPERWEEK;
+				if (tm->tm_wday < 0)
+					tm->tm_wday += DAYSPERWEEK;
+			}
+			if (!(fields & FIELD_TM_MON)) {
+				tm->tm_mon = 0;
+				while (tm->tm_mon < MONSPERYEAR && days >= mon_lens[tm->tm_mon])
+					days -= mon_lens[tm->tm_mon++];
+			}
+			if (!(fields & FIELD_TM_MDAY))
+				tm->tm_mday = days + 1;
+		}
+	}
+
+	return ((char *)bp);
 }
 
+
 static int
 _conv_num(const unsigned char **buf, int *dest, int llim, int ulim)
 {
@@ -607,6 +634,29 @@
 	return (1);
 }
 
+static int
+_conv_num64(const unsigned char **buf, int64_t *dest, int64_t llim, int64_t ulim)
+{
+	int result = 0;
+	int64_t rulim = ulim;
+
+	if (**buf < '0' || **buf > '9')
+		return (0);
+
+	/* we use rulim to break out of the loop when we run out of digits */
+	do {
+		result *= 10;
+		result += *(*buf)++ - '0';
+		rulim /= 10;
+	} while ((result * 10 <= ulim) && rulim && **buf >= '0' && **buf <= '9');
+
+	if (result < llim || result > ulim)
+		return (0);
+
+	*dest = result;
+	return (1);
+}
+
 static const u_char *
 _find_string(const u_char *bp, int *tgt, const char * const *n1,
 		const char * const *n2, int c)
@@ -629,6 +679,9 @@
 	return NULL;
 }
 
-char* strptime_l(const char* buf, const char* fmt, struct tm* tm, locale_t l) {
-  return strptime(buf, fmt, tm);
+static int
+leaps_thru_end_of(const int y)
+{
+	return (y >= 0) ? (y / 4 - y / 100 + y / 400) :
+		-(leaps_thru_end_of(-(y + 1)) + 1);
 }
diff --git a/libc/tzcode/tzfile.h b/libc/tzcode/tzfile.h
index ebecd68..c5f9967 100644
--- a/libc/tzcode/tzfile.h
+++ b/libc/tzcode/tzfile.h
@@ -1,3 +1,5 @@
+/* Layout and location of TZif files.  */
+
 #ifndef TZFILE_H
 
 #define TZFILE_H
@@ -20,17 +22,20 @@
 */
 
 #ifndef TZDIR
-#define TZDIR	"/usr/local/etc/zoneinfo" /* Time zone object file directory */
+#define TZDIR	"/usr/share/zoneinfo" /* Time zone object file directory */
 #endif /* !defined TZDIR */
 
 #ifndef TZDEFAULT
-#define TZDEFAULT	"localtime"
+#define TZDEFAULT	"/etc/localtime"
 #endif /* !defined TZDEFAULT */
 
 #ifndef TZDEFRULES
 #define TZDEFRULES	"posixrules"
 #endif /* !defined TZDEFRULES */
 
+
+/* See Internet RFC 8536 for more details about the following format.  */
+
 /*
 ** Each file begins with. . .
 */
@@ -39,9 +44,9 @@
 
 struct tzhead {
 	char	tzh_magic[4];		/* TZ_MAGIC */
-	char	tzh_version[1];		/* '\0' or '2' or '3' as of 2013 */
+	char	tzh_version[1];		/* '\0' or '2'-'4' as of 2021 */
 	char	tzh_reserved[15];	/* reserved; must be zero */
-	char	tzh_ttisgmtcnt[4];	/* coded number of trans. time flags */
+	char	tzh_ttisutcnt[4];	/* coded number of trans. time flags */
 	char	tzh_ttisstdcnt[4];	/* coded number of trans. time flags */
 	char	tzh_leapcnt[4];		/* coded number of leap seconds */
 	char	tzh_timecnt[4];		/* coded number of transition times */
@@ -64,14 +69,15 @@
 **		one (char [4])		total correction after above
 **	tzh_ttisstdcnt (char)s		indexed by type; if 1, transition
 **					time is standard time, if 0,
-**					transition time is wall clock time
-**					if absent, transition times are
-**					assumed to be wall clock time
-**	tzh_ttisgmtcnt (char)s		indexed by type; if 1, transition
-**					time is UT, if 0,
-**					transition time is local time
-**					if absent, transition times are
+**					transition time is local (wall clock)
+**					time; if absent, transition times are
 **					assumed to be local time
+**	tzh_ttisutcnt (char)s		indexed by type; if 1, transition
+**					time is UT, if 0, transition time is
+**					local time; if absent, transition
+**					times are assumed to be local time.
+**					When this is 1, the corresponding
+**					std/wall indicator must also be 1.
 */
 
 /*
diff --git a/libc/upstream-freebsd/lib/libc/string/bcopy.c b/libc/upstream-freebsd/lib/libc/string/bcopy.c
new file mode 100644
index 0000000..84715d0
--- /dev/null
+++ b/libc/upstream-freebsd/lib/libc/string/bcopy.c
@@ -0,0 +1,137 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)bcopy.c	8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+
+typedef	intptr_t word;		/* "word" used for optimal copy speed */
+
+#define	wsize	sizeof(word)
+#define	wmask	(wsize - 1)
+
+/*
+ * Copy a block of memory, handling overlap.
+ * This is the routine that actually implements
+ * (the portable versions of) bcopy, memcpy, and memmove.
+ */
+#if defined(MEMCOPY) || defined(MEMMOVE)
+#include <string.h>
+
+void *
+#ifdef MEMCOPY
+memcpy
+#else
+memmove
+#endif
+(void *dst0, const void *src0, size_t length)
+#else
+#include <strings.h>
+
+void
+bcopy(const void *src0, void *dst0, size_t length)
+#endif
+{
+	char *dst = dst0;
+	const char *src = src0;
+	size_t t;
+
+	if (length == 0 || dst == src)		/* nothing to do */
+		goto done;
+
+	/*
+	 * Macros: loop-t-times; and loop-t-times, t>0
+	 */
+#define	TLOOP(s) if (t) TLOOP1(s)
+#define	TLOOP1(s) do { s; } while (--t)
+
+	if ((unsigned long)dst < (unsigned long)src) {
+		/*
+		 * Copy forward.
+		 */
+		t = (uintptr_t)src;	/* only need low bits */
+		if ((t | (uintptr_t)dst) & wmask) {
+			/*
+			 * Try to align operands.  This cannot be done
+			 * unless the low bits match.
+			 */
+			if ((t ^ (uintptr_t)dst) & wmask || length < wsize)
+				t = length;
+			else
+				t = wsize - (t & wmask);
+			length -= t;
+			TLOOP1(*dst++ = *src++);
+		}
+		/*
+		 * Copy whole words, then mop up any trailing bytes.
+		 */
+		t = length / wsize;
+		TLOOP(*(word *)(void *)dst = *(const word *)(const void *)src;
+		    src += wsize; dst += wsize);
+		t = length & wmask;
+		TLOOP(*dst++ = *src++);
+	} else {
+		/*
+		 * Copy backwards.  Otherwise essentially the same.
+		 * Alignment works as before, except that it takes
+		 * (t&wmask) bytes to align, not wsize-(t&wmask).
+		 */
+		src += length;
+		dst += length;
+		t = (uintptr_t)src;
+		if ((t | (uintptr_t)dst) & wmask) {
+			if ((t ^ (uintptr_t)dst) & wmask || length <= wsize)
+				t = length;
+			else
+				t &= wmask;
+			length -= t;
+			TLOOP1(*--dst = *--src);
+		}
+		t = length / wsize;
+		TLOOP(src -= wsize; dst -= wsize;
+		    *(word *)(void *)dst = *(const word *)(const void *)src);
+		t = length & wmask;
+		TLOOP(*--dst = *--src);
+	}
+done:
+#if defined(MEMCOPY) || defined(MEMMOVE)
+	return (dst0);
+#else
+	return;
+#endif
+}
diff --git a/libc/upstream-freebsd/lib/libc/string/memcmp.c b/libc/upstream-freebsd/lib/libc/string/memcmp.c
new file mode 100644
index 0000000..c8d5d92
--- /dev/null
+++ b/libc/upstream-freebsd/lib/libc/string/memcmp.c
@@ -0,0 +1,58 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)memcmp.c	8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <string.h>
+
+/*
+ * Compare memory regions.
+ */
+int
+memcmp(const void *s1, const void *s2, size_t n)
+{
+	if (n != 0) {
+		const unsigned char *p1 = s1, *p2 = s2;
+
+		do {
+			if (*p1++ != *p2++)
+				return (*--p1 - *--p2);
+		} while (--n != 0);
+	}
+	return (0);
+}
diff --git a/libc/upstream-freebsd/lib/libc/string/memcpy.c b/libc/upstream-freebsd/lib/libc/string/memcpy.c
new file mode 100644
index 0000000..ed03856
--- /dev/null
+++ b/libc/upstream-freebsd/lib/libc/string/memcpy.c
@@ -0,0 +1,5 @@
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#define	MEMCOPY
+#include "bcopy.c"
diff --git a/libc/upstream-freebsd/lib/libc/string/memmove.c b/libc/upstream-freebsd/lib/libc/string/memmove.c
new file mode 100644
index 0000000..05cf75a
--- /dev/null
+++ b/libc/upstream-freebsd/lib/libc/string/memmove.c
@@ -0,0 +1,5 @@
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#define	MEMMOVE
+#include "bcopy.c"
diff --git a/libc/upstream-freebsd/lib/libc/string/memset.c b/libc/upstream-freebsd/lib/libc/string/memset.c
new file mode 100644
index 0000000..e2d4027
--- /dev/null
+++ b/libc/upstream-freebsd/lib/libc/string/memset.c
@@ -0,0 +1,133 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Hibler and Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)memset.c	8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+
+#include <limits.h>
+
+#define	wsize	sizeof(u_long)
+#define	wmask	(wsize - 1)
+
+#ifdef BZERO
+#include <strings.h>
+
+#define	RETURN	return
+#define	VAL	0
+#define	WIDEVAL	0
+
+void
+bzero(void *dst0, size_t length)
+#else
+#include <string.h>
+
+#define	RETURN	return (dst0)
+#define	VAL	c0
+#define	WIDEVAL	c
+
+void *
+memset(void *dst0, int c0, size_t length)
+#endif
+{
+	size_t t;
+#ifndef BZERO
+	u_long c;
+#endif
+	u_char *dst;
+
+	dst = dst0;
+	/*
+	 * If not enough words, just fill bytes.  A length >= 2 words
+	 * guarantees that at least one of them is `complete' after
+	 * any necessary alignment.  For instance:
+	 *
+	 *	|-----------|-----------|-----------|
+	 *	|00|01|02|03|04|05|06|07|08|09|0A|00|
+	 *	          ^---------------------^
+	 *		 dst		 dst+length-1
+	 *
+	 * but we use a minimum of 3 here since the overhead of the code
+	 * to do word writes is substantial.
+	 *
+	 * TODO: This threshold might not be sensible for 64-bit u_long.
+	 * We should benchmark and revisit this decision.
+	 */
+	if (length < 3 * wsize) {
+		while (length != 0) {
+			*dst++ = VAL;
+			--length;
+		}
+		RETURN;
+	}
+
+#ifndef BZERO
+	if ((c = (u_char)c0) != 0) {	/* Fill the word. */
+		c = (c << 8) | c;	/* u_long is 16 bits. */
+#if ULONG_MAX > 0xffff
+		c = (c << 16) | c;	/* u_long is 32 bits. */
+#endif
+#if ULONG_MAX > 0xffffffff
+		c = (c << 32) | c;	/* u_long is 64 bits. */
+#endif
+	}
+#endif
+	/* Align destination by filling in bytes. */
+	if ((t = (long)dst & wmask) != 0) {
+		t = wsize - t;
+		length -= t;
+		do {
+			*dst++ = VAL;
+		} while (--t != 0);
+	}
+
+	/* Fill words.  Length was >= 2*words so we know t >= 1 here. */
+	t = length / wsize;
+	do {
+		*(u_long *)(void *)dst = WIDEVAL;
+		dst += wsize;
+	} while (--t != 0);
+
+	/* Mop up trailing bytes, if any. */
+	t = length & wmask;
+	if (t != 0)
+		do {
+			*dst++ = VAL;
+		} while (--t != 0);
+	RETURN;
+}
diff --git a/libc/upstream-netbsd/android/include/netbsd-compat.h b/libc/upstream-netbsd/android/include/netbsd-compat.h
index 5dd086e..a625f06 100644
--- a/libc/upstream-netbsd/android/include/netbsd-compat.h
+++ b/libc/upstream-netbsd/android/include/netbsd-compat.h
@@ -43,6 +43,8 @@
 #include <stddef.h>
 int reallocarr(void*, size_t, size_t);
 
+#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+
 /* Use appropriate shell depending on process's executable. */
 __LIBC_HIDDEN__ extern const char* __bionic_get_shell_path();
 #define _PATH_BSHELL __bionic_get_shell_path()
diff --git a/libc/upstream-netbsd/lib/libc/include/isc/list.h b/libc/upstream-netbsd/lib/libc/include/isc/list.h
index 46f2e79..76dc097 100644
--- a/libc/upstream-netbsd/lib/libc/include/isc/list.h
+++ b/libc/upstream-netbsd/lib/libc/include/isc/list.h
@@ -1,4 +1,4 @@
-/*	$NetBSD: list.h,v 1.5 2009/04/12 17:07:16 christos Exp $	*/
+/*	$NetBSD: list.h,v 1.6 2022/04/19 20:32:15 rillig Exp $	*/
 
 /*
  * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
@@ -23,14 +23,14 @@
 
 #define LIST(type) struct { type *head, *tail; }
 #define INIT_LIST(list) \
-	do { (list).head = NULL; (list).tail = NULL; } while (/*CONSTCOND*/0)
+	do { (list).head = NULL; (list).tail = NULL; } while (0)
 
 #define LINK(type) struct { type *prev, *next; }
 #define INIT_LINK_TYPE(elt, link, type) \
 	do { \
 		(elt)->link.prev = (type *)(-1); \
 		(elt)->link.next = (type *)(-1); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 #define INIT_LINK(elt, link) \
 	INIT_LINK_TYPE(elt, link, void)
 #define LINKED(elt, link) ((void *)((elt)->link.prev) != (void *)(-1) && \
@@ -50,7 +50,7 @@
 		(elt)->link.prev = NULL; \
 		(elt)->link.next = (list).head; \
 		(list).head = (elt); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define APPEND(list, elt, link) \
 	do { \
@@ -62,7 +62,7 @@
 		(elt)->link.prev = (list).tail; \
 		(elt)->link.next = NULL; \
 		(list).tail = (elt); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define UNLINK_TYPE(list, elt, link, type) \
 	do { \
@@ -80,7 +80,7 @@
 			(list).head = (elt)->link.next; \
 		} \
 		INIT_LINK_TYPE(elt, link, type); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 #define UNLINK(list, elt, link) \
 	UNLINK_TYPE(list, elt, link, void)
 
@@ -98,7 +98,7 @@
 			(elt)->link.prev->link.next = (elt); \
 			(elt)->link.next = (before); \
 		} \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define INSERT_AFTER(list, after, elt, link) \
 	do { \
@@ -111,7 +111,7 @@
 			(elt)->link.next->link.prev = (elt); \
 			(elt)->link.prev = (after); \
 		} \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define ENQUEUE(list, elt, link) APPEND(list, elt, link)
 #define DEQUEUE(list, elt, link) UNLINK(list, elt, link)
diff --git a/libc/upstream-netbsd/lib/libc/regex/cclass.h b/libc/upstream-netbsd/lib/libc/regex/cclass.h
deleted file mode 100644
index 3ab2ccb..0000000
--- a/libc/upstream-netbsd/lib/libc/regex/cclass.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*	$NetBSD: cclass.h,v 1.7 2003/08/07 16:43:19 agc Exp $	*/
-
-/*-
- * Copyright (c) 1992, 1993, 1994
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cclass.h	8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cclass.h	8.3 (Berkeley) 3/20/94
- */
-
-/* character-class table */
-static const struct cclass {
-	const char *name;
-	const char *chars;
-	const char *multis;
-} cclasses[] = {
-	{ "alnum",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789",				"" },
-	{ "alpha",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
-					"" },
-	{ "blank",	" \t",		"" },
-	{ "cntrl",	"\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\
-\25\26\27\30\31\32\33\34\35\36\37\177",	"" },
-	{ "digit",	"0123456789",	"" },
-	{ "graph",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
-					"" },
-	{ "lower",	"abcdefghijklmnopqrstuvwxyz",
-					"" },
-	{ "print",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ",
-					"" },
-	{ "punct",	"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
-					"" },
-	{ "space",	"\t\n\v\f\r ",	"" },
-	{ "upper",	"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
-					"" },
-	{ "xdigit",	"0123456789ABCDEFabcdef",
-					"" },
-	{ NULL,		0,		"" }
-};
diff --git a/libc/upstream-netbsd/lib/libc/regex/cname.h b/libc/upstream-netbsd/lib/libc/regex/cname.h
index 4b9ef39..47e57ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/cname.h
+++ b/libc/upstream-netbsd/lib/libc/regex/cname.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: cname.h,v 1.7 2003/08/07 16:43:19 agc Exp $	*/
+/*	$NetBSD: cname.h,v 1.8 2021/02/23 22:14:59 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,144 +35,108 @@
  * SUCH DAMAGE.
  *
  *	@(#)cname.h	8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cname.h	8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/cname.h 326025 2017-11-20 19:49:47Z pfg $
  */
 
 /* character-name table */
-static const struct cname {
+static struct cname {
 	const char *name;
 	char code;
 } cnames[] = {
-	{ "NUL",			'\0' },
-	{ "SOH",			'\001' },
-	{ "STX",			'\002' },
-	{ "ETX",			'\003' },
-	{ "EOT",			'\004' },
-	{ "ENQ",			'\005' },
-	{ "ACK",			'\006' },
-	{ "BEL",			'\007' },
-	{ "alert",			'\007' },
-	{ "BS",				'\010' },
-	{ "backspace",			'\b' },
-	{ "HT",				'\011' },
-	{ "tab",			'\t' },
-	{ "LF",				'\012' },
-	{ "newline",			'\n' },
-	{ "VT",				'\013' },
-	{ "vertical-tab",		'\v' },
-	{ "FF",				'\014' },
-	{ "form-feed",			'\f' },
-	{ "CR",				'\015' },
-	{ "carriage-return",		'\r' },
-	{ "SO",				'\016' },
-	{ "SI",				'\017' },
-	{ "DLE",			'\020' },
-	{ "DC1",			'\021' },
-	{ "DC2",			'\022' },
-	{ "DC3",			'\023' },
-	{ "DC4",			'\024' },
-	{ "NAK",			'\025' },
-	{ "SYN",			'\026' },
-	{ "ETB",			'\027' },
-	{ "CAN",			'\030' },
-	{ "EM",				'\031' },
-	{ "SUB",			'\032' },
-	{ "ESC",			'\033' },
-	{ "IS4",			'\034' },
-	{ "FS",				'\034' },
-	{ "IS3",			'\035' },
-	{ "GS",				'\035' },
-	{ "IS2",			'\036' },
-	{ "RS",				'\036' },
-	{ "IS1",			'\037' },
-	{ "US",				'\037' },
-	{ "space",			' ' },
-	{ "exclamation-mark",		'!' },
-	{ "quotation-mark",		'"' },
-	{ "number-sign",		'#' },
-	{ "dollar-sign",		'$' },
-	{ "percent-sign",		'%' },
-	{ "ampersand",			'&' },
-	{ "apostrophe",			'\'' },
-	{ "left-parenthesis",		'(' },
-	{ "right-parenthesis",		')' },
-	{ "asterisk",			'*' },
-	{ "plus-sign",			'+' },
-	{ "comma",			',' },
-	{ "hyphen",			'-' },
-	{ "hyphen-minus",		'-' },
-	{ "period",			'.' },
-	{ "full-stop",			'.' },
-	{ "slash",			'/' },
-	{ "solidus",			'/' },
-	{ "zero",			'0' },
-	{ "one",			'1' },
-	{ "two",			'2' },
-	{ "three",			'3' },
-	{ "four",			'4' },
-	{ "five",			'5' },
-	{ "six",			'6' },
-	{ "seven",			'7' },
-	{ "eight",			'8' },
-	{ "nine",			'9' },
-	{ "colon",			':' },
-	{ "semicolon",			';' },
-	{ "less-than-sign",		'<' },
-	{ "equals-sign",		'=' },
-	{ "greater-than-sign",		'>' },
-	{ "question-mark",		'?' },
-	{ "commercial-at",		'@' },
-	{ "left-square-bracket",	'[' },
-	{ "backslash",			'\\' },
-	{ "reverse-solidus",		'\\' },
-	{ "right-square-bracket",	']' },
-	{ "circumflex",			'^' },
-	{ "circumflex-accent",		'^' },
-	{ "underscore",			'_' },
-	{ "low-line",			'_' },
-	{ "grave-accent",		'`' },
-	{ "left-brace",			'{' },
-	{ "left-curly-bracket",		'{' },
-	{ "vertical-line",		'|' },
-	{ "right-brace",		'}' },
-	{ "right-curly-bracket",	'}' },
-	{ "tilde",			'~' },
-	{ "DEL",			'\177' },
-	{ NULL,				0 },
+	{"NUL",			'\0'},
+	{"SOH",			'\001'},
+	{"STX",			'\002'},
+	{"ETX",			'\003'},
+	{"EOT",			'\004'},
+	{"ENQ",			'\005'},
+	{"ACK",			'\006'},
+	{"BEL",			'\007'},
+	{"alert",		'\007'},
+	{"BS",			'\010'},
+	{"backspace",		'\b'},
+	{"HT",			'\011'},
+	{"tab",			'\t'},
+	{"LF",			'\012'},
+	{"newline",		'\n'},
+	{"VT",			'\013'},
+	{"vertical-tab",	'\v'},
+	{"FF",			'\014'},
+	{"form-feed",		'\f'},
+	{"CR",			'\015'},
+	{"carriage-return",	'\r'},
+	{"SO",			'\016'},
+	{"SI",			'\017'},
+	{"DLE",			'\020'},
+	{"DC1",			'\021'},
+	{"DC2",			'\022'},
+	{"DC3",			'\023'},
+	{"DC4",			'\024'},
+	{"NAK",			'\025'},
+	{"SYN",			'\026'},
+	{"ETB",			'\027'},
+	{"CAN",			'\030'},
+	{"EM",			'\031'},
+	{"SUB",			'\032'},
+	{"ESC",			'\033'},
+	{"IS4",			'\034'},
+	{"FS",			'\034'},
+	{"IS3",			'\035'},
+	{"GS",			'\035'},
+	{"IS2",			'\036'},
+	{"RS",			'\036'},
+	{"IS1",			'\037'},
+	{"US",			'\037'},
+	{"space",		' '},
+	{"exclamation-mark",	'!'},
+	{"quotation-mark",	'"'},
+	{"number-sign",		'#'},
+	{"dollar-sign",		'$'},
+	{"percent-sign",	'%'},
+	{"ampersand",		'&'},
+	{"apostrophe",		'\''},
+	{"left-parenthesis",	'('},
+	{"right-parenthesis",	')'},
+	{"asterisk",		'*'},
+	{"plus-sign",		'+'},
+	{"comma",		','},
+	{"hyphen",		'-'},
+	{"hyphen-minus",	'-'},
+	{"period",		'.'},
+	{"full-stop",		'.'},
+	{"slash",		'/'},
+	{"solidus",		'/'},
+	{"zero",		'0'},
+	{"one",			'1'},
+	{"two",			'2'},
+	{"three",		'3'},
+	{"four",		'4'},
+	{"five",		'5'},
+	{"six",			'6'},
+	{"seven",      		'7'},
+	{"eight",		'8'},
+	{"nine",		'9'},
+	{"colon",		':'},
+	{"semicolon",		';'},
+	{"less-than-sign",	'<'},
+	{"equals-sign",		'='},
+	{"greater-than-sign",	'>'},
+	{"question-mark",	'?'},
+	{"commercial-at",	'@'},
+	{"left-square-bracket",	'['},
+	{"backslash",		'\\'},
+	{"reverse-solidus",	'\\'},
+	{"right-square-bracket",']'},
+	{"circumflex",		'^'},
+	{"circumflex-accent",	'^'},
+	{"underscore",		'_'},
+	{"low-line",		'_'},
+	{"grave-accent",	'`'},
+	{"left-brace",		'{'},
+	{"left-curly-bracket",	'{'},
+	{"vertical-line",	'|'},
+	{"right-brace",		'}'},
+	{"right-curly-bracket",	'}'},
+	{"tilde",		'~'},
+	{"DEL",	'\177'},
+	{NULL,	0}
 };
diff --git a/libc/upstream-netbsd/lib/libc/regex/engine.c b/libc/upstream-netbsd/lib/libc/regex/engine.c
index 2a800d4..ca8b24d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/engine.c
+++ b/libc/upstream-netbsd/lib/libc/regex/engine.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: engine.c,v 1.24 2012/03/13 21:13:42 christos Exp $	*/
+/* $NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $ */
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,42 +37,13 @@
  *	@(#)engine.c	8.5 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)engine.c	8.5 (Berkeley) 3/20/94
- */
+#include <sys/cdefs.h>
+#ifdef __FBSDID
+__FBSDID("$FreeBSD: head/lib/libc/regex/engine.c 368358 2020-12-05 03:16:05Z kevans $");
+#endif
+__RCSID("$NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $");
+
+#include <stdbool.h>
 
 /*
  * The matching engine and friends.  This file is #included by regexec.c
@@ -79,28 +53,37 @@
  */
 
 #ifdef SNAMES
+#define	stepback sstepback
 #define	matcher	smatcher
-#define	fast	sfast
-#define	slow	sslow
+#define	walk	swalk
 #define	dissect	sdissect
 #define	backref	sbackref
 #define	step	sstep
 #define	print	sprint
 #define	at	sat
 #define	match	smat
-#define	nope	snope
 #endif
 #ifdef LNAMES
+#define	stepback lstepback
 #define	matcher	lmatcher
-#define	fast	lfast
-#define	slow	lslow
+#define	walk	lwalk
 #define	dissect	ldissect
 #define	backref	lbackref
 #define	step	lstep
 #define	print	lprint
 #define	at	lat
 #define	match	lmat
-#define	nope	lnope
+#endif
+#ifdef MNAMES
+#define	stepback mstepback
+#define	matcher	mmatcher
+#define	walk	mwalk
+#define	dissect	mdissect
+#define	backref	mbackref
+#define	step	mstep
+#define	print	mprint
+#define	at	mat
+#define	match	mmat
 #endif
 
 /* another structure passed up and down to avoid zillions of parameters */
@@ -118,6 +101,7 @@
 	states fresh;		/* states for a fresh start */
 	states tmp;		/* temporary */
 	states empty;		/* empty set of states */
+	mbstate_t mbs;		/* multibyte conversion state */
 };
 
 /* ========= begin header generated by ./mkh ========= */
@@ -128,27 +112,31 @@
 /* === engine.c === */
 static int matcher(struct re_guts *g, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
 static const char *dissect(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev);
-static const char *fast(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *slow(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static states step(struct re_guts *g, sopno start, sopno stop, states bef, int ch, states aft);
-#define	BOL	(OUT+1)
-#define	EOL	(BOL+1)
-#define	BOLEOL	(BOL+2)
-#define	NOTHING	(BOL+3)
-#define	BOW	(BOL+4)
-#define	EOW	(BOL+5)
-#define	CODEMAX	(BOL+5)		/* highest code used */
-#define	NONCHAR(c)	((c) > CHAR_MAX)
-#define	NNONCHAR	(CODEMAX-CHAR_MAX)
+static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev, int);
+static const char *walk(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, bool fast);
+static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft, int sflags);
+#define MAX_RECURSION	100
+#define	BOL	(OUT-1)
+#define	EOL	(BOL-1)
+#define	BOLEOL	(BOL-2)
+#define	NOTHING	(BOL-3)
+#define	BOW	(BOL-4)
+#define	EOW	(BOL-5)
+#define	BADCHAR	(BOL-6)
+#define	NWBND	(BOL-7)
+#define	NONCHAR(c)	((c) <= OUT)
+/* sflags */
+#define	SBOS	0x0001
+#define	SEOS	0x0002
+
 #ifdef REDEBUG
-static void print(struct match *m, char *caption, states st, int ch, FILE *d);
+static void print(struct match *m, const char *caption, states st, int ch, FILE *d);
 #endif
 #ifdef REDEBUG
-static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst);
+static void at(struct match *m, const char *title, const char *start, const char *stop, sopno startst, sopno stopst);
 #endif
 #ifdef REDEBUG
-static char *pchar(int ch);
+static const char *pchar(int ch);
 #endif
 
 #ifdef __cplusplus
@@ -160,7 +148,6 @@
 #define	SP(t, s, c)	print(m, t, s, c, stdout)
 #define	AT(t, p1, p2, s1, s2)	at(m, t, p1, p2, s1, s2)
 #define	NOTE(str)	{ if (m->eflags&REG_TRACE) printf("=%s\n", (str)); }
-static int nope = 0;
 #else
 #define	SP(t, s, c)	/* nothing */
 #define	AT(t, p1, p2, s1, s2)	/* nothing */
@@ -168,27 +155,70 @@
 #endif
 
 /*
+ * Given a multibyte string pointed to by start, step back nchar characters
+ * from current position pointed to by cur.
+ */
+static const char *
+stepback(const char *start, const char *cur, int nchar)
+{
+#ifdef NLS
+	const char *ret;
+	size_t wc, mbc;
+	mbstate_t mbs;
+	size_t clen;
+
+	if (MB_CUR_MAX == 1)
+		goto out;
+
+	ret = cur;
+	for (wc = nchar; wc > 0; wc--) {
+		for (mbc = 1; mbc <= MB_CUR_MAX; mbc++) {
+			if ((ret - mbc) < start)
+				return (NULL);
+			memset(&mbs, 0, sizeof(mbs));
+			clen = mbrtowc(NULL, ret - mbc, mbc, &mbs);
+			if (clen != (size_t)-1 && clen != (size_t)-2)
+				break;
+		}
+		if (mbc > MB_CUR_MAX)
+			return (NULL);
+		ret -= mbc;
+	}
+
+	return (ret);
+out:
+#endif
+	return (cur - nchar) > start ? cur - nchar : NULL;
+}
+
+/*
  - matcher - the actual matching engine
- == static int matcher(struct re_guts *g, char *string, \
+ == static int matcher(struct re_guts *g, const char *string, \
  ==	size_t nmatch, regmatch_t pmatch[], int eflags);
  */
 static int			/* 0 success, REG_NOMATCH failure */
-matcher(
-    struct re_guts *g,
-    const char *string,
-    size_t nmatch,
-    regmatch_t pmatch[],
-    int eflags)
+matcher(struct re_guts *g,
+	const char *string,
+	size_t nmatch,
+	regmatch_t pmatch[],
+	int eflags)
 {
 	const char *endp;
 	size_t i;
 	struct match mv;
 	struct match *m = &mv;
-	const char *dp;
+	const char *dp = NULL;
 	const sopno gf = g->firststate+1;	/* +1 for OEND */
 	const sopno gl = g->laststate;
 	const char *start;
 	const char *stop;
+	/* Boyer-Moore algorithms variables */
+	const char *pp;
+	size_t cj, mj;
+	const char *mustfirst;
+	const char *mustlast;
+	size_t *matchjump;
+	size_t *charjump;
 	int error = 0;
 
 	_DIAGASSERT(g != NULL);
@@ -211,12 +241,46 @@
 
 	/* prescreening; this does wonders for this rather slow code */
 	if (g->must != NULL) {
-		for (dp = start; dp < stop; dp++)
-			if (*dp == g->must[0] && (size_t)(stop - dp) >= g->mlen &&
-				memcmp(dp, g->must, g->mlen) == 0)
-				break;
-		if (dp == stop)		/* we didn't find g->must */
-			return(REG_NOMATCH);
+		if (g->charjump != NULL && g->matchjump != NULL) {
+			mustfirst = g->must;
+			mustlast = g->must + g->mlen - 1;
+			charjump = g->charjump;
+			matchjump = g->matchjump;
+			pp = mustlast;
+			for (dp = start+g->mlen-1; dp < stop;) {
+				/* Fast skip non-matches */
+				while (dp < stop && charjump[(int)*dp])
+					dp += charjump[(int)*dp];
+
+				if (dp >= stop)
+					break;
+
+				/* Greedy matcher */
+				/* We depend on not being used for
+				 * for strings of length 1
+				 */
+				while (*--dp == *--pp && pp != mustfirst);
+
+				if (*dp == *pp)
+					break;
+
+				/* Jump to next possible match */
+				mj = matchjump[pp - mustfirst];
+				cj = charjump[(int)*dp];
+				dp += (cj < mj ? mj : cj);
+				pp = mustlast;
+			}
+			if (pp != mustfirst)
+				return(REG_NOMATCH);
+		} else {
+			for (dp = start; dp < stop; dp++)
+				if (*dp == g->must[0] &&
+				    (size_t)(stop - dp) >= g->mlen &&
+				    memcmp(dp, g->must, (size_t)g->mlen) == 0)
+					break;
+			if (dp == stop)		/* we didn't find g->must */
+				return(REG_NOMATCH);
+		}
 	}
 
 	/* match struct setup */
@@ -233,10 +297,22 @@
 	SETUP(m->tmp);
 	SETUP(m->empty);
 	CLEAR(m->empty);
+	ZAPSTATE(&m->mbs);
+
+	/* Adjust start according to moffset, to speed things up */
+	if (dp != NULL && g->moffset > -1) {
+		const char *nstart;
+
+		nstart = stepback(start, dp, g->moffset);
+		if (nstart != NULL)
+			start = nstart;
+	}
+
+	SP("mloop", m->st, *start);
 
 	/* this loop does only one repetition except for backrefs */
 	for (;;) {
-		endp = fast(m, start, stop, gf, gl);
+		endp = walk(m, start, stop, gf, gl, true);
 		if (endp == NULL) {		/* a miss */
 			error = REG_NOMATCH;
 			goto done;
@@ -248,11 +324,12 @@
 		assert(m->coldp != NULL);
 		for (;;) {
 			NOTE("finding start");
-			endp = slow(m, m->coldp, stop, gf, gl);
+			endp = walk(m, m->coldp, stop, gf, gl, false);
 			if (endp != NULL)
 				break;
 			assert(m->coldp < m->endp);
-			m->coldp++;
+			m->coldp += XMBRTOWC(NULL, m->coldp,
+			    (size_t)(m->endp - m->coldp), &m->mbs, 0);
 		}
 		if (nmatch == 1 && !g->backrefs)
 			break;		/* no further info needed */
@@ -266,20 +343,20 @@
 			goto done;
 		}
 		for (i = 1; i <= m->g->nsub; i++)
-			m->pmatch[i].rm_so = m->pmatch[i].rm_eo = (regoff_t)-1;
+			m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;
 		if (!g->backrefs && !(m->eflags&REG_BACKR)) {
 			NOTE("dissecting");
 			dp = dissect(m, m->coldp, endp, gf, gl);
 		} else {
 			if (g->nplus > 0 && m->lastpos == NULL)
 				m->lastpos = malloc((g->nplus+1) *
-							sizeof(const char *));
+						sizeof(const char *));
 			if (g->nplus > 0 && m->lastpos == NULL) {
 				error = REG_ESPACE;
 				goto done;
 			}
 			NOTE("backref dissect");
-			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
 		}
 		if (dp != NULL)
 			break;
@@ -291,7 +368,7 @@
 			if (dp != NULL || endp <= m->coldp)
 				break;		/* defeat */
 			NOTE("backoff");
-			endp = slow(m, m->coldp, endp-1, gf, gl);
+			endp = walk(m, m->coldp, endp-1, gf, gl, false);
 			if (endp == NULL)
 				break;		/* defeat */
 			/* try it on a shorter possibility */
@@ -302,7 +379,7 @@
 			}
 #endif
 			NOTE("backoff dissect");
-			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
 		}
 		assert(dp == NULL || dp == endp);
 		if (dp != NULL)		/* found a shorter one */
@@ -310,7 +387,9 @@
 
 		/* despite initial appearances, there is no match here */
 		NOTE("false alarm");
-		start = m->coldp + 1;	/* recycle starting later */
+		/* recycle starting later */
+		start = m->coldp + XMBRTOWC(NULL, m->coldp,
+		    (size_t)(stop - m->coldp), &m->mbs, 0);
 		assert(start <= stop);
 	}
 
@@ -337,7 +416,7 @@
 		m->pmatch = NULL;
 	}
 	if (m->lastpos != NULL) {
-		free(m->lastpos);
+		free(__UNCONST(m->lastpos));
 		m->lastpos = NULL;
 	}
 	STATETEARDOWN(m);
@@ -349,29 +428,27 @@
  == static const char *dissect(struct match *m, const char *start, \
  ==	const char *stop, sopno startst, sopno stopst);
  */
-static const char *			/* == stop (success) always */
+static const char *		/* == stop (success) always */
 dissect(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
+	struct match *m,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst)
 {
 	int i;
-	sopno ss;	/* start sop of current subRE */
-	sopno es;	/* end sop of current subRE */
-	const char *sp;	/* start of string matched by it */
-	const char *stp; /* string matched by it cannot pass here */
-	const char *rest; /* start of rest of string */
-	const char *tail; /* string unmatched by rest of RE */
-	sopno ssub;	/* start sop of subsubRE */
-	sopno esub;	/* end sop of subsubRE */
-	const char *ssp; /* start of string matched by subsubRE */
-	const char *sep; /* end of string matched by subsubRE */
-	const char *oldssp; /* previous ssp */
-#ifndef NDEBUG
-	const char *dp;
-#endif
+	sopno ss;		/* start sop of current subRE */
+	sopno es;		/* end sop of current subRE */
+	const char *sp;		/* start of string matched by it */
+	const char *stp;	/* string matched by it cannot pass here */
+	const char *rest;	/* start of rest of string */
+	const char *tail;	/* string unmatched by rest of RE */
+	sopno ssub;		/* start sop of subsubRE */
+	sopno esub;		/* end sop of subsubRE */
+	const char *ssp;	/* start of string matched by subsubRE */
+	const char *sep;	/* end of string matched by subsubRE */
+	const char *oldssp;	/* previous ssp */
+	const char *dp __unused;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
@@ -400,16 +477,22 @@
 			assert(nope);
 			break;
 		case OCHAR:
-			sp++;
+			sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+			    &m->mbs, 0);
 			break;
 		case OBOL:
 		case OEOL:
 		case OBOW:
 		case OEOW:
+		case OBOS:
+		case OEOS:
+		case OWBND:
+		case ONWBND:
 			break;
 		case OANY:
 		case OANYOF:
-			sp++;
+			sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+			    &m->mbs, 0);
 			break;
 		case OBACK_:
 		case O_BACK:
@@ -420,10 +503,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -433,13 +516,8 @@
 			ssub = ss + 1;
 			esub = es - 1;
 			/* did innards match? */
-			if (slow(m, sp, rest, ssub, esub) != NULL) {
-#ifdef NDEBUG
-				(void)
-#else
-				dp = 
-#endif
-				    dissect(m, sp, rest, ssub, esub);
+			if (walk(m, sp, rest, ssub, esub, false) != NULL) {
+				dp = dissect(m, sp, rest, ssub, esub);
 				assert(dp == rest);
 			} else		/* no */
 				assert(sp == rest);
@@ -449,10 +527,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -464,7 +542,7 @@
 			ssp = sp;
 			oldssp = ssp;
 			for (;;) {	/* find last match of innards */
-				sep = slow(m, ssp, rest, ssub, esub);
+				sep = walk(m, ssp, rest, ssub, esub, false);
 				if (sep == NULL || sep == ssp)
 					break;	/* failed or matched null */
 				oldssp = ssp;	/* on to next try */
@@ -476,13 +554,8 @@
 				ssp = oldssp;
 			}
 			assert(sep == rest);	/* must exhaust substring */
-			assert(slow(m, ssp, sep, ssub, esub) == rest);
-#ifdef NDEBUG
-			(void)
-#else
-			dp =
-#endif
-			    dissect(m, ssp, sep, ssub, esub);
+			assert(walk(m, ssp, sep, ssub, esub, false) == rest);
+			dp = dissect(m, ssp, sep, ssub, esub);
 			assert(dp == sep);
 			sp = rest;
 			break;
@@ -490,10 +563,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -504,7 +577,7 @@
 			esub = ss + OPND(m->g->strip[ss]) - 1;
 			assert(OP(m->g->strip[esub]) == OOR1);
 			for (;;) {	/* find first matching branch */
-				if (slow(m, sp, rest, ssub, esub) == rest)
+				if (walk(m, sp, rest, ssub, esub, false) == rest)
 					break;	/* it matched all of it */
 				/* that one missed, try next one */
 				assert(OP(m->g->strip[esub]) == OOR1);
@@ -517,12 +590,7 @@
 				else
 					assert(OP(m->g->strip[esub]) == O_CH);
 			}
-#ifdef NDEBUG
-			(void)
-#else
-			dp =
-#endif
-			    dissect(m, sp, rest, ssub, esub);
+			dp = dissect(m, sp, rest, ssub, esub);
 			assert(dp == rest);
 			sp = rest;
 			break;
@@ -553,6 +621,17 @@
 	return(sp);
 }
 
+#define	ISBOW(m, sp)					\
+    (sp < m->endp && ISWORD(*sp) &&			\
+    ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||	\
+    (sp > m->offp && !ISWORD(*(sp-1)))))
+#define	ISEOW(m, sp)					\
+    (((sp == m->endp && !(m->eflags&REG_NOTEOL)) ||	\
+    (sp < m->endp && *sp == '\n' &&			\
+    (m->g->cflags&REG_NEWLINE)) ||			\
+    (sp < m->endp && !ISWORD(*sp)) ) &&			\
+    (sp > m->beginp && ISWORD(*(sp-1))))		\
+
 /*
  - backref - figure out what matched what, figuring in back references
  == static const char *backref(struct match *m, const char *start, \
@@ -560,25 +639,27 @@
  */
 static const char *		/* == stop (success) or NULL (failure) */
 backref(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst,
-    sopno lev)			/* PLUS nesting level */
+	struct match *m,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst,
+	sopno lev,		/* PLUS nesting level */
+	int rec)
 {
 	int i;
-	sopno ss;	/* start sop of current subRE */
-	const char *sp;	/* start of string matched by it */
-	sopno ssub;	/* start sop of subsubRE */
-	sopno esub;	/* end sop of subsubRE */
-	const char *ssp; /* start of string matched by subsubRE */
+	sopno ss;		/* start sop of current subRE */
+	const char *sp;		/* start of string matched by it */
+	sopno ssub;		/* start sop of subsubRE */
+	sopno esub;		/* end sop of subsubRE */
+	const char *ssp;	/* start of string matched by subsubRE */
 	const char *dp;
 	size_t len;
 	int hard;
 	sop s;
 	regoff_t offsave;
 	cset *cs;
+	wint_t wc;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
@@ -592,23 +673,46 @@
 	for (ss = startst; !hard && ss < stopst; ss++)
 		switch (OP(s = m->g->strip[ss])) {
 		case OCHAR:
-			if (sp == stop || *sp++ != (char)OPND(s))
+			if (sp == stop)
+				return(NULL);
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc != (wint_t)OPND(s))
 				return(NULL);
 			break;
 		case OANY:
 			if (sp == stop)
 				return(NULL);
-			sp++;
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc == BADCHAR)
+				return (NULL);
 			break;
 		case OANYOF:
+			if (sp == stop)
+				return (NULL);
 			cs = &m->g->sets[OPND(s)];
-			if (sp == stop || !CHIN(cs, *sp++))
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc == BADCHAR || !CHIN(cs, wc))
+				return(NULL);
+			break;
+		case OBOS:
+			if (sp == m->beginp && (m->eflags & REG_NOTBOL) == 0)
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case OEOS:
+			if (sp == m->endp && (m->eflags & REG_NOTEOL) == 0)
+				{ /* yes */ }
+			else
 				return(NULL);
 			break;
 		case OBOL:
-			if ( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
-					(sp < m->endp && *(sp-1) == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) )
+			if ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
+			    (sp > m->offp && sp < m->endp &&
+			    *(sp-1) == '\n' && (m->g->cflags&REG_NEWLINE)))
 				{ /* yes */ }
 			else
 				return(NULL);
@@ -621,23 +725,29 @@
 			else
 				return(NULL);
 			break;
+		case OWBND:
+			if (ISBOW(m, sp) || ISEOW(m, sp))
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case ONWBND:
+			if (((sp == m->beginp) && !ISWORD(*sp)) ||
+			    (sp == m->endp && !ISWORD(*(sp - 1))))
+				{ /* yes, beginning/end of subject */ }
+			else if (ISWORD(*(sp - 1)) == ISWORD(*sp))
+				{ /* yes, beginning/end of subject */ }
+			else
+				return(NULL);
+			break;
 		case OBOW:
-			if (( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
-					(sp < m->endp && *(sp-1) == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) ||
-					(sp > m->beginp &&
-							!ISWORD(*(sp-1))) ) &&
-					(sp < m->endp && ISWORD(*sp)) )
+			if (ISBOW(m, sp))
 				{ /* yes */ }
 			else
 				return(NULL);
 			break;
 		case OEOW:
-			if (( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
-					(sp < m->endp && *sp == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) ||
-					(sp < m->endp && !ISWORD(*sp)) ) &&
-					(sp > m->beginp && ISWORD(*(sp-1))) )
+			if (ISEOW(m, sp))
 				{ /* yes */ }
 			else
 				return(NULL);
@@ -671,50 +781,47 @@
 	case OBACK_:		/* the vilest depths */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
-		if (m->pmatch[i].rm_eo == (regoff_t)-1)
+		if (m->pmatch[i].rm_eo == -1)
 			return(NULL);
-		assert(m->pmatch[i].rm_so != (regoff_t)-1);
-		len = (size_t)(m->pmatch[i].rm_eo - m->pmatch[i].rm_so);
-		if (len == 0)
+		assert(m->pmatch[i].rm_so != -1);
+		len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
+		if (len == 0 && rec++ > MAX_RECURSION)
 			return(NULL);
 		assert(stop - m->beginp >= len);
 		if (sp > stop - len)
 			return(NULL);	/* not enough left to match */
-		ssp = m->offp + (size_t)m->pmatch[i].rm_so;
+		ssp = m->offp + m->pmatch[i].rm_so;
 		if (memcmp(sp, ssp, len) != 0)
 			return(NULL);
 		while (m->g->strip[ss] != SOP(O_BACK, i))
 			ss++;
-		return(backref(m, sp+len, stop, ss+1, stopst, lev));
-
+		return(backref(m, sp+len, stop, ss+1, stopst, lev, rec));
 	case OQUEST_:		/* to null or not */
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);	/* not */
-		return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev));
-
+		return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev, rec));
 	case OPLUS_:
 		assert(m->lastpos != NULL);
 		assert(lev+1 <= m->g->nplus);
 		m->lastpos[lev+1] = sp;
-		return(backref(m, sp, stop, ss+1, stopst, lev+1));
-
+		return(backref(m, sp, stop, ss+1, stopst, lev+1, rec));
 	case O_PLUS:
 		if (sp == m->lastpos[lev])	/* last pass matched null */
-			return(backref(m, sp, stop, ss+1, stopst, lev-1));
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
 		/* try another pass */
 		m->lastpos[lev] = sp;
-		dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev);
+		dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev, rec);
 		if (dp == NULL)
-			dp = backref(m, sp, stop, ss+1, stopst, lev-1);
-		return(dp);
-
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
+		else
+			return(dp);
 	case OCH_:		/* find the right one, if any */
 		ssub = ss + 1;
 		esub = ss + OPND(s) - 1;
 		assert(OP(m->g->strip[esub]) == OOR1);
 		for (;;) {	/* find first matching branch */
-			dp = backref(m, sp, stop, ssub, esub, lev);
+			dp = backref(m, sp, stop, ssub, esub, lev, rec);
 			if (dp != NULL)
 				return(dp);
 			/* that one missed, try next one */
@@ -729,29 +836,28 @@
 			else
 				assert(OP(m->g->strip[esub]) == O_CH);
 		}
-
+		/* NOTREACHED */
+		break;
 	case OLPAREN:		/* must undo assignment if rest fails */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
 		offsave = m->pmatch[i].rm_so;
 		m->pmatch[i].rm_so = sp - m->offp;
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);
 		m->pmatch[i].rm_so = offsave;
 		return(NULL);
-
 	case ORPAREN:		/* must undo assignment if rest fails */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
 		offsave = m->pmatch[i].rm_eo;
 		m->pmatch[i].rm_eo = sp - m->offp;
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);
 		m->pmatch[i].rm_eo = offsave;
 		return(NULL);
-
 	default:		/* uh oh */
 		assert(nope);
 		break;
@@ -760,141 +866,66 @@
 	/* "can't happen" */
 	assert(nope);
 	/* NOTREACHED */
-	return NULL;
+	return "shut up gcc";
 }
 
 /*
- - fast - step through the string at top speed
- == static const char *fast(struct match *m, const char *start, \
- ==	const char *stop, sopno startst, sopno stopst);
+ - walk - step through the string either quickly or slowly
+ == static const char *walk(struct match *m, const char *start, \
+ ==	const char *stop, sopno startst, sopno stopst, bool fast);
  */
-static const char *		/* where tentative match ended, or NULL */
-fast(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
+static const char * /* where it ended, or NULL */
+walk(struct match *m, const char *start, const char *stop, sopno startst,
+	sopno stopst, bool fast)
 {
 	states st = m->st;
 	states fresh = m->fresh;
-	states tmp = m->tmp;
-	const char *p = start;
-	int c = (start == m->beginp) ? OUT : *(start-1);
-	int lastc;	/* previous c */
-	int flagch;
-	size_t i;
-	const char *coldp; /* last p after which no match was underway */
-
-	_DIAGASSERT(m != NULL);
-	_DIAGASSERT(start != NULL);
-	_DIAGASSERT(stop != NULL);
-
-	CLEAR(st);
-	SET1(st, startst);
-	st = step(m->g, startst, stopst, st, NOTHING, st);
-	ASSIGN(fresh, st);
-	SP("start", st, *p);
-	coldp = NULL;
-	for (;;) {
-		/* next character */
-		lastc = c;
-		c = (p == m->endp) ? OUT : *p;
-		if (EQ(st, fresh))
-			coldp = p;
-
-		/* is there an EOL and/or BOL between lastc and c? */
-		flagch = '\0';
-		i = 0;
-		if ( (lastc == '\n' && m->g->cflags&REG_NEWLINE) ||
-				(lastc == OUT && !(m->eflags&REG_NOTBOL)) ) {
-			flagch = BOL;
-			i = m->g->nbol;
-		}
-		if ( (c == '\n' && m->g->cflags&REG_NEWLINE) ||
-				(c == OUT && !(m->eflags&REG_NOTEOL)) ) {
-			flagch = (flagch == BOL) ? BOLEOL : EOL;
-			i += m->g->neol;
-		}
-		if (i != 0) {
-			for (; i > 0; i--)
-				st = step(m->g, startst, stopst, st, flagch, st);
-			SP("boleol", st, c);
-		}
-
-		/* how about a word boundary? */
-		if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
-					(c != OUT && ISWORD(c)) ) {
-			flagch = BOW;
-		}
-		if ( (lastc != OUT && ISWORD(lastc)) &&
-				(flagch == EOL || (c != OUT && !ISWORD(c))) ) {
-			flagch = EOW;
-		}
-		if (flagch == BOW || flagch == EOW) {
-			st = step(m->g, startst, stopst, st, flagch, st);
-			SP("boweow", st, c);
-		}
-
-		/* are we done? */
-		if (ISSET(st, stopst) || p == stop)
-			break;		/* NOTE BREAK OUT */
-
-		/* no, we must deal with this character */
-		ASSIGN(tmp, st);
-		ASSIGN(st, fresh);
-		assert(c != OUT);
-		st = step(m->g, startst, stopst, tmp, c, st);
-		SP("aft", st, c);
-		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
-		p++;
-	}
-
-	assert(coldp != NULL);
-	m->coldp = coldp;
-	if (ISSET(st, stopst))
-		return(p+1);
-	else
-		return(NULL);
-}
-
-/*
- - slow - step through the string more deliberately
- == static const char *slow(struct match *m, const char *start, \
- ==	const char *stop, sopno startst, sopno stopst);
- */
-static const char *			/* where it ended */
-slow(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
-{
-	states st = m->st;
 	states empty = m->empty;
 	states tmp = m->tmp;
 	const char *p = start;
-	int c = (start == m->beginp) ? OUT : *(start-1);
-	int lastc;	/* previous c */
-	int flagch;
-	size_t i;
+	wint_t c;
+	wint_t lastc;		/* previous c */
+	wint_t flagch;
+	int sflags;
 	const char *matchp;	/* last p at which a match ended */
+	size_t i, clen;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
 	_DIAGASSERT(stop != NULL);
 
-	AT("slow", start, stop, startst, stopst);
+	sflags = 0;
+	AT("walk", start, stop, startst, stopst);
 	CLEAR(st);
 	SET1(st, startst);
 	SP("sstart", st, *p);
-	st = step(m->g, startst, stopst, st, NOTHING, st);
+	st = step(m->g, startst, stopst, st, NOTHING, st, sflags);
+	if (fast)
+		ASSIGN(fresh, st);
 	matchp = NULL;
+	if (start == m->offp || (start == m->beginp && !(m->eflags&REG_NOTBOL)))
+		c = OUT;
+	else {
+		/*
+		 * XXX Wrong if the previous character was multi-byte.
+		 * Newline never is (in encodings supported by FreeBSD),
+		 * so this only breaks the ISWORD tests below.
+		 */
+		c = (uch)*(start - 1);
+	}
 	for (;;) {
 		/* next character */
 		lastc = c;
-		c = (p == m->endp) ? OUT : *p;
+		sflags = 0;
+		if (p == m->endp) {
+			c = OUT;
+			clen = 0;
+		} else
+			clen = XMBRTOWC(&c, p, (size_t)(m->endp - p),
+			    &m->mbs, BADCHAR);
+
+		if (fast && EQ(st, fresh))
+			matchp = p;
 
 		/* is there an EOL and/or BOL between lastc and c? */
 		flagch = '\0';
@@ -909,9 +940,20 @@
 			flagch = (flagch == BOL) ? BOLEOL : EOL;
 			i += m->g->neol;
 		}
+		if (lastc == OUT && (m->eflags & REG_NOTBOL) == 0) {
+			sflags |= SBOS;
+			/* Step one more for BOS. */
+			i++;
+		}
+		if (c == OUT && (m->eflags & REG_NOTEOL) == 0) {
+			sflags |= SEOS;
+			/* Step one more for EOS. */
+			i++;
+		}
 		if (i != 0) {
 			for (; i > 0; i--)
-				st = step(m->g, startst, stopst, st, flagch, st);
+				st = step(m->g, startst, stopst, st, flagch, st,
+				    sflags);
 			SP("sboleol", st, c);
 		}
 
@@ -925,52 +967,78 @@
 			flagch = EOW;
 		}
 		if (flagch == BOW || flagch == EOW) {
-			st = step(m->g, startst, stopst, st, flagch, st);
+			st = step(m->g, startst, stopst, st, flagch, st, sflags);
 			SP("sboweow", st, c);
 		}
+		if (lastc != OUT && c != OUT &&
+		    ISWORD(lastc) == ISWORD(c)) {
+			flagch = NWBND;
+		} else if ((lastc == OUT && !ISWORD(c)) ||
+		    (c == OUT && !ISWORD(lastc))) {
+			flagch = NWBND;
+		}
+		if (flagch == NWBND) {
+			st = step(m->g, startst, stopst, st, flagch, st, sflags);
+			SP("snwbnd", st, c);
+		}
 
 		/* are we done? */
-		if (ISSET(st, stopst))
-			matchp = p;
-		if (EQ(st, empty) || p == stop)
+		if (ISSET(st, stopst)) {
+			if (fast)
+				break;
+			else
+				matchp = p;
+		}
+		if (EQ(st, empty) || p == stop || clen > (size_t)(stop - p))
 			break;		/* NOTE BREAK OUT */
 
 		/* no, we must deal with this character */
 		ASSIGN(tmp, st);
-		ASSIGN(st, empty);
+		if (fast)
+			ASSIGN(st, fresh);
+		else
+			ASSIGN(st, empty);
 		assert(c != OUT);
-		st = step(m->g, startst, stopst, tmp, c, st);
+		st = step(m->g, startst, stopst, tmp, c, st, sflags);
 		SP("saft", st, c);
-		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
-		p++;
+		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st, sflags),
+		    st));
+		p += clen;
 	}
 
-	return(matchp);
+	if (fast) {
+		assert(matchp != NULL);
+		m->coldp = matchp;
+		if (ISSET(st, stopst))
+			return (p + XMBRTOWC(NULL, p, (size_t)(stop - p),
+			    &m->mbs, 0));
+		else
+			return (NULL);
+	} else
+		return (matchp);
 }
 
-
 /*
  - step - map set of states reachable before char to set reachable after
  == static states step(struct re_guts *g, sopno start, sopno stop, \
  ==	states bef, int ch, states aft);
- == #define	BOL	(OUT+1)
- == #define	EOL	(BOL+1)
- == #define	BOLEOL	(BOL+2)
- == #define	NOTHING	(BOL+3)
- == #define	BOW	(BOL+4)
- == #define	EOW	(BOL+5)
- == #define	CODEMAX	(BOL+5)		// highest code used
- == #define	NONCHAR(c)	((c) > CHAR_MAX)
- == #define	NNONCHAR	(CODEMAX-CHAR_MAX)
+ == #define	BOL	(OUT-1)
+ == #define	EOL	(BOL-1)
+ == #define	BOLEOL	(BOL-2)
+ == #define	NOTHING	(BOL-3)
+ == #define	BOW	(BOL-4)
+ == #define	EOW	(BOL-5)
+ == #define	BADCHAR	(BOL-6)
+ == #define	NONCHAR(c)	((c) <= OUT)
  */
 static states
-step(
-    struct re_guts *g,
-    sopno start,		/* start state within strip */
-    sopno stop,			/* state after stop state within strip */
-    states bef,			/* states reachable before */
-    int ch,			/* character or NONCHAR code */
-    states aft)			/* states already known reachable after */
+step(struct re_guts *g,
+	sopno start,		/* start state within strip */
+	sopno stop,		/* state after stop state within strip */
+	states bef,		/* states reachable before */
+	wint_t ch,		/* character or NONCHAR code */
+	states aft,		/* states already known reachable after */
+	int sflags)		/* state flags */
 {
 	cset *cs;
 	sop s;
@@ -989,8 +1057,16 @@
 			break;
 		case OCHAR:
 			/* only characters can match */
-			assert(!NONCHAR(ch) || ch != (char)OPND(s));
-			if (ch == (char)OPND(s))
+			assert(!NONCHAR(ch) || ch != OPND(s));
+			if (ch == (wint_t)OPND(s))
+				FWD(aft, bef, 1);
+			break;
+		case OBOS:
+			if ((ch == BOL || ch == BOLEOL) && (sflags & SBOS) != 0)
+				FWD(aft, bef, 1);
+			break;
+		case OEOS:
+			if ((ch == EOL || ch == BOLEOL) && (sflags & SEOS) != 0)
 				FWD(aft, bef, 1);
 			break;
 		case OBOL:
@@ -1009,6 +1085,14 @@
 			if (ch == EOW)
 				FWD(aft, bef, 1);
 			break;
+		case OWBND:
+			if (ch == BOW || ch == EOW)
+				FWD(aft, bef, 1);
+			break;
+		case ONWBND:
+			if (ch == NWBND)
+				FWD(aft, aft, 1);
+			break;
 		case OANY:
 			if (!NONCHAR(ch))
 				FWD(aft, bef, 1);
@@ -1054,10 +1138,10 @@
 		case OOR1:		/* done a branch, find the O_CH */
 			if (ISSTATEIN(aft, here)) {
 				for (look = 1;
-						OP(s = g->strip[pc+look]) != O_CH;
-						look += OPND(s))
+				    OP(s = g->strip[pc+look]) != O_CH;
+				    look += OPND(s))
 					assert(OP(s) == OOR2);
-				FWD(aft, aft, look);
+				FWD(aft, aft, look + 1);
 			}
 			break;
 		case OOR2:		/* propagate OCH_'s marking */
@@ -1083,20 +1167,19 @@
 /*
  - print - print a set of states
  == #ifdef REDEBUG
- == static void print(struct match *m, char *caption, states st, \
+ == static void print(struct match *m, const char *caption, states st, \
  ==	int ch, FILE *d);
  == #endif
  */
 static void
-print(
-    struct match *m,
-    char *caption,
-    states st,
-    int ch,
-    FILE *d)
+print(struct match *m,
+	const char *caption,
+	states st,
+	int ch,
+	FILE *d)
 {
 	struct re_guts *g = m->g;
-	int i;
+	sopno i;
 	int first = 1;
 
 	_DIAGASSERT(m != NULL);
@@ -1112,27 +1195,26 @@
 		fprintf(d, " %s", pchar(ch));
 	for (i = 0; i < g->nstates; i++)
 		if (ISSET(st, i)) {
-			fprintf(d, "%s%d", (first) ? "\t" : ", ", i);
+			fprintf(d, "%s%lu", (first) ? "\t" : ", ", i);
 			first = 0;
 		}
 	fprintf(d, "\n");
 }
 
-/* 
+/*
  - at - print current situation
  == #ifdef REDEBUG
- == static void at(struct match *m, char *title, char *start, char *stop, \
- ==						sopno startst, sopno stopst);
+ == static void at(struct match *m, const char *title, const char *start, \
+ ==			 const char *stop, sopno startst, sopno stopst);
  == #endif
  */
 static void
-at(
-    struct match *m,
-    char *title,
-    char *start,
-    char *stop,
-    sopno startst,
-    sopno stopst)
+at(	struct match *m,
+	const char *title,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst)
 {
 
 	_DIAGASSERT(m != NULL);
@@ -1153,7 +1235,7 @@
 /*
  - pchar - make a character printable
  == #ifdef REDEBUG
- == static char *pchar(int ch);
+ == static const char *pchar(int ch);
  == #endif
  *
  * Is this identical to regchar() over in debug.c?  Well, yes.  But a
@@ -1161,28 +1243,26 @@
  * a matching debug.o, and this is convenient.  It all disappears in
  * the non-debug compilation anyway, so it doesn't matter much.
  */
-static char *			/* -> representation */
-pchar(
-    int ch)
+static const char *		/* -> representation */
+pchar(int ch)
 {
 	static char pbuf[10];
 
-	if (isprint(ch) || ch == ' ')
-		(void)snprintf(pbuf, sizeof pbuf, "%c", ch);
+	if (isprint((uch)ch) || ch == ' ')
+		snprintf(pbuf, sizeof(pbuf), "%c", ch);
 	else
-		(void)snprintf(pbuf, sizeof pbuf, "\\%o", ch);
+		snprintf(pbuf, sizeof(pbuf), "\\%o", ch);
 	return(pbuf);
 }
 #endif
 #endif
 
+#undef	stepback
 #undef	matcher
-#undef	fast
-#undef	slow
+#undef	walk
 #undef	dissect
 #undef	backref
 #undef	step
 #undef	print
 #undef	at
 #undef	match
-#undef	nope
diff --git a/libc/upstream-netbsd/lib/libc/regex/regcomp.c b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
index 4a0d99a..957f8ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regcomp.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
@@ -1,9 +1,17 @@
-/*	$NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $	*/
+/*	$NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
+ * Copyright (c) 2011 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * This code is derived from software contributed to Berkeley by
  * Henry Spencer.
  *
@@ -34,74 +42,65 @@
  *	@(#)regcomp.c	8.5 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regcomp.c	8.5 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regcomp.c	8.5 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regcomp.c 368359 2020-12-05 03:18:48Z kevans $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $");
+
+#define _OPENBSD_SOURCE
+
+#ifndef LIBHACK
+#define REGEX_GNU_EXTENSIONS
 
 #include "namespace.h"
+#endif
 #include <sys/types.h>
-
-#include <assert.h>
+#include <stdio.h>
+#include <string.h>
 #include <ctype.h>
 #include <limits.h>
-#include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <regex.h>
+#include <stdbool.h>
 
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
 __weak_alias(regcomp,_regcomp)
 #endif
 
+#ifdef REGEX_LIBC_COLLATE
+#include "collate.h"
+#endif
+
 #include "utils.h"
 #include "regex2.h"
 
-#include "cclass.h"
 #include "cname.h"
 
 /*
+ * Branching context, used to keep track of branch state for all of the branch-
+ * aware functions. In addition to keeping track of branch positions for the
+ * p_branch_* functions, we use this to simplify some clumsiness in BREs for
+ * detection of whether ^ is acting as an anchor or being used erroneously and
+ * also for whether we're in a sub-expression or not.
+ */
+struct branchc {
+	sopno start;
+	sopno back;
+	sopno fwd;
+
+	int nbranch;
+	int nchain;
+	bool outer;
+	bool terminate;
+};
+
+/*
  * parse structure, passed up and down to avoid global variables and
  * other clumsinesses
  */
@@ -109,6 +108,7 @@
 	const char *next;	/* next character in RE */
 	const char *end;	/* end of string (-> NUL normally) */
 	int error;		/* has an error been seen? */
+	int gnuext;
 	sop *strip;		/* malloced strip */
 	sopno ssize;		/* malloced strip size (allocated) */
 	sopno slen;		/* malloced strip length (used) */
@@ -117,56 +117,70 @@
 #	define	NPAREN	10	/* we need to remember () 1-9 for back refs */
 	sopno pbegin[NPAREN];	/* -> ( ([0] unused) */
 	sopno pend[NPAREN];	/* -> ) ([0] unused) */
+	bool allowbranch;	/* can this expression branch? */
+	bool bre;		/* convenience; is this a BRE? */
+	int pflags;		/* other parsing flags -- legacy escapes? */
+	bool (*parse_expr)(struct parse *, struct branchc *);
+	void (*pre_parse)(struct parse *, struct branchc *);
+	void (*post_parse)(struct parse *, struct branchc *);
 };
 
+#define PFLAG_LEGACY_ESC	0x00000001
+
 /* ========= begin header generated by ./mkh ========= */
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* === regcomp.c === */
-static void p_ere(struct parse *p, int stop, size_t reclimit);
-static void p_ere_exp(struct parse *p, size_t reclimit);
+static bool p_ere_exp(struct parse *p, struct branchc *bc);
 static void p_str(struct parse *p);
-static void p_bre(struct parse *p, int end1, int end2, size_t reclimit);
-static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
+static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
+static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
+static bool p_branch_empty(struct parse *p, struct branchc *bc);
+static bool p_branch_do(struct parse *p, struct branchc *bc);
+static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
+static void p_bre_post_parse(struct parse *p, struct branchc *bc);
+static void p_re(struct parse *p, int end1, int end2);
+static bool p_simp_re(struct parse *p, struct branchc *bc);
 static int p_count(struct parse *p);
 static void p_bracket(struct parse *p);
+static int p_range_cmp(wchar_t c1, wchar_t c2);
 static void p_b_term(struct parse *p, cset *cs);
+#ifdef REGEX_GNU_EXTENSIONS
+static int p_b_pseudoclass(struct parse *p, char c);
+#endif
 static void p_b_cclass(struct parse *p, cset *cs);
+static void p_b_cclass_named(struct parse *p, cset *cs, const char[]);
 static void p_b_eclass(struct parse *p, cset *cs);
-static char p_b_symbol(struct parse *p);
-static char p_b_coll_elem(struct parse *p, int endc);
-static int othercase(int ch);
-static void bothcases(struct parse *p, int ch);
-static void ordinary(struct parse *p, int ch);
+static wint_t p_b_symbol(struct parse *p);
+static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
+static bool may_escape(struct parse *p, const wint_t ch);
+static wint_t othercase(wint_t ch);
+static void bothcases(struct parse *p, wint_t ch);
+static void ordinary(struct parse *p, wint_t ch);
 static void nonnewline(struct parse *p);
-static void repeat(struct parse *p, sopno start, int from, int to, size_t reclimit);
+static void repeat(struct parse *p, sopno start, int from, int to);
 static int seterr(struct parse *p, int e);
 static cset *allocset(struct parse *p);
 static void freeset(struct parse *p, cset *cs);
-static sopno freezeset(struct parse *p, cset *cs);
-static int firstch(struct parse *p, cset *cs);
-static int nch(struct parse *p, cset *cs);
-static void mcadd(struct parse *p, cset *cs, const char *cp);
-#if 0
-static void mcsub(cset *cs, char *cp);
-static int mcin(cset *cs, char *cp);
-static char *mcfind(cset *cs, char *cp);
-#endif
-static void mcinvert(struct parse *p, cset *cs);
-static void mccase(struct parse *p, cset *cs);
-static int isinsets(struct re_guts *g, int c);
-static int samesets(struct re_guts *g, int c1, int c2);
-static void categorize(struct parse *p, struct re_guts *g);
+static void CHadd(struct parse *p, cset *cs, wint_t ch);
+static void CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max);
+static void CHaddtype(struct parse *p, cset *cs, wctype_t wct);
+static wint_t singleton(cset *cs);
 static sopno dupl(struct parse *p, sopno start, sopno finish);
-static void doemit(struct parse *p, sop op, sopno opnd);
-static void doinsert(struct parse *p, sop op, sopno opnd, sopno pos);
-static void dofwd(struct parse *p, sopno pos, sopno value);
+static void doemit(struct parse *p, sop op, size_t opnd);
+static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
+static void dofwd(struct parse *p, sopno pos, sop value);
 static int enlarge(struct parse *p, sopno size);
 static void stripsnug(struct parse *p, struct re_guts *g);
 static void findmust(struct parse *p, struct re_guts *g);
+static int altoffset(sop *scan, int offset);
+static void computejumps(struct parse *p, struct re_guts *g);
+static void computematchjumps(struct parse *p, struct re_guts *g);
 static sopno pluscount(struct parse *p, struct re_guts *g);
+static wint_t wgetnext(struct parse *p);
 
 #ifdef __cplusplus
 }
@@ -185,19 +199,22 @@
 #define	MORE2()	(p->next+1 < p->end)
 #define	SEE(c)	(MORE() && PEEK() == (c))
 #define	SEETWO(a, b)	(MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b))
+#define	SEESPEC(a)	(p->bre ? SEETWO('\\', a) : SEE(a))
 #define	EAT(c)	((SEE(c)) ? (NEXT(), 1) : 0)
 #define	EATTWO(a, b)	((SEETWO(a, b)) ? (NEXT2(), 1) : 0)
+#define	EATSPEC(a)	(p->bre ? EATTWO('\\', a) : EAT(a))
 #define	NEXT()	(p->next++)
 #define	NEXT2()	(p->next += 2)
 #define	NEXTn(n)	(p->next += (n))
 #define	GETNEXT()	(*p->next++)
+#define	WGETNEXT()	wgetnext(p)
 #define	SETERROR(e)	seterr(p, (e))
-#define	REQUIRE(co, e)	(void) ((co) || SETERROR(e))
+#define	REQUIRE(co, e)	((co) || SETERROR(e))
 #define	MUSTSEE(c, e)	(REQUIRE(MORE() && PEEK() == (c), e))
-#define	MUSTEAT(c, e)	(void) (REQUIRE(MORE() && GETNEXT() == (c), e))
+#define	MUSTEAT(c, e)	(REQUIRE(MORE() && GETNEXT() == (c), e))
 #define	MUSTNOTSEE(c, e)	(REQUIRE(!MORE() || PEEK() != (c), e))
-#define	EMIT(op, sopnd)	doemit(p, (sop)(op), sopnd)
-#define	INSERT(op, pos)	doinsert(p, (sop)(op), HERE()-(pos)+1, pos)
+#define	EMIT(op, sopnd)	doemit(p, (op), (sopnd))
+#define	INSERT(op, pos)	doinsert(p, (op), HERE()-(pos)+1, pos)
 #define	AHEAD(pos)		dofwd(p, pos, HERE()-(pos))
 #define	ASTERN(sop, pos)	EMIT(sop, HERE()-pos)
 #define	HERE()		(p->slen)
@@ -205,42 +222,62 @@
 #define	THERETHERE()	(p->slen - 2)
 #define	DROP(n)	(p->slen -= (n))
 
-#ifndef NDEBUG
-static int never = 0;		/* for use in asserts; shuts lint up */
-#else
-#define	never	0		/* some <assert.h>s have bugs too */
+/* Macro used by computejump()/computematchjump() */
+#ifndef MIN
+#define MIN(a,b)	((a)<(b)?(a):(b))
 #endif
 
-#define	MEMLIMIT	0x8000000
-#define MEMSIZE(p) \
-	((p)->ncsalloc / CHAR_BIT * (p)->g->csetsize + \
-	(p)->ncsalloc * sizeof(cset) + \
-	(p)->ssize * sizeof(sop))
-#define	RECLIMIT	256
+#ifndef NLS
+static const struct {
+	const char *name;
+	int (*func)(int);
+} wctypes[] = {
+#define ADD(x) { .name = # x, .func = is ## x }
+	ADD(alnum),
+	ADD(alpha),
+	ADD(blank),
+	ADD(cntrl),
+	ADD(digit),
+	ADD(graph),
+	ADD(lower),
+	ADD(print),
+	ADD(punct),
+	ADD(space),
+	ADD(upper),
+	ADD(xdigit),
+#undef ADD
+};
 
-/*
- - regcomp - interface for parser and compilation
- = extern int regcomp(regex_t *, const char *, int);
- = #define	REG_BASIC	0000
- = #define	REG_EXTENDED	0001
- = #define	REG_ICASE	0002
- = #define	REG_NOSUB	0004
- = #define	REG_NEWLINE	0010
- = #define	REG_NOSPEC	0020
- = #define	REG_PEND	0040
- = #define	REG_DUMP	0200
- */
-int				/* 0 success, otherwise REG_something */
-regcomp(
-    regex_t *preg,
-    const char *pattern,
-    int cflags)
+wctype_t
+__regex_wctype(const char *str)
+{
+	for (size_t i = 0; i < __arraycount(wctypes); i++) {
+		if (strcmp(wctypes[i].name, str) == 0)
+			return (wctype_t)(i + 1);
+	}
+	return (wctype_t)0;
+}
+
+int
+__regex_iswctype(wint_t c, wctype_t ct)
+{
+	if (ct == 0)
+		return 0;
+	return (*wctypes[ct - 1].func)(c);
+}
+#endif
+
+static int				/* 0 success, otherwise REG_something */
+regcomp_internal(regex_t * __restrict preg,
+	const char * __restrict pattern,
+	int cflags, int pflags)
 {
 	struct parse pa;
 	struct re_guts *g;
 	struct parse *p = &pa;
 	int i;
 	size_t len;
+	size_t maxlen;
 #ifdef REDEBUG
 #	define	GOODFLAGS(f)	(f)
 #else
@@ -262,11 +299,27 @@
 		len = strlen(pattern);
 
 	/* do the mallocs early so failure handling is easy */
-	g = malloc(sizeof(struct re_guts) + (NC - 1) * sizeof(cat_t));
+	g = malloc(sizeof(*g));
 	if (g == NULL)
 		return(REG_ESPACE);
-	p->ssize = len/(size_t)2*(size_t)3 + (size_t)1;	/* ugh */
-	p->strip = calloc(p->ssize, sizeof(sop));
+	/*
+	 * Limit the pattern space to avoid a 32-bit overflow on buffer
+	 * extension.  Also avoid any signed overflow in case of conversion
+	 * so make the real limit based on a 31-bit overflow.
+	 *
+	 * Likely not applicable on 64-bit systems but handle the case
+	 * generically (who are we to stop people from using ~715MB+
+	 * patterns?).
+	 */
+	maxlen = ((size_t)-1 >> 1) / sizeof(*p->strip) * 2 / 3;
+	if (len >= maxlen) {
+		free(g);
+		return(REG_ESPACE);
+	}
+	p->ssize = (sopno)(len / 2 * 3 + 1);	/* ugh */
+	assert(p->ssize >= len);
+
+	p->strip = calloc(p->ssize, sizeof(*p->strip));
 	p->slen = 0;
 	if (p->strip == NULL) {
 		free(g);
@@ -275,46 +328,74 @@
 
 	/* set things up */
 	p->g = g;
-	p->next = pattern;
+	p->next = pattern;	/* convenience; we do not modify it */
 	p->end = p->next + len;
 	p->error = 0;
 	p->ncsalloc = 0;
+	p->pflags = pflags;
 	for (i = 0; i < NPAREN; i++) {
 		p->pbegin[i] = 0;
 		p->pend[i] = 0;
 	}
-	g->csetsize = NC;
+#ifdef REGEX_GNU_EXTENSIONS
+	if ((cflags & REG_GNU) == 0) {
+		p->gnuext = false;
+		p->allowbranch = (cflags & REG_EXTENDED) != 0;
+	} else
+		p->gnuext = p->allowbranch = true;
+#else
+	p->gnuext = false;
+	p->allowbranch = (cflags & REG_EXTENDED) != 0;
+#endif
+	if (cflags & REG_EXTENDED) {
+		p->bre = false;
+		p->parse_expr = p_ere_exp;
+		p->pre_parse = NULL;
+		p->post_parse = NULL;
+	} else {
+		p->bre = true;
+		p->parse_expr = p_simp_re;
+		p->pre_parse = p_bre_pre_parse;
+		p->post_parse = p_bre_post_parse;
+	}
 	g->sets = NULL;
-	g->setbits = NULL;
 	g->ncsets = 0;
 	g->cflags = cflags;
 	g->iflags = 0;
 	g->nbol = 0;
 	g->neol = 0;
 	g->must = NULL;
+	g->moffset = -1;
+	g->charjump = NULL;
+	g->matchjump = NULL;
 	g->mlen = 0;
 	g->nsub = 0;
-	g->ncategories = 1;	/* category 0 is "everything else" */
-	g->categories = &g->catspace[-(CHAR_MIN)];
-	(void) memset((char *)g->catspace, 0, NC*sizeof(cat_t));
 	g->backrefs = 0;
 
 	/* do it */
 	EMIT(OEND, 0);
 	g->firststate = THERE();
-	if (cflags&REG_EXTENDED)
-		p_ere(p, OUT, 0);
-	else if (cflags&REG_NOSPEC)
+	if (cflags & REG_NOSPEC)
 		p_str(p);
 	else
-		p_bre(p, OUT, OUT, 0);
+		p_re(p, OUT, OUT);
 	EMIT(OEND, 0);
 	g->laststate = THERE();
 
 	/* tidy up loose ends and fill things in */
-	categorize(p, g);
 	stripsnug(p, g);
 	findmust(p, g);
+	/* only use Boyer-Moore algorithm if the pattern is bigger
+	 * than three characters
+	 */
+	if(g->mlen > 3) {
+		computejumps(p, g);
+		computematchjumps(p, g);
+		if(g->matchjump == NULL && g->charjump != NULL) {
+			free(g->charjump);
+			g->charjump = NULL;
+		}
+	}
 	g->nplus = pluscount(p, g);
 	g->magic = MAGIC2;
 	preg->re_nsub = g->nsub;
@@ -333,97 +414,72 @@
 }
 
 /*
- - p_ere - ERE parser top level, concatenation and alternation
- == static void p_ere(struct parse *p, int stop, size_t reclimit);
+ - regcomp - interface for parser and compilation
+ = extern int regcomp(regex_t *, const char *, int);
+ = #define	REG_BASIC	0000
+ = #define	REG_EXTENDED	0001
+ = #define	REG_ICASE	0002
+ = #define	REG_NOSUB	0004
+ = #define	REG_NEWLINE	0010
+ = #define	REG_NOSPEC	0020
+ = #define	REG_PEND	0040
+ = #define	REG_DUMP	0200
  */
-static void
-p_ere(
-    struct parse *p,
-    int stop,			/* character this ERE should end at */
-    size_t reclimit)
+int				/* 0 success, otherwise REG_something */
+regcomp(regex_t * __restrict preg,
+	const char * __restrict pattern,
+	int cflags)
 {
-	char c;
-	sopno prevback = 0;	/* pacify gcc */
-	sopno prevfwd = 0; 	/* pacify gcc */
-	sopno conc;
-	int first = 1;		/* is this the first alternative? */
 
-	_DIAGASSERT(p != NULL);
-
-	if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
-		p->error = REG_ESPACE;
-		return;
-	}
-
-	for (;;) {
-		/* do a bunch of concatenated expressions */
-		conc = HERE();
-		while (MORE() && (c = PEEK()) != '|' && c != stop)
-			p_ere_exp(p, reclimit);
-		REQUIRE(HERE() != conc, REG_EMPTY);	/* require nonempty */
-
-		if (!EAT('|'))
-			break;		/* NOTE BREAK OUT */
-
-		if (first) {
-			INSERT(OCH_, conc);	/* offset is wrong */
-			prevfwd = conc;
-			prevback = conc;
-			first = 0;
-		}
-		ASTERN(OOR1, prevback);
-		prevback = THERE();
-		AHEAD(prevfwd);			/* fix previous offset */
-		prevfwd = HERE();
-		EMIT(OOR2, 0);			/* offset is very wrong */
-	}
-
-	if (!first) {		/* tail-end fixups */
-		AHEAD(prevfwd);
-		ASTERN(O_CH, prevback);
-	}
-
-	assert(!MORE() || SEE(stop));
+	return (regcomp_internal(preg, pattern, cflags, 0));
 }
 
 /*
- - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op
- == static void p_ere_exp(struct parse *p, size_t reclimit);
+ - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op,
+ - return whether we should terminate or not
+ == static bool p_ere_exp(struct parse *p);
  */
-static void
-p_ere_exp(
-    struct parse *p,
-    size_t reclimit)
+static bool
+p_ere_exp(struct parse *p, struct branchc *bc)
 {
 	char c;
+	wint_t wc;
 	sopno pos;
 	int count;
 	int count2;
+#ifdef REGEX_GNU_EXTENSIONS
+	size_t i;
+	int handled;
+#endif
 	sopno subno;
 	int wascaret = 0;
 
 	_DIAGASSERT(p != NULL);
 
+	(void)bc;
 	assert(MORE());		/* caller should have ensured this */
 	c = GETNEXT();
 
+#ifdef REGEX_GNU_EXTENSIONS
+	handled = 0;
+#endif
 	pos = HERE();
 	switch (c) {
 	case '(':
-		REQUIRE(MORE(), REG_EPAREN);
+		(void)REQUIRE(MORE(), REG_EPAREN);
 		p->g->nsub++;
-		subno = p->g->nsub;
+		subno = (sopno)p->g->nsub;
 		if (subno < NPAREN)
 			p->pbegin[subno] = HERE();
 		EMIT(OLPAREN, subno);
 		if (!SEE(')'))
-			p_ere(p, ')', reclimit);
+			p_re(p, ')', IGN);
 		if (subno < NPAREN) {
 			p->pend[subno] = HERE();
 			assert(p->pend[subno] != 0);
 		}
 		EMIT(ORPAREN, subno);
-		MUSTEAT(')', REG_EPAREN);
+		(void)MUSTEAT(')', REG_EPAREN);
 		break;
 #ifndef POSIX_MISTAKE
 	case ')':		/* happens only if no current unmatched ( */
@@ -454,6 +510,7 @@
 	case '*':
 	case '+':
 	case '?':
+	case '{':
 		SETERROR(REG_BADRPT);
 		break;
 	case '.':
@@ -466,30 +523,118 @@
 		p_bracket(p);
 		break;
 	case '\\':
-		REQUIRE(MORE(), REG_EESCAPE);
-		c = GETNEXT();
-		ordinary(p, c);
+		(void)REQUIRE(MORE(), REG_EESCAPE);
+		wc = WGETNEXT();
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext) {
+			handled = 1;
+			switch (wc) {
+			case '`':
+				EMIT(OBOS, 0);
+				break;
+			case '\'':
+				EMIT(OEOS, 0);
+				break;
+			case 'B':
+				EMIT(ONWBND, 0);
+				break;
+			case 'b':
+				EMIT(OWBND, 0);
+				break;
+			case 'W':
+			case 'w':
+			case 'S':
+			case 's':
+				p_b_pseudoclass(p, wc);
+				break;
+			case 'a':
+				ordinary(p, '\a');
+				break;
+			case 'e':
+				ordinary(p, '\e');
+				break;
+			case 'f':
+				ordinary(p, '\f');
+				break;
+			case 'n':
+				ordinary(p, '\n');
+				break;
+			case 'r':
+				ordinary(p, '\r');
+				break;
+			case 't':
+				ordinary(p, '\t');
+				break;
+			case 'v':
+				ordinary(p, '\v');
+				break;
+			case '1':
+			case '2':
+			case '3':
+			case '4':
+			case '5':
+			case '6':
+			case '7':
+			case '8':
+			case '9':
+				i = wc - '0';
+				assert(i < NPAREN);
+				if (p->pend[i] != 0) {
+					assert(i <= p->g->nsub);
+					EMIT(OBACK_, i);
+					assert(p->pbegin[i] != 0);
+					assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+					assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+					(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+					EMIT(O_BACK, i);
+				} else
+					SETERROR(REG_ESUBREG);
+				p->g->backrefs = 1;
+				break;
+			default:
+				handled = 0;
+			}
+			/* Don't proceed to the POSIX bits if we've already handled it */
+			if (handled)
+				break;
+		}
+#endif
+		switch (wc) {
+		case '<':
+			EMIT(OBOW, 0);
+			break;
+		case '>':
+			EMIT(OEOW, 0);
+			break;
+		default:
+			if (may_escape(p, wc))
+				ordinary(p, wc);
+			else
+				SETERROR(REG_EESCAPE);
+			break;
+		}
 		break;
-	case '{':		/* okay as ordinary except if digit follows */
-		REQUIRE(!MORE() || !isdigit((unsigned char)PEEK()), REG_BADRPT);
-		/* FALLTHROUGH */
 	default:
 		if (p->error != 0)
-			return;
-		ordinary(p, c);
+			return (false);
+		p->next--;
+		wc = WGETNEXT();
+		ordinary(p, wc);
 		break;
 	}
 
 	if (!MORE())
-		return;
+		return (false);
 	c = PEEK();
 	/* we call { a repetition if followed by a digit */
-	if (!( c == '*' || c == '+' || c == '?' ||
-	    (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ))
-		return;		/* no repetition, we're done */
+	if (!( c == '*' || c == '+' || c == '?' || c == '{'))
+		return (false);		/* no repetition, we're done */
+	else if (c == '{')
+		(void)REQUIRE(MORE2() && \
+		    (isdigit((uch)PEEK2()) || PEEK2() == ','), REG_BADRPT);
 	NEXT();
 
-	REQUIRE(!wascaret, REG_BADRPT);
+	(void)REQUIRE(!wascaret, REG_BADRPT);
 	switch (c) {
 	case '*':	/* implemented as +? */
 		/* this case does not require the (y|) trick, noKLUDGE */
@@ -514,30 +659,31 @@
 	case '{':
 		count = p_count(p);
 		if (EAT(',')) {
-			if (isdigit((unsigned char)PEEK())) {
+			if (isdigit((uch)PEEK())) {
 				count2 = p_count(p);
-				REQUIRE(count <= count2, REG_BADBR);
+				(void)REQUIRE(count <= count2, REG_BADBR);
 			} else		/* single number with comma */
 				count2 = INFINITY;
 		} else		/* just a single number */
 			count2 = count;
-		repeat(p, pos, count, count2, 0);
+		repeat(p, pos, count, count2);
 		if (!EAT('}')) {	/* error heuristics */
 			while (MORE() && PEEK() != '}')
 				NEXT();
-			REQUIRE(MORE(), REG_EBRACE);
+			(void)REQUIRE(MORE(), REG_EBRACE);
 			SETERROR(REG_BADBR);
 		}
 		break;
 	}
 
 	if (!MORE())
-		return;
+		return (false);
 	c = PEEK();
 	if (!( c == '*' || c == '+' || c == '?' ||
-	    (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ) )
-		return;
+				(c == '{' && MORE2() && isdigit((uch)PEEK2())) ) )
+		return (false);
 	SETERROR(REG_BADRPT);
+	return (false);
 }
 
 /*
@@ -545,159 +691,350 @@
  == static void p_str(struct parse *p);
  */
 static void
-p_str(
-    struct parse *p)
+p_str(struct parse *p)
 {
-
-	_DIAGASSERT(p != NULL);
-
-	REQUIRE(MORE(), REG_EMPTY);
+	(void)REQUIRE(MORE(), REG_EMPTY);
 	while (MORE())
-		ordinary(p, GETNEXT());
+		ordinary(p, WGETNEXT());
 }
 
 /*
- - p_bre - BRE parser top level, anchoring and concatenation
- == static void p_bre(struct parse *p, int end1, \
- ==	int end2, size_t reclimit);
- * Giving end1 as OUT essentially eliminates the end1/end2 check.
- *
- * This implementation is a bit of a kludge, in that a trailing $ is first
- * taken as an ordinary character and then revised to be an anchor.  The
- * only undesirable side effect is that '$' gets included as a character
- * category in such cases.  This is fairly harmless; not worth fixing.
- * The amount of lookahead needed to avoid this kludge is excessive.
+ * Eat consecutive branch delimiters for the kind of expression that we are
+ * parsing, return the number of delimiters that we ate.
+ */
+static int
+p_branch_eat_delim(struct parse *p, struct branchc *bc)
+{
+	int nskip;
+
+	(void)bc;
+	nskip = 0;
+	while (EATSPEC('|'))
+		++nskip;
+	return (nskip);
+}
+
+/*
+ * Insert necessary branch book-keeping operations. This emits a
+ * bogus 'next' offset, since we still have more to parse
  */
 static void
-p_bre(
-    struct parse *p,
-    int end1,		/* first terminating character */
-    int end2,		/* second terminating character */
-    size_t reclimit)
+p_branch_ins_offset(struct parse *p, struct branchc *bc)
 {
-	sopno start;
-	int first = 1;			/* first subexpression? */
-	int wasdollar = 0;
 
-	_DIAGASSERT(p != NULL);
-
-	if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
-		p->error = REG_ESPACE;
-		return;
+	if (bc->nbranch == 0) {
+		INSERT(OCH_, bc->start);	/* offset is wrong */
+		bc->fwd = bc->start;
+		bc->back = bc->start;
 	}
 
-	start = HERE();
+	ASTERN(OOR1, bc->back);
+	bc->back = THERE();
+	AHEAD(bc->fwd);			/* fix previous offset */
+	bc->fwd = HERE();
+	EMIT(OOR2, 0);			/* offset is very wrong */
+	++bc->nbranch;
+}
 
+/*
+ * Fix the offset of the tail branch, if we actually had any branches.
+ * This is to correct the bogus placeholder offset that we use.
+ */
+static void
+p_branch_fix_tail(struct parse *p, struct branchc *bc)
+{
+
+	/* Fix bogus offset at the tail if we actually have branches */
+	if (bc->nbranch > 0) {
+		AHEAD(bc->fwd);
+		ASTERN(O_CH, bc->back);
+	}
+}
+
+/*
+ * Signal to the parser that an empty branch has been encountered; this will,
+ * in the future, be used to allow for more permissive behavior with empty
+ * branches. The return value should indicate whether parsing may continue
+ * or not.
+ */
+static bool
+p_branch_empty(struct parse *p, struct branchc *bc)
+{
+
+	(void)bc;
+	SETERROR(REG_EMPTY);
+	return (false);
+}
+
+/*
+ * Take care of any branching requirements. This includes inserting the
+ * appropriate branching instructions as well as eating all of the branch
+ * delimiters until we either run out of pattern or need to parse more pattern.
+ */
+static bool
+p_branch_do(struct parse *p, struct branchc *bc)
+{
+	int ate = 0;
+
+	ate = p_branch_eat_delim(p, bc);
+	if (ate == 0)
+		return (false);
+	else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc))
+		/*
+		 * Halt parsing only if we have an empty branch and p_branch_empty
+		 * indicates that we must not continue. In the future, this will not
+		 * necessarily be an error.
+		 */
+		return (false);
+	p_branch_ins_offset(p, bc);
+
+	return (true);
+}
+
+static void
+p_bre_pre_parse(struct parse *p, struct branchc *bc)
+{
+
+	(void)bc;
+	/*
+	 * Does not move cleanly into expression parser because of
+	 * ordinary interpration of * at the beginning position of
+	 * an expression.
+	 */
 	if (EAT('^')) {
 		EMIT(OBOL, 0);
 		p->g->iflags |= USEBOL;
 		p->g->nbol++;
 	}
-	while (MORE() && !SEETWO(end1, end2)) {
-		wasdollar = p_simp_re(p, first, reclimit);
-		first = 0;
-	}
-	if (wasdollar) {	/* oops, that was a trailing anchor */
+}
+
+static void
+p_bre_post_parse(struct parse *p, struct branchc *bc)
+{
+
+	/* Expression is terminating due to EOL token */
+	if (bc->terminate) {
 		DROP(1);
 		EMIT(OEOL, 0);
 		p->g->iflags |= USEEOL;
 		p->g->neol++;
 	}
+}
 
-	REQUIRE(HERE() != start, REG_EMPTY);	/* require nonempty */
+/*
+ - p_re - Top level parser, concatenation and BRE anchoring
+ == static void p_re(struct parse *p, int end1, int end2);
+ * Giving end1 as OUT essentially eliminates the end1/end2 check.
+ *
+ * This implementation is a bit of a kludge, in that a trailing $ is first
+ * taken as an ordinary character and then revised to be an anchor.
+ * The amount of lookahead needed to avoid this kludge is excessive.
+ */
+static void
+p_re(struct parse *p,
+	int end1,	/* first terminating character */
+	int end2)	/* second terminating character; ignored for EREs */
+{
+	struct branchc bc;
+
+	bc.nbranch = 0;
+	if (end1 == OUT && end2 == OUT)
+		bc.outer = true;
+	else
+		bc.outer = false;
+#define	SEEEND()	(!p->bre ? SEE(end1) : SEETWO(end1, end2))
+	for (;;) {
+		bc.start = HERE();
+		bc.nchain = 0;
+		bc.terminate = false;
+		if (p->pre_parse != NULL)
+			p->pre_parse(p, &bc);
+		while (MORE() && (!p->allowbranch || !SEESPEC('|')) && !SEEEND()) {
+			bc.terminate = p->parse_expr(p, &bc);
+			++bc.nchain;
+		}
+		if (p->post_parse != NULL)
+			p->post_parse(p, &bc);
+		(void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY);
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext && HERE() == bc.start && !p_branch_empty(p, &bc))
+			break;
+#endif
+		if (!p->allowbranch)
+			break;
+		/*
+		 * p_branch_do's return value indicates whether we should
+		 * continue parsing or not. This is both for correctness and
+		 * a slight optimization, because it will check if we've
+		 * encountered an empty branch or the end of the string
+		 * immediately following a branch delimiter.
+		 */
+		if (!p_branch_do(p, &bc))
+			break;
+	}
+#undef SEE_END
+	if (p->allowbranch)
+		p_branch_fix_tail(p, &bc);
+	assert(!MORE() || SEE(end1));
 }
 
 /*
  - p_simp_re - parse a simple RE, an atom possibly followed by a repetition
- == static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+ == static bool p_simp_re(struct parse *p, struct branchc *bc);
  */
-static int			/* was the simple RE an unbackslashed $? */
-p_simp_re(
-    struct parse *p,
-    int starordinary,		/* is a leading * an ordinary character? */
-    size_t reclimit)
+static bool			/* was the simple RE an unbackslashed $? */
+p_simp_re(struct parse *p, struct branchc *bc)
 {
 	int c;
+	int cc;			/* convenient/control character */
 	int count;
 	int count2;
-	sopno pos, i;
+	sopno pos;
+	bool handled;
+	size_t i;
+	wint_t wc;
 	sopno subno;
 #	define	BACKSL	(1<<CHAR_BIT)
 
-	_DIAGASSERT(p != NULL);
-
-	pos = HERE();		/* repetion op, if any, covers from here */
+	pos = HERE();		/* repetition op, if any, covers from here */
+	handled = false;
 
 	assert(MORE());		/* caller should have ensured this */
 	c = GETNEXT();
 	if (c == '\\') {
-		REQUIRE(MORE(), REG_EESCAPE);
-		c = BACKSL | (unsigned char)GETNEXT();
-	}
-	switch (c) {
-	case '.':
-		if (p->g->cflags&REG_NEWLINE)
-			nonnewline(p);
-		else
-			EMIT(OANY, 0);
-		break;
-	case '[':
-		p_bracket(p);
-		break;
-	case BACKSL|'{':
-		SETERROR(REG_BADRPT);
-		break;
-	case BACKSL|'(':
-		p->g->nsub++;
-		subno = p->g->nsub;
-		if (subno < NPAREN)
-			p->pbegin[subno] = HERE();
-		EMIT(OLPAREN, subno);
-		/* the MORE here is an error heuristic */
-		if (MORE() && !SEETWO('\\', ')'))
-			p_bre(p, '\\', ')', reclimit);
-		if (subno < NPAREN) {
-			p->pend[subno] = HERE();
-			assert(p->pend[subno] != 0);
+		(void)REQUIRE(MORE(), REG_EESCAPE);
+		cc = GETNEXT();
+		c = BACKSL | cc;
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext) {
+			handled = true;
+			switch (c) {
+			case BACKSL|'`':
+				EMIT(OBOS, 0);
+				break;
+			case BACKSL|'\'':
+				EMIT(OEOS, 0);
+				break;
+			case BACKSL|'B':
+				EMIT(ONWBND, 0);
+				break;
+			case BACKSL|'b':
+				EMIT(OWBND, 0);
+				break;
+			case BACKSL|'W':
+			case BACKSL|'w':
+			case BACKSL|'S':
+			case BACKSL|'s':
+				p_b_pseudoclass(p, cc);
+				break;
+			case BACKSL|'a':
+				ordinary(p, '\a');
+				break;
+			case BACKSL|'e':
+				ordinary(p, '\e');
+				break;
+			case BACKSL|'f':
+				ordinary(p, '\f');
+				break;
+			case BACKSL|'n':
+				ordinary(p, '\n');
+				break;
+			case BACKSL|'r':
+				ordinary(p, '\r');
+				break;
+			case BACKSL|'t':
+				ordinary(p, '\t');
+				break;
+			case BACKSL|'v':
+				ordinary(p, '\v');
+				break;
+			default:
+				handled = false;
+			}
 		}
-		EMIT(ORPAREN, subno);
-		REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
-		break;
-	case BACKSL|')':	/* should not get here -- must be user */
-	case BACKSL|'}':
-		SETERROR(REG_EPAREN);
-		break;
-	case BACKSL|'1':
-	case BACKSL|'2':
-	case BACKSL|'3':
-	case BACKSL|'4':
-	case BACKSL|'5':
-	case BACKSL|'6':
-	case BACKSL|'7':
-	case BACKSL|'8':
-	case BACKSL|'9':
-		i = (c&~BACKSL) - '0';
-		assert(i < NPAREN);
-		if (p->pend[i] != 0) {
-			assert(i <= p->g->nsub);
-			EMIT(OBACK_, i);
-			assert(p->pbegin[i] != 0);
-			assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
-			assert(OP(p->strip[p->pend[i]]) == ORPAREN);
-			(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
-			EMIT(O_BACK, i);
-		} else
-			SETERROR(REG_ESUBREG);
-		p->g->backrefs = 1;
-		break;
-	case '*':
-		REQUIRE(starordinary, REG_BADRPT);
-		/* FALLTHROUGH */
-	default:
-		if (p->error != 0)
-			return(0);
-		ordinary(p, c &~ BACKSL);
-		break;
+#endif
+	}
+	if (!handled) {
+		switch (c) {
+		case '.':
+			if (p->g->cflags&REG_NEWLINE)
+				nonnewline(p);
+			else
+				EMIT(OANY, 0);
+			break;
+		case '[':
+			p_bracket(p);
+			break;
+		case BACKSL|'<':
+			EMIT(OBOW, 0);
+			break;
+		case BACKSL|'>':
+			EMIT(OEOW, 0);
+			break;
+		case BACKSL|'{':
+			SETERROR(REG_BADRPT);
+			break;
+		case BACKSL|'(':
+			p->g->nsub++;
+			subno = (sopno)p->g->nsub;
+			if (subno < NPAREN)
+				p->pbegin[subno] = HERE();
+			EMIT(OLPAREN, subno);
+			/* the MORE here is an error heuristic */
+			if (MORE() && !SEETWO('\\', ')'))
+				p_re(p, '\\', ')');
+			if (subno < NPAREN) {
+				p->pend[subno] = HERE();
+				assert(p->pend[subno] != 0);
+			}
+			EMIT(ORPAREN, subno);
+			(void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
+			break;
+		case BACKSL|')':	/* should not get here -- must be user */
+			SETERROR(REG_EPAREN);
+			break;
+		case BACKSL|'1':
+		case BACKSL|'2':
+		case BACKSL|'3':
+		case BACKSL|'4':
+		case BACKSL|'5':
+		case BACKSL|'6':
+		case BACKSL|'7':
+		case BACKSL|'8':
+		case BACKSL|'9':
+			i = (c&~BACKSL) - '0';
+			assert(i < NPAREN);
+			if (p->pend[i] != 0) {
+				assert(i <= p->g->nsub);
+				EMIT(OBACK_, i);
+				assert(p->pbegin[i] != 0);
+				assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+				assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+				(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+				EMIT(O_BACK, i);
+			} else
+				SETERROR(REG_ESUBREG);
+			p->g->backrefs = 1;
+			break;
+		case '*':
+			/*
+			 * Ordinary if used as the first character beyond BOL anchor of
+			 * a (sub-)expression, counts as a bad repetition operator if it
+			 * appears otherwise.
+			 */
+			(void)REQUIRE(bc->nchain == 0, REG_BADRPT);
+			/* FALLTHROUGH */
+		default:
+			if (p->error != 0)
+				return (false);	/* Definitely not $... */
+			p->next--;
+			wc = WGETNEXT();
+			if ((c & BACKSL) == 0 || may_escape(p, wc))
+				ordinary(p, wc);
+			else
+				SETERROR(REG_EESCAPE);
+			break;
+		}
 	}
 
 	if (EAT('*')) {		/* implemented as +? */
@@ -706,27 +1043,35 @@
 		ASTERN(O_PLUS, pos);
 		INSERT(OQUEST_, pos);
 		ASTERN(O_QUEST, pos);
+#ifdef REGEX_GNU_EXTENSIONS
+	} else if (p->gnuext && EATTWO('\\', '?')) {
+		INSERT(OQUEST_, pos);
+		ASTERN(O_QUEST, pos);
+	} else if (p->gnuext && EATTWO('\\', '+')) {
+		INSERT(OPLUS_, pos);
+		ASTERN(O_PLUS, pos);
+#endif
 	} else if (EATTWO('\\', '{')) {
 		count = p_count(p);
 		if (EAT(',')) {
-			if (MORE() && isdigit((unsigned char)PEEK())) {
+			if (MORE() && isdigit((uch)PEEK())) {
 				count2 = p_count(p);
-				REQUIRE(count <= count2, REG_BADBR);
+				(void)REQUIRE(count <= count2, REG_BADBR);
 			} else		/* single number with comma */
 				count2 = INFINITY;
 		} else		/* just a single number */
 			count2 = count;
-		repeat(p, pos, count, count2, 0);
+		repeat(p, pos, count, count2);
 		if (!EATTWO('\\', '}')) {	/* error heuristics */
 			while (MORE() && !SEETWO('\\', '}'))
 				NEXT();
-			REQUIRE(MORE(), REG_EBRACE);
+			(void)REQUIRE(MORE(), REG_EBRACE);
 			SETERROR(REG_BADBR);
 		}
-	} else if (c == (unsigned char)'$')	/* $ (but not \$) ends it */
-		return(1);
+	} else if (c == '$')     /* $ (but not \$) ends it */
+		return (true);
 
-	return(0);
+	return (false);
 }
 
 /*
@@ -734,105 +1079,95 @@
  == static int p_count(struct parse *p);
  */
 static int			/* the value */
-p_count(
-    struct parse *p)
+p_count(struct parse *p)
 {
 	int count = 0;
 	int ndigits = 0;
 
-	_DIAGASSERT(p != NULL);
-
-	while (MORE() && isdigit((unsigned char)PEEK()) && count <= DUPMAX) {
+	while (MORE() && isdigit((uch)PEEK()) && count <= DUPMAX) {
 		count = count*10 + (GETNEXT() - '0');
 		ndigits++;
 	}
 
-	REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
+	(void)REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
 	return(count);
 }
 
 /*
  - p_bracket - parse a bracketed character list
  == static void p_bracket(struct parse *p);
- *
- * Note a significant property of this code:  if the allocset() did SETERROR,
- * no set operations are done.
  */
 static void
-p_bracket(
-    struct parse *p)
+p_bracket(struct parse *p)
 {
 	cset *cs;
-	int invert = 0;
-	_DIAGASSERT(p != NULL);
-
-	cs = allocset(p);
-	if (cs == NULL)
-		return;
+	wint_t ch;
 
 	/* Dept of Truly Sickening Special-Case Kludges */
-	if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]",
-					    (size_t)6) == 0) {
+	if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) {
 		EMIT(OBOW, 0);
 		NEXTn(6);
 		return;
 	}
-	if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]",
-					    (size_t)6) == 0) {
+	if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) {
 		EMIT(OEOW, 0);
 		NEXTn(6);
 		return;
 	}
 
+	if ((cs = allocset(p)) == NULL)
+		return;
+
+	if (p->g->cflags&REG_ICASE)
+		cs->icase = 1;
 	if (EAT('^'))
-		invert++;	/* make note to invert set at end */
+		cs->invert = 1;
 	if (EAT(']'))
-		CHadd(cs, ']');
+		CHadd(p, cs, ']');
 	else if (EAT('-'))
-		CHadd(cs, '-');
+		CHadd(p, cs, '-');
 	while (MORE() && PEEK() != ']' && !SEETWO('-', ']'))
 		p_b_term(p, cs);
 	if (EAT('-'))
-		CHadd(cs, '-');
-	MUSTEAT(']', REG_EBRACK);
+		CHadd(p, cs, '-');
+	(void)MUSTEAT(']', REG_EBRACK);
 
 	if (p->error != 0)	/* don't mess things up further */
 		return;
 
-	if (p->g->cflags&REG_ICASE) {
-		ssize_t i;
-		int ci;
+	if (cs->invert && p->g->cflags&REG_NEWLINE)
+		cs->bmp['\n' >> 3] |= 1 << ('\n' & 7);
 
-		for (i = p->g->csetsize - 1; i >= 0; i--)
-			if (CHIN(cs, i) && isalpha(i)) {
-				ci = othercase((int)i);
-				if (ci != i)
-					CHadd(cs, ci);
-			}
-		if (cs->multis != NULL)
-			mccase(p, cs);
-	}
-	if (invert) {
-		ssize_t i;
-
-		for (i = p->g->csetsize - 1; i >= 0; i--)
-			if (CHIN(cs, i))
-				CHsub(cs, (int)i);
-			else
-				CHadd(cs, (int)i);
-		if (p->g->cflags&REG_NEWLINE)
-			CHsub(cs, '\n');
-		if (cs->multis != NULL)
-			mcinvert(p, cs);
-	}
-
-	assert(cs->multis == NULL);		/* xxx */
-
-	if (nch(p, cs) == 1) {		/* optimize singleton sets */
-		ordinary(p, firstch(p, cs));
+	if ((ch = singleton(cs)) != OUT) {	/* optimize singleton sets */
+		ordinary(p, ch);
 		freeset(p, cs);
 	} else
-		EMIT(OANYOF, freezeset(p, cs));
+		EMIT(OANYOF, (size_t)(cs - p->g->sets));
+}
+
+static int
+p_range_cmp(wchar_t c1, wchar_t c2)
+{
+#ifdef REGEX_LIBC_COLLATE
+	return __wcollate_range_cmp(c1, c2);
+#elif defined(NLS)
+	/* Copied from libc/collate __wcollate_range_cmp */
+	wchar_t s1[2], s2[2];
+
+	s1[0] = c1;
+	s1[1] = L'\0';
+	s2[0] = c2;
+	s2[1] = L'\0';
+	return wcscoll(s1, s2);
+#else
+	char s1[2], s2[2];
+
+	s1[0] = (char)c1;
+	s1[1] = '\0';
+	s2[0] = (char)c2;
+	s2[1] = '\0';
+	return strcoll(s1, s2);
+#endif
 }
 
 /*
@@ -840,13 +1175,15 @@
  == static void p_b_term(struct parse *p, cset *cs);
  */
 static void
-p_b_term(
-    struct parse *p,
-    cset *cs)
+p_b_term(struct parse *p, cset *cs)
 {
 	char c;
-	char start, finish;
-	int i;
+	wint_t start, finish;
+	wint_t i;
+#ifdef REGEX_LIBC_COLLATE
+	struct xlocale_collate *table =
+		(struct xlocale_collate*)__get_locale()->components[XLC_COLLATE];
+#endif
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
@@ -856,11 +1193,9 @@
 	case '[':
 		c = (MORE2()) ? PEEK2() : '\0';
 		break;
-
 	case '-':
 		SETERROR(REG_ERANGE);
 		return;			/* NOTE RETURN */
-
 	default:
 		c = '\0';
 		break;
@@ -869,24 +1204,23 @@
 	switch (c) {
 	case ':':		/* character class */
 		NEXT2();
-		REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(MORE(), REG_EBRACK);
 		c = PEEK();
-		REQUIRE(c != '-' && c != ']', REG_ECTYPE);
+		(void)REQUIRE(c != '-' && c != ']', REG_ECTYPE);
 		p_b_cclass(p, cs);
-		REQUIRE(MORE(), REG_EBRACK);
-		REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
+		(void)REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
 		break;
 	case '=':		/* equivalence class */
 		NEXT2();
-		REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(MORE(), REG_EBRACK);
 		c = PEEK();
-		REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
+		(void)REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
 		p_b_eclass(p, cs);
-		REQUIRE(MORE(), REG_EBRACK);
-		REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
+		(void)REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
 		break;
 	default:		/* symbol, ordinary character, or range */
-/* xxx revision needed for multichar stuff */
 		start = p_b_symbol(p);
 		if (SEE('-') && MORE2() && PEEK2() != ']') {
 			/* range */
@@ -897,51 +1231,103 @@
 				finish = p_b_symbol(p);
 		} else
 			finish = start;
-/* xxx what about signed chars here... */
-		REQUIRE(start <= finish, REG_ERANGE);
-		for (i = start; i <= finish; i++)
-			CHadd(cs, i);
+		if (start == finish)
+			CHadd(p, cs, start);
+		else {
+#ifdef REGEX_LIBC_COLLATE
+			if (table->__collate_load_error || MB_CUR_MAX > 1) {
+#else
+			if (MB_CUR_MAX > 1) {
+#endif
+				(void)REQUIRE(start <= finish, REG_ERANGE);
+				CHaddrange(p, cs, start, finish);
+			} else {
+				(void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE);
+				for (i = 0; i <= UCHAR_MAX; i++) {
+					if (p_range_cmp(start, i) <= 0 &&
+					    p_range_cmp(i, finish) <= 0 )
+						CHadd(p, cs, i);
+				}
+			}
+		}
 		break;
 	}
 }
 
+#ifdef REGEX_GNU_EXTENSIONS
+/*
+ - p_b_pseudoclass - parse a pseudo-class (\w, \W, \s, \S)
+ == static int p_b_pseudoclass(struct parse *p, char c)
+ */
+static int
+p_b_pseudoclass(struct parse *p, char c) {
+	cset *cs;
+
+	if ((cs = allocset(p)) == NULL)
+		return(0);
+
+	if (p->g->cflags&REG_ICASE)
+		cs->icase = 1;
+
+	switch (c) {
+	case 'W':
+		cs->invert = 1;
+		/* FALLTHROUGH */
+	case 'w':
+		p_b_cclass_named(p, cs, "alnum");
+		break;
+	case 'S':
+		cs->invert = 1;
+		/* FALLTHROUGH */
+	case 's':
+		p_b_cclass_named(p, cs, "space");
+		break;
+	default:
+		return(0);
+	}
+
+	EMIT(OANYOF, (size_t)(cs - p->g->sets));
+	return(1);
+}
+#endif
+
 /*
  - p_b_cclass - parse a character-class name and deal with it
  == static void p_b_cclass(struct parse *p, cset *cs);
  */
 static void
-p_b_cclass(
-    struct parse *p,
-    cset *cs)
+p_b_cclass(struct parse *p, cset *cs)
 {
-	const char *sp;
-	const struct cclass *cp;
+	const char *sp = p->next;
 	size_t len;
-	const char *u;
-	char c;
+	char clname[16];
 
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	sp = p->next;
-
-	while (MORE() && isalpha((unsigned char)PEEK()))
+	while (MORE() && isalpha((uch)PEEK()))
 		NEXT();
 	len = p->next - sp;
-	for (cp = cclasses; cp->name != NULL; cp++)
-		if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0')
-			break;
-	if (cp->name == NULL) {
-		/* oops, didn't find it */
+	if (len >= sizeof(clname) - 1) {
 		SETERROR(REG_ECTYPE);
 		return;
 	}
+	memcpy(clname, sp, len);
+	clname[len] = '\0';
 
-	u = cp->chars;
-	while ((c = *u++) != '\0')
-		CHadd(cs, c);
-	for (u = cp->multis; *u != '\0'; u += strlen(u) + 1)
-		MCadd(p, cs, u);
+	p_b_cclass_named(p, cs, clname);
+}
+
+/*
+ - p_b_cclass_named - deal with a named character class
+ == static void p_b_cclass_named(struct parse *p, cset *cs, const char []);
+ */
+static void
+p_b_cclass_named(struct parse *p, cset *cs, const char clname[]) {
+	wctype_t wct;
+
+	if ((wct = wctype(clname)) == 0) {
+		SETERROR(REG_ECTYPE);
+		return;
+	}
+	CHaddtype(p, cs, wct);
 }
 
 /*
@@ -951,58 +1337,52 @@
  * This implementation is incomplete. xxx
  */
 static void
-p_b_eclass(
-    struct parse *p,
-    cset *cs)
+p_b_eclass(struct parse *p, cset *cs)
 {
-	char c;
+	wint_t c;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
 
 	c = p_b_coll_elem(p, '=');
-	CHadd(cs, c);
+	CHadd(p, cs, c);
 }
 
 /*
  - p_b_symbol - parse a character or [..]ed multicharacter collating symbol
- == static char p_b_symbol(struct parse *p);
+ == static wint_t p_b_symbol(struct parse *p);
  */
-static char			/* value of symbol */
-p_b_symbol(
-    struct parse *p)
+static wint_t			/* value of symbol */
+p_b_symbol(struct parse *p)
 {
-	char value;
+	wint_t value;
 
 	_DIAGASSERT(p != NULL);
 
-	REQUIRE(MORE(), REG_EBRACK);
+	(void)REQUIRE(MORE(), REG_EBRACK);
 	if (!EATTWO('[', '.'))
-		return(GETNEXT());
+		return(WGETNEXT());
 
 	/* collating symbol */
 	value = p_b_coll_elem(p, '.');
-	REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
+	(void)REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
 	return(value);
 }
 
 /*
  - p_b_coll_elem - parse a collating-element name and look it up
- == static char p_b_coll_elem(struct parse *p, int endc);
+ == static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
  */
-static char			/* value of collating element */
-p_b_coll_elem(
-    struct parse *p,
-    int endc)			/* name ended by endc,']' */
+static wint_t			/* value of collating element */
+p_b_coll_elem(struct parse *p,
+	wint_t endc)		/* name ended by endc,']' */
 {
-	const char *sp;
-	const struct cname *cp;
+	const char *sp = p->next;
+	struct cname *cp;
 	size_t len;
 
 	_DIAGASSERT(p != NULL);
 
-	sp = p->next;
-
 	while (MORE() && !SEETWO(endc, ']'))
 		NEXT();
 	if (!MORE()) {
@@ -1013,85 +1393,152 @@
 	for (cp = cnames; cp->name != NULL; cp++)
 		if (strncmp(cp->name, sp, len) == 0 && strlen(cp->name) == len)
 			return(cp->code);	/* known name */
-	if (len == 1)
-		return(*sp);	/* single character */
-	SETERROR(REG_ECOLLATE);			/* neither */
+#ifdef NLS
+	mbstate_t mbs;
+	wchar_t wc;
+	size_t clen;
+
+	memset(&mbs, 0, sizeof(mbs));
+	if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len)
+		return (wc);			/* single character */
+	else if (clen == (size_t)-1 || clen == (size_t)-2)
+		SETERROR(REG_ILLSEQ);
+	else
+		SETERROR(REG_ECOLLATE);		/* neither */
 	return(0);
+#else
+	if (len == 1)
+		return *sp;    /* single character */
+	SETERROR(REG_ECOLLATE);                 /* neither */
+	return 0;
+#endif
+}
+
+/*
+ - may_escape - determine whether 'ch' is escape-able in the current context
+ == static int may_escape(struct parse *p, const wint_t ch)
+ */
+static bool
+may_escape(struct parse *p, const wint_t ch)
+{
+
+	if ((p->pflags & PFLAG_LEGACY_ESC) != 0)
+		return (true);
+	if (isalpha(ch) || ch == '\'' || ch == '`')
+		return (false);
+	return (true);
+#ifdef NOTYET
+	/*
+	 * Build a whitelist of characters that may be escaped to produce an
+	 * ordinary in the current context. This assumes that these have not
+	 * been otherwise interpreted as a special character. Escaping an
+	 * ordinary character yields undefined results according to
+	 * IEEE 1003.1-2008. Some extensions (notably, some GNU extensions) take
+	 * advantage of this and use escaped ordinary characters to provide
+	 * special meaning, e.g. \b, \B, \w, \W, \s, \S.
+	 */
+	switch(ch) {
+	case '|':
+	case '+':
+	case '?':
+		/* The above characters may not be escaped in BREs */
+		if (!(p->g->cflags&REG_EXTENDED))
+			return (false);
+		/* Fallthrough */
+	case '(':
+	case ')':
+	case '{':
+	case '}':
+	case '.':
+	case '[':
+	case ']':
+	case '\\':
+	case '*':
+	case '^':
+	case '$':
+		return (true);
+	default:
+		return (false);
+	}
+#endif
 }
 
 /*
  - othercase - return the case counterpart of an alphabetic
- == static int othercase(int ch);
+ == static wint_t othercase(wint_t ch);
  */
-static int			/* if no counterpart, return ch */
-othercase(
-    int ch)
+static wint_t			/* if no counterpart, return ch */
+othercase(wint_t ch)
 {
-	assert(isalpha(ch));
-	if (isupper(ch))
-		return(tolower(ch));
-	else if (islower(ch))
-		return(toupper(ch));
+	assert(iswalpha(ch));
+	if (iswupper(ch))
+		return(towlower(ch));
+	else if (iswlower(ch))
+		return(towupper(ch));
 	else			/* peculiar, but could happen */
 		return(ch);
 }
 
 /*
  - bothcases - emit a dualcase version of a two-case character
- == static void bothcases(struct parse *p, int ch);
+ == static void bothcases(struct parse *p, wint_t ch);
  *
  * Boy, is this implementation ever a kludge...
  */
 static void
-bothcases(
-    struct parse *p,
-    int ch)
+bothcases(struct parse *p, wint_t ch)
 {
-	const char *oldnext;
-	const char *oldend;
-	char bracket[3];
+	const char *oldnext = p->next;
+	const char *oldend = p->end;
+	char bracket[3 + MB_LEN_MAX];
+	size_t n;
 
 	_DIAGASSERT(p != NULL);
 
-	oldnext = p->next;
-	oldend = p->end;
-
 	assert(othercase(ch) != ch);	/* p_bracket() would recurse */
 	p->next = bracket;
-	p->end = bracket+2;
-	bracket[0] = ch;
-	bracket[1] = ']';
-	bracket[2] = '\0';
+#ifdef NLS
+	mbstate_t mbs;
+	memset(&mbs, 0, sizeof(mbs));
+	n = wcrtomb(bracket, ch, &mbs);
+	assert(n != (size_t)-1);
+#else
+	n = 0;
+	bracket[n++] = ch;
+#endif
+	bracket[n] = ']';
+	bracket[n + 1] = '\0';
+	p->end = bracket+n+1;
 	p_bracket(p);
-	assert(p->next == bracket+2);
+	assert(p->next == p->end);
 	p->next = oldnext;
 	p->end = oldend;
 }
 
 /*
  - ordinary - emit an ordinary character
- == static void ordinary(struct parse *p, int ch);
+ == static void ordinary(struct parse *p, wint_t ch);
  */
 static void
-ordinary(
-    struct parse *p,
-    int ch)
+ordinary(struct parse *p, wint_t ch)
 {
-	cat_t *cap;
-	unsigned char uc = (unsigned char)ch;
+	cset *cs;
 
 	_DIAGASSERT(p != NULL);
 
-	cap = p->g->categories;
-	if ((p->g->cflags & REG_ICASE) && isalpha(uc) && othercase(uc) != uc)
-		bothcases(p, uc);
+	if ((p->g->cflags&REG_ICASE) && iswalpha(ch) && othercase(ch) != ch)
+		bothcases(p, ch);
+	else if ((wint_t)(ch & OPDMASK) == ch)
+		EMIT(OCHAR, (size_t)ch);
 	else {
-		EMIT(OCHAR, (sopno)uc);
-		if (cap[uc] == 0) {
-			_DIAGASSERT(__type_fit(unsigned char,
-			    p->g->ncategories + 1));
-			cap[uc] = (unsigned char)p->g->ncategories++;
-		}
+		/*
+		 * Kludge: character is too big to fit into an OCHAR operand.
+		 * Emit a singleton set.
+		 */
+		if ((cs = allocset(p)) == NULL)
+			return;
+		CHadd(p, cs, ch);
+		EMIT(OANYOF, (size_t)(cs - p->g->sets));
 	}
 }
 
@@ -1102,18 +1549,14 @@
  * Boy, is this implementation ever a kludge...
  */
 static void
-nonnewline(
-    struct parse *p)
+nonnewline(struct parse *p)
 {
-	const char *oldnext;
-	const char *oldend;
+	const char *oldnext = p->next;
+	const char *oldend = p->end;
 	char bracket[4];
 
 	_DIAGASSERT(p != NULL);
 
-	oldnext = p->next;
-	oldend = p->end;
-
 	p->next = bracket;
 	p->end = bracket+3;
 	bracket[0] = '^';
@@ -1128,18 +1571,15 @@
 
 /*
  - repeat - generate code for a bounded repetition, recursively if needed
- == static void repeat(struct parse *p, sopno start, int from, int to,
- == size_t reclimit);
+ == static void repeat(struct parse *p, sopno start, int from, int to);
  */
 static void
-repeat(
-    struct parse *p,
-    sopno start,		/* operand from here to end of strip */
-    int from,			/* repeated from this number */
-    int to,			/* to this number of times (maybe INFINITY) */
-    size_t reclimit)
+repeat(struct parse *p,
+	sopno start,		/* operand from here to end of strip */
+	int from,		/* repeated from this number */
+	int to)			/* to this number of times (maybe INFINITY) */
 {
-	sopno finish;
+	sopno finish = HERE();
 #	define	N	2
 #	define	INF	3
 #	define	REP(f, t)	((f)*8 + (t))
@@ -1148,13 +1588,9 @@
 
 	_DIAGASSERT(p != NULL);
 
-	if (reclimit++ > RECLIMIT) 
-		p->error = REG_ESPACE;
-	if (p->error)
+	if (p->error != 0)	/* head off possible runaway recursion */
 		return;
 
-	finish = HERE();
-
 	assert(from <= to);
 
 	switch (REP(MAP(from), MAP(to))) {
@@ -1166,7 +1602,7 @@
 	case REP(0, INF):		/* as x{1,}? */
 		/* KLUDGE: emit y? as (y|) until subtle bug gets fixed */
 		INSERT(OCH_, start);		/* offset is wrong... */
-		repeat(p, start+1, 1, to, reclimit);
+		repeat(p, start+1, 1, to);
 		ASTERN(OOR1, start);
 		AHEAD(start);			/* ... fix it */
 		EMIT(OOR2, 0);
@@ -1186,7 +1622,7 @@
 		ASTERN(O_CH, THERETHERE());
 		copy = dupl(p, start+1, finish+1);
 		assert(copy == finish+4);
-		repeat(p, copy, 1, to-1, reclimit);
+		repeat(p, copy, 1, to-1);
 		break;
 	case REP(1, INF):		/* as x+ */
 		INSERT(OPLUS_, start);
@@ -1194,11 +1630,11 @@
 		break;
 	case REP(N, N):			/* as xx{m-1,n-1} */
 		copy = dupl(p, start, finish);
-		repeat(p, copy, from-1, to-1, reclimit);
+		repeat(p, copy, from-1, to-1);
 		break;
 	case REP(N, INF):		/* as xx{n-1,INF} */
 		copy = dupl(p, start, finish);
-		repeat(p, copy, from-1, to, reclimit);
+		repeat(p, copy, from-1, to);
 		break;
 	default:			/* "can't happen" */
 		SETERROR(REG_ASSERT);	/* just in case */
@@ -1207,13 +1643,39 @@
 }
 
 /*
+ - wgetnext - helper function for WGETNEXT() macro. Gets the next wide
+ - character from the parse struct, signals a REG_ILLSEQ error if the
+ - character can't be converted. Returns the number of bytes consumed.
+ */
+static wint_t
+wgetnext(struct parse *p)
+{
+#ifdef NLS
+	mbstate_t mbs;
+	wchar_t wc;
+	size_t n;
+
+	memset(&mbs, 0, sizeof(mbs));
+	n = mbrtowc(&wc, p->next, (size_t)(p->end - p->next), &mbs);
+	if (n == (size_t)-1 || n == (size_t)-2) {
+		SETERROR(REG_ILLSEQ);
+		return (0);
+	}
+	if (n == 0)
+		n = 1;
+	p->next += n;
+	return wc;
+#else
+	return *p->next++;
+#endif
+}
+
+/*
  - seterr - set an error condition
  == static int seterr(struct parse *p, int e);
  */
 static int			/* useless but makes type checking happy */
-seterr(
-    struct parse *p,
-    int e)
+seterr(struct parse *p, int e)
 {
 
 	_DIAGASSERT(p != NULL);
@@ -1230,55 +1692,22 @@
  == static cset *allocset(struct parse *p);
  */
 static cset *
-allocset(
-    struct parse *p)
+allocset(struct parse *p)
 {
-	size_t no;
-	size_t nc;
-	size_t nbytes;
-	cset *cs;
-	size_t css;
-	size_t i;
-	void *old_ptr;
+	cset *cs, *ncs;
 
 	_DIAGASSERT(p != NULL);
 
-	no = p->g->ncsets++;
-	css = (size_t)p->g->csetsize;
-	if (no >= p->ncsalloc) {	/* need another column of space */
-		p->ncsalloc += CHAR_BIT;
-		nc = p->ncsalloc;
-		assert(nc % CHAR_BIT == 0);
-		nbytes = nc / CHAR_BIT * css;
-		if (MEMSIZE(p) > MEMLIMIT)
-			goto oomem;
-		if (reallocarr(&p->g->sets, nc, sizeof(cset)))
-			goto oomem;
-		old_ptr = p->g->setbits;
-		if (reallocarr(&p->g->setbits, nc / CHAR_BIT, css)) {
-			free(old_ptr);
-			goto oomem;
-		}
-		if (old_ptr != p->g->setbits) {
-			for (i = 0; i < no; i++)
-				p->g->sets[i].ptr = p->g->setbits + css*(i/CHAR_BIT);
-		}
-		(void) memset((char *)p->g->setbits + (nbytes - css), 0, css);
+	ncs = reallocarray(p->g->sets, p->g->ncsets + 1, sizeof(*ncs));
+	if (ncs == NULL) {
+		SETERROR(REG_ESPACE);
+		return (NULL);
 	}
-
-	cs = &p->g->sets[no];
-	cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
-	cs->mask = 1 << (unsigned int)((no) % CHAR_BIT);
-	cs->hash = 0;
-	cs->smultis = 0;
-	cs->multis = NULL;
+	p->g->sets = ncs;
+	cs = &p->g->sets[p->g->ncsets++];
+	memset(cs, 0, sizeof(*cs));
 
 	return(cs);
-
-oomem:
-	SETERROR(REG_ESPACE);
-	/* caller's responsibility not to do set ops */
-	return NULL;
 }
 
 /*
@@ -1286,353 +1715,128 @@
  == static void freeset(struct parse *p, cset *cs);
  */
 static void
-freeset(
-    struct parse *p,
-    cset *cs)
+freeset(struct parse *p, cset *cs)
 {
-	size_t i;
 	cset *top;
-	size_t css;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
 
 	top = &p->g->sets[p->g->ncsets];
-	css = (size_t)p->g->csetsize;
 
-	for (i = 0; i < css; i++)
-		CHsub(cs, (int)i);
+	free(cs->wides);
+	free(cs->ranges);
+	free(cs->types);
+	memset(cs, 0, sizeof(*cs));
 	if (cs == top-1)	/* recover only the easy case */
 		p->g->ncsets--;
 }
 
 /*
- - freezeset - final processing on a set of characters
- == static int freezeset(struct parse *p, cset *cs);
- *
- * The main task here is merging identical sets.  This is usually a waste
- * of time (although the hash code minimizes the overhead), but can win
- * big if REG_ICASE is being used.  REG_ICASE, by the way, is why the hash
- * is done using addition rather than xor -- all ASCII [aA] sets xor to
- * the same value!
+ - singleton - Determine whether a set contains only one character,
+ - returning it if so, otherwise returning OUT.
  */
-static sopno			/* set number */
-freezeset(
-    struct parse *p,
-    cset *cs)
+static wint_t
+singleton(cset *cs)
 {
-	uch h;
-	size_t i;
-	cset *top;
-	cset *cs2;
-	size_t css;
+	wint_t i, s, n;
 
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	h = cs->hash;
-	top = &p->g->sets[p->g->ncsets];
-	css = (size_t)p->g->csetsize;
-
-	/* look for an earlier one which is the same */
-	for (cs2 = &p->g->sets[0]; cs2 < top; cs2++)
-		if (cs2->hash == h && cs2 != cs) {
-			/* maybe */
-			for (i = 0; i < css; i++)
-				if (!!CHIN(cs2, i) != !!CHIN(cs, i))
-					break;		/* no */
-			if (i == css)
-				break;			/* yes */
-		}
-
-	if (cs2 < top) {	/* found one */
-		freeset(p, cs);
-		cs = cs2;
-	}
-
-	return (sopno)(cs - p->g->sets);
-}
-
-/*
- - firstch - return first character in a set (which must have at least one)
- == static int firstch(struct parse *p, cset *cs);
- */
-static int			/* character; there is no "none" value */
-firstch(
-    struct parse *p,
-    cset *cs)
-{
-	size_t i;
-	size_t css;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	css = (size_t)p->g->csetsize;
-
-	for (i = 0; i < css; i++)
-		if (CHIN(cs, i))
-			return((char)i);
-	assert(never);
-	return(0);		/* arbitrary */
-}
-
-/*
- - nch - number of characters in a set
- == static int nch(struct parse *p, cset *cs);
- */
-static int
-nch(
-    struct parse *p,
-    cset *cs)
-{
-	size_t i;
-	size_t css;
-	int n = 0;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	css = (size_t)p->g->csetsize;
-
-	for (i = 0; i < css; i++)
-		if (CHIN(cs, i))
+	for (i = n = 0; i < NC; i++)
+		if (CHIN(cs, i)) {
 			n++;
-	return(n);
+			s = i;
+		}
+	if (n == 1)
+		return (s);
+	if (cs->nwides == 1 && cs->nranges == 0 && cs->ntypes == 0 &&
+	    cs->icase == 0)
+		return (cs->wides[0]);
+	/* Don't bother handling the other cases. */
+	return (OUT);
 }
 
 /*
- - mcadd - add a collating element to a cset
- == static void mcadd(struct parse *p, cset *cs, \
- ==	char *cp);
+ - CHadd - add character to character set.
  */
 static void
-mcadd(
-    struct parse *p,
-    cset *cs,
-    const char *cp)
+CHadd(struct parse *p, cset *cs, wint_t ch)
 {
-	size_t oldend;
+	wint_t nch, *newwides;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
 
-	oldend = cs->smultis;
+	assert(ch >= 0);
+	if (ch < NC)
+		cs->bmp[(unsigned)ch >> 3] |= 1 << (ch & 7);
+	else {
+		newwides = reallocarray(cs->wides, cs->nwides + 1,
+		    sizeof(*cs->wides));
+		if (newwides == NULL) {
+			SETERROR(REG_ESPACE);
+			return;
+		}
+		cs->wides = newwides;
+		cs->wides[cs->nwides++] = ch;
+	}
+	if (cs->icase) {
+		if ((nch = towlower(ch)) < NC)
+			cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+		if ((nch = towupper(ch)) < NC)
+			cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+	}
+}
 
-	cs->smultis += strlen(cp) + 1;
-	if (cs->multis == NULL)
-		cs->multis = malloc(cs->smultis);
-	else
-		cs->multis = realloc(cs->multis, cs->smultis);
-	if (cs->multis == NULL) {
+/*
+ - CHaddrange - add all characters in the range [min,max] to a character set.
+ */
+static void
+CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max)
+{
+	crange *newranges;
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(cs != NULL);
+
+	for (; min < NC && min <= max; min++)
+		CHadd(p, cs, min);
+	if (min >= max)
+		return;
+	newranges = reallocarray(cs->ranges, cs->nranges + 1,
+	    sizeof(*cs->ranges));
+	if (newranges == NULL) {
 		SETERROR(REG_ESPACE);
 		return;
 	}
-
-	(void) strcpy(cs->multis + oldend - 1, cp);
-	cs->multis[cs->smultis - 1] = '\0';
+	cs->ranges = newranges;
+	cs->ranges[cs->nranges].min = min;
+	cs->ranges[cs->nranges].max = max;
+	cs->nranges++;
 }
 
-#if 0
 /*
- - mcsub - subtract a collating element from a cset
- == static void mcsub(cset *cs, char *cp);
+ - CHaddtype - add all characters of a certain type to a character set.
  */
 static void
-mcsub(
-    cset *cs,
-    char *cp)
+CHaddtype(struct parse *p, cset *cs, wctype_t wct)
 {
-	char *fp;
-	size_t len;
+	wint_t i;
+	wctype_t *newtypes;
 
+	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
 
-	fp = mcfind(cs, cp);
-	len = strlen(fp);
-
-	assert(fp != NULL);
-	(void) memmove(fp, fp + len + 1,
-				cs->smultis - (fp + len + 1 - cs->multis));
-	cs->smultis -= len;
-
-	if (cs->smultis == 0) {
-		free(cs->multis);
-		cs->multis = NULL;
+	for (i = 0; i < NC; i++)
+		if (iswctype(i, wct))
+			CHadd(p, cs, i);
+	newtypes = reallocarray(cs->types, cs->ntypes + 1,
+	    sizeof(*cs->types));
+	if (newtypes == NULL) {
+		SETERROR(REG_ESPACE);
 		return;
 	}
-
-	cs->multis = realloc(cs->multis, cs->smultis);
-	assert(cs->multis != NULL);
-}
-
-/*
- - mcin - is a collating element in a cset?
- == static int mcin(cset *cs, char *cp);
- */
-static int
-mcin(
-    cset *cs,
-    char *cp)
-{
-
-	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
-
-	return(mcfind(cs, cp) != NULL);
-}
-
-/*
- - mcfind - find a collating element in a cset
- == static char *mcfind(cset *cs, char *cp);
- */
-static char *
-mcfind(
-    cset *cs,
-    char *cp)
-{
-	char *p;
-
-	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
-
-	if (cs->multis == NULL)
-		return(NULL);
-	for (p = cs->multis; *p != '\0'; p += strlen(p) + 1)
-		if (strcmp(cp, p) == 0)
-			return(p);
-	return(NULL);
-}
-#endif
-
-/*
- - mcinvert - invert the list of collating elements in a cset
- == static void mcinvert(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities.  Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mcinvert(
-    struct parse *p,
-    cset *cs)
-{
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	assert(cs->multis == NULL);	/* xxx */
-}
-
-/*
- - mccase - add case counterparts of the list of collating elements in a cset
- == static void mccase(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities.  Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mccase(
-    struct parse *p,
-    cset *cs)
-{
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	assert(cs->multis == NULL);	/* xxx */
-}
-
-/*
- - isinsets - is this character in any sets?
- == static int isinsets(struct re_guts *g, int c);
- */
-static int			/* predicate */
-isinsets(
-    struct re_guts *g,
-    int c)
-{
-	uch *col;
-	size_t i;
-	size_t ncols;
-	unsigned uc = (unsigned char)c;
-
-	_DIAGASSERT(g != NULL);
-
-	if (g->setbits == NULL)
-		return 0;
-
-	ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
-	for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
-		if (col[uc] != 0)
-			return(1);
-	return(0);
-}
-
-/*
- - samesets - are these two characters in exactly the same sets?
- == static int samesets(struct re_guts *g, int c1, int c2);
- */
-static int			/* predicate */
-samesets(
-    struct re_guts *g,
-    int c1,
-    int c2)
-{
-	uch *col;
-	size_t i;
-	size_t ncols;
-	unsigned uc1 = (unsigned char)c1;
-	unsigned uc2 = (unsigned char)c2;
-
-	_DIAGASSERT(g != NULL);
-
-	ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
-	for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
-		if (col[uc1] != col[uc2])
-			return(0);
-	return(1);
-}
-
-/*
- - categorize - sort out character categories
- == static void categorize(struct parse *p, struct re_guts *g);
- */
-static void
-categorize(
-    struct parse *p,
-    struct re_guts *g)
-{
-	cat_t *cats;
-	int c;
-	int c2;
-	cat_t cat;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(g != NULL);
-
-	cats = g->categories;
-
-	/* avoid making error situations worse */
-	if (p->error != 0)
-		return;
-
-	for (c = CHAR_MIN; c <= CHAR_MAX; c++)
-		if (cats[c] == 0 && isinsets(g, c)) {
-			_DIAGASSERT(__type_fit(unsigned char,
-			    g->ncategories + 1));
-			cat = g->ncategories++;
-			cats[c] = cat;
-			for (c2 = c+1; c2 <= CHAR_MAX; c2++)
-				if (cats[c2] == 0 && samesets(g, c, c2))
-					cats[c2] = cat;
-		}
+	cs->types = newtypes;
+	cs->types[cs->ntypes++] = wct;
 }
 
 /*
@@ -1640,25 +1844,22 @@
  == static sopno dupl(struct parse *p, sopno start, sopno finish);
  */
 static sopno			/* start of duplicate */
-dupl(
-    struct parse *p,
-    sopno start,			/* from here */
-    sopno finish)			/* to this less one */
+dupl(struct parse *p,
+	sopno start,		/* from here */
+	sopno finish)		/* to this less one */
 {
-	sopno ret;
+	sopno ret = HERE();
 	sopno len = finish - start;
 
 	_DIAGASSERT(p != NULL);
 
-	ret = HERE();
-
 	assert(finish >= start);
 	if (len == 0)
 		return(ret);
-	if (!enlarge(p, p->ssize + len))/* this many unexpected additions */
-		return ret;
-	(void)memcpy(p->strip + p->slen, p->strip + start,
-	    (size_t)len * sizeof(sop));
+	if (!enlarge(p, p->ssize + len)) /* this many unexpected additions */
+		return(ret);
+	(void) memcpy(p->strip + p->slen,
+	    p->strip + start, len * sizeof(*p->strip));
 	p->slen += len;
 	return(ret);
 }
@@ -1672,17 +1873,14 @@
  * some changes to the data structures.  Maybe later.
  */
 static void
-doemit(
-    struct parse *p,
-    sop op,
-    sopno opnd)
+doemit(struct parse *p, sop op, size_t opnd)
 {
-	_DIAGASSERT(p != NULL);
-
 	/* avoid making error situations worse */
 	if (p->error != 0)
 		return;
 
+	_DIAGASSERT(p != NULL);
+
 	/* deal with oversize operands ("can't happen", more or less) */
 	assert(opnd < 1<<OPSHIFT);
 
@@ -1692,7 +1890,7 @@
 			return;
 
 	/* finally, it's all reduced to the easy case */
-	p->strip[p->slen++] = (sop)SOP(op, opnd);
+	p->strip[p->slen++] = (sopno)SOP(op, opnd);
 }
 
 /*
@@ -1700,11 +1898,7 @@
  == static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
  */
 static void
-doinsert(
-    struct parse *p,
-    sop op,
-    sopno opnd,
-    sopno pos)
+doinsert(struct parse *p, sop op, size_t opnd, sopno pos)
 {
 	sopno sn;
 	sop s;
@@ -1732,7 +1926,8 @@
 		}
 	}
 
-	memmove(&p->strip[pos+1], &p->strip[pos], (HERE()-pos-1)*sizeof(sop));
+	memmove(&p->strip[pos+1], &p->strip[pos],
+	    (HERE()-pos-1)*sizeof(*p->strip));
 	p->strip[pos] = s;
 }
 
@@ -1741,10 +1936,7 @@
  == static void dofwd(struct parse *p, sopno pos, sop value);
  */
 static void
-dofwd(
-    struct parse *p,
-    sopno pos,
-    sopno value)
+dofwd(struct parse *p, sopno pos, sop value)
 {
 
 	_DIAGASSERT(p != NULL);
@@ -1754,25 +1946,29 @@
 		return;
 
 	assert(value < 1<<OPSHIFT);
-	p->strip[pos] = (sop)(OP(p->strip[pos]) | value);
+	p->strip[pos] = OP(p->strip[pos]) | value;
 }
 
 /*
  - enlarge - enlarge the strip
- == static void enlarge(struct parse *p, sopno size);
+ == static int enlarge(struct parse *p, sopno size);
  */
 static int
 enlarge(struct parse *p, sopno size)
 {
+	sop *sp;
+
 	_DIAGASSERT(p != NULL);
 
 	if (p->ssize >= size)
 		return 1;
 
-	if (MEMSIZE(p) > MEMLIMIT || reallocarr(&p->strip, size, sizeof(sop))) {
+	sp = reallocarray(p->strip, size, sizeof(*p->strip));
+	if (sp == NULL) {
 		SETERROR(REG_ESPACE);
 		return 0;
 	}
+	p->strip = sp;
 	p->ssize = size;
 	return 1;
 }
@@ -1782,18 +1978,18 @@
  == static void stripsnug(struct parse *p, struct re_guts *g);
  */
 static void
-stripsnug(
-    struct parse *p,
-    struct re_guts *g)
+stripsnug(struct parse *p, struct re_guts *g)
 {
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(g != NULL);
 
 	g->nstates = p->slen;
-	g->strip = p->strip;
-	reallocarr(&g->strip, p->slen, sizeof(sop));
-	/* Ignore error as tries to free memory only. */
+	g->strip = reallocarray(p->strip, p->slen, sizeof(*p->strip));
+	if (g->strip == NULL) {
+		SETERROR(REG_ESPACE);
+		g->strip = p->strip;
+	}
 }
 
 /*
@@ -1807,9 +2003,7 @@
  * Note that must and mlen got initialized during setup.
  */
 static void
-findmust(
-    struct parse *p,
-    struct re_guts *g)
+findmust(struct parse *p, struct re_guts *g)
 {
 	sop *scan;
 	sop *start = NULL;
@@ -1817,7 +2011,8 @@
 	sopno newlen;
 	sop s;
 	char *cp;
-	sopno i;
+	int offset;
+	mbstate_t mbs;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(g != NULL);
@@ -1826,16 +2021,39 @@
 	if (p->error != 0)
 		return;
 
+#ifdef notyet
+	/*
+	 * It's not generally safe to do a ``char'' substring search on
+	 * multibyte character strings, but it's safe for at least
+	 * UTF-8 (see RFC 3629).
+	 */
+	if (MB_CUR_MAX > 1 &&
+	    strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
+		return;
+#endif
+
 	/* find the longest OCHAR sequence in strip */
 	newlen = 0;
+	offset = 0;
+	g->moffset = 0;
 	scan = g->strip + 1;
 	do {
 		s = *scan++;
 		switch (OP(s)) {
 		case OCHAR:		/* sequence member */
-			if (newlen == 0)		/* new sequence */
+			if (newlen == 0) {		/* new sequence */
+				memset(&mbs, 0, sizeof(mbs));
 				newstart = scan - 1;
+			}
+#ifdef NLS
+			char buf[MB_LEN_MAX];
+			size_t clen = wcrtomb(buf, (int)OPND(s), &mbs);
+			if (clen == (size_t)-1)
+				goto toohard;
+			newlen += (sopno)clen;
+#else
 			newlen++;
+#endif
 			break;
 		case OPLUS_:		/* things that don't break one */
 		case OLPAREN:
@@ -1843,60 +2061,346 @@
 			break;
 		case OQUEST_:		/* things that must be skipped */
 		case OCH_:
+			offset = altoffset(scan, offset);
 			scan--;
 			do {
 				scan += OPND(s);
 				s = *scan;
 				/* assert() interferes w debug printouts */
-				if (OP(s) != O_QUEST && OP(s) != O_CH &&
-							OP(s) != OOR2) {
+				if (OP(s) != O_QUEST &&
+				    OP(s) != O_CH && OP(s) != OOR2) {
 					g->iflags |= BAD;
 					return;
 				}
 			} while (OP(s) != O_QUEST && OP(s) != O_CH);
 			/* FALLTHROUGH */
-		default:		/* things that break a sequence */
-			if (newlen > g->mlen) {		/* ends one */
+		case OBOW:		/* things that break a sequence */
+		case OEOW:
+		case OBOL:
+		case OEOL:
+		case OBOS:
+		case OEOS:
+		case OWBND:
+		case ONWBND:
+		case O_QUEST:
+		case O_CH:
+		case OEND:
+			if (newlen > (sopno)g->mlen) {		/* ends one */
 				start = newstart;
 				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
 			}
 			newlen = 0;
 			break;
+		case OANY:
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
+			}
+			if (offset > -1)
+				offset++;
+			newlen = 0;
+			break;
+		case OANYOF:		/* may or may not invalidate offset */
+			/* First, everything as OANY */
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
+			}
+			if (offset > -1)
+				offset++;
+			newlen = 0;
+			break;
+#ifdef NLS
+		toohard:/*FALLTHROUGH*/
+#endif
+		default:
+			/* Anything here makes it impossible or too hard
+			 * to calculate the offset -- so we give up;
+			 * save the last known good offset, in case the
+			 * must sequence doesn't occur later.
+			 */
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1)
+					g->moffset += offset;
+				else
+					g->moffset = offset;
+			}
+			offset = -1;
+			newlen = 0;
+			break;
 		}
 	} while (OP(s) != OEND);
 
-	if (start == NULL)
-		g->mlen = 0;
-
-	if (g->mlen == 0)	/* there isn't one */
+	if (g->mlen == 0) {		/* there isn't one */
+		g->moffset = -1;
 		return;
+	}
 
 	/* turn it into a character string */
 	g->must = malloc((size_t)g->mlen + 1);
 	if (g->must == NULL) {		/* argh; just forget it */
 		g->mlen = 0;
+		g->moffset = -1;
 		return;
 	}
 	cp = g->must;
 	scan = start;
-	for (i = g->mlen; i > 0; i--) {
+	memset(&mbs, 0, sizeof(mbs));
+	while (cp < g->must + g->mlen) {
 		while (OP(s = *scan++) != OCHAR)
 			continue;
-		assert(cp < g->must + g->mlen);
-		*cp++ = (char)OPND(s);
+#ifdef NLS
+		size_t clen = wcrtomb(cp, (int)OPND(s), &mbs);
+		assert(clen != (size_t)-1);
+		cp += clen;
+#else
+		*cp++ = OPND(s);
+#endif
 	}
 	assert(cp == g->must + g->mlen);
 	*cp++ = '\0';		/* just on general principles */
 }
 
 /*
+ - altoffset - choose biggest offset among multiple choices
+ == static int altoffset(sop *scan, int offset);
+ *
+ * Compute, recursively if necessary, the largest offset among multiple
+ * re paths.
+ */
+static int
+altoffset(sop *scan, int offset)
+{
+	int largest;
+	int try;
+	sop s;
+
+	_DIAGASSERT(scan != NULL);
+
+	/* If we gave up already on offsets, return */
+	if (offset == -1)
+		return -1;
+
+	largest = 0;
+	try = 0;
+	s = *scan++;
+	while (OP(s) != O_QUEST && OP(s) != O_CH) {
+		switch (OP(s)) {
+		case OOR1:
+			if (try > largest)
+				largest = try;
+			try = 0;
+			break;
+		case OQUEST_:
+		case OCH_:
+			try = altoffset(scan, try);
+			if (try == -1)
+				return -1;
+			scan--;
+			do {
+				scan += OPND(s);
+				s = *scan;
+				if (OP(s) != O_QUEST &&
+				    OP(s) != O_CH && OP(s) != OOR2)
+					return -1;
+			} while (OP(s) != O_QUEST && OP(s) != O_CH);
+			/* We must skip to the next position, or we'll
+			 * leave altoffset() too early.
+			 */
+			scan++;
+			break;
+		case OANYOF:
+		case OCHAR:
+		case OANY:
+			try++;
+			/*FALLTHROUGH*/
+		case OBOW:
+		case OEOW:
+		case OWBND:
+		case ONWBND:
+		case OLPAREN:
+		case ORPAREN:
+		case OOR2:
+			break;
+		default:
+			try = -1;
+			break;
+		}
+		if (try == -1)
+			return -1;
+		s = *scan++;
+	}
+
+	if (try > largest)
+		largest = try;
+
+	return largest+offset;
+}
+
+/*
+ - computejumps - compute char jumps for BM scan
+ == static void computejumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A char jump is the number of characters one needs to jump based on
+ * the value of the character from the text that was mismatched.
+ */
+static void
+computejumps(struct parse *p, struct re_guts *g)
+{
+	int ch;
+	size_t mindex;
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(g != NULL);
+
+	/* Avoid making errors worse */
+	if (p->error != 0)
+		return;
+
+	g->charjump = calloc((NC_MAX + 1), sizeof(*g->charjump));
+	if (g->charjump == NULL)	/* Not a fatal error */
+		return;
+	/* Adjust for signed chars, if necessary */
+	g->charjump = &g->charjump[-(CHAR_MIN)];
+
+	/* If the character does not exist in the pattern, the jump
+	 * is equal to the number of characters in the pattern.
+	 */
+	for (ch = CHAR_MIN; ch < (CHAR_MAX + 1); ch++)
+		g->charjump[ch] = g->mlen;
+
+	/* If the character does exist, compute the jump that would
+	 * take us to the last character in the pattern equal to it
+	 * (notice that we match right to left, so that last character
+	 * is the first one that would be matched).
+	 */
+	for (mindex = 0; mindex < g->mlen; mindex++)
+		g->charjump[(int)g->must[mindex]] = g->mlen - mindex - 1;
+}
+
+/*
+ - computematchjumps - compute match jumps for BM scan
+ == static void computematchjumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A match jump is the number of characters one needs to advance based
+ * on the already-matched suffix.
+ * Notice that all values here are minus (g->mlen-1), because of the way
+ * the search algorithm works.
+ */
+static void
+computematchjumps(struct parse *p, struct re_guts *g)
+{
+	size_t mindex;		/* General "must" iterator */
+	size_t suffix;		/* Keeps track of matching suffix */
+	size_t ssuffix;		/* Keeps track of suffixes' suffix */
+	size_t* pmatches;	/* pmatches[k] points to the next i
+				 * such that i+1...mlen is a substring
+				 * of k+1...k+mlen-i-1
+				 */
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(g != NULL);
+
+	/* Avoid making errors worse */
+	if (p->error != 0)
+		return;
+
+	pmatches = calloc(g->mlen, sizeof(*pmatches));
+	if (pmatches == NULL) {
+		g->matchjump = NULL;
+		return;
+	}
+
+	g->matchjump = calloc(g->mlen, sizeof(*g->matchjump));
+	if (g->matchjump == NULL) {	/* Not a fatal error */
+		free(pmatches);
+		return;
+	}
+
+	/* Set maximum possible jump for each character in the pattern */
+	for (mindex = 0; mindex < g->mlen; mindex++)
+		g->matchjump[mindex] = 2 * g->mlen - mindex - 1;
+
+	/* Compute pmatches[] */
+	for (suffix = mindex = g->mlen; mindex-- > 0; suffix--) {
+		pmatches[mindex] = suffix;
+
+		/* If a mismatch is found, interrupting the substring,
+		 * compute the matchjump for that position. If no
+		 * mismatch is found, then a text substring mismatched
+		 * against the suffix will also mismatch against the
+		 * substring.
+		 */
+		while (suffix < g->mlen
+		    && g->must[mindex] != g->must[suffix]) {
+			g->matchjump[suffix] = MIN(g->matchjump[suffix],
+			    g->mlen - mindex - 1);
+			suffix = pmatches[suffix];
+		}
+	}
+
+	/* Compute the matchjump up to the last substring found to jump
+	 * to the beginning of the largest must pattern prefix matching
+	 * it's own suffix.
+	 */
+	for (mindex = 0; mindex <= suffix; mindex++)
+		g->matchjump[mindex] = MIN(g->matchjump[mindex],
+		    g->mlen + suffix - mindex);
+
+        ssuffix = pmatches[suffix];
+        while (suffix < g->mlen) {
+                while (suffix <= ssuffix && suffix < g->mlen) {
+                        g->matchjump[suffix] = MIN(g->matchjump[suffix],
+			    g->mlen + ssuffix - suffix);
+                        suffix++;
+                }
+		if (suffix < g->mlen)
+                	ssuffix = pmatches[ssuffix];
+        }
+
+	free(pmatches);
+}
+
+/*
  - pluscount - count + nesting
  == static sopno pluscount(struct parse *p, struct re_guts *g);
  */
 static sopno			/* nesting depth */
-pluscount(
-    struct parse *p,
-    struct re_guts *g)
+pluscount(struct parse *p, struct re_guts *g)
 {
 	sop *scan;
 	sop s;
diff --git a/libc/upstream-netbsd/lib/libc/regex/regerror.c b/libc/upstream-netbsd/lib/libc/regex/regerror.c
index e00d7c0..cfd7704 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regerror.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regerror.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $	*/
+/*	$NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,76 +37,38 @@
  *	@(#)regerror.c	8.4 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regerror.c	8.4 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regerror.c	8.4 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regerror.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $");
 
 #include "namespace.h"
 #include <sys/types.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
+#include <limits.h>
+#include <stdlib.h>
 #include <regex.h>
 
+#include "utils.h"
+
 #ifdef __weak_alias
 __weak_alias(regerror,_regerror)
 #endif
 
-#include "utils.h"
-
 /* ========= begin header generated by ./mkh ========= */
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* === regerror.c === */
-static const char *regatoi(const regex_t *preg, char *localbuf, size_t buflen);
+static const char *regatoi(const regex_t *preg, char *localbufm, size_t buflen);
 
 #ifdef __cplusplus
 }
@@ -126,6 +91,8 @@
  = #define	REG_EMPTY	14
  = #define	REG_ASSERT	15
  = #define	REG_INVARG	16
+ = #define	REG_ENOSYS	17
+ = #define	REG_ILLSEQ	18
  = #define	REG_ATOI	255	// convert name to number (!)
  = #define	REG_ITOA	0400	// convert number to name (!)
  */
@@ -134,36 +101,36 @@
 	const char *name;
 	const char *explain;
 } rerrs[] = {
-	{ REG_NOMATCH,	"REG_NOMATCH",	"regexec() failed to match" },
-	{ REG_BADPAT,	"REG_BADPAT",	"invalid regular expression" },
-	{ REG_ECOLLATE,	"REG_ECOLLATE",	"invalid collating element" },
-	{ REG_ECTYPE,	"REG_ECTYPE",	"invalid character class" },
-	{ REG_EESCAPE,	"REG_EESCAPE",	"trailing backslash (\\)" },
-	{ REG_ESUBREG,	"REG_ESUBREG",	"invalid backreference number" },
-	{ REG_EBRACK,	"REG_EBRACK",	"brackets ([ ]) not balanced" },
-	{ REG_EPAREN,	"REG_EPAREN",	"parentheses not balanced" },
-	{ REG_EBRACE,	"REG_EBRACE",	"braces not balanced" },
-	{ REG_BADBR,	"REG_BADBR",	"invalid repetition count(s)" },
-	{ REG_ERANGE,	"REG_ERANGE",	"invalid character range" },
-	{ REG_ESPACE,	"REG_ESPACE",	"out of memory" },
-	{ REG_BADRPT,	"REG_BADRPT",	"repetition-operator operand invalid" },
-	{ REG_EMPTY,	"REG_EMPTY",	"empty (sub)expression" },
-	{ REG_ASSERT,	"REG_ASSERT",	"\"can't happen\" -- you found a bug" },
-	{ REG_INVARG,	"REG_INVARG",	"invalid argument to regex routine" },
-	{ 0,		"",		"*** unknown regexp error code ***" }
+	{REG_NOMATCH,	"REG_NOMATCH",	"regexec() failed to match"},
+	{REG_BADPAT,	"REG_BADPAT",	"invalid regular expression"},
+	{REG_ECOLLATE,	"REG_ECOLLATE",	"invalid collating element"},
+	{REG_ECTYPE,	"REG_ECTYPE",	"invalid character class"},
+	{REG_EESCAPE,	"REG_EESCAPE",	"trailing backslash (\\)"},
+	{REG_ESUBREG,	"REG_ESUBREG",	"invalid backreference number"},
+	{REG_EBRACK,	"REG_EBRACK",	"brackets ([ ]) not balanced"},
+	{REG_EPAREN,	"REG_EPAREN",	"parentheses not balanced"},
+	{REG_EBRACE,	"REG_EBRACE",	"braces not balanced"},
+	{REG_BADBR,	"REG_BADBR",	"invalid repetition count(s)"},
+	{REG_ERANGE,	"REG_ERANGE",	"invalid character range"},
+	{REG_ESPACE,	"REG_ESPACE",	"out of memory"},
+	{REG_BADRPT,	"REG_BADRPT",	"repetition-operator operand invalid"},
+	{REG_EMPTY,	"REG_EMPTY",	"empty (sub)expression"},
+	{REG_ASSERT,	"REG_ASSERT",	"\"can't happen\" -- you found a bug"},
+	{REG_INVARG,	"REG_INVARG",	"invalid argument to regex routine"},
+	{REG_ILLSEQ,	"REG_ILLSEQ",	"illegal byte sequence"},
+	{0,		"",		"*** unknown regexp error code ***"}
 };
 
 /*
- * regerror - the interface to error numbers
- * extern size_t regerror(int, const regex_t *, char *, size_t);
+ - regerror - the interface to error numbers
+ = extern size_t regerror(int, const regex_t *, char *, size_t);
  */
 /* ARGSUSED */
 size_t
-regerror(
-    int errcode,
-    const regex_t *preg,
-    char *errbuf,
-    size_t errbuf_size)
+regerror(int errcode,
+	 const regex_t * __restrict preg,
+	 char * __restrict errbuf,
+	 size_t errbuf_size)
 {
 	const struct rerr *r;
 	size_t len;
@@ -172,21 +139,20 @@
 	char convbuf[50];
 
 	_DIAGASSERT(errcode != REG_ATOI || preg != NULL);
-	_DIAGASSERT(errbuf != NULL);
+	_DIAGASSERT(errbuf_size == 0 || errbuf != NULL);
 
-	if (errcode == REG_ATOI)
+	if (errcode == REG_ATOI) {
 		s = regatoi(preg, convbuf, sizeof convbuf);
-	else {
+	} else {
 		for (r = rerrs; r->code != 0; r++)
 			if (r->code == target)
 				break;
-	
-		if (errcode & REG_ITOA) {
-			if (r->code != 0) {
-				(void)strlcpy(convbuf, r->name, sizeof convbuf);
-			} else
-				(void)snprintf(convbuf, sizeof convbuf,
-				    "REG_0x%x", target);
+
+		if (errcode&REG_ITOA) {
+			if (r->code != 0)
+				(void) strlcpy(convbuf, r->name, sizeof(convbuf));
+			else
+				snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
 			s = convbuf;
 		} else
 			s = r->explain;
@@ -194,21 +160,17 @@
 
 	len = strlen(s) + 1;
 	if (errbuf_size > 0)
-		(void)strlcpy(errbuf, s, errbuf_size);
+		(void) strlcpy(errbuf, s, errbuf_size);
 
 	return(len);
 }
 
 /*
- * regatoi - internal routine to implement REG_ATOI
- * static const char *regatoi(const regex_t *preg, char *localbuf,
- * size_t buflen);
+ - regatoi - internal routine to implement REG_ATOI
+ == static char *regatoi(const regex_t *preg, char *localbuf);
  */
 static const char *
-regatoi(
-    const regex_t *preg,
-    char *localbuf,
-    size_t buflen)
+regatoi(const regex_t *preg, char *localbuf, size_t buflen)
 {
 	const struct rerr *r;
 
@@ -218,6 +180,6 @@
 	if (r->code == 0)
 		return "0";
 
-	(void)snprintf(localbuf, buflen, "%d", r->code);
+	snprintf(localbuf, buflen, "%d", r->code);
 	return localbuf;
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/regex2.h b/libc/upstream-netbsd/lib/libc/regex/regex2.h
index 7c877ee..fbfff0d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regex2.h
+++ b/libc/upstream-netbsd/lib/libc/regex/regex2.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: regex2.h,v 1.13 2011/10/09 18:23:00 christos Exp $	*/
+/*	$NetBSD: regex2.h,v 1.15 2021/02/24 18:13:21 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,43 +35,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)regex2.h	8.4 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regex2.h	8.4 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/regex2.h 368359 2020-12-05 03:18:48Z kevans $
  */
 
 /*
@@ -109,68 +76,100 @@
  * In state representations, an operator's bit is on to signify a state
  * immediately *preceding* "execution" of that operator.
  */
-typedef u_int32_t sop;	/* strip operator */
-typedef size_t sopno;
-#define	OPRMASK	((u_int32_t)0xf8000000UL)
-#define	OPDMASK	((u_int32_t)0x07ffffffUL)
-#define	OPSHIFT	((unsigned)27)
+typedef uint32_t sop;	/* strip operator */
+typedef uint32_t sopno;
+#define	OPRMASK	0xf8000000U
+#define	OPDMASK	0x07ffffffU
+#define	OPSHIFT	(27U)
 #define	OP(n)	((n)&OPRMASK)
-#define	OPND(n)	((int)((n)&OPDMASK))
+#define	OPND(n)	((n)&OPDMASK)
 #define	SOP(op, opnd)	((op)|(opnd))
-
-#define OPC(n)	(((u_int32_t)(n))<<OPSHIFT)
-/* operators		   meaning	operand			*/
-/*					(back, fwd are offsets)	*/
-#define	OEND	OPC(1)	/* endmarker	-			*/
-#define	OCHAR	OPC(2)	/* character	unsigned char		*/
-#define	OBOL	OPC(3)	/* left anchor	-			*/
-#define	OEOL	OPC(4)	/* right anchor	-			*/
-#define	OANY	OPC(5)	/* .		-			*/
-#define	OANYOF	OPC(6)	/* [...]	set number		*/
-#define	OBACK_	OPC(7)	/* begin \d	paren number		*/
-#define	O_BACK	OPC(8)	/* end \d	paren number		*/
-#define	OPLUS_	OPC(9)	/* + prefix	fwd to suffix		*/
-#define	O_PLUS	OPC(10)	/* + suffix	back to prefix		*/
-#define	OQUEST_	OPC(11)	/* ? prefix	fwd to suffix		*/
-#define	O_QUEST	OPC(12)	/* ? suffix	back to prefix		*/
-#define	OLPAREN	OPC(13)	/* (		fwd to )		*/
-#define	ORPAREN	OPC(14)	/* )		back to (		*/
-#define	OCH_	OPC(15)	/* begin choice	fwd to OOR2		*/
-#define	OOR1	OPC(16)	/* | pt. 1	back to OOR1 or OCH_	*/
-#define	OOR2	OPC(17)	/* | pt. 2	fwd to OOR2 or O_CH	*/
-#define	O_CH	OPC(18)	/* end choice	back to OOR1		*/
-#define	OBOW	OPC(19)	/* begin word	-			*/
-#define	OEOW	OPC(20)	/* end word	-			*/
+/* operators			   meaning	operand			*/
+/*						(back, fwd are offsets)	*/
+#define	OEND	(1U<<OPSHIFT)	/* endmarker	-			*/
+#define	OCHAR	(2U<<OPSHIFT)	/* character	wide character		*/
+#define	OBOL	(3U<<OPSHIFT)	/* left anchor	-			*/
+#define	OEOL	(4U<<OPSHIFT)	/* right anchor	-			*/
+#define	OANY	(5U<<OPSHIFT)	/* .		-			*/
+#define	OANYOF	(6U<<OPSHIFT)	/* [...]	set number		*/
+#define	OBACK_	(7U<<OPSHIFT)	/* begin \d	paren number		*/
+#define	O_BACK	(8U<<OPSHIFT)	/* end \d	paren number		*/
+#define	OPLUS_	(9U<<OPSHIFT)	/* + prefix	fwd to suffix		*/
+#define	O_PLUS	(10U<<OPSHIFT)	/* + suffix	back to prefix		*/
+#define	OQUEST_	(11U<<OPSHIFT)	/* ? prefix	fwd to suffix		*/
+#define	O_QUEST	(12U<<OPSHIFT)	/* ? suffix	back to prefix		*/
+#define	OLPAREN	(13U<<OPSHIFT)	/* (		fwd to )		*/
+#define	ORPAREN	(14U<<OPSHIFT)	/* )		back to (		*/
+#define	OCH_	(15U<<OPSHIFT)	/* begin choice	fwd to OOR2		*/
+#define	OOR1	(16U<<OPSHIFT)	/* | pt. 1	back to OOR1 or OCH_	*/
+#define	OOR2	(17U<<OPSHIFT)	/* | pt. 2	fwd to OOR2 or O_CH	*/
+#define	O_CH	(18U<<OPSHIFT)	/* end choice	back to OOR1		*/
+#define	OBOW	(19U<<OPSHIFT)	/* begin word	-			*/
+#define	OEOW	(20U<<OPSHIFT)	/* end word	-			*/
+#define	OBOS	(21U<<OPSHIFT)	/* begin subj.  -			*/
+#define	OEOS	(22U<<OPSHIFT)	/* end subj.	-			*/
+#define	OWBND	(23U<<OPSHIFT)	/* word bound	-			*/
+#define	ONWBND	(24U<<OPSHIFT)	/* not bound	-			*/
 
 /*
- * Structure for [] character-set representation.  Character sets are
- * done as bit vectors, grouped 8 to a byte vector for compactness.
- * The individual set therefore has both a pointer to the byte vector
- * and a mask to pick out the relevant bit of each byte.  A hash code
- * simplifies testing whether two sets could be identical.
- *
- * This will get trickier for multicharacter collating elements.  As
- * preliminary hooks for dealing with such things, we also carry along
- * a string of multi-character elements, and decide the size of the
- * vectors at run time.
+ * Structures for [] character-set representation.
  */
 typedef struct {
-	uch *ptr;		/* -> uch [csetsize] */
-	uch mask;		/* bit within array */
-	uch hash;		/* hash code */
-	size_t smultis;
-	char *multis;		/* -> char[smulti]  ab\0cd\0ef\0\0 */
+	wint_t		min;
+	wint_t		max;
+} crange;
+typedef struct {
+	unsigned char	bmp[NC_MAX / 8];
+	wctype_t	*types;
+	unsigned int	ntypes;
+	wint_t		*wides;
+	unsigned int	nwides;
+	crange		*ranges;
+	unsigned int	nranges;
+	int		invert;
+	int		icase;
 } cset;
-/* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */
-#define	CHadd(cs, c)	((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c))
-#define	CHsub(cs, c)	((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c))
-#define	CHIN(cs, c)	((cs)->ptr[(uch)(c)] & (cs)->mask)
-#define	MCadd(p, cs, cp)	mcadd(p, cs, cp)	/* regcomp() internal fns */
-#define	MCsub(p, cs, cp)	mcsub(p, cs, cp)
-#define	MCin(p, cs, cp)	mcin(p, cs, cp)
 
-/* stuff for character categories */
-typedef unsigned char cat_t;
+static int
+CHIN1(cset *cs, wint_t ch)
+{
+	unsigned int i;
+
+	assert(ch >= 0);
+	if (ch < NC)
+		return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+		    cs->invert);
+	for (i = 0; i < cs->nwides; i++) {
+		if (cs->icase) {
+			if (ch == towlower(cs->wides[i]) ||
+			    ch == towupper(cs->wides[i]))
+				return (!cs->invert);
+		} else if (ch == cs->wides[i])
+			return (!cs->invert);
+	}
+	for (i = 0; i < cs->nranges; i++)
+		if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max)
+			return (!cs->invert);
+	for (i = 0; i < cs->ntypes; i++)
+		if (iswctype(ch, cs->types[i]))
+			return (!cs->invert);
+	return (cs->invert);
+}
+
+static __inline int
+CHIN(cset *cs, wint_t ch)
+{
+
+	assert(ch >= 0);
+	if (ch < NC)
+		return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+		    cs->invert);
+	else if (cs->icase)
+		return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) ||
+		    CHIN1(cs, towupper(ch)));
+	else
+		return (CHIN1(cs, ch));
+}
 
 /*
  * main compiled-expression structure
@@ -179,10 +178,8 @@
 	int magic;
 #		define	MAGIC2	((('R'^0200)<<8)|'E')
 	sop *strip;		/* malloced area for strip */
-	size_t csetsize;	/* number of bits in a cset vector */
 	size_t ncsets;		/* number of csets in use */
 	cset *sets;		/* -> cset [ncsets] */
-	uch *setbits;		/* -> uch[csetsize][ncsets/CHAR_BIT] */
 	int cflags;		/* copy of regcomp() cflags argument */
 	sopno nstates;		/* = number of sops */
 	sopno firststate;	/* the initial OEND (normally 0) */
@@ -193,17 +190,17 @@
 #		define	BAD	04	/* something wrong */
 	size_t nbol;		/* number of ^ used */
 	size_t neol;		/* number of $ used */
-	size_t ncategories;	/* how many character categories */
-	cat_t *categories;	/* ->catspace[-CHAR_MIN] */
 	char *must;		/* match must contain this string */
+	int moffset;		/* latest point at which must may be located */
+	size_t *charjump;	/* Boyer-Moore char jump table */
+	size_t *matchjump;	/* Boyer-Moore match jump table */
 	size_t mlen;		/* length of must */
 	size_t nsub;		/* copy of re_nsub */
 	int backrefs;		/* does it use back references? */
 	sopno nplus;		/* how deep does it nest +s? */
-	/* catspace must be last */
-	cat_t catspace[1];	/* actually [NC] */
 };
 
 /* misc utilities */
-#define	OUT	(CHAR_MAX+1)	/* a non-character value */
-#define	ISWORD(c)	(isalnum((unsigned char)c) || (c) == '_')
+#define	OUT	(CHAR_MIN - 1)	/* a non-character value */
+#define	IGN	(CHAR_MIN - 2)
+#define ISWORD(c)       (iswalnum((uch)(c)) || (c) == '_')
diff --git a/libc/upstream-netbsd/lib/libc/regex/regexec.c b/libc/upstream-netbsd/lib/libc/regex/regexec.c
index f16e0b6..213a90b 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regexec.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regexec.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $	*/
+/*	$NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,91 +37,96 @@
  *	@(#)regexec.c	8.3 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regexec.c	8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regexec.c	8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regexec.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $");
 
 /*
  * the outer shell of regexec()
  *
- * This file includes engine.c *twice*, after muchos fiddling with the
+ * This file includes engine.c three times, after muchos fiddling with the
  * macros that code uses.  This lets the same code operate on two different
- * representations for state sets.
+ * representations for state sets and characters.
  */
-#include "namespace.h"
-#include <sys/types.h>
 
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
+#ifndef LIBHACK
+#include "namespace.h"
+#endif
+#include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
+#include <ctype.h>
 #include <regex.h>
 
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
 __weak_alias(regexec,_regexec)
 #endif
 
 #include "utils.h"
 #include "regex2.h"
 
+static __inline size_t
+xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy)
+{
+#ifdef NLS
+	size_t nr;
+	wchar_t wc;
+
+	nr = mbrtowc(&wc, s, n, mbs);
+	if (wi != NULL)
+		*wi = wc;
+	if (nr == 0)
+		return (1);
+	else if (nr == (size_t)-1 || nr == (size_t)-2) {
+		memset(mbs, 0, sizeof(*mbs));
+		if (wi != NULL)
+			*wi = dummy;
+		return (1);
+	} else
+                return (nr);
+#else
+	if (wi)
+		*wi = *s;
+	return 1;
+#endif
+}
+
+static __inline size_t
+xmbrtowc_dummy(wint_t *wi,
+		const char *s,
+		size_t n __unused,
+		mbstate_t *mbs __unused,
+		wint_t dummy __unused)
+{
+
+	if (wi != NULL)
+		*wi = (unsigned char)*s;
+	return (1);
+}
+
 /* macros for manipulating states, small version */
-#define	states	unsigned long
-#define	states1	unsigned long	/* for later use in regexec() decision */
+#define	states	long
+#define	states1	states		/* for later use in regexec() decision */
 #define	CLEAR(v)	((v) = 0)
 #define	SET0(v, n)	((v) &= ~((unsigned long)1 << (n)))
 #define	SET1(v, n)	((v) |= (unsigned long)1 << (n))
 #define	ISSET(v, n)	(((v) & ((unsigned long)1 << (n))) != 0)
 #define	ASSIGN(d, s)	((d) = (s))
 #define	EQ(a, b)	((a) == (b))
-#define	STATEVARS	int dummy	/* dummy version */
+#define	STATEVARS	long dummy	/* dummy version */
 #define	STATESETUP(m, n)	/* nothing */
 #define	STATETEARDOWN(m)	/* nothing */
 #define	SETUP(v)	((v) = 0)
-#define	onestate	unsigned long
+#define	onestate	long
 #define	INIT(o, n)	((o) = (unsigned long)1 << (n))
 #define	INC(o)	((o) <<= 1)
 #define	ISSTATEIN(v, o)	(((v) & (o)) != 0)
@@ -127,6 +135,9 @@
 #define	FWD(dst, src, n)	((dst) |= ((unsigned long)(src)&(here)) << (n))
 #define	BACK(dst, src, n)	((dst) |= ((unsigned long)(src)&(here)) >> (n))
 #define	ISSETBACK(v, n)	(((v) & ((unsigned long)here >> (n))) != 0)
+/* no multibyte support */
+#define	XMBRTOWC	xmbrtowc_dummy
+#define	ZAPSTATE(mbs)	((void)(mbs))
 /* function names */
 #define SNAMES			/* engine.c looks after details */
 
@@ -152,26 +163,25 @@
 #undef	BACK
 #undef	ISSETBACK
 #undef	SNAMES
+#undef	XMBRTOWC
+#undef	ZAPSTATE
 
 /* macros for manipulating states, large version */
 #define	states	char *
-#define	CLEAR(v)	memset(v, 0, (size_t)m->g->nstates)
+#define	CLEAR(v)	memset(v, 0, m->g->nstates)
 #define	SET0(v, n)	((v)[n] = 0)
 #define	SET1(v, n)	((v)[n] = 1)
 #define	ISSET(v, n)	((v)[n])
-#define	ASSIGN(d, s)	memcpy(d, s, (size_t)m->g->nstates)
-#define	EQ(a, b)	(memcmp(a, b, (size_t)m->g->nstates) == 0)
-#define	STATEVARS	int vn; char *space
-#define	STATESETUP(m, nv) \
-    if (((m)->space = malloc((size_t)((nv)*(m)->g->nstates))) == NULL) \
-	return(REG_ESPACE); \
-    else \
-	(m)->vn = 0
-
-#define	STATETEARDOWN(m)	{ free((m)->space); m->space = NULL; }
-#define	SETUP(v)	((v) = &m->space[(size_t)(m->vn++ * m->g->nstates)])
-#define	onestate	int
-#define	INIT(o, n)	((o) = (int)(n))
+#define	ASSIGN(d, s)	memcpy(d, s, m->g->nstates)
+#define	EQ(a, b)	(memcmp(a, b, m->g->nstates) == 0)
+#define	STATEVARS	long vn; char *space
+#define	STATESETUP(m, nv)	{ (m)->space = malloc((nv)*(m)->g->nstates); \
+				if ((m)->space == NULL) return(REG_ESPACE); \
+				(m)->vn = 0; }
+#define	STATETEARDOWN(m)	{ free((m)->space); }
+#define	SETUP(v)	((v) = &m->space[m->vn++ * m->g->nstates])
+#define	onestate	long
+#define	INIT(o, n)	((o) = (n))
 #define	INC(o)	((o)++)
 #define	ISSTATEIN(v, o)	((v)[o])
 /* some abbreviations; note that some of these know variable names! */
@@ -179,11 +189,24 @@
 #define	FWD(dst, src, n)	((dst)[here+(n)] |= (src)[here])
 #define	BACK(dst, src, n)	((dst)[here-(n)] |= (src)[here])
 #define	ISSETBACK(v, n)	((v)[here - (n)])
+/* no multibyte support */
+#define	XMBRTOWC	xmbrtowc_dummy
+#define	ZAPSTATE(mbs)	((void)(mbs))
 /* function names */
 #define	LNAMES			/* flag */
 
 #include "engine.c"
 
+/* multibyte character & large states version */
+#undef	LNAMES
+#undef	XMBRTOWC
+#undef	ZAPSTATE
+#define	XMBRTOWC	xmbrtowc
+#define	ZAPSTATE(mbs)	memset((mbs), 0, sizeof(*(mbs)))
+#define	MNAMES
+
+#include "engine.c"
+
 /*
  - regexec - interface for matching
  = extern int regexec(const regex_t *, const char *, size_t, \
@@ -200,21 +223,18 @@
  * have been prototyped.
  */
 int				/* 0 success, REG_NOMATCH failure */
-regexec(
-    const regex_t *preg,
-    const char *string,
-    size_t nmatch,
-    regmatch_t pmatch[],
-    int eflags)
+regexec(const regex_t * __restrict preg,
+	const char * __restrict string,
+	size_t nmatch,
+	regmatch_t pmatch[__restrict],
+	int eflags)
 {
 	struct re_guts *g = preg->re_g;
-	char *s;
 #ifdef REDEBUG
 #	define	GOODFLAGS(f)	(f)
 #else
 #	define	GOODFLAGS(f)	((f)&(REG_NOTBOL|REG_NOTEOL|REG_STARTEND))
 #endif
-
 	_DIAGASSERT(preg != NULL);
 	_DIAGASSERT(string != NULL);
 
@@ -225,10 +245,10 @@
 		return(REG_BADPAT);
 	eflags = GOODFLAGS(eflags);
 
-	s = __UNCONST(string);
-
-	if (g->nstates <= (sopno)(CHAR_BIT*sizeof(states1)) && !(eflags&REG_LARGE))
-		return(smatcher(g, s, nmatch, pmatch, eflags));
+	if (MB_CUR_MAX > 1)
+		return(mmatcher(g, string, nmatch, pmatch, eflags));
+	else if (g->nstates <= CHAR_BIT*sizeof(states1) && !(eflags&REG_LARGE))
+		return(smatcher(g, string, nmatch, pmatch, eflags));
 	else
-		return(lmatcher(g, s, nmatch, pmatch, eflags));
+		return(lmatcher(g, string, nmatch, pmatch, eflags));
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/regfree.c b/libc/upstream-netbsd/lib/libc/regex/regfree.c
index ce011ea..7e388b1 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regfree.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regfree.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $	*/
+/*	$NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,58 +37,22 @@
  *	@(#)regfree.c	8.3 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regfree.c	8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regfree.c	8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regfree.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $");
 
 #include "namespace.h"
 #include <sys/types.h>
-
-#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <limits.h>
 #include <regex.h>
 
 #ifdef __weak_alias
@@ -100,10 +67,10 @@
  = extern void regfree(regex_t *);
  */
 void
-regfree(
-    regex_t *preg)
+regfree(regex_t *preg)
 {
 	struct re_guts *g;
+	unsigned int i;
 
 	_DIAGASSERT(preg != NULL);
 
@@ -119,11 +86,19 @@
 
 	if (g->strip != NULL)
 		free(g->strip);
-	if (g->sets != NULL)
+	if (g->sets != NULL) {
+		for (i = 0; i < g->ncsets; i++) {
+			free(g->sets[i].ranges);
+			free(g->sets[i].wides);
+			free(g->sets[i].types);
+		}
 		free(g->sets);
-	if (g->setbits != NULL)
-		free(g->setbits);
+	}
 	if (g->must != NULL)
 		free(g->must);
+	if (g->charjump != NULL)
+		free(&g->charjump[CHAR_MIN]);
+	if (g->matchjump != NULL)
+		free(g->matchjump);
 	free(g);
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/utils.h b/libc/upstream-netbsd/lib/libc/regex/utils.h
index 762caee..972f555 100644
--- a/libc/upstream-netbsd/lib/libc/regex/utils.h
+++ b/libc/upstream-netbsd/lib/libc/regex/utils.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: utils.h,v 1.6 2003/08/07 16:43:21 agc Exp $	*/
+/*	$NetBSD: utils.h,v 1.9 2021/04/22 19:20:24 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,49 +35,38 @@
  * SUCH DAMAGE.
  *
  *	@(#)utils.h	8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/utils.h 341838 2018-12-12 04:23:00Z yuripv $
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)utils.h	8.3 (Berkeley) 3/20/94
- */
+#ifdef NLS
+#include <wchar.h>
+#include <wctype.h>
+#else
+#include <ctype.h>
+#define wint_t regex_wint_t
+#define mbstate_t regex_mbstate_t
+#define wctype_t regex_wctype_t
+typedef short wint_t;
+typedef char mbstate_t;
+typedef short wctype_t;
+#define iswupper(a) isupper(a)
+#define iswlower(a) islower(a)
+#define iswalpha(a) isalpha(a)
+#define iswalnum(a) isalnum(a)
+#define towupper(a) toupper(a)
+#define towlower(a) tolower(a)
+extern wctype_t __regex_wctype(const char *);
+extern int __regex_iswctype(wint_t, wctype_t);
+#define wctype(s) __regex_wctype(s)
+#define iswctype(c, t) __regex_iswctype((c), (t))
+#endif
 
 /* utility definitions */
 #define	DUPMAX		_POSIX2_RE_DUP_MAX	/* xxx is this right? */
 #define	INFINITY	(DUPMAX + 1)
-#define	NC		(CHAR_MAX - CHAR_MIN + 1)
+
+#define	NC_MAX		(CHAR_MAX - CHAR_MIN + 1)
+#define	NC		((MB_CUR_MAX) == 1 ? (NC_MAX) : (128))
 typedef unsigned char uch;
 
 /* switch off assertions (if not already off) if no REDEBUG */
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
index 2b0e0d8..e48fe85 100644
--- a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
+++ b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
@@ -1,4 +1,4 @@
-/*	$NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $	*/
+/*	$NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $	*/
 
 /*
  * Copyright (c) 1990, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)bsearch.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $");
+__RCSID("$NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -50,7 +50,7 @@
  * is odd, moving left simply involves halving lim: e.g., when lim
  * is 5 we look at item 2, so we change lim to 2 so that we will
  * look at items 0 & 1.  If lim is even, the same applies.  If lim
- * is odd, moving right again involes halving lim, this time moving
+ * is odd, moving right again involves halving lim, this time moving
  * the base up one item past p: e.g., when lim is 5 we change base
  * to item 3 and make lim 2 so that we will look at items 3 and 4.
  * If lim is even, however, we have to shrink it by one before
diff --git a/libc/upstream-openbsd/lib/libc/gdtoa/misc.c b/libc/upstream-openbsd/lib/libc/gdtoa/misc.c
index 79a3104..fef51a9 100644
--- a/libc/upstream-openbsd/lib/libc/gdtoa/misc.c
+++ b/libc/upstream-openbsd/lib/libc/gdtoa/misc.c
@@ -41,7 +41,7 @@
 #endif
 
 #ifdef MULTIPLE_THREADS
-extern void *__dtoa_locks[];
+static void *__dtoa_locks[] = { NULL, NULL };
 #endif
 
  Bigint *
diff --git a/libc/upstream-openbsd/lib/libc/gen/alarm.c b/libc/upstream-openbsd/lib/libc/gen/alarm.c
index f15dd15..ac17f9d 100644
--- a/libc/upstream-openbsd/lib/libc/gen/alarm.c
+++ b/libc/upstream-openbsd/lib/libc/gen/alarm.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: alarm.c,v 1.9 2019/06/28 13:32:41 deraadt Exp $ */
+/*	$OpenBSD: alarm.c,v 1.10 2021/06/24 22:43:31 cheloha Exp $ */
 /*
  * Copyright (c) 1983, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -34,13 +34,12 @@
 unsigned int
 alarm(unsigned int secs)
 {
-	struct itimerval it, oitv;
-	struct itimerval *itp = &it;
+	struct itimerval itv, oitv;
 
-	timerclear(&itp->it_interval);
-	itp->it_value.tv_sec = secs;
-	itp->it_value.tv_usec = 0;
-	if (setitimer(ITIMER_REAL, itp, &oitv) == -1)
+	timerclear(&itv.it_interval);
+	itv.it_value.tv_sec = secs;
+	itv.it_value.tv_usec = 0;
+	if (setitimer(ITIMER_REAL, &itv, &oitv) == -1)
 		return ((unsigned int) -1);
 	if (oitv.it_value.tv_usec)
 		oitv.it_value.tv_sec++;
diff --git a/libc/upstream-openbsd/lib/libc/gen/charclass.h b/libc/upstream-openbsd/lib/libc/gen/charclass.h
index 073baf6..1d1ec07 100644
--- a/libc/upstream-openbsd/lib/libc/gen/charclass.h
+++ b/libc/upstream-openbsd/lib/libc/gen/charclass.h
@@ -1,13 +1,13 @@
 /*
  * Public domain, 2008, Todd C. Miller <millert@openbsd.org>
  *
- * $OpenBSD: charclass.h,v 1.2 2019/01/25 00:19:25 millert Exp $
+ * $OpenBSD: charclass.h,v 1.3 2020/10/13 04:42:28 guenther Exp $
  */
 
 /*
  * POSIX character class support for fnmatch() and glob().
  */
-static struct cclass {
+static const struct cclass {
 	const char *name;
 	int (*isctype)(int);
 } cclasses[] = {
diff --git a/libc/upstream-openbsd/lib/libc/gen/daemon.c b/libc/upstream-openbsd/lib/libc/gen/daemon.c
index 79f4264..b84cb4f 100644
--- a/libc/upstream-openbsd/lib/libc/gen/daemon.c
+++ b/libc/upstream-openbsd/lib/libc/gen/daemon.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: daemon.c,v 1.7 2010/07/27 22:29:09 marco Exp $ */
+/*	$OpenBSD: daemon.c,v 1.8 2021/10/24 21:24:20 deraadt Exp $ */
 /*-
  * Copyright (c) 1990, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -53,7 +53,7 @@
 	if (!nochdir)
 		(void)chdir("/");
 
-	if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+	if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR)) != -1) {
 		(void)dup2(fd, STDIN_FILENO);
 		(void)dup2(fd, STDOUT_FILENO);
 		(void)dup2(fd, STDERR_FILENO);
diff --git a/libc/upstream-openbsd/lib/libc/gen/fnmatch.c b/libc/upstream-openbsd/lib/libc/gen/fnmatch.c
index d7afd5f..ff6b26e 100644
--- a/libc/upstream-openbsd/lib/libc/gen/fnmatch.c
+++ b/libc/upstream-openbsd/lib/libc/gen/fnmatch.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fnmatch.c,v 1.22 2020/03/13 03:25:45 djm Exp $	*/
+/*	$OpenBSD: fnmatch.c,v 1.23 2020/10/13 04:42:28 guenther Exp $	*/
 
 /* Copyright (c) 2011, VMware, Inc.
  * All rights reserved.
@@ -100,7 +100,7 @@
 {
 	const char * const mismatch = pattern;
 	const char *colon;
-	struct cclass *cc;
+	const struct cclass *cc;
 	int rval = RANGE_NOMATCH;
 	size_t len;
 
diff --git a/libc/upstream-openbsd/lib/libc/gen/ftok.c b/libc/upstream-openbsd/lib/libc/gen/ftok.c
index ea1edf1..9edcd30 100644
--- a/libc/upstream-openbsd/lib/libc/gen/ftok.c
+++ b/libc/upstream-openbsd/lib/libc/gen/ftok.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: ftok.c,v 1.9 2019/06/28 13:32:41 deraadt Exp $ */
+/*	$OpenBSD: ftok.c,v 1.10 2022/04/13 16:23:53 millert Exp $ */
 /*
  * Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com>
  * All rights reserved.
@@ -32,11 +32,12 @@
 key_t
 ftok(const char *path, int id)
 {
+	const unsigned int u_id = id;
 	struct stat st;
 
 	if (stat(path, &st) == -1)
 		return (key_t)-1;
 
 	return (key_t)
-	    ((id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff));
+	    ((u_id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff));
 }
diff --git a/libc/upstream-openbsd/lib/libc/locale/_def_time.c b/libc/upstream-openbsd/lib/libc/locale/_def_time.c
new file mode 100644
index 0000000..ba83fb8
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/locale/_def_time.c
@@ -0,0 +1,36 @@
+/*	$OpenBSD: _def_time.c,v 1.6 2016/05/23 00:05:15 guenther Exp $ */
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ */
+
+#include <locale.h>
+#include "localedef.h"
+
+const _TimeLocale _DefaultTimeLocale =
+{
+	{
+		"Sun","Mon","Tue","Wed","Thu","Fri","Sat",
+	},
+	{
+		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
+		"Friday", "Saturday"
+	},
+	{
+		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
+		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+	},
+	{
+		"January", "February", "March", "April", "May", "June", "July",
+		"August", "September", "October", "November", "December"
+	},
+	{
+		"AM", "PM"
+	},
+	"%a %b %e %H:%M:%S %Y",
+	"%m/%d/%y",
+	"%H:%M:%S",
+	"%I:%M:%S %p"
+};
+
+const _TimeLocale *_CurrentTimeLocale = &_DefaultTimeLocale;
diff --git a/libc/upstream-openbsd/lib/libc/locale/_wcstol.h b/libc/upstream-openbsd/lib/libc/locale/_wcstol.h
deleted file mode 100644
index 1b60a3a..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/_wcstol.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*	$OpenBSD: _wcstol.h,v 1.3 2015/10/01 02:32:07 guenther Exp $	*/
-/* $NetBSD: _wcstol.h,v 1.2 2003/08/07 16:43:03 agc Exp $ */
-
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Original version ID:
- * @(#)strtol.c	8.1 (Berkeley) 6/4/93
- * NetBSD: wcstol.c,v 1.1 2001/09/27 16:30:36 yamt Exp
- * Citrus: xpg4dl/FreeBSD/lib/libc/locale/wcstol.c,v 1.2 2001/09/21 16:11:41 yamt Exp
- */
-
-/*
- * function template for wcstol, wcstoll and wcstoimax.
- *
- * parameters:
- *	FUNCNAME : function name
- *      int_type : return type
- *      MIN_VALUE : lower limit of the return type
- *      MAX_VALUE : upper limit of the return type
- */
-
-int_type
-FUNCNAME(const wchar_t *nptr, wchar_t **endptr, int base)
-{
-	const wchar_t *s;
-	int_type acc, cutoff;
-	wint_t wc;
-	int i;
-	int neg, any, cutlim;
-
-	/* check base value */
-	if (base && (base < 2 || base > 36)) {
-		errno = EINVAL;
-		return 0;
-	}
-
-	/*
-	 * Skip white space and pick up leading +/- sign if any.
-	 * If base is 0, allow 0x for hex and 0 for octal, else
-	 * assume decimal; if base is already 16, allow 0x.
-	 */
-	s = nptr;
-	do {
-		wc = (wchar_t) *s++;
-	} while (iswspace(wc));
-	if (wc == L'-') {
-		neg = 1;
-		wc = *s++;
-	} else {
-		neg = 0;
-		if (wc == L'+')
-			wc = *s++;
-	}
-	if ((base == 0 || base == 16) &&
-	    wc == L'0' && (*s == L'x' || *s == L'X')) {
-		wc = s[1];
-		s += 2;
-		base = 16;
-	}
-	if (base == 0)
-		base = wc == L'0' ? 8 : 10;
-
-	/*
-	 * See strtol for comments as to the logic used.
-	 */
-	cutoff = neg ? MIN_VALUE : MAX_VALUE;
-	cutlim = (int)(cutoff % base);
-	cutoff /= base;
-	if (neg) {
-		if (cutlim > 0) {
-			cutlim -= base;
-			cutoff += 1;
-		}
-		cutlim = -cutlim;
-	}
-	for (acc = 0, any = 0;; wc = (wchar_t) *s++) {
-		i = wctoint(wc);
-		if (i == -1)
-			break;
-		if (i >= base)
-			break;
-		if (any < 0)
-			continue;
-		if (neg) {
-			if (acc < cutoff || (acc == cutoff && i > cutlim)) {
-				any = -1;
-				acc = MIN_VALUE;
-				errno = ERANGE;
-			} else {
-				any = 1;
-				acc *= base;
-				acc -= i;
-			}
-		} else {
-			if (acc > cutoff || (acc == cutoff && i > cutlim)) {
-				any = -1;
-				acc = MAX_VALUE;
-				errno = ERANGE;
-			} else {
-				any = 1;
-				acc *= base;
-				acc += i;
-			}
-		}
-	}
-	if (endptr != 0)
-		*endptr = (wchar_t *)(any ? s - 1 : nptr);
-	return (acc);
-}
-DEF_STRONG(FUNCNAME);
diff --git a/libc/upstream-openbsd/lib/libc/locale/_wcstoul.h b/libc/upstream-openbsd/lib/libc/locale/_wcstoul.h
deleted file mode 100644
index 159b22b..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/_wcstoul.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*	$OpenBSD: _wcstoul.h,v 1.3 2015/10/01 02:32:07 guenther Exp $	*/
-/* $NetBSD: _wcstoul.h,v 1.2 2003/08/07 16:43:03 agc Exp $ */
-
-/*
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Original version ID:
- * @(#)strtoul.c	8.1 (Berkeley) 6/4/93
- * Citrus: xpg4dl/FreeBSD/lib/libc/locale/wcstoul.c,v 1.2 2001/09/21 16:11:41 yamt Exp
- * NetBSD: wcstoul.c,v 1.1 2001/09/27 16:30:37 yamt Exp
- */
-
-/*
- * function template for wcstoul, wcstoull and wcstoumax.
- *
- * parameters:
- *	FUNCNAME  : function name
- *      uint_type : return type
- *      MAX_VALUE : upper limit of the return type
- */
-
-uint_type
-FUNCNAME(const wchar_t *nptr, wchar_t **endptr, int base)
-{
-	const wchar_t *s;
-	uint_type acc, cutoff;
-	wint_t wc;
-	int i;
-	int neg, any, cutlim;
-
-	if (base && (base < 2 || base > 36)) {
-		errno = EINVAL;
-		return 0;
-	}
-
-	/*
-	 * Skip white space and pick up leading +/- sign if any.
-	 * If base is 0, allow 0x for hex and 0 for octal, else
-	 * assume decimal; if base is already 16, allow 0x.
-	 */
-	s = nptr;
-	do {
-		wc = (wchar_t) *s++;
-	} while (iswspace(wc));
-	if (wc == L'-') {
-		neg = 1;
-		wc = *s++;
-	} else {
-		neg = 0;
-		if (wc == L'+')
-			wc = *s++;
-	}
-	if ((base == 0 || base == 16) &&
-	    wc == L'0' && (*s == L'x' || *s == L'X')) {
-		wc = s[1];
-		s += 2;
-		base = 16;
-	}
-	if (base == 0)
-		base = wc == L'0' ? 8 : 10;
-
-	/*
-	 * See strtoul for comments as to the logic used.
-	 */
-	cutoff = MAX_VALUE / (uint_type)base;
-	cutlim = (int)(MAX_VALUE % (uint_type)base);
-	for (acc = 0, any = 0;; wc = (wchar_t) *s++) {
-		i = wctoint(wc);
-		if (i == (wint_t)-1)
-			break;
-		if (i >= base)
-			break;
-		if (any < 0)
-			continue;
-		if (acc > cutoff || (acc == cutoff && i > cutlim)) {
-			any = -1;
-			acc = MAX_VALUE;
-			errno = ERANGE;
-		} else {
-			any = 1;
-			acc *= (uint_type)base;
-			acc += i;
-		}
-	}
-	if (neg && any > 0)
-		acc = -acc;
-	if (endptr != 0)
-		*endptr = (wchar_t *)(any ? s - 1 : nptr);
-	return (acc);
-}
-DEF_STRONG(FUNCNAME);
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstoimax.c b/libc/upstream-openbsd/lib/libc/locale/wcstoimax.c
deleted file mode 100644
index d46a7c7..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstoimax.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*	$OpenBSD: wcstoimax.c,v 1.1 2009/01/13 18:13:51 kettenis Exp $	*/
-/* $NetBSD: wcstol.c,v 1.2 2003/03/11 09:21:23 tshiozak Exp $ */
-
-#include <ctype.h>
-#include <errno.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstoimax
-typedef intmax_t	int_type;
-#define	MIN_VALUE	INTMAX_MIN
-#define	MAX_VALUE	INTMAX_MAX
-
-#include "_wcstol.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstol.c b/libc/upstream-openbsd/lib/libc/locale/wcstol.c
deleted file mode 100644
index 03395a0..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstol.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*	$OpenBSD: wcstol.c,v 1.2 2005/08/08 08:05:35 espie Exp $	*/
-/* $NetBSD: wcstol.c,v 1.2 2003/03/11 09:21:23 tshiozak Exp $ */
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstol
-typedef long int_type;
-#define	MIN_VALUE	LONG_MIN
-#define	MAX_VALUE	LONG_MAX
-
-#include "_wcstol.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstoll.c b/libc/upstream-openbsd/lib/libc/locale/wcstoll.c
deleted file mode 100644
index 926db70..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstoll.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*	$OpenBSD: wcstoll.c,v 1.2 2005/08/08 08:05:35 espie Exp $	*/
-/* $NetBSD: wcstoll.c,v 1.1 2003/03/11 09:21:23 tshiozak Exp $ */
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstoll
-typedef long long int int_type;
-#define	MIN_VALUE	LLONG_MIN
-#define	MAX_VALUE	LLONG_MAX
-
-#include "_wcstol.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstoul.c b/libc/upstream-openbsd/lib/libc/locale/wcstoul.c
deleted file mode 100644
index e863862..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstoul.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*	$OpenBSD: wcstoul.c,v 1.2 2005/08/08 08:05:35 espie Exp $	*/
-/*	$NetBSD: wcstoul.c,v 1.2 2003/03/11 09:21:24 tshiozak Exp $	*/
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstoul
-typedef unsigned long uint_type;
-#define	MAX_VALUE	ULONG_MAX
-
-#include "_wcstoul.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstoull.c b/libc/upstream-openbsd/lib/libc/locale/wcstoull.c
deleted file mode 100644
index 6671c37..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstoull.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*	$OpenBSD: wcstoull.c,v 1.2 2005/08/08 08:05:35 espie Exp $	*/
-/*	$NetBSD: wcstoull.c,v 1.1 2003/03/11 09:21:24 tshiozak Exp $	*/
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstoull
-typedef unsigned long long int uint_type;
-#define	MAX_VALUE	ULLONG_MAX
-
-#include "_wcstoul.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wcstoumax.c b/libc/upstream-openbsd/lib/libc/locale/wcstoumax.c
deleted file mode 100644
index ccd4713..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wcstoumax.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*	$OpenBSD: wcstoumax.c,v 1.1 2009/01/13 18:13:51 kettenis Exp $	*/
-/*	$NetBSD: wcstoul.c,v 1.2 2003/03/11 09:21:24 tshiozak Exp $	*/
-
-#include <ctype.h>
-#include <errno.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include "wctoint.h"
-
-#define	FUNCNAME	wcstoumax
-typedef uintmax_t	uint_type;
-#define	MAX_VALUE	UINTMAX_MAX
-
-#include "_wcstoul.h"
diff --git a/libc/upstream-openbsd/lib/libc/locale/wctoint.h b/libc/upstream-openbsd/lib/libc/locale/wctoint.h
deleted file mode 100644
index ea50c5a..0000000
--- a/libc/upstream-openbsd/lib/libc/locale/wctoint.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*	$OpenBSD: wctoint.h,v 1.2 2015/09/13 11:38:08 guenther Exp $	*/
-/* $NetBSD: __wctoint.h,v 1.1 2001/09/28 11:25:37 yamt Exp $ */
-
-/*-
- * Copyright (c)2001 Citrus Project,
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	$Citrus: xpg4dl/FreeBSD/lib/libc/locale/__wctoint.h,v 1.1 2001/09/21 13:52:32 yamt Exp $
- */
-
-
-inline static int
-wctoint(wchar_t wc)
-{
-	int n;
-
-	switch (wc) {
-	case L'0': n = 0; break;
-	case L'1': n = 1; break;
-	case L'2': n = 2; break;
-	case L'3': n = 3; break;
-	case L'4': n = 4; break;
-	case L'5': n = 5; break;
-	case L'6': n = 6; break;
-	case L'7': n = 7; break;
-	case L'8': n = 8; break;
-	case L'9': n = 9; break;
-	case L'A': case L'a': n = 10; break;
-	case L'B': case L'b': n = 11; break;
-	case L'C': case L'c': n = 12; break;
-	case L'D': case L'd': n = 13; break;
-	case L'E': case L'e': n = 14; break;
-	case L'F': case L'f': n = 15; break;
-	case L'G': case L'g': n = 16; break;
-	case L'H': case L'h': n = 17; break;
-	case L'I': case L'i': n = 18; break;
-	case L'J': case L'j': n = 19; break;
-	case L'K': case L'k': n = 20; break;
-	case L'L': case L'l': n = 21; break;
-	case L'M': case L'm': n = 22; break;
-	case L'N': case L'n': n = 23; break;
-	case L'O': case L'o': n = 24; break;
-	case L'P': case L'p': n = 25; break;
-	case L'Q': case L'q': n = 26; break;
-	case L'R': case L'r': n = 27; break;
-	case L'S': case L's': n = 28; break;
-	case L'T': case L't': n = 29; break;
-	case L'U': case L'u': n = 30; break;
-	case L'V': case L'v': n = 31; break;
-	case L'W': case L'w': n = 32; break;
-	case L'X': case L'x': n = 33; break;
-	case L'Y': case L'y': n = 34; break;
-	case L'Z': case L'z': n = 35; break;
-	default: n = -1; break; /* error */
-	}
-
-	return n;
-}
diff --git a/libc/upstream-openbsd/lib/libc/net/base64.c b/libc/upstream-openbsd/lib/libc/net/base64.c
index e90696d..f36c11a 100644
--- a/libc/upstream-openbsd/lib/libc/net/base64.c
+++ b/libc/upstream-openbsd/lib/libc/net/base64.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: base64.c,v 1.8 2015/01/16 16:48:51 deraadt Exp $	*/
+/*	$OpenBSD: base64.c,v 1.15 2021/10/25 14:41:09 jca Exp $	*/
 
 /*
  * Copyright (c) 1996 by Internet Software Consortium.
@@ -46,11 +46,9 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-#include <arpa/nameser.h>
 
 #include <ctype.h>
 #include <resolv.h>
-#include <stdio.h>
 
 #include <stdlib.h>
 #include <string.h>
@@ -107,9 +105,9 @@
    end of the data is performed using the '=' character.
 
    Since all base64 input is an integral number of octets, only the
-         -------------------------------------------------                       
+         -------------------------------------------------
    following cases can arise:
-   
+
        (1) the final quantum of encoding input is an integral
            multiple of 24 bits; here, the final unit of encoded
 	   output will be an integral multiple of 4 characters
@@ -123,15 +121,12 @@
    */
 
 int
-b64_ntop(src, srclength, target, targsize)
-	u_char const *src;
-	size_t srclength;
-	char *target;
-	size_t targsize;
+b64_ntop(unsigned char const *src, size_t srclength, char *target,
+    size_t targsize)
 {
 	size_t datalength = 0;
-	u_char input[3];
-	u_char output[4];
+	unsigned char input[3];
+	unsigned char output[4];
 	int i;
 
 	while (2 < srclength) {
@@ -152,14 +147,14 @@
 		target[datalength++] = Base64[output[2]];
 		target[datalength++] = Base64[output[3]];
 	}
-    
+
 	/* Now we worry about padding. */
 	if (0 != srclength) {
 		/* Get what's left. */
 		input[0] = input[1] = input[2] = '\0';
 		for (i = 0; i < srclength; i++)
 			input[i] = *src++;
-	
+
 		output[0] = input[0] >> 2;
 		output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
 		output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
@@ -187,13 +182,10 @@
  */
 
 int
-b64_pton(src, target, targsize)
-	char const *src;
-	u_char *target;
-	size_t targsize;
+b64_pton(char const *src, unsigned char *target, size_t targsize)
 {
 	int tarindex, state, ch;
-	u_char nextbyte;
+	unsigned char nextbyte;
 	char *pos;
 
 	state = 0;
@@ -207,7 +199,7 @@
 			break;
 
 		pos = strchr(Base64, ch);
-		if (pos == 0) 		/* A non-base64 character. */
+		if (pos == 0)		/* A non-base64 character. */
 			return (-1);
 
 		switch (state) {
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fputws.c b/libc/upstream-openbsd/lib/libc/stdio/fputws.c
index 8961571..4f619b6 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/fputws.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/fputws.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fputws.c,v 1.8 2015/08/31 02:53:57 guenther Exp $	*/
+/*	$OpenBSD: fputws.c,v 1.9 2021/10/24 10:05:23 jsg Exp $	*/
 /* $NetBSD: fputws.c,v 1.1 2003/03/07 07:11:37 tshiozak Exp $ */
 
 /*-
@@ -37,9 +37,7 @@
 #include "fvwrite.h"
 
 int
-fputws(ws, fp)
-	const wchar_t * __restrict ws;
-	FILE * __restrict fp;
+fputws(const wchar_t * __restrict ws, FILE * __restrict fp)
 {
 	FLOCKFILE(fp);
 	_SET_ORIENTATION(fp, 1);
diff --git a/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c b/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
index da68b90..9a08d13 100644
--- a/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
+++ b/libc/upstream-openbsd/lib/libc/stdio/setvbuf.c
@@ -131,7 +131,8 @@
 		flags |= __SNPT;
 
 	/*
-	 * Fix up the FILE fields.
+	 * Fix up the FILE fields, and set __cleanup for output flush on
+	 * exit (since we are buffered in some way).
 	 */
 	if (mode == _IOLBF)
 		flags |= __SLBF;
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/lsearch.c b/libc/upstream-openbsd/lib/libc/stdlib/lsearch.c
index 8cad05f..95ebf49 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/lsearch.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/lsearch.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: lsearch.c,v 1.5 2014/07/18 04:16:09 matthew Exp $	*/
+/*	$OpenBSD: lsearch.c,v 1.7 2021/12/08 22:06:28 cheloha Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,48 +37,34 @@
 #include <search.h>
 
 typedef int (*cmp_fn_t)(const void *, const void *);
-static void *linear_base(const void *, const void *, size_t *, size_t,
-    cmp_fn_t, int);
 
 void *
 lsearch(const void *key, void *base, size_t *nelp, size_t width,
     	cmp_fn_t compar)
 {
+	void *element = lfind(key, base, nelp, width, compar);
 
-	return(linear_base(key, base, nelp, width, compar, 1));
+	/*
+	 * Use memmove(3) to ensure the key is copied cleanly into the
+	 * array, even if the key overlaps with the end of the array.
+	 */
+	if (element == NULL) {
+		element = memmove((char *)base + *nelp * width, key, width);
+		*nelp += 1;
+	}
+	return element;
 }
 
 void *
 lfind(const void *key, const void *base, size_t *nelp, size_t width,
 	cmp_fn_t compar)
 {
-	return(linear_base(key, base, nelp, width, compar, 0));
-}
-
-static void *
-linear_base(const void *key, const void *base, size_t *nelp, size_t width,
-	cmp_fn_t compar, int add_flag)
-{
 	const char *element, *end;
 
 	end = (const char *)base + *nelp * width;
 	for (element = base; element < end; element += width)
 		if (!compar(key, element))		/* key found */
 			return((void *)element);
-
-	if (!add_flag)					/* key not found */
-		return(NULL);
-
-	/*
-	 * The UNIX System User's Manual, 1986 edition claims that
-	 * a NULL pointer is returned by lsearch with errno set
-	 * appropriately, if there is not enough room in the table
-	 * to add a new item.  This can't be done as none of these
-	 * routines have any method of determining the size of the
-	 * table.  This comment isn't in the 1986-87 System V
-	 * manual.
-	 */
-	++*nelp;
-	memcpy((void *)end, key, width);
-	return((void *)end);
+	return NULL;
 }
+DEF_WEAK(lfind);
diff --git a/libc/upstream-openbsd/lib/libc/stdlib/recallocarray.c b/libc/upstream-openbsd/lib/libc/stdlib/recallocarray.c
index a2f37fe..81059e6 100644
--- a/libc/upstream-openbsd/lib/libc/stdlib/recallocarray.c
+++ b/libc/upstream-openbsd/lib/libc/stdlib/recallocarray.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: recallocarray.c,v 1.1 2017/03/06 18:44:21 otto Exp $	*/
+/*	$OpenBSD: recallocarray.c,v 1.2 2021/03/18 11:16:58 claudio Exp $	*/
 /*
  * Copyright (c) 2008, 2017 Otto Moerbeek <otto@drijf.net>
  *
@@ -57,7 +57,7 @@
 	if (newsize <= oldsize) {
 		size_t d = oldsize - newsize;
 
-		if (d < oldsize / 2 && d < getpagesize()) {
+		if (d < oldsize / 2 && d < (size_t)getpagesize()) {
 			memset((char *)ptr + newsize, 0, d);
 			return ptr;
 		}
diff --git a/libc/versioner-dependencies/riscv64/kernel_uapi_asm-riscv64 b/libc/versioner-dependencies/riscv64/kernel_uapi_asm-riscv64
new file mode 120000
index 0000000..61353cb
--- /dev/null
+++ b/libc/versioner-dependencies/riscv64/kernel_uapi_asm-riscv64
@@ -0,0 +1 @@
+../../kernel/uapi/asm-riscv/
\ No newline at end of file
diff --git a/libdl/Android.bp b/libdl/Android.bp
index 750a6e2..4cdec44 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -74,6 +74,7 @@
         "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-i686-android.a",
+        "-Wl,--exclude-libs=libclang_rt.builtins-riscv64-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a",
     ],
 
@@ -87,6 +88,9 @@
         arm64: {
             version_script: ":libdl.arm64.map",
         },
+        riscv64: {
+            version_script: ":libdl.riscv64.map",
+        },
         x86: {
             pack_relocations: false,
             ldflags: [
@@ -174,6 +178,7 @@
         "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-i686-android.a",
+        "-Wl,--exclude-libs=libclang_rt.builtins-riscv64-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a",
     ],
 
@@ -241,30 +246,38 @@
     name: "libdl.arm.map",
     out: ["libdl.arm.map"],
     srcs: ["libdl.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm $(in) $(out)",
 }
 
 genrule {
     name: "libdl.arm64.map",
     out: ["libdl.arm64.map"],
     srcs: ["libdl.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm64 $(in) $(out)",
+}
+
+genrule {
+    name: "libdl.riscv64.map",
+    out: ["libdl.riscv64.map"],
+    srcs: ["libdl.map.txt"],
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
 }
 
 genrule {
     name: "libdl.x86.map",
     out: ["libdl.x86.map"],
     srcs: ["libdl.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86 $(in) $(out)",
 }
 
 genrule {
     name: "libdl.x86_64.map",
     out: ["libdl.x86_64.map"],
     srcs: ["libdl.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86_64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86_64 $(in) $(out)",
 }
diff --git a/libfdtrack/fdtrack.cpp b/libfdtrack/fdtrack.cpp
index 2d114f2..b064401 100644
--- a/libfdtrack/fdtrack.cpp
+++ b/libfdtrack/fdtrack.cpp
@@ -71,7 +71,11 @@
 static constexpr size_t kStackDepth = 32;
 
 // Skip any initial frames from libfdtrack.so.
-static std::vector<std::string> kSkipFdtrackLib [[clang::no_destroy]] = {"libfdtrack.so"};
+// Also ignore frames from ART (http://b/236197847) because we'd rather spend
+// our precious few frames on the actual Java calling code rather than the
+// implementation of JNI!
+static std::vector<std::string> kSkipFdtrackLib
+    [[clang::no_destroy]] = {"libfdtrack.so", "libart.so"};
 
 static bool installed = false;
 static std::array<FdEntry, kFdTableSize> stack_traces [[clang::no_destroy]];
diff --git a/libm/Android.bp b/libm/Android.bp
index 7469cde..3e271fa 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -29,6 +29,7 @@
 
     whole_static_libs: ["libarm-optimized-routines-math"],
 
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/msun/bsdsrc/b_tgamma.c",
         "upstream-freebsd/lib/msun/src/catrig.c",
@@ -73,8 +74,6 @@
         "upstream-freebsd/lib/msun/src/e_scalbf.c",
         "upstream-freebsd/lib/msun/src/e_sinh.c",
         "upstream-freebsd/lib/msun/src/e_sinhf.c",
-        "upstream-freebsd/lib/msun/src/e_sqrt.c",
-        "upstream-freebsd/lib/msun/src/e_sqrtf.c",
         "upstream-freebsd/lib/msun/src/k_cos.c",
         "upstream-freebsd/lib/msun/src/k_cosf.c",
         "upstream-freebsd/lib/msun/src/k_exp.c",
@@ -282,24 +281,16 @@
         },
     },
 
-    // arch-specific settings
     arch: {
         arm: {
             srcs: [
                 "arm/fenv.c",
+                "arm/floor.S",
+                "arm/sqrt.S",
             ],
-            neon: {
-                srcs: [
-                    "arm/sqrt.S",
-                    "arm/floor.S",
-                ],
-
-                exclude_srcs: [
-                    "upstream-freebsd/lib/msun/src/e_sqrt.c",
-                    "upstream-freebsd/lib/msun/src/e_sqrtf.c",
-                    "upstream-freebsd/lib/msun/src/s_floor.c",
-                ],
-            },
+            exclude_srcs: [
+                "upstream-freebsd/lib/msun/src/s_floor.c",
+            ],
             instruction_set: "arm",
             pack_relocations: false,
             ldflags: ["-Wl,--hash-style=both"],
@@ -318,10 +309,10 @@
                 "arm64/sqrt.S",
             ],
             exclude_srcs: [
-                "upstream-freebsd/lib/msun/src/e_sqrt.c",
-                "upstream-freebsd/lib/msun/src/e_sqrtf.c",
                 "upstream-freebsd/lib/msun/src/s_ceil.c",
                 "upstream-freebsd/lib/msun/src/s_ceilf.c",
+                "upstream-freebsd/lib/msun/src/s_copysign.c",
+                "upstream-freebsd/lib/msun/src/s_copysignf.c",
                 "upstream-freebsd/lib/msun/src/s_floor.c",
                 "upstream-freebsd/lib/msun/src/s_floorf.c",
                 "upstream-freebsd/lib/msun/src/s_fma.c",
@@ -332,8 +323,12 @@
                 "upstream-freebsd/lib/msun/src/s_fminf.c",
                 "upstream-freebsd/lib/msun/src/s_llrint.c",
                 "upstream-freebsd/lib/msun/src/s_llrintf.c",
+                "upstream-freebsd/lib/msun/src/s_llround.c",
+                "upstream-freebsd/lib/msun/src/s_llroundf.c",
                 "upstream-freebsd/lib/msun/src/s_lrint.c",
                 "upstream-freebsd/lib/msun/src/s_lrintf.c",
+                "upstream-freebsd/lib/msun/src/s_lround.c",
+                "upstream-freebsd/lib/msun/src/s_lroundf.c",
                 "upstream-freebsd/lib/msun/src/s_rint.c",
                 "upstream-freebsd/lib/msun/src/s_rintf.c",
                 "upstream-freebsd/lib/msun/src/s_round.c",
@@ -344,6 +339,45 @@
             version_script: ":libm.arm64.map",
         },
 
+        riscv64: {
+            srcs: [
+                "riscv64/fenv.c",
+                "riscv64/lrint.S",
+                "riscv64/sqrt.S",
+            ],
+
+            exclude_srcs: [
+                // TODO: do the rest when our clang has https://reviews.llvm.org/D136508.
+                // TODO: "upstream-freebsd/lib/msun/src/s_ceil.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_ceilf.c",
+                "upstream-freebsd/lib/msun/src/s_copysign.c",
+                "upstream-freebsd/lib/msun/src/s_copysignf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_floor.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_floorf.c",
+                "upstream-freebsd/lib/msun/src/s_fma.c",
+                "upstream-freebsd/lib/msun/src/s_fmaf.c",
+                "upstream-freebsd/lib/msun/src/s_fmax.c",
+                "upstream-freebsd/lib/msun/src/s_fmaxf.c",
+                "upstream-freebsd/lib/msun/src/s_fmin.c",
+                "upstream-freebsd/lib/msun/src/s_fminf.c",
+                "upstream-freebsd/lib/msun/src/s_llrint.c",
+                "upstream-freebsd/lib/msun/src/s_llrintf.c",
+                "upstream-freebsd/lib/msun/src/s_llround.c",
+                "upstream-freebsd/lib/msun/src/s_llroundf.c",
+                "upstream-freebsd/lib/msun/src/s_lrint.c",
+                "upstream-freebsd/lib/msun/src/s_lrintf.c",
+                "upstream-freebsd/lib/msun/src/s_lround.c",
+                "upstream-freebsd/lib/msun/src/s_lroundf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_rint.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_rintf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_round.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_roundf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_trunc.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_truncf.c",
+            ],
+            version_script: ":libm.riscv64.map",
+        },
+
         x86: {
             srcs: [
                 "i387/fenv.c",
@@ -351,59 +385,24 @@
                 "x86/ceilf.S",
                 "x86/floor.S",
                 "x86/floorf.S",
+                "x86/lrint.S",
+                "x86/lrintf.S",
                 "x86/rint.S",
                 "x86/rintf.S",
                 "x86/sqrt.S",
                 "x86/sqrtf.S",
                 "x86/trunc.S",
                 "x86/truncf.S",
-                "x86/e_acos.S",
-                "x86/e_asin.S",
-                "x86/e_atan2.S",
-                "x86/e_cosh.S",
-                "x86/e_hypot.S",
-                "x86/e_log10.S",
-                "x86/e_sinh.S",
-                "x86/libm_reduce_pi04l.S",
-                "x86/libm_sincos_huge.S",
-                "x86/libm_tancot_huge.S",
-                "x86/lrint.S",
-                "x86/lrintf.S",
-                "x86/s_atan.S",
-                "x86/s_cbrt.S",
-                "x86/s_cos.S",
-                "x86/s_expm1.S",
-                "x86/s_log1p.S",
-                "x86/s_sin.S",
-                "x86/s_tanh.S",
-                "x86/s_tan.S",
             ],
             exclude_srcs: [
-                "upstream-freebsd/lib/msun/src/e_acos.c",
-                "upstream-freebsd/lib/msun/src/e_asin.c",
-                "upstream-freebsd/lib/msun/src/e_atan2.c",
-                "upstream-freebsd/lib/msun/src/e_cosh.c",
-                "upstream-freebsd/lib/msun/src/e_hypot.c",
-                "upstream-freebsd/lib/msun/src/e_log10.c",
-                "upstream-freebsd/lib/msun/src/e_sinh.c",
-                "upstream-freebsd/lib/msun/src/e_sqrt.c",
-                "upstream-freebsd/lib/msun/src/e_sqrtf.c",
-                "upstream-freebsd/lib/msun/src/s_atan.c",
-                "upstream-freebsd/lib/msun/src/s_cbrt.c",
                 "upstream-freebsd/lib/msun/src/s_ceil.c",
                 "upstream-freebsd/lib/msun/src/s_ceilf.c",
-                "upstream-freebsd/lib/msun/src/s_cos.c",
-                "upstream-freebsd/lib/msun/src/s_expm1.c",
                 "upstream-freebsd/lib/msun/src/s_floor.c",
                 "upstream-freebsd/lib/msun/src/s_floorf.c",
-                "upstream-freebsd/lib/msun/src/s_log1p.c",
                 "upstream-freebsd/lib/msun/src/s_lrint.c",
                 "upstream-freebsd/lib/msun/src/s_lrintf.c",
                 "upstream-freebsd/lib/msun/src/s_rint.c",
                 "upstream-freebsd/lib/msun/src/s_rintf.c",
-                "upstream-freebsd/lib/msun/src/s_sin.c",
-                "upstream-freebsd/lib/msun/src/s_tan.c",
-                "upstream-freebsd/lib/msun/src/s_tanh.c",
                 "upstream-freebsd/lib/msun/src/s_trunc.c",
                 "upstream-freebsd/lib/msun/src/s_truncf.c",
             ],
@@ -420,58 +419,26 @@
                 "x86_64/ceilf.S",
                 "x86_64/floor.S",
                 "x86_64/floorf.S",
+                "x86_64/lrint.S",
+                "x86_64/lrintf.S",
                 "x86_64/rint.S",
                 "x86_64/rintf.S",
                 "x86_64/sqrt.S",
                 "x86_64/sqrtf.S",
                 "x86_64/trunc.S",
                 "x86_64/truncf.S",
-                "x86_64/e_acos.S",
-                "x86_64/e_asin.S",
-                "x86_64/e_atan2.S",
-                "x86_64/e_cosh.S",
-                "x86_64/e_hypot.S",
-                "x86_64/e_log10.S",
-                "x86_64/e_sinh.S",
-                "x86_64/lrint.S",
-                "x86_64/lrintf.S",
-                "x86_64/s_atan.S",
-                "x86_64/s_cbrt.S",
-                "x86_64/s_cos.S",
-                "x86_64/s_expm1.S",
-                "x86_64/s_log1p.S",
-                "x86_64/s_sin.S",
-                "x86_64/s_tanh.S",
-                "x86_64/s_tan.S",
             ],
             exclude_srcs: [
-                "upstream-freebsd/lib/msun/src/e_acos.c",
-                "upstream-freebsd/lib/msun/src/e_asin.c",
-                "upstream-freebsd/lib/msun/src/e_atan2.c",
-                "upstream-freebsd/lib/msun/src/e_cosh.c",
-                "upstream-freebsd/lib/msun/src/e_hypot.c",
-                "upstream-freebsd/lib/msun/src/e_log10.c",
-                "upstream-freebsd/lib/msun/src/e_sinh.c",
-                "upstream-freebsd/lib/msun/src/e_sqrt.c",
-                "upstream-freebsd/lib/msun/src/e_sqrtf.c",
-                "upstream-freebsd/lib/msun/src/s_atan.c",
-                "upstream-freebsd/lib/msun/src/s_cbrt.c",
                 "upstream-freebsd/lib/msun/src/s_ceil.c",
                 "upstream-freebsd/lib/msun/src/s_ceilf.c",
-                "upstream-freebsd/lib/msun/src/s_cos.c",
-                "upstream-freebsd/lib/msun/src/s_expm1.c",
                 "upstream-freebsd/lib/msun/src/s_floor.c",
                 "upstream-freebsd/lib/msun/src/s_floorf.c",
-                "upstream-freebsd/lib/msun/src/s_log1p.c",
                 "upstream-freebsd/lib/msun/src/s_llrint.c",
                 "upstream-freebsd/lib/msun/src/s_llrintf.c",
                 "upstream-freebsd/lib/msun/src/s_lrint.c",
                 "upstream-freebsd/lib/msun/src/s_lrintf.c",
                 "upstream-freebsd/lib/msun/src/s_rint.c",
                 "upstream-freebsd/lib/msun/src/s_rintf.c",
-                "upstream-freebsd/lib/msun/src/s_sin.c",
-                "upstream-freebsd/lib/msun/src/s_tan.c",
-                "upstream-freebsd/lib/msun/src/s_tanh.c",
                 "upstream-freebsd/lib/msun/src/s_trunc.c",
                 "upstream-freebsd/lib/msun/src/s_truncf.c",
             ],
@@ -560,30 +527,38 @@
     name: "libm.arm.map",
     out: ["libm.arm.map"],
     srcs: ["libm.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm $(in) $(out)",
 }
 
 genrule {
     name: "libm.arm64.map",
     out: ["libm.arm64.map"],
     srcs: ["libm.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) arm64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) arm64 $(in) $(out)",
+}
+
+genrule {
+    name: "libm.riscv64.map",
+    out: ["libm.riscv64.map"],
+    srcs: ["libm.map.txt"],
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
 }
 
 genrule {
     name: "libm.x86.map",
     out: ["libm.x86.map"],
     srcs: ["libm.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86 $(in) $(out)",
 }
 
 genrule {
     name: "libm.x86_64.map",
     out: ["libm.x86_64.map"],
     srcs: ["libm.map.txt"],
-    tool_files: [":bionic-generate-version-script"],
-    cmd: "$(location :bionic-generate-version-script) x86_64 $(in) $(out)",
+    tools: ["generate-version-script"],
+    cmd: "$(location generate-version-script) x86_64 $(in) $(out)",
 }
diff --git a/libm/NOTICE b/libm/NOTICE
index 64d253a..bce49ad 100644
--- a/libm/NOTICE
+++ b/libm/NOTICE
@@ -309,6 +309,34 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 1985, 1993
    The Regents of the University of California.  All rights reserved.
 
diff --git a/libm/arm64/fenv.c b/libm/arm64/fenv.c
index a99288b..0f28d0c 100644
--- a/libm/arm64/fenv.c
+++ b/libm/arm64/fenv.c
@@ -59,7 +59,6 @@
 
 int fesetenv(const fenv_t* envp) {
   fpu_control_t fpcr;
-
   __get_fpcr(fpcr);
   if (envp->__control != fpcr) {
     __set_fpcr(envp->__control);
@@ -70,27 +69,22 @@
 
 int feclearexcept(int excepts) {
   fpu_status_t fpsr;
-
-  excepts &= FE_ALL_EXCEPT;
   __get_fpsr(fpsr);
-  fpsr &= ~excepts;
+  fpsr &= ~(excepts & FE_ALL_EXCEPT);
   __set_fpsr(fpsr);
   return 0;
 }
 
 int fegetexceptflag(fexcept_t* flagp, int excepts) {
   fpu_status_t fpsr;
-
-  excepts &= FE_ALL_EXCEPT;
   __get_fpsr(fpsr);
-  *flagp = fpsr & excepts;
+  *flagp = fpsr & (excepts & FE_ALL_EXCEPT);
   return 0;
 }
 
 int fesetexceptflag(const fexcept_t* flagp, int excepts) {
-  fpu_status_t fpsr;
-
   excepts &= FE_ALL_EXCEPT;
+  fpu_status_t fpsr;
   __get_fpsr(fpsr);
   fpsr &= ~excepts;
   fpsr |= *flagp & excepts;
@@ -100,32 +94,27 @@
 
 int feraiseexcept(int excepts) {
   fexcept_t ex = excepts;
-
   fesetexceptflag(&ex, excepts);
   return 0;
 }
 
 int fetestexcept(int excepts) {
   fpu_status_t fpsr;
-
-  excepts &= FE_ALL_EXCEPT;
   __get_fpsr(fpsr);
-  return (fpsr & excepts);
+  return (fpsr & (excepts & FE_ALL_EXCEPT));
 }
 
 int fegetround(void) {
   fpu_control_t fpcr;
-
   __get_fpcr(fpcr);
   return ((fpcr >> FPCR_RMODE_SHIFT) & FE_TOWARDZERO);
 }
 
 int fesetround(int round) {
-  fpu_control_t fpcr, new_fpcr;
-
-  round &= FE_TOWARDZERO;
+  if (round < FE_TONEAREST || round > FE_TOWARDZERO) return -1;
+  fpu_control_t fpcr;
   __get_fpcr(fpcr);
-  new_fpcr = fpcr & ~(FE_TOWARDZERO << FPCR_RMODE_SHIFT);
+  fpu_control_t new_fpcr = fpcr & ~(FE_TOWARDZERO << FPCR_RMODE_SHIFT);
   new_fpcr |= (round << FPCR_RMODE_SHIFT);
   if (new_fpcr != fpcr) {
     __set_fpcr(new_fpcr);
@@ -134,33 +123,15 @@
 }
 
 int feholdexcept(fenv_t* envp) {
-  fpu_status_t fpsr;
-  __get_fpsr(fpsr);
-  fpu_control_t fpcr;
-  __get_fpcr(fpcr);
-  fenv_t env = { .__status = fpsr, .__control = fpcr };
-  *envp = env;
-
-  // Clear all exceptions.
-  fpsr &= ~FE_ALL_EXCEPT;
-  __set_fpsr(fpsr);
+  fegetenv(envp);
+  feclearexcept(FE_ALL_EXCEPT);
   return 0;
 }
 
 int feupdateenv(const fenv_t* envp) {
-  fpu_status_t fpsr;
-  fpu_control_t fpcr;
-
-  // Set FPU Control register.
-  __get_fpcr(fpcr);
-  if (envp->__control != fpcr) {
-    __set_fpcr(envp->__control);
-  }
-
-  // Set FPU Status register to status | currently raised exceptions.
-  __get_fpsr(fpsr);
-  fpsr = envp->__status | (fpsr & FE_ALL_EXCEPT);
-  __set_fpsr(fpsr);
+  int excepts = fetestexcept(FE_ALL_EXCEPT);
+  fesetenv(envp);
+  feraiseexcept(excepts);
   return 0;
 }
 
diff --git a/libm/builtins.cpp b/libm/builtins.cpp
index 3b9228c..58cd81d 100644
--- a/libm/builtins.cpp
+++ b/libm/builtins.cpp
@@ -18,40 +18,26 @@
 
 #include "fpmath.h"
 
-double fabs(double x) {
-#if __arm__
-  // Both Clang and GCC insist on moving r0/r1 into a double register
-  // and using fabs where bit-twiddling would be a better choice.
-  // They get fabsf right, but we need to be careful in fabsl too.
-  IEEEd2bits u;
-  u.d = x;
-  u.bits.sign = 0;
-  return u.d;
-#else
-  return __builtin_fabs(x);
-#endif
-}
-
-float fabsf(float x) {
-  return __builtin_fabsf(x);
-}
-
-#if defined(__LP64__)
+double fabs(double x) { return __builtin_fabs(x); }
+float fabsf(float x) { return __builtin_fabsf(x); }
 long double fabsl(long double x) { return __builtin_fabsl(x); }
-#else
-long double fabsl(long double x) {
-  // Don't use __builtin_fabs here because of ARM. (See fabs above.)
-  return fabs(x);
-}
-#endif
 
 #if defined(__aarch64__)
 float ceilf(float x) { return __builtin_ceilf(x); }
 double ceil(double x) { return __builtin_ceil(x); }
+#endif
 
+#if defined(__aarch64__) || defined(__riscv)
+double copysign(double x, double y) { return __builtin_copysign(x, y); }
+float copysignf(float x, float y) { return __builtin_copysignf(x, y); }
+#endif
+
+#if defined(__aarch64__)
 float floorf(float x) { return __builtin_floorf(x); }
 double floor(double x) { return __builtin_floor(x); }
+#endif
 
+#if defined(__aarch64__) || defined(__riscv)
 float fmaf(float x, float y, float z) { return __builtin_fmaf(x, y, z); }
 double fma(double x, double y, double z) { return __builtin_fma(x, y, z); }
 
@@ -61,6 +47,13 @@
 float fminf(float x, float y) { return __builtin_fminf(x, y); }
 double fmin(double x, double y) { return __builtin_fmin(x, y); }
 
+long lround(double x) { return __builtin_lround(x); }
+long lroundf(float x) { return __builtin_lroundf(x); }
+long long llround(double x) { return __builtin_llround(x); }
+long long llroundf(float x) { return __builtin_llroundf(x); }
+#endif
+
+#if defined(__aarch64__)
 float rintf(float x) { return __builtin_rintf(x); }
 double rint(double x) { return __builtin_rint(x); }
 
diff --git a/libm/riscv64/fenv.c b/libm/riscv64/fenv.c
new file mode 100644
index 0000000..f16e5a9
--- /dev/null
+++ b/libm/riscv64/fenv.c
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <fenv.h>
+#include <stdint.h>
+
+const fenv_t __fe_dfl_env = 0;
+
+int fegetenv(fenv_t* envp) {
+  __asm__ __volatile__("frcsr %0" : "=r"(*envp));
+  return 0;
+}
+
+int fesetenv(const fenv_t* envp) {
+  fenv_t env;
+  fegetenv(&env);
+  if (*envp != env) {
+    __asm__ __volatile__("fscsr %z0" : : "r"(*envp));
+  }
+  return 0;
+}
+
+int feclearexcept(int excepts) {
+  __asm__ __volatile__("csrc fflags, %0" : : "r"(excepts & FE_ALL_EXCEPT));
+  return 0;
+}
+
+int fegetexceptflag(fexcept_t* flagp, int excepts) {
+  *flagp = fetestexcept(excepts & FE_ALL_EXCEPT);
+  return 0;
+}
+
+int fesetexceptflag(const fexcept_t* flagp, int excepts) {
+  feclearexcept((~*flagp) & excepts);
+  feraiseexcept(*flagp & excepts);
+  return 0;
+}
+
+int feraiseexcept(int excepts) {
+  __asm__ __volatile__("csrs fflags, %0" : : "r"(excepts));
+  return 0;
+}
+
+int fetestexcept(int excepts) {
+  int flags;
+  __asm__ __volatile__("frflags %0" : "=r"(flags));
+  return flags & excepts;
+}
+
+int fegetround(void) {
+  int rm;
+  __asm__ __volatile__("frrm %0" : "=r"(rm));
+  return rm;
+}
+
+int fesetround(int round) {
+  if (round < FE_TONEAREST || round > FE_UPWARD) return -1;
+  __asm__ __volatile__("fsrm %z0" : : "r"(round));
+  return 0;
+}
+
+int feholdexcept(fenv_t* envp) {
+  fegetenv(envp);
+  feclearexcept(FE_ALL_EXCEPT);
+  return 0;
+}
+
+int feupdateenv(const fenv_t* envp) {
+  int excepts = fetestexcept(FE_ALL_EXCEPT);
+  fesetenv(envp);
+  feraiseexcept(excepts);
+  return 0;
+}
+
+int feenableexcept(int mask __unused) {
+  return -1;
+}
+
+int fedisableexcept(int mask __unused) {
+  return 0;
+}
+
+int fegetexcept(void) {
+  return 0;
+}
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libm/riscv64/lrint.S
similarity index 82%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to libm/riscv64/lrint.S
index bc1945c..eb13833 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libm/riscv64/lrint.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,19 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(lrint)
+  fcvt.l.d a0, fa0, dyn
+  ret
+END(lrint)
 
-NOTE_GNU_PROPERTY()
+ENTRY(lrintf)
+  fcvt.l.s a0, fa0, dyn
+  ret
+END(lrintf)
+
+// sizeof(long) and sizeof(long long) are the same for riscv64
+ALIAS_SYMBOL(llrint, lrint);
+
+ALIAS_SYMBOL(llrintf, lrintf);
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libm/riscv64/sqrt.S
similarity index 86%
rename from libc/arch-arm64/generic/bionic/memcpy.S
rename to libm/riscv64/sqrt.S
index bc1945c..0db1335 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libm/riscv64/sqrt.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,14 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(sqrt)
+  fsqrt.d fa0, fa0
+  ret
+END(sqrt)
 
-NOTE_GNU_PROPERTY()
+ENTRY(sqrtf)
+  fsqrt.s fa0, fa0
+  ret
+END(sqrtf)
diff --git a/libm/upstream-freebsd/lib/msun/src/e_sqrt.c b/libm/upstream-freebsd/lib/msun/src/e_sqrt.c
deleted file mode 100644
index 37351a4..0000000
--- a/libm/upstream-freebsd/lib/msun/src/e_sqrt.c
+++ /dev/null
@@ -1,459 +0,0 @@
-
-/* @(#)e_sqrt.c 1.3 95/01/18 */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
- * is preserved.
- * ====================================================
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <float.h>
-
-#include "math.h"
-#include "math_private.h"
-
-#ifdef USE_BUILTIN_SQRT
-double
-__ieee754_sqrt(double x)
-{
-	return (__builtin_sqrt(x));
-}
-#else
-/* __ieee754_sqrt(x)
- * Return correctly rounded sqrt.
- *           ------------------------------------------
- *	     |  Use the hardware sqrt if you have one |
- *           ------------------------------------------
- * Method: 
- *   Bit by bit method using integer arithmetic. (Slow, but portable) 
- *   1. Normalization
- *	Scale x to y in [1,4) with even powers of 2: 
- *	find an integer k such that  1 <= (y=x*2^(2k)) < 4, then
- *		sqrt(x) = 2^k * sqrt(y)
- *   2. Bit by bit computation
- *	Let q  = sqrt(y) truncated to i bit after binary point (q = 1),
- *	     i							 0
- *                                     i+1         2
- *	    s  = 2*q , and	y  =  2   * ( y - q  ).		(1)
- *	     i      i            i                 i
- *                                                        
- *	To compute q    from q , one checks whether 
- *		    i+1       i                       
- *
- *			      -(i+1) 2
- *			(q + 2      ) <= y.			(2)
- *     			  i
- *							      -(i+1)
- *	If (2) is false, then q   = q ; otherwise q   = q  + 2      .
- *		 	       i+1   i             i+1   i
- *
- *	With some algebric manipulation, it is not difficult to see
- *	that (2) is equivalent to 
- *                             -(i+1)
- *			s  +  2       <= y			(3)
- *			 i                i
- *
- *	The advantage of (3) is that s  and y  can be computed by 
- *				      i      i
- *	the following recurrence formula:
- *	    if (3) is false
- *
- *	    s     =  s  ,	y    = y   ;			(4)
- *	     i+1      i		 i+1    i
- *
- *	    otherwise,
- *                         -i                     -(i+1)
- *	    s	  =  s  + 2  ,  y    = y  -  s  - 2  		(5)
- *           i+1      i          i+1    i     i
- *				
- *	One may easily use induction to prove (4) and (5). 
- *	Note. Since the left hand side of (3) contain only i+2 bits,
- *	      it does not necessary to do a full (53-bit) comparison 
- *	      in (3).
- *   3. Final rounding
- *	After generating the 53 bits result, we compute one more bit.
- *	Together with the remainder, we can decide whether the
- *	result is exact, bigger than 1/2ulp, or less than 1/2ulp
- *	(it will never equal to 1/2ulp).
- *	The rounding mode can be detected by checking whether
- *	huge + tiny is equal to huge, and whether huge - tiny is
- *	equal to huge for some floating point number "huge" and "tiny".
- *		
- * Special cases:
- *	sqrt(+-0) = +-0 	... exact
- *	sqrt(inf) = inf
- *	sqrt(-ve) = NaN		... with invalid signal
- *	sqrt(NaN) = NaN		... with invalid signal for signaling NaN
- *
- * Other methods : see the appended file at the end of the program below.
- *---------------
- */
-
-static	const double	one	= 1.0, tiny=1.0e-300;
-
-double
-__ieee754_sqrt(double x)
-{
-	double z;
-	int32_t sign = (int)0x80000000;
-	int32_t ix0,s0,q,m,t,i;
-	u_int32_t r,t1,s1,ix1,q1;
-
-	EXTRACT_WORDS(ix0,ix1,x);
-
-    /* take care of Inf and NaN */
-	if((ix0&0x7ff00000)==0x7ff00000) {			
-	    return x*x+x;		/* sqrt(NaN)=NaN, sqrt(+inf)=+inf
-					   sqrt(-inf)=sNaN */
-	} 
-    /* take care of zero */
-	if(ix0<=0) {
-	    if(((ix0&(~sign))|ix1)==0) return x;/* sqrt(+-0) = +-0 */
-	    else if(ix0<0)
-		return (x-x)/(x-x);		/* sqrt(-ve) = sNaN */
-	}
-    /* normalize x */
-	m = (ix0>>20);
-	if(m==0) {				/* subnormal x */
-	    while(ix0==0) {
-		m -= 21;
-		ix0 |= (ix1>>11); ix1 <<= 21;
-	    }
-	    for(i=0;(ix0&0x00100000)==0;i++) ix0<<=1;
-	    m -= i-1;
-	    ix0 |= (ix1>>(32-i));
-	    ix1 <<= i;
-	}
-	m -= 1023;	/* unbias exponent */
-	ix0 = (ix0&0x000fffff)|0x00100000;
-	if(m&1){	/* odd m, double x to make it even */
-	    ix0 += ix0 + ((ix1&sign)>>31);
-	    ix1 += ix1;
-	}
-	m >>= 1;	/* m = [m/2] */
-
-    /* generate sqrt(x) bit by bit */
-	ix0 += ix0 + ((ix1&sign)>>31);
-	ix1 += ix1;
-	q = q1 = s0 = s1 = 0;	/* [q,q1] = sqrt(x) */
-	r = 0x00200000;		/* r = moving bit from right to left */
-
-	while(r!=0) {
-	    t = s0+r; 
-	    if(t<=ix0) { 
-		s0   = t+r; 
-		ix0 -= t; 
-		q   += r; 
-	    } 
-	    ix0 += ix0 + ((ix1&sign)>>31);
-	    ix1 += ix1;
-	    r>>=1;
-	}
-
-	r = sign;
-	while(r!=0) {
-	    t1 = s1+r; 
-	    t  = s0;
-	    if((t<ix0)||((t==ix0)&&(t1<=ix1))) { 
-		s1  = t1+r;
-		if(((t1&sign)==sign)&&(s1&sign)==0) s0 += 1;
-		ix0 -= t;
-		if (ix1 < t1) ix0 -= 1;
-		ix1 -= t1;
-		q1  += r;
-	    }
-	    ix0 += ix0 + ((ix1&sign)>>31);
-	    ix1 += ix1;
-	    r>>=1;
-	}
-
-    /* use floating add to find out rounding direction */
-	if((ix0|ix1)!=0) {
-	    z = one-tiny; /* trigger inexact flag */
-	    if (z>=one) {
-	        z = one+tiny;
-	        if (q1==(u_int32_t)0xffffffff) { q1=0; q += 1;}
-		else if (z>one) {
-		    if (q1==(u_int32_t)0xfffffffe) q+=1;
-		    q1+=2; 
-		} else
-	            q1 += (q1&1);
-	    }
-	}
-	ix0 = (q>>1)+0x3fe00000;
-	ix1 =  q1>>1;
-	if ((q&1)==1) ix1 |= sign;
-	ix0 += (m <<20);
-	INSERT_WORDS(z,ix0,ix1);
-	return z;
-}
-#endif
-
-#if (LDBL_MANT_DIG == 53)
-__weak_reference(sqrt, sqrtl);
-#endif
-
-/*
-Other methods  (use floating-point arithmetic)
--------------
-(This is a copy of a drafted paper by Prof W. Kahan 
-and K.C. Ng, written in May, 1986)
-
-	Two algorithms are given here to implement sqrt(x) 
-	(IEEE double precision arithmetic) in software.
-	Both supply sqrt(x) correctly rounded. The first algorithm (in
-	Section A) uses newton iterations and involves four divisions.
-	The second one uses reciproot iterations to avoid division, but
-	requires more multiplications. Both algorithms need the ability
-	to chop results of arithmetic operations instead of round them, 
-	and the INEXACT flag to indicate when an arithmetic operation
-	is executed exactly with no roundoff error, all part of the 
-	standard (IEEE 754-1985). The ability to perform shift, add,
-	subtract and logical AND operations upon 32-bit words is needed
-	too, though not part of the standard.
-
-A.  sqrt(x) by Newton Iteration
-
-   (1)	Initial approximation
-
-	Let x0 and x1 be the leading and the trailing 32-bit words of
-	a floating point number x (in IEEE double format) respectively 
-
-	    1    11		     52				  ...widths
-	   ------------------------------------------------------
-	x: |s|	  e     |	      f				|
-	   ------------------------------------------------------
-	      msb    lsb  msb				      lsb ...order
-
- 
-	     ------------------------  	     ------------------------
-	x0:  |s|   e    |    f1     |	 x1: |          f2           |
-	     ------------------------  	     ------------------------
-
-	By performing shifts and subtracts on x0 and x1 (both regarded
-	as integers), we obtain an 8-bit approximation of sqrt(x) as
-	follows.
-
-		k  := (x0>>1) + 0x1ff80000;
-		y0 := k - T1[31&(k>>15)].	... y ~ sqrt(x) to 8 bits
-	Here k is a 32-bit integer and T1[] is an integer array containing
-	correction terms. Now magically the floating value of y (y's
-	leading 32-bit word is y0, the value of its trailing word is 0)
-	approximates sqrt(x) to almost 8-bit.
-
-	Value of T1:
-	static int T1[32]= {
-	0,	1024,	3062,	5746,	9193,	13348,	18162,	23592,
-	29598,	36145,	43202,	50740,	58733,	67158,	75992,	85215,
-	83599,	71378,	60428,	50647,	41945,	34246,	27478,	21581,
-	16499,	12183,	8588,	5674,	3403,	1742,	661,	130,};
-
-    (2)	Iterative refinement
-
-	Apply Heron's rule three times to y, we have y approximates 
-	sqrt(x) to within 1 ulp (Unit in the Last Place):
-
-		y := (y+x/y)/2		... almost 17 sig. bits
-		y := (y+x/y)/2		... almost 35 sig. bits
-		y := y-(y-x/y)/2	... within 1 ulp
-
-
-	Remark 1.
-	    Another way to improve y to within 1 ulp is:
-
-		y := (y+x/y)		... almost 17 sig. bits to 2*sqrt(x)
-		y := y - 0x00100006	... almost 18 sig. bits to sqrt(x)
-
-				2
-			    (x-y )*y
-		y := y + 2* ----------	...within 1 ulp
-			       2
-			     3y  + x
-
-
-	This formula has one division fewer than the one above; however,
-	it requires more multiplications and additions. Also x must be
-	scaled in advance to avoid spurious overflow in evaluating the
-	expression 3y*y+x. Hence it is not recommended uless division
-	is slow. If division is very slow, then one should use the 
-	reciproot algorithm given in section B.
-
-    (3) Final adjustment
-
-	By twiddling y's last bit it is possible to force y to be 
-	correctly rounded according to the prevailing rounding mode
-	as follows. Let r and i be copies of the rounding mode and
-	inexact flag before entering the square root program. Also we
-	use the expression y+-ulp for the next representable floating
-	numbers (up and down) of y. Note that y+-ulp = either fixed
-	point y+-1, or multiply y by nextafter(1,+-inf) in chopped
-	mode.
-
-		I := FALSE;	... reset INEXACT flag I
-		R := RZ;	... set rounding mode to round-toward-zero
-		z := x/y;	... chopped quotient, possibly inexact
-		If(not I) then {	... if the quotient is exact
-		    if(z=y) {
-		        I := i;	 ... restore inexact flag
-		        R := r;  ... restore rounded mode
-		        return sqrt(x):=y.
-		    } else {
-			z := z - ulp;	... special rounding
-		    }
-		}
-		i := TRUE;		... sqrt(x) is inexact
-		If (r=RN) then z=z+ulp	... rounded-to-nearest
-		If (r=RP) then {	... round-toward-+inf
-		    y = y+ulp; z=z+ulp;
-		}
-		y := y+z;		... chopped sum
-		y0:=y0-0x00100000;	... y := y/2 is correctly rounded.
-	        I := i;	 		... restore inexact flag
-	        R := r;  		... restore rounded mode
-	        return sqrt(x):=y.
-		    
-    (4)	Special cases
-
-	Square root of +inf, +-0, or NaN is itself;
-	Square root of a negative number is NaN with invalid signal.
-
-
-B.  sqrt(x) by Reciproot Iteration
-
-   (1)	Initial approximation
-
-	Let x0 and x1 be the leading and the trailing 32-bit words of
-	a floating point number x (in IEEE double format) respectively
-	(see section A). By performing shifs and subtracts on x0 and y0,
-	we obtain a 7.8-bit approximation of 1/sqrt(x) as follows.
-
-	    k := 0x5fe80000 - (x0>>1);
-	    y0:= k - T2[63&(k>>14)].	... y ~ 1/sqrt(x) to 7.8 bits
-
-	Here k is a 32-bit integer and T2[] is an integer array 
-	containing correction terms. Now magically the floating
-	value of y (y's leading 32-bit word is y0, the value of
-	its trailing word y1 is set to zero) approximates 1/sqrt(x)
-	to almost 7.8-bit.
-
-	Value of T2:
-	static int T2[64]= {
-	0x1500,	0x2ef8,	0x4d67,	0x6b02,	0x87be,	0xa395,	0xbe7a,	0xd866,
-	0xf14a,	0x1091b,0x11fcd,0x13552,0x14999,0x15c98,0x16e34,0x17e5f,
-	0x18d03,0x19a01,0x1a545,0x1ae8a,0x1b5c4,0x1bb01,0x1bfde,0x1c28d,
-	0x1c2de,0x1c0db,0x1ba73,0x1b11c,0x1a4b5,0x1953d,0x18266,0x16be0,
-	0x1683e,0x179d8,0x18a4d,0x19992,0x1a789,0x1b445,0x1bf61,0x1c989,
-	0x1d16d,0x1d77b,0x1dddf,0x1e2ad,0x1e5bf,0x1e6e8,0x1e654,0x1e3cd,
-	0x1df2a,0x1d635,0x1cb16,0x1be2c,0x1ae4e,0x19bde,0x1868e,0x16e2e,
-	0x1527f,0x1334a,0x11051,0xe951,	0xbe01,	0x8e0d,	0x5924,	0x1edd,};
-
-    (2)	Iterative refinement
-
-	Apply Reciproot iteration three times to y and multiply the
-	result by x to get an approximation z that matches sqrt(x)
-	to about 1 ulp. To be exact, we will have 
-		-1ulp < sqrt(x)-z<1.0625ulp.
-	
-	... set rounding mode to Round-to-nearest
-	   y := y*(1.5-0.5*x*y*y)	... almost 15 sig. bits to 1/sqrt(x)
-	   y := y*((1.5-2^-30)+0.5*x*y*y)... about 29 sig. bits to 1/sqrt(x)
-	... special arrangement for better accuracy
-	   z := x*y			... 29 bits to sqrt(x), with z*y<1
-	   z := z + 0.5*z*(1-z*y)	... about 1 ulp to sqrt(x)
-
-	Remark 2. The constant 1.5-2^-30 is chosen to bias the error so that
-	(a) the term z*y in the final iteration is always less than 1; 
-	(b) the error in the final result is biased upward so that
-		-1 ulp < sqrt(x) - z < 1.0625 ulp
-	    instead of |sqrt(x)-z|<1.03125ulp.
-
-    (3)	Final adjustment
-
-	By twiddling y's last bit it is possible to force y to be 
-	correctly rounded according to the prevailing rounding mode
-	as follows. Let r and i be copies of the rounding mode and
-	inexact flag before entering the square root program. Also we
-	use the expression y+-ulp for the next representable floating
-	numbers (up and down) of y. Note that y+-ulp = either fixed
-	point y+-1, or multiply y by nextafter(1,+-inf) in chopped
-	mode.
-
-	R := RZ;		... set rounding mode to round-toward-zero
-	switch(r) {
-	    case RN:		... round-to-nearest
-	       if(x<= z*(z-ulp)...chopped) z = z - ulp; else
-	       if(x<= z*(z+ulp)...chopped) z = z; else z = z+ulp;
-	       break;
-	    case RZ:case RM:	... round-to-zero or round-to--inf
-	       R:=RP;		... reset rounding mod to round-to-+inf
-	       if(x<z*z ... rounded up) z = z - ulp; else
-	       if(x>=(z+ulp)*(z+ulp) ...rounded up) z = z+ulp;
-	       break;
-	    case RP:		... round-to-+inf
-	       if(x>(z+ulp)*(z+ulp)...chopped) z = z+2*ulp; else
-	       if(x>z*z ...chopped) z = z+ulp;
-	       break;
-	}
-
-	Remark 3. The above comparisons can be done in fixed point. For
-	example, to compare x and w=z*z chopped, it suffices to compare
-	x1 and w1 (the trailing parts of x and w), regarding them as
-	two's complement integers.
-
-	...Is z an exact square root?
-	To determine whether z is an exact square root of x, let z1 be the
-	trailing part of z, and also let x0 and x1 be the leading and
-	trailing parts of x.
-
-	If ((z1&0x03ffffff)!=0)	... not exact if trailing 26 bits of z!=0
-	    I := 1;		... Raise Inexact flag: z is not exact
-	else {
-	    j := 1 - [(x0>>20)&1]	... j = logb(x) mod 2
-	    k := z1 >> 26;		... get z's 25-th and 26-th 
-					    fraction bits
-	    I := i or (k&j) or ((k&(j+j+1))!=(x1&3));
-	}
-	R:= r		... restore rounded mode
-	return sqrt(x):=z.
-
-	If multiplication is cheaper then the foregoing red tape, the 
-	Inexact flag can be evaluated by
-
-	    I := i;
-	    I := (z*z!=x) or I.
-
-	Note that z*z can overwrite I; this value must be sensed if it is 
-	True.
-
-	Remark 4. If z*z = x exactly, then bit 25 to bit 0 of z1 must be
-	zero.
-
-		    --------------------
-		z1: |        f2        | 
-		    --------------------
-		bit 31		   bit 0
-
-	Further more, bit 27 and 26 of z1, bit 0 and 1 of x1, and the odd
-	or even of logb(x) have the following relations:
-
-	-------------------------------------------------
-	bit 27,26 of z1		bit 1,0 of x1	logb(x)
-	-------------------------------------------------
-	00			00		odd and even
-	01			01		even
-	10			10		odd
-	10			00		even
-	11			01		even
-	-------------------------------------------------
-
-    (4)	Special cases (see (4) of Section A).	
- 
- */
- 
diff --git a/libm/upstream-freebsd/lib/msun/src/e_sqrtf.c b/libm/upstream-freebsd/lib/msun/src/e_sqrtf.c
deleted file mode 100644
index 06e5d62..0000000
--- a/libm/upstream-freebsd/lib/msun/src/e_sqrtf.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* e_sqrtf.c -- float version of e_sqrt.c.
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-#ifndef lint
-static char rcsid[] = "$FreeBSD$";
-#endif
-
-#include "math.h"
-#include "math_private.h"
-
-#ifdef USE_BUILTIN_SQRTF
-float
-__ieee754_sqrtf(float x)
-{
-	return (__builtin_sqrtf(x));
-}
-#else
-static	const float	one	= 1.0, tiny=1.0e-30;
-
-float
-__ieee754_sqrtf(float x)
-{
-	float z;
-	int32_t sign = (int)0x80000000;
-	int32_t ix,s,q,m,t,i;
-	u_int32_t r;
-
-	GET_FLOAT_WORD(ix,x);
-
-    /* take care of Inf and NaN */
-	if((ix&0x7f800000)==0x7f800000) {
-	    return x*x+x;		/* sqrt(NaN)=NaN, sqrt(+inf)=+inf
-					   sqrt(-inf)=sNaN */
-	}
-    /* take care of zero */
-	if(ix<=0) {
-	    if((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */
-	    else if(ix<0)
-		return (x-x)/(x-x);		/* sqrt(-ve) = sNaN */
-	}
-    /* normalize x */
-	m = (ix>>23);
-	if(m==0) {				/* subnormal x */
-	    for(i=0;(ix&0x00800000)==0;i++) ix<<=1;
-	    m -= i-1;
-	}
-	m -= 127;	/* unbias exponent */
-	ix = (ix&0x007fffff)|0x00800000;
-	if(m&1)	/* odd m, double x to make it even */
-	    ix += ix;
-	m >>= 1;	/* m = [m/2] */
-
-    /* generate sqrt(x) bit by bit */
-	ix += ix;
-	q = s = 0;		/* q = sqrt(x) */
-	r = 0x01000000;		/* r = moving bit from right to left */
-
-	while(r!=0) {
-	    t = s+r;
-	    if(t<=ix) {
-		s    = t+r;
-		ix  -= t;
-		q   += r;
-	    }
-	    ix += ix;
-	    r>>=1;
-	}
-
-    /* use floating add to find out rounding direction */
-	if(ix!=0) {
-	    z = one-tiny; /* trigger inexact flag */
-	    if (z>=one) {
-	        z = one+tiny;
-		if (z>one)
-		    q += 2;
-		else
-		    q += (q&1);
-	    }
-	}
-	ix = (q>>1)+0x3f000000;
-	ix += (m <<23);
-	SET_FLOAT_WORD(z,ix);
-	return z;
-}
-#endif
diff --git a/libm/upstream-freebsd/lib/msun/src/math_private.h b/libm/upstream-freebsd/lib/msun/src/math_private.h
index b91b54c..df526e7 100644
--- a/libm/upstream-freebsd/lib/msun/src/math_private.h
+++ b/libm/upstream-freebsd/lib/msun/src/math_private.h
@@ -460,7 +460,7 @@
  * or by having |c| a few percent smaller than |a|.  Pre-normalization of
  * (a, b) may help.
  *
- * This is is a variant of an algorithm of Kahan (see Knuth (1981) 4.2.2
+ * This is a variant of an algorithm of Kahan (see Knuth (1981) 4.2.2
  * exercise 19).  We gain considerable efficiency by requiring the terms to
  * be sufficiently normalized and sufficiently increasing.
  */
@@ -644,7 +644,7 @@
  * return type provided their arg is a floating point integer.  They can
  * sometimes be more efficient because no rounding is required.
  */
-#if (defined(amd64) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
+#if defined(amd64) || defined(__i386__)
 #define	irint(x)						\
     (sizeof(x) == sizeof(float) &&				\
     sizeof(__float_t) == sizeof(long double) ? irintf(x) :	\
@@ -657,7 +657,7 @@
 
 #define	i64rint(x)	((int64_t)(x))	/* only needed for ld128 so not opt. */
 
-#if defined(__i386__) && defined(__GNUCLIKE_ASM)
+#if defined(__i386__)
 static __inline int
 irintf(float x)
 {
@@ -677,7 +677,7 @@
 }
 #endif
 
-#if (defined(__amd64__) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
+#if defined(__amd64__) || defined(__i386__)
 static __inline int
 irintl(long double x)
 {
diff --git a/libm/upstream-freebsd/lib/msun/src/w_cabsf.c b/libm/upstream-freebsd/lib/msun/src/w_cabsf.c
index e7bfe22..b5065c8 100644
--- a/libm/upstream-freebsd/lib/msun/src/w_cabsf.c
+++ b/libm/upstream-freebsd/lib/msun/src/w_cabsf.c
@@ -15,8 +15,7 @@
 #include "math_private.h"
 
 float
-cabsf(z)
-	float complex z;
+cabsf(float complex z)
 {
 
 	return hypotf(crealf(z), cimagf(z));
diff --git a/libm/upstream-freebsd/lib/msun/src/w_drem.c b/libm/upstream-freebsd/lib/msun/src/w_drem.c
index 0f68409..74008a5 100644
--- a/libm/upstream-freebsd/lib/msun/src/w_drem.c
+++ b/libm/upstream-freebsd/lib/msun/src/w_drem.c
@@ -8,8 +8,7 @@
 #include <math.h>
 
 double
-drem(x, y)
-	double x, y;
+drem(double x, double y)
 {
 	return remainder(x, y);
 }
diff --git a/libm/x86/e_acos.S b/libm/x86/e_acos.S
deleted file mode 100644
index 04b1787..0000000
--- a/libm/x86/e_acos.S
+++ /dev/null
@@ -1,1929 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  To compute acos(s), separate schemes are used when s is in different
-//  intervals.
-//
-//  |s| in [2^{-4}, sqrt(3)/2):
-//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-//       For the first degree term, r is evaluated as
-//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-//       (sqrt(1-t^2) read from table)
-//  The main source of error is still R (may still be affected by up to 3 ulps
-//  of rounding error). The table size must be sufficiently large, to minimize
-//  this effect.
-//
-//  |s| in [sqrt(3)/2, 255/256):
-//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-//   acos(-|s|)=pi-acos(|s|)
-//       (The -PI constant, or 0, is added to the result. The sign is set at
-//        the end)
-//       asin(r) evaluated as a polynomial (same as above)
-//       The first degree term is evaluated as
-//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
-//              evaluate asin(s) as 13-degree polynomial
-//
-//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
-//  asin(q) is evaluated as 13-degree polynomial
-//      q^2=(1-|s|)/2 is obtained in advance
-//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
-//   acos(-|s|)=pi-acos(|s|)
-//       (The -PI constant, or 0, is added to the result. The sign is set at
-//        the end)
-//
-// Special cases:
-//  acos(NaN) = quiet NaN, and raise invalid exception
-//  acos(INF) = QNaN and raise invalid exception
-//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
-//  acos(1) = +0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function	
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret       
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  acos
-ENTRY(acos)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 48(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        movsd     6048(%ebx), %xmm4
-        movsd     6080(%ebx), %xmm3
-        xorpd     %xmm5, %xmm5
-        movsd     6064(%ebx), %xmm2
-        movapd    %xmm0, %xmm1
-        movsd     %xmm0, 8(%esp)
-        psrlq     $44, %xmm0
-        movd      %xmm0, %edx
-        movapd    %xmm1, %xmm7
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movapd    %xmm1, %xmm0
-        movl      $524287, %eax
-        andl      %edx, %eax
-        subl      $260864, %eax
-        cmpl      $955, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        mulsd     %xmm1, %xmm1
-        andl      $65535, %edx
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andpd     %xmm7, %xmm2
-        andl      $-4, %edx
-        subl      $64256, %edx
-        movsd     3840(%ebx,%edx,2), %xmm1
-        orpd      %xmm5, %xmm2
-        movapd    (%ebx,%edx,4), %xmm4
-        movapd    %xmm7, %xmm6
-        addsd     %xmm2, %xmm7
-        subsd     %xmm2, %xmm0
-        mulsd     %xmm0, %xmm7
-        mulsd     %xmm1, %xmm6
-        mulsd     %xmm2, %xmm3
-        movapd    %xmm6, %xmm1
-        addsd     %xmm3, %xmm6
-        divsd     %xmm6, %xmm7
-        movsd     5976(%ebx), %xmm0
-        movsd     5960(%ebx), %xmm5
-        subsd     %xmm3, %xmm1
-        psrlq     $63, %xmm2
-        movapd    %xmm1, %xmm3
-        psllq     $63, %xmm2
-        mulsd     %xmm1, %xmm1
-        pshufd    $68, %xmm2, %xmm2
-        movsd     5968(%ebx), %xmm6
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm4
-        mulsd     %xmm3, %xmm5
-        subpd     5888(%ebx), %xmm4
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm3, %xmm0
-        subsd     %xmm4, %xmm5
-        pshufd    $238, %xmm4, %xmm4
-        addsd     %xmm5, %xmm0
-        subsd     %xmm7, %xmm0
-        subsd     %xmm4, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        subl      $955, %eax
-        cmpl      $65, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        psrlq     $38, %xmm7
-        psllq     $38, %xmm7
-        pmovmskb  %xmm0, %eax
-        andnpd    %xmm0, %xmm4
-        subsd     %xmm7, %xmm1
-        movapd    %xmm7, %xmm6
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm6, %xmm0
-        orpd      %xmm4, %xmm5
-        subsd     %xmm7, %xmm3
-        mulsd     %xmm1, %xmm0
-        movapd    %xmm3, %xmm4
-        subsd     %xmm0, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andl      $128, %eax
-        shrl      $7, %eax
-        negl      %eax
-        movapd    %xmm3, %xmm7
-        andpd     %xmm3, %xmm2
-        psllq     $2, %xmm3
-        pextrw    $3, %xmm3, %edx
-        orpd      %xmm5, %xmm2
-        movd      %eax, %xmm3
-        pshufd    $0, %xmm3, %xmm3
-        subl      $65216, %edx
-        addl      %edx, %edx
-        mulsd     3840(%ebx,%edx,4), %xmm7
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm2, %xmm2
-        subsd     %xmm7, %xmm6
-        andpd     5904(%ebx), %xmm3
-        addsd     %xmm1, %xmm6
-        subsd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm7
-        movsd     5960(%ebx), %xmm5
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm7
-        movsd     5976(%ebx), %xmm0
-        divsd     %xmm7, %xmm4
-        movsd     5968(%ebx), %xmm2
-        addpd     (%ebx,%edx,8), %xmm3
-        movapd    %xmm6, %xmm1
-        mulsd     %xmm6, %xmm6
-        mulsd     %xmm6, %xmm0
-        mulsd     %xmm6, %xmm1
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm6, %xmm1
-        addsd     %xmm2, %xmm0
-        pxor      %xmm6, %xmm6
-        mulsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm5
-        addsd     %xmm5, %xmm0
-        andl      $32768, %eax
-        pinsrw    $3, %eax, %xmm6
-        movapd    %xmm4, %xmm5
-        pshufd    $238, %xmm3, %xmm3
-        addsd     %xmm3, %xmm4
-        subsd     %xmm4, %xmm3
-        addsd     %xmm3, %xmm5
-        addsd     %xmm5, %xmm0
-        addsd     %xmm4, %xmm0
-        xorpd     %xmm6, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        addl      $15291, %eax
-        cmpl      $14336, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        unpcklpd  %xmm0, %xmm0
-        movapd    5984(%ebx), %xmm6
-        unpcklpd  %xmm0, %xmm1
-        movapd    6000(%ebx), %xmm2
-        movapd    6016(%ebx), %xmm4
-        mulpd     %xmm0, %xmm0
-        movapd    5888(%ebx), %xmm5
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm6
-        mulpd     %xmm0, %xmm0
-        movapd    %xmm1, %xmm3
-        mulsd     %xmm1, %xmm1
-        addpd     %xmm2, %xmm6
-        mulpd     %xmm0, %xmm4
-        mulsd     %xmm3, %xmm1
-        addpd     %xmm4, %xmm6
-        pshufd    $238, %xmm5, %xmm0
-        mulpd     %xmm6, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        subsd     %xmm7, %xmm0
-        pshufd    $238, %xmm1, %xmm2
-        subsd     %xmm1, %xmm5
-        subsd     %xmm0, %xmm6
-        subsd     %xmm2, %xmm5
-        subsd     %xmm6, %xmm7
-        subsd     %xmm7, %xmm5
-        addsd     %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
-        subl      $15356, %eax
-        cmpl      $4, %eax
-        jae       .L_2TAG_PACKET_4.0.2
-        xorpd     %xmm6, %xmm6
-        andpd     6048(%ebx), %xmm7
-        movsd     6096(%ebx), %xmm4
-        movapd    5984(%ebx), %xmm1
-        mulsd     %xmm4, %xmm7
-        movapd    6000(%ebx), %xmm2
-        subsd     %xmm7, %xmm4
-        movapd    6016(%ebx), %xmm3
-        pshufd    $68, %xmm4, %xmm7
-        sqrtsd    %xmm4, %xmm4
-        mulpd     %xmm7, %xmm1
-        pshufd    $68, %xmm7, %xmm5
-        pextrw    $3, %xmm0, %eax
-        mulpd     %xmm7, %xmm7
-        addpd     %xmm1, %xmm2
-        movsd     5936(%ebx), %xmm1
-        mulpd     %xmm7, %xmm3
-        cmpsd     $1, %xmm6, %xmm0
-        mulsd     %xmm5, %xmm7
-        addpd     %xmm3, %xmm2
-        pshufd    $68, %xmm0, %xmm0
-        mulsd     %xmm7, %xmm2
-        andpd     5904(%ebx), %xmm0
-        mulpd     %xmm5, %xmm2
-        andpd     %xmm4, %xmm1
-        pshufd    $68, %xmm4, %xmm3
-        subsd     %xmm1, %xmm4
-        addsd     %xmm3, %xmm3
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm4, %xmm3
-        subsd     %xmm1, %xmm5
-        mulsd     %xmm3, %xmm4
-        pshufd    $238, %xmm3, %xmm3
-        subsd     %xmm4, %xmm5
-        divsd     %xmm3, %xmm5
-        addpd     %xmm3, %xmm3
-        mulpd     %xmm3, %xmm2
-        pshufd    $238, %xmm2, %xmm4
-        addsd     %xmm0, %xmm2
-        andl      $32768, %eax
-        pinsrw    $3, %eax, %xmm6
-        pshufd    $238, %xmm0, %xmm0
-        addsd     %xmm4, %xmm2
-        addsd     %xmm5, %xmm2
-        addsd     %xmm3, %xmm2
-        addsd     %xmm2, %xmm0
-        xorpd     %xmm6, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
-        addl      $261884, %eax
-        cmpl      $261888, %eax
-        jb        .L_2TAG_PACKET_5.0.2
-        movd      %xmm7, %ecx
-        psrlq     $32, %xmm7
-        movd      %xmm7, %edx
-        andl      $2147483647, %edx
-        movl      $1072693248, %eax
-        subl      %edx, %eax
-        orl       %ecx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_6.0.2
-        movq      8(%esp), %xmm2
-        movd      %xmm2, %edx
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $2147483647, %ecx
-        subl      $1, %edx
-        sbbl      $2146435072, %ecx
-        cmpl      $0, %ecx
-        jge       .L_2TAG_PACKET_7.0.2
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_6.0.2:
-        pextrw    $1, %xmm7, %edx
-        shrl      $15, %edx
-        negl      %edx
-        movd      %edx, %xmm7
-        pshufd    $0, %xmm7, %xmm7
-        movsd     5920(%ebx), %xmm2
-        movsd     5928(%ebx), %xmm0
-        andpd     %xmm7, %xmm2
-        andpd     %xmm7, %xmm0
-        addsd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
-        movsd     5888(%ebx), %xmm2
-        movsd     5896(%ebx), %xmm0
-        addsd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm6, %xmm6
-        addsd     %xmm6, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-.L_2TAG_PACKET_1.0.2:
-        movl      48(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(acos)
-# -- End  acos
-
-# Start file scope ASM
-ALIAS_SYMBOL(acosl, acos);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	3822952792
-	.long	1021639372
-	.long	182792448
-	.long	1068507836
-	.long	2264213271
-	.long	1019558908
-	.long	649052928
-	.long	1068524253
-	.long	1797139609
-	.long	1022295143
-	.long	1243095296
-	.long	1068540671
-	.long	1415938756
-	.long	1021439537
-	.long	2033294592
-	.long	1068557090
-	.long	2356809978
-	.long	1021777916
-	.long	3088063744
-	.long	1068573510
-	.long	2669055318
-	.long	1022124482
-	.long	180888576
-	.long	1068589932
-	.long	3566445325
-	.long	1021358712
-	.long	1970196992
-	.long	1068606354
-	.long	896980323
-	.long	1021319659
-	.long	4229555456
-	.long	1068622777
-	.long	436049712
-	.long	1021319758
-	.long	2732572160
-	.long	1068639202
-	.long	583123209
-	.long	1020797960
-	.long	1842831872
-	.long	1068655628
-	.long	1370449804
-	.long	1021429270
-	.long	1628994560
-	.long	1068672055
-	.long	2411391464
-	.long	1021057980
-	.long	2159763712
-	.long	1068688483
-	.long	1208692749
-	.long	1021943903
-	.long	3503886336
-	.long	1068704912
-	.long	538793309
-	.long	1019744063
-	.long	1435187200
-	.long	1068721343
-	.long	4085087612
-	.long	1020608419
-	.long	317469952
-	.long	1068737775
-	.long	144386942
-	.long	1021440732
-	.long	219617280
-	.long	1068754208
-	.long	2940088361
-	.long	1019981122
-	.long	1210558208
-	.long	1068770642
-	.long	2176850347
-	.long	1018373705
-	.long	3359268352
-	.long	1068787077
-	.long	2395611454
-	.long	1021889042
-	.long	2439803648
-	.long	1068803514
-	.long	1650705253
-	.long	1020227966
-	.long	2816203520
-	.long	1068819952
-	.long	3702166386
-	.long	1019379914
-	.long	262620672
-	.long	1068836392
-	.long	1855649370
-	.long	1020453124
-	.long	3438159616
-	.long	1068852832
-	.long	923063860
-	.long	1019273834
-	.long	3822105856
-	.long	1068869274
-	.long	4289947947
-	.long	1019434249
-	.long	1483729920
-	.long	1068885718
-	.long	787455814
-	.long	1020738379
-	.long	787321088
-	.long	1068902163
-	.long	3321653337
-	.long	1021842569
-	.long	1802253312
-	.long	1068918609
-	.long	2653633526
-	.long	1021821525
-	.long	302985984
-	.long	1068935057
-	.long	161272028
-	.long	1021655149
-	.long	653966080
-	.long	1068951506
-	.long	2566098667
-	.long	1020066219
-	.long	2924727296
-	.long	1068967956
-	.long	3646493722
-	.long	1014292285
-	.long	2889890304
-	.long	1068984408
-	.long	1081009196
-	.long	1022189620
-	.long	619098112
-	.long	1069000862
-	.long	4011643355
-	.long	1021773297
-	.long	477017600
-	.long	1069017317
-	.long	4030305534
-	.long	1021292252
-	.long	2533403904
-	.long	1069033773
-	.long	2645187591
-	.long	1019527099
-	.long	2563102208
-	.long	1069050231
-	.long	3857293792
-	.long	1022311697
-	.long	635982336
-	.long	1069066691
-	.long	3625936637
-	.long	1017511744
-	.long	1116940800
-	.long	1069083152
-	.long	3653872993
-	.long	1022016631
-	.long	4075964160
-	.long	1069099614
-	.long	2468900271
-	.long	1021769532
-	.long	993165568
-	.long	1069116079
-	.long	1358104224
-	.long	1021199776
-	.long	528586752
-	.long	1069132545
-	.long	2200950332
-	.long	1022024872
-	.long	2752395776
-	.long	1069149012
-	.long	3197072454
-	.long	1017751319
-	.long	3439855616
-	.long	1069165481
-	.long	1651081806
-	.long	1020809338
-	.long	2661257728
-	.long	1069181952
-	.long	539032752
-	.long	1021728805
-	.long	486957312
-	.long	1069198425
-	.long	3136045149
-	.long	1016888671
-	.long	1282340352
-	.long	1069214899
-	.long	2593963259
-	.long	1018956103
-	.long	822921728
-	.long	1069231375
-	.long	2146032737
-	.long	1022306465
-	.long	3474216192
-	.long	1069247852
-	.long	3976811625
-	.long	1021350207
-	.long	716902656
-	.long	1069264332
-	.long	718267222
-	.long	1018624727
-	.long	1211594496
-	.long	1069280813
-	.long	1485641389
-	.long	1018447451
-	.long	734070272
-	.long	1069297296
-	.long	354455128
-	.long	1021341291
-	.long	3650110720
-	.long	1069313780
-	.long	682185947
-	.long	1021651853
-	.long	1440663040
-	.long	1069330267
-	.long	3558574550
-	.long	1021615110
-	.long	2766612224
-	.long	1069346755
-	.long	874607978
-	.long	1017746872
-	.long	3404011008
-	.long	1069363245
-	.long	4154988502
-	.long	1021439906
-	.long	3423949056
-	.long	1069379737
-	.long	2263202309
-	.long	1021479615
-	.long	2897587712
-	.long	1069396231
-	.long	2562065031
-	.long	1022090363
-	.long	1896159232
-	.long	1069412727
-	.long	3836237663
-	.long	1019867288
-	.long	490968576
-	.long	1069429225
-	.long	3322056743
-	.long	1006752762
-	.long	3048360192
-	.long	1069445724
-	.long	1152314833
-	.long	1013122252
-	.long	1049850624
-	.long	1069462226
-	.long	3601590727
-	.long	1022214610
-	.long	3156899584
-	.long	1069478729
-	.long	1855169970
-	.long	1019487271
-	.long	851173376
-	.long	1069495235
-	.long	312649594
-	.long	1020868604
-	.long	2794281728
-	.long	1069511742
-	.long	1093490181
-	.long	1020777577
-	.long	468042496
-	.long	1069528252
-	.long	1152540679
-	.long	1021403732
-	.long	2534219264
-	.long	1069544763
-	.long	2292126035
-	.long	1021872430
-	.long	1376146432
-	.long	1069558527
-	.long	3293753641
-	.long	1020500454
-	.long	4175442432
-	.long	1069575044
-	.long	3626347564
-	.long	1021610969
-	.long	3523113472
-	.long	1069591566
-	.long	339956500
-	.long	1021119039
-	.long	4003350528
-	.long	1069608092
-	.long	3429333082
-	.long	1022813542
-	.long	1611067392
-	.long	1069624623
-	.long	2298017544
-	.long	1021977587
-	.long	931782144
-	.long	1069641158
-	.long	2164684743
-	.long	1021250988
-	.long	2256725504
-	.long	1069657697
-	.long	1138762335
-	.long	1021443776
-	.long	1582853120
-	.long	1069674241
-	.long	1084010382
-	.long	1022994693
-	.long	3497758720
-	.long	1069690789
-	.long	406366244
-	.long	1022713586
-	.long	3999816960
-	.long	1069707342
-	.long	1488723042
-	.long	1023381290
-	.long	3383096064
-	.long	1069723900
-	.long	2541558953
-	.long	1019137887
-	.long	1942403584
-	.long	1069740463
-	.long	1879620343
-	.long	1022653642
-	.long	4268263680
-	.long	1069757030
-	.long	3039077047
-	.long	1022252545
-	.long	2067062272
-	.long	1069773603
-	.long	4190670677
-	.long	1020725863
-	.long	4225828096
-	.long	1069790180
-	.long	1998567321
-	.long	1022014385
-	.long	2452507136
-	.long	1069806763
-	.long	1511628873
-	.long	1021900300
-	.long	1340746240
-	.long	1069823351
-	.long	788367341
-	.long	1022726208
-	.long	1190035456
-	.long	1069839944
-	.long	3856337230
-	.long	1021834118
-	.long	2300688384
-	.long	1069856542
-	.long	3211396579
-	.long	1022621365
-	.long	678886400
-	.long	1069873146
-	.long	4001011887
-	.long	1022042646
-	.long	921594112
-	.long	1069889755
-	.long	557811968
-	.long	1023065533
-	.long	3331668992
-	.long	1069906369
-	.long	1877060679
-	.long	1022419742
-	.long	3917875200
-	.long	1069922989
-	.long	1181055171
-	.long	1022752712
-	.long	2984829696
-	.long	1069939615
-	.long	4294526932
-	.long	1021499988
-	.long	838049024
-	.long	1069956247
-	.long	3658081878
-	.long	1022957952
-	.long	2078928384
-	.long	1069972884
-	.long	820353701
-	.long	1019391107
-	.long	2719854336
-	.long	1069989527
-	.long	1644022489
-	.long	1023378240
-	.long	3069117696
-	.long	1070006176
-	.long	2771393702
-	.long	1019319954
-	.long	3435962368
-	.long	1070022831
-	.long	3876394145
-	.long	1023024433
-	.long	4130595328
-	.long	1070039492
-	.long	1630447748
-	.long	1021465882
-	.long	1169236224
-	.long	1070056160
-	.long	2828355997
-	.long	1020458120
-	.long	3453997312
-	.long	1070072833
-	.long	164091641
-	.long	1020388279
-	.long	2708127744
-	.long	1070089513
-	.long	3036550223
-	.long	1023328684
-	.long	3540797696
-	.long	1070106199
-	.long	3710949463
-	.long	1022568805
-	.long	1972276736
-	.long	1070122892
-	.long	3885277950
-	.long	1019761674
-	.long	2613815552
-	.long	1070139591
-	.long	2764165077
-	.long	1022921023
-	.long	1487791616
-	.long	1070156297
-	.long	1330644769
-	.long	1023162679
-	.long	3207593472
-	.long	1070173009
-	.long	3911007221
-	.long	1022993496
-	.long	3797764608
-	.long	1070189728
-	.long	979712598
-	.long	1022554580
-	.long	3578920448
-	.long	1070206454
-	.long	2825738223
-	.long	1020223708
-	.long	2872795648
-	.long	1070223187
-	.long	392451124
-	.long	1022666279
-	.long	2002258432
-	.long	1070239927
-	.long	3730407632
-	.long	1023148291
-	.long	1291326464
-	.long	1070256674
-	.long	3723802980
-	.long	1022514089
-	.long	1065180928
-	.long	1070273428
-	.long	2635617463
-	.long	1022654470
-	.long	1650181632
-	.long	1070290189
-	.long	2061982883
-	.long	1022853411
-	.long	3373882880
-	.long	1070306957
-	.long	319732785
-	.long	1022017175
-	.long	2270081280
-	.long	1070323733
-	.long	2237757411
-	.long	1023064087
-	.long	2963732736
-	.long	1070340516
-	.long	468839165
-	.long	1023293774
-	.long	1491099904
-	.long	1070357307
-	.long	1502657946
-	.long	1021533479
-	.long	2479636480
-	.long	1070374105
-	.long	482913562
-	.long	1021986286
-	.long	1968133632
-	.long	1070390911
-	.long	3281474337
-	.long	1022646400
-	.long	291639040
-	.long	1070407725
-	.long	2453320259
-	.long	1022812423
-	.long	2081472512
-	.long	1070424546
-	.long	2939989570
-	.long	1023091888
-	.long	3380340480
-	.long	1070441375
-	.long	2850707499
-	.long	1021921109
-	.long	232287488
-	.long	1070458213
-	.long	3674625342
-	.long	1020725130
-	.long	1567614208
-	.long	1070475058
-	.long	9347334
-	.long	1022024009
-	.long	3433091072
-	.long	1070491911
-	.long	282524999
-	.long	1021433523
-	.long	1876877312
-	.long	1070508773
-	.long	3470449440
-	.long	1019309721
-	.long	1538472192
-	.long	1070525643
-	.long	2089486825
-	.long	1019698916
-	.long	2763830784
-	.long	1070542521
-	.long	443498115
-	.long	1020505194
-	.long	1605381632
-	.long	1070559408
-	.long	3018871601
-	.long	1022869913
-	.long	2706946048
-	.long	1070576303
-	.long	3936260892
-	.long	1023175875
-	.long	2123887360
-	.long	1070593207
-	.long	2994220655
-	.long	1022825948
-	.long	104015104
-	.long	1070603108
-	.long	335054493
-	.long	1023441853
-	.long	2904568832
-	.long	1070615800
-	.long	1451215633
-	.long	1023853857
-	.long	3456197120
-	.long	1070632739
-	.long	436334733
-	.long	1024026432
-	.long	252452352
-	.long	1070649697
-	.long	34596167
-	.long	1024031396
-	.long	3328018432
-	.long	1070666672
-	.long	2644547073
-	.long	1024296758
-	.long	1255829248
-	.long	1070683667
-	.long	552832586
-	.long	1023763122
-	.long	4097058560
-	.long	1070700680
-	.long	1955640623
-	.long	1021394654
-	.long	451770112
-	.long	1070717714
-	.long	3428903777
-	.long	1022941142
-	.long	408920832
-	.long	1070734767
-	.long	165503263
-	.long	1023894958
-	.long	1186960640
-	.long	1070751840
-	.long	435826450
-	.long	1024026134
-	.long	19078656
-	.long	1070768934
-	.long	1834169749
-	.long	1022899284
-	.long	2743490304
-	.long	1070786048
-	.long	494581074
-	.long	1018818479
-	.long	2328961024
-	.long	1070803184
-	.long	2987908834
-	.long	1022581110
-	.long	350011392
-	.long	1070820342
-	.long	240771184
-	.long	1024143083
-	.long	2692326912
-	.long	1070837521
-	.long	666056837
-	.long	1022394776
-	.long	2373274368
-	.long	1070854723
-	.long	2484337770
-	.long	1024228156
-	.long	1017131520
-	.long	1070871948
-	.long	3285648279
-	.long	1024025789
-	.long	265558272
-	.long	1070889196
-	.long	392241896
-	.long	1024252809
-	.long	1778008064
-	.long	1070906467
-	.long	1536107943
-	.long	1023949300
-	.long	2937184768
-	.long	1070923762
-	.long	3541062251
-	.long	1019448646
-	.long	1144442880
-	.long	1070941082
-	.long	3691683781
-	.long	1022123948
-	.long	2410165504
-	.long	1070958426
-	.long	1804181960
-	.long	1023945221
-	.long	4174350848
-	.long	1070975795
-	.long	2016094861
-	.long	1021716585
-	.long	3897012480
-	.long	1070993190
-	.long	175294410
-	.long	1023703404
-	.long	3353623040
-	.long	1071010611
-	.long	167973242
-	.long	1023240839
-	.long	45671168
-	.long	1071028059
-	.long	2166856113
-	.long	1021565413
-	.long	86063872
-	.long	1071045533
-	.long	2676254727
-	.long	1023985299
-	.long	1019772672
-	.long	1071063034
-	.long	989043593
-	.long	1021549587
-	.long	414297344
-	.long	1071080563
-	.long	3960972046
-	.long	1024307251
-	.long	155173120
-	.long	1071098120
-	.long	1830919291
-	.long	1021592251
-	.long	2151562240
-	.long	1071115705
-	.long	405408666
-	.long	1023423128
-	.long	4041854720
-	.long	1071133319
-	.long	2043497827
-	.long	1024411503
-	.long	3489224192
-	.long	1071150963
-	.long	3072215864
-	.long	1022698635
-	.long	2477196288
-	.long	1071168637
-	.long	1812195139
-	.long	1022689192
-	.long	3015298816
-	.long	1071186341
-	.long	764841969
-	.long	1021027331
-	.long	2844731136
-	.long	1071204076
-	.long	2878117321
-	.long	1019116513
-	.long	4028950528
-	.long	1071221842
-	.long	698911452
-	.long	1023265602
-	.long	69441536
-	.long	1071239641
-	.long	3253467847
-	.long	1020795075
-	.long	1676209920
-	.long	1071257471
-	.long	4272431167
-	.long	1022873982
-	.long	2408752384
-	.long	1071275334
-	.long	648519100
-	.long	1024385717
-	.long	151623680
-	.long	1071293231
-	.long	345257017
-	.long	1019561408
-	.long	1410154240
-	.long	1071311161
-	.long	197863993
-	.long	1023224207
-	.long	4131351552
-	.long	1071329125
-	.long	2620801789
-	.long	1024411169
-	.long	1999664384
-	.long	1071347125
-	.long	3952692616
-	.long	1024168086
-	.long	1617668864
-	.long	1071365160
-	.long	3019889809
-	.long	1021907692
-	.long	1032074240
-	.long	1071383231
-	.long	59469899
-	.long	1023656194
-	.long	2619492096
-	.long	1071401338
-	.long	1417526820
-	.long	1021457783
-	.long	202429440
-	.long	1071419483
-	.long	2927667935
-	.long	1019175447
-	.long	525044224
-	.long	1071437665
-	.long	38166811
-	.long	1023981879
-	.long	1779258880
-	.long	1071455885
-	.long	481252500
-	.long	1023310234
-	.long	2195673600
-	.long	1071474144
-	.long	3962395981
-	.long	1021339088
-	.long	44573696
-	.long	1071492443
-	.long	3936281395
-	.long	1023014829
-	.long	2226905344
-	.long	1071510781
-	.long	1515320476
-	.long	1024320623
-	.long	2800512512
-	.long	1071529160
-	.long	1225403697
-	.long	1021081846
-	.long	161113600
-	.long	1071547581
-	.long	3064809733
-	.long	1024173917
-	.long	1338410240
-	.long	1071566043
-	.long	2027604973
-	.long	1024362526
-	.long	522433280
-	.long	1071584548
-	.long	2055171723
-	.long	1023858825
-	.long	539595776
-	.long	1071603096
-	.long	3868820135
-	.long	1022936424
-	.long	4264017664
-	.long	1071621687
-	.long	3228065145
-	.long	1023479578
-	.long	1733924096
-	.long	1071640324
-	.long	3511934475
-	.long	1022496355
-	.long	108880384
-	.long	1071651839
-	.long	615880967
-	.long	1023519706
-	.long	3517856512
-	.long	1071661202
-	.long	3113108559
-	.long	1025190289
-	.long	4043153152
-	.long	1071670589
-	.long	1571836218
-	.long	1023106116
-	.long	3251299072
-	.long	1071680000
-	.long	3444076102
-	.long	1022187841
-	.long	2736921600
-	.long	1071689435
-	.long	272771483
-	.long	1025095280
-	.long	3897698560
-	.long	1071703633
-	.long	2075390188
-	.long	1022489022
-	.long	3209485056
-	.long	1071722652
-	.long	1438094065
-	.long	1021844944
-	.long	3781432064
-	.long	1071741774
-	.long	1675017145
-	.long	1024143828
-	.long	2684184064
-	.long	1071761003
-	.long	2259963753
-	.long	1024731393
-	.long	1840489728
-	.long	1071780342
-	.long	3372883597
-	.long	1023431408
-	.long	3764087808
-	.long	1071799794
-	.long	3307523102
-	.long	1024485788
-	.long	3006232320
-	.long	1071819364
-	.long	3088971966
-	.long	1025213251
-	.long	3374881280
-	.long	1071839055
-	.long	834437749
-	.long	1025236452
-	.long	797284864
-	.long	1071858872
-	.long	3122663941
-	.long	1025320473
-	.long	545765120
-	.long	1071878818
-	.long	826539625
-	.long	1022450955
-	.long	107562240
-	.long	1071898898
-	.long	339584600
-	.long	1022481255
-	.long	2123649024
-	.long	1071919116
-	.long	3912959833
-	.long	1024321009
-	.long	1562385664
-	.long	1071939478
-	.long	2846067230
-	.long	1023343981
-	.long	2963085824
-	.long	1071959988
-	.long	954548627
-	.long	1021475211
-	.long	3325550592
-	.long	1071980652
-	.long	3459651155
-	.long	1025305573
-	.long	775752448
-	.long	1072001476
-	.long	3582746667
-	.long	1023859460
-	.long	3238590720
-	.long	1072022464
-	.long	634636162
-	.long	1024472353
-	.long	2758801920
-	.long	1072043624
-	.long	3078216319
-	.long	1025304516
-	.long	1370319104
-	.long	1072064962
-	.long	2570569078
-	.long	1025099442
-	.long	2615805184
-	.long	1072086484
-	.long	3729933412
-	.long	1024605112
-	.long	3077336576
-	.long	1072108198
-	.long	1948916066
-	.long	1024781603
-	.long	1099528192
-	.long	1072130112
-	.long	3139143157
-	.long	1023729360
-	.long	1231903232
-	.long	1072152233
-	.long	1349513477
-	.long	1024737515
-	.long	1507504128
-	.long	1072174570
-	.long	3484516322
-	.long	1024000959
-	.long	2214659840
-	.long	1072197132
-	.long	2563820917
-	.long	1025225535
-	.long	1804739840
-	.long	1072219929
-	.long	760038746
-	.long	1024482855
-	.long	1413746688
-	.long	1072242971
-	.long	3401734714
-	.long	1025129838
-	.long	821409536
-	.long	1072266269
-	.long	3729772551
-	.long	1025484796
-	.long	3031825664
-	.long	1072289834
-	.long	122256749
-	.long	1024752594
-	.long	1710784256
-	.long	1072313680
-	.long	1518205483
-	.long	1024724809
-	.long	3025265152
-	.long	1072337819
-	.long	409951989
-	.long	1022835555
-	.long	287769088
-	.long	1072362267
-	.long	800355594
-	.long	1022484850
-	.long	198179840
-	.long	1072387038
-	.long	3502926213
-	.long	1024209373
-	.long	1909130496
-	.long	1072412149
-	.long	3064694319
-	.long	1025380823
-	.long	1941732096
-	.long	1072437619
-	.long	4112930390
-	.long	1024294679
-	.long	3492010496
-	.long	1072463467
-	.long	2684918107
-	.long	1023220233
-	.long	81959680
-	.long	1072489716
-	.long	220021366
-	.long	1020635131
-	.long	2297837056
-	.long	1072516387
-	.long	4027683826
-	.long	1021041185
-	.long	270404096
-	.long	1072543508
-	.long	2012766065
-	.long	1021780753
-	.long	3667376896
-	.long	1072571105
-	.long	2727981522
-	.long	1023009874
-	.long	330400256
-	.long	1072599212
-	.long	2940017003
-	.long	1025393439
-	.long	1119293952
-	.long	1072627861
-	.long	1608550416
-	.long	1022675612
-	.long	3536155904
-	.long	1072657091
-	.long	349665778
-	.long	1025156751
-	.long	3078046720
-	.long	1072686946
-	.long	2016159996
-	.long	1022193169
-	.long	455228416
-	.long	1072705361
-	.long	1908539328
-	.long	1026126332
-	.long	1871505664
-	.long	1072720988
-	.long	2784700894
-	.long	1025922277
-	.long	1630994432
-	.long	1072737010
-	.long	361107678
-	.long	1022887244
-	.long	2084558336
-	.long	1072753462
-	.long	2642784509
-	.long	1072689083
-	.long	1514442531
-	.long	1072688953
-	.long	333108933
-	.long	1072688821
-	.long	3392112024
-	.long	1072688686
-	.long	2099852862
-	.long	1072688550
-	.long	749609004
-	.long	1072688412
-	.long	3634632596
-	.long	1072688271
-	.long	2163248461
-	.long	1072688129
-	.long	628657846
-	.long	1072687985
-	.long	3324036511
-	.long	1072687838
-	.long	1657632815
-	.long	1072687690
-	.long	4217538760
-	.long	1072687539
-	.long	2411951597
-	.long	1072687387
-	.long	533944872
-	.long	1072687233
-	.long	2876566508
-	.long	1072687076
-	.long	847936891
-	.long	1072686918
-	.long	3036019913
-	.long	1072686757
-	.long	848884575
-	.long	1072686595
-	.long	2874443326
-	.long	1072686430
-	.long	520713666
-	.long	1072686264
-	.long	2375556481
-	.long	1072686095
-	.long	4141904948
-	.long	1072685924
-	.long	1522666382
-	.long	1072685752
-	.long	3105624104
-	.long	1072685577
-	.long	298666327
-	.long	1072685401
-	.long	1689524500
-	.long	1072685222
-	.long	2981002200
-	.long	1072685041
-	.long	4170844284
-	.long	1072684858
-	.long	961802263
-	.long	1072684674
-	.long	1941503454
-	.long	1072684487
-	.long	2812647170
-	.long	1072684298
-	.long	3572873869
-	.long	1072684107
-	.long	4219797823
-	.long	1072683914
-	.long	456039788
-	.long	1072683720
-	.long	869096151
-	.long	1072683523
-	.long	1161535119
-	.long	1072683324
-	.long	1330865866
-	.long	1072683123
-	.long	1374571204
-	.long	1072682920
-	.long	1290107538
-	.long	1072682715
-	.long	1074904836
-	.long	1072682508
-	.long	726366587
-	.long	1072682299
-	.long	241869763
-	.long	1072682088
-	.long	3913732079
-	.long	1072681874
-	.long	3149342765
-	.long	1072681659
-	.long	2240966306
-	.long	1072681442
-	.long	1185873216
-	.long	1072681223
-	.long	4276274591
-	.long	1072681001
-	.long	2919452883
-	.long	1072680778
-	.long	1407565635
-	.long	1072680553
-	.long	4032743551
-	.long	1072680325
-	.long	2202188565
-	.long	1072680096
-	.long	207977577
-	.long	1072679865
-	.long	2342160518
-	.long	1072679631
-	.long	11858423
-	.long	1072679396
-	.long	1804034453
-	.long	1072679158
-	.long	3420722787
-	.long	1072678918
-	.long	563930456
-	.long	1072678677
-	.long	1820539192
-	.long	1072678433
-	.long	2892501606
-	.long	1072678187
-	.long	3776710320
-	.long	1072677939
-	.long	175063337
-	.long	1072677690
-	.long	674333171
-	.long	1072677438
-	.long	976363026
-	.long	1072677184
-	.long	1077935934
-	.long	1072676928
-	.long	1921075490
-	.long	1072676540
-	.long	881493302
-	.long	1072676016
-	.long	3275752439
-	.long	1072675483
-	.long	486855588
-	.long	1072674943
-	.long	1077229111
-	.long	1072674394
-	.long	723950308
-	.long	1072673837
-	.long	3693582199
-	.long	1072673271
-	.long	1367335316
-	.long	1072672698
-	.long	2305837020
-	.long	1072672116
-	.long	2184358641
-	.long	1072671526
-	.long	972682840
-	.long	1072670928
-	.long	2935101762
-	.long	1072670321
-	.long	3745513263
-	.long	1072669706
-	.long	3372320886
-	.long	1072669083
-	.long	1783464620
-	.long	1072668452
-	.long	3241386215
-	.long	1072667812
-	.long	3418125284
-	.long	1072667164
-	.long	2280219148
-	.long	1072666508
-	.long	4088700758
-	.long	1072665843
-	.long	219227400
-	.long	1072665171
-	.long	3521816918
-	.long	1072664489
-	.long	1076205279
-	.long	1072663800
-	.long	1436484616
-	.long	1072663102
-	.long	271362610
-	.long	1072662396
-	.long	1838996688
-	.long	1072661681
-	.long	1807122518
-	.long	1072660958
-	.long	137953542
-	.long	1072660227
-	.long	1088178584
-	.long	1072659487
-	.long	324057537
-	.long	1072658739
-	.long	2101288076
-	.long	1072657982
-	.long	2085133974
-	.long	1072657217
-	.long	235324451
-	.long	1072656444
-	.long	806051592
-	.long	1072655662
-	.long	3756033140
-	.long	1072654871
-	.long	453542543
-	.long	1072654073
-	.long	3741177327
-	.long	1072653265
-	.long	691216109
-	.long	1072652450
-	.long	4145223372
-	.long	1072651625
-	.long	1174439091
-	.long	1072650793
-	.long	324416139
-	.long	1072649952
-	.long	1550246310
-	.long	1072649102
-	.long	511524674
-	.long	1072648244
-	.long	1457248482
-	.long	1072647377
-	.long	45944955
-	.long	1072646502
-	.long	525537397
-	.long	1072645618
-	.long	2848440188
-	.long	1072644725
-	.long	2671555633
-	.long	1072643824
-	.long	4241172637
-	.long	1072642914
-	.long	3213094278
-	.long	1072641996
-	.long	3832503688
-	.long	1072641069
-	.long	1754091534
-	.long	1072640134
-	.long	1221921804
-	.long	1072639190
-	.long	2184526489
-	.long	1072638237
-	.long	294902089
-	.long	1072637276
-	.long	4090375270
-	.long	1072636305
-	.long	632860906
-	.long	1072635327
-	.long	2753498702
-	.long	1072634339
-	.long	1808009252
-	.long	1072633343
-	.long	2036428672
-	.long	1072632338
-	.long	3383235626
-	.long	1072631324
-	.long	1497347484
-	.long	1072630302
-	.long	617018317
-	.long	1072629271
-	.long	684933058
-	.long	1072628231
-	.long	1643170798
-	.long	1072627182
-	.long	3011066360
-	.long	1072625592
-	.long	957158713
-	.long	1072623442
-	.long	1390907941
-	.long	1072621256
-	.long	3819155270
-	.long	1072619034
-	.long	3443571196
-	.long	1072616777
-	.long	4045412458
-	.long	1072614484
-	.long	805503923
-	.long	1072612156
-	.long	1778922015
-	.long	1072609791
-	.long	2125033665
-	.long	1072607390
-	.long	1287203863
-	.long	1072604953
-	.long	2992629568
-	.long	1072602479
-	.long	2367267127
-	.long	1072599969
-	.long	3115526047
-	.long	1072597422
-	.long	340219539
-	.long	1072594839
-	.long	2017215719
-	.long	1072592218
-	.long	3225443424
-	.long	1072589560
-	.long	3326565673
-	.long	1072586865
-	.long	1669811211
-	.long	1072584133
-	.long	1886735022
-	.long	1072581363
-	.long	3301071171
-	.long	1072578555
-	.long	928514283
-	.long	1072575710
-	.long	2656364059
-	.long	1072572826
-	.long	3473490507
-	.long	1072569904
-	.long	2649965606
-	.long	1072566944
-	.long	3736819052
-	.long	1072563945
-	.long	1680885175
-	.long	1072560908
-	.long	4413771
-	.long	1072557832
-	.long	2214869753
-	.long	1072554716
-	.long	3214725184
-	.long	1072551561
-	.long	2186079903
-	.long	1072548367
-	.long	2590372131
-	.long	1072545133
-	.long	3578146079
-	.long	1072541859
-	.long	4283712755
-	.long	1072538545
-	.long	3824834510
-	.long	1072535191
-	.long	1302400298
-	.long	1072531797
-	.long	95058636
-	.long	1072528362
-	.long	3563906063
-	.long	1072524885
-	.long	2167230730
-	.long	1072521368
-	.long	3524918334
-	.long	1072517809
-	.long	2353304918
-	.long	1072514209
-	.long	1939625839
-	.long	1072510567
-	.long	1256714581
-	.long	1072506883
-	.long	3552525848
-	.long	1072503156
-	.long	3464809522
-	.long	1072499387
-	.long	4200542593
-	.long	1072495575
-	.long	355609124
-	.long	1072491721
-	.long	3684139099
-	.long	1072487822
-	.long	148355918
-	.long	1072483881
-	.long	1457689242
-	.long	1072479895
-	.long	2118591596
-	.long	1072475865
-	.long	908848089
-	.long	1072471791
-	.long	877032689
-	.long	1072467672
-	.long	752012304
-	.long	1072463508
-	.long	3532301749
-	.long	1072459298
-	.long	3600563221
-	.long	1072455043
-	.long	3902857084
-	.long	1072450742
-	.long	3063101036
-	.long	1072446395
-	.long	3972344374
-	.long	1072442001
-	.long	903183549
-	.long	1072437561
-	.long	983892938
-	.long	1072433073
-	.long	2722858568
-	.long	1072428537
-	.long	302790515
-	.long	1072423954
-	.long	759811057
-	.long	1072419322
-	.long	2507809922
-	.long	1072414641
-	.long	2388408813
-	.long	1072407528
-	.long	2084492942
-	.long	1072397870
-	.long	2435703301
-	.long	1072388010
-	.long	1935433360
-	.long	1072377945
-	.long	2742047290
-	.long	1072367671
-	.long	2053284205
-	.long	1072357185
-	.long	657783367
-	.long	1072346483
-	.long	2893664841
-	.long	1072335560
-	.long	3718906405
-	.long	1072324413
-	.long	1547896303
-	.long	1072313038
-	.long	2494058440
-	.long	1072301429
-	.long	3133238742
-	.long	1072289582
-	.long	3327000086
-	.long	1072277492
-	.long	1860667274
-	.long	1072265154
-	.long	665340747
-	.long	1072252562
-	.long	443347841
-	.long	1072239710
-	.long	581282618
-	.long	1072226592
-	.long	3349780465
-	.long	1072213201
-	.long	914217606
-	.long	1072199532
-	.long	989797661
-	.long	1072185576
-	.long	945436416
-	.long	1072171326
-	.long	549291300
-	.long	1072156774
-	.long	1814636389
-	.long	1072141911
-	.long	239092858
-	.long	1072126729
-	.long	1794680724
-	.long	1072111217
-	.long	1241534678
-	.long	1072095366
-	.long	3366566214
-	.long	1072079164
-	.long	1244090828
-	.long	1072062601
-	.long	1708448120
-	.long	1072045663
-	.long	3544260650
-	.long	1072028337
-	.long	1402741403
-	.long	1072010610
-	.long	2551936888
-	.long	1071992465
-	.long	617669739
-	.long	1071973887
-	.long	794002186
-	.long	1071954857
-	.long	2021237693
-	.long	1071935356
-	.long	540450384
-	.long	1071915364
-	.long	1920555537
-	.long	1071894857
-	.long	2879585206
-	.long	1071873811
-	.long	3000237455
-	.long	1071852199
-	.long	3352974346
-	.long	1071829991
-	.long	569629937
-	.long	1071807155
-	.long	2077237208
-	.long	1071783653
-	.long	2284891805
-	.long	1071759446
-	.long	1226651784
-	.long	1071734489
-	.long	1102047405
-	.long	1071708731
-	.long	2009896384
-	.long	1071682115
-	.long	927419082
-	.long	1071654577
-	.long	85010366
-	.long	1071607413
-	.long	696431025
-	.long	1071548180
-	.long	2611410541
-	.long	1071486585
-	.long	2612593658
-	.long	1071422396
-	.long	3548155306
-	.long	1071355336
-	.long	3887997484
-	.long	1071285073
-	.long	244854763
-	.long	1071211202
-	.long	4214445648
-	.long	1071133216
-	.long	2303966727
-	.long	1071050478
-	.long	3991040013
-	.long	1070962152
-	.long	3126952278
-	.long	1070867118
-	.long	1817448378
-	.long	1070763804
-	.long	1793814864
-	.long	1070649884
-	.long	3507224072
-	.long	1070447193
-	.long	4027609105
-	.long	1070148772
-	.long	577507993
-	.long	1069779414
-	.long	2310232419
-	.long	1068931829
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	3164710438
-	.long	1413754136
-	.long	3221823995
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	1074340347
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	1431655765
-	.long	3217380693
-	.long	858993459
-	.long	3216192307
-	.long	3067833783
-	.long	3215383405
-	.long	780903145
-	.long	1066854586
-	.long	858993459
-	.long	1068708659
-	.long	3340530119
-	.long	1067392113
-	.long	1431655765
-	.long	1069897045
-	.long	1321528399
-	.long	1066517740
-	.long	3067833783
-	.long	1067899757
-	.long	2021159460
-	.long	1065855096
-	.long	2576980378
-	.long	1066178969
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	0
-	.long	0
-	.long	4294950912
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	0
-	.type	static_const_table,@object
-	.size	static_const_table,6112
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_asin.S b/libm/x86/e_asin.S
deleted file mode 100644
index 6a3ff8e..0000000
--- a/libm/x86/e_asin.S
+++ /dev/null
@@ -1,2003 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  To compute asin(s), separate schemes are used when s is in different
-//  intervals.
-//
-//  |s| in [2^{-4}, sqrt(3)/2):
-//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-//       For the first degree term, r is evaluated as
-//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-//       (sqrt(1-t^2) read from table)
-//  The main source of error is still R (may still be affected by up to 3 ulps
-//  of rounding error). The table size must be sufficiently large, to minimize
-//  this effect.
-//
-//  |s| in [sqrt(3)/2, 255/256):
-//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-//       asin(r) evaluated as polynomial (same as above)
-//       The first degree term is evaluated as
-//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-//  |s|<2^{-4}: evaluate as 13-degree polynomial
-//
-//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
-//         use 17-degree polynomial, get error term
-//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
-//                 ( Q(1+eps)=sqrt(1-s^2) )
-//
-// Special cases:
-//  asin(NaN) = quiet NaN, and raise invalid exception
-//  asin(INF) = QNaN and raise invalid exception
-//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
-//  asin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  asin
-ENTRY(asin)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 64(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        stmxcsr   16(%esp)
-        movl      16(%esp), %edx
-        andl      $-24577, %edx
-        cmpl      %edx, 16(%esp)
-        jne       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        movsd     5984(%ebx), %xmm4
-        movsd     6016(%ebx), %xmm3
-        xorpd     %xmm5, %xmm5
-        movsd     6000(%ebx), %xmm2
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movapd    %xmm0, %xmm1
-        movsd     %xmm0, 8(%esp)
-        psrlq     $44, %xmm0
-        movd      %xmm0, %edx
-        movapd    %xmm1, %xmm7
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movapd    %xmm1, %xmm0
-        movl      $524287, %eax
-        andl      %edx, %eax
-        subl      $260864, %eax
-        cmpl      $955, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        mulsd     %xmm1, %xmm1
-        andl      $65535, %edx
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andpd     %xmm7, %xmm2
-        andl      $-4, %edx
-        subl      $64256, %edx
-        movsd     3936(%ebx,%edx,2), %xmm1
-        orpd      %xmm5, %xmm2
-        movapd    96(%ebx,%edx,4), %xmm4
-        movapd    %xmm7, %xmm6
-        addsd     %xmm2, %xmm7
-        subsd     %xmm2, %xmm0
-        mulsd     %xmm7, %xmm0
-        mulsd     %xmm1, %xmm6
-        mulsd     %xmm2, %xmm3
-        movapd    %xmm6, %xmm1
-        addsd     %xmm3, %xmm6
-        divsd     %xmm6, %xmm0
-        movsd     80(%ebx), %xmm7
-        movsd     64(%ebx), %xmm5
-        subsd     %xmm3, %xmm1
-        andpd     6064(%ebx), %xmm2
-        movapd    %xmm1, %xmm3
-        mulsd     %xmm1, %xmm1
-        movsd     72(%ebx), %xmm6
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm1, %xmm7
-        mulsd     %xmm3, %xmm5
-        xorpd     %xmm2, %xmm4
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm7, %xmm6
-        mulsd     %xmm3, %xmm6
-        addsd     %xmm4, %xmm5
-        pshufd    $238, %xmm4, %xmm4
-        addsd     %xmm5, %xmm6
-        orpd      %xmm2, %xmm4
-        addsd     %xmm6, %xmm0
-        movl      16(%esp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%esp), %eax
-        je        .L_2TAG_PACKET_3.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %eax
-        andl      $24576, %eax
-        orl       %eax, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_3.0.2:
-        addsd     %xmm4, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_2.0.2:
-        subl      $955, %eax
-        cmpl      $67, %eax
-        jae       .L_2TAG_PACKET_5.0.2
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        movl      %edx, %eax
-        andpd     5984(%ebx), %xmm0
-        andpd     6048(%ebx), %xmm7
-        movapd    %xmm0, %xmm1
-        movsd     6016(%ebx), %xmm4
-        movapd    %xmm7, %xmm6
-        subsd     %xmm7, %xmm1
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm6, %xmm0
-        subsd     %xmm7, %xmm4
-        mulsd     %xmm1, %xmm0
-        movapd    %xmm3, %xmm7
-        andpd     %xmm3, %xmm2
-        psllq     $2, %xmm3
-        pextrw    $3, %xmm3, %edx
-        orpd      %xmm5, %xmm2
-        subl      $65216, %edx
-        addl      %edx, %edx
-        mulsd     3936(%ebx,%edx,4), %xmm7
-        mulsd     %xmm2, %xmm6
-        movapd    6080(%ebx), %xmm3
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm2, %xmm2
-        subsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm6
-        subsd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm7
-        movsd     64(%ebx), %xmm5
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm7
-        movsd     80(%ebx), %xmm0
-        divsd     %xmm7, %xmm4
-        movsd     72(%ebx), %xmm2
-        subpd     96(%ebx,%edx,8), %xmm3
-        movapd    %xmm6, %xmm1
-        mulsd     %xmm6, %xmm6
-        andl      $524288, %eax
-        shrl      $4, %eax
-        mulsd     %xmm6, %xmm0
-        mulsd     %xmm6, %xmm1
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm6, %xmm1
-        addsd     %xmm2, %xmm0
-        pxor      %xmm6, %xmm6
-        mulsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm5
-        pinsrw    $3, %eax, %xmm6
-        addsd     %xmm5, %xmm0
-        movapd    %xmm4, %xmm5
-        pshufd    $238, %xmm3, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm3
-        subsd     %xmm3, %xmm5
-        subsd     %xmm5, %xmm0
-        movl      16(%esp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%esp), %eax
-        je        .L_2TAG_PACKET_6.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %eax
-        andl      $24576, %eax
-        orl       %eax, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm6, %xmm0
-        xorpd     %xmm6, %xmm4
-        subsd     %xmm4, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        addl      $15291, %eax
-        cmpl      $14336, %eax
-        jae       .L_2TAG_PACKET_7.0.2
-        unpcklpd  %xmm7, %xmm7
-        movapd    (%ebx), %xmm1
-        movapd    %xmm7, %xmm6
-        movapd    16(%ebx), %xmm2
-        movapd    32(%ebx), %xmm4
-        mulpd     %xmm7, %xmm7
-        mulpd     %xmm7, %xmm6
-        mulpd     %xmm7, %xmm1
-        mulpd     %xmm7, %xmm7
-        movapd    %xmm6, %xmm3
-        mulsd     %xmm6, %xmm6
-        addpd     %xmm2, %xmm1
-        mulpd     %xmm7, %xmm4
-        mulsd     %xmm3, %xmm6
-        addpd     %xmm4, %xmm1
-        mulpd     %xmm6, %xmm1
-        pshufd    $238, %xmm1, %xmm2
-        addsd     %xmm2, %xmm1
-        movl      16(%esp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%esp), %eax
-        je        .L_2TAG_PACKET_8.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %eax
-        andl      $24576, %eax
-        orl       %eax, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_8.0.2:
-        addsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
-        subl      $15358, %eax
-        cmpl      $2, %eax
-        jae       .L_2TAG_PACKET_9.0.2
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        movl      %edx, %eax
-        andpd     6032(%ebx), %xmm7
-        pshufd    $68, %xmm3, %xmm5
-        andpd     6032(%ebx), %xmm3
-        movapd    %xmm7, %xmm1
-        movsd     6016(%ebx), %xmm4
-        movapd    %xmm7, %xmm6
-        subsd     %xmm7, %xmm0
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm1, %xmm1
-        mulsd     %xmm0, %xmm1
-        subsd     %xmm7, %xmm4
-        movapd    %xmm3, %xmm6
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm0, %xmm0
-        subsd     %xmm1, %xmm4
-        subsd     %xmm5, %xmm6
-        addsd     %xmm5, %xmm5
-        subsd     %xmm3, %xmm4
-        movapd    (%ebx), %xmm2
-        pshufd    $238, %xmm5, %xmm3
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm5
-        pshufd    $238, %xmm3, %xmm7
-        addsd     %xmm3, %xmm3
-        mulsd     %xmm6, %xmm5
-        addsd     %xmm5, %xmm4
-        pshufd    $238, %xmm7, %xmm6
-        divsd     %xmm3, %xmm4
-        movapd    48(%ebx), %xmm1
-        movapd    16(%ebx), %xmm5
-        movapd    32(%ebx), %xmm0
-        mulpd     %xmm7, %xmm7
-        movapd    %xmm6, %xmm3
-        mulpd     %xmm7, %xmm2
-        mulpd     %xmm7, %xmm6
-        shrl      $4, %eax
-        andl      $32768, %eax
-        mulsd     %xmm7, %xmm1
-        mulpd     %xmm7, %xmm7
-        addpd     %xmm2, %xmm5
-        movapd    %xmm6, %xmm2
-        mulsd     %xmm6, %xmm6
-        mulpd     %xmm0, %xmm7
-        movapd    6080(%ebx), %xmm0
-        mulsd     %xmm6, %xmm2
-        addpd     %xmm5, %xmm7
-        pshufd    $238, %xmm1, %xmm5
-        mulsd     %xmm2, %xmm6
-        mulpd     %xmm2, %xmm7
-        addsd     %xmm5, %xmm1
-        xorpd     %xmm5, %xmm5
-        pshufd    $238, %xmm7, %xmm2
-        mulsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm2, %xmm7
-        movapd    %xmm3, %xmm2
-        pinsrw    $3, %eax, %xmm5
-        subsd     %xmm6, %xmm3
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm6
-        addsd     %xmm4, %xmm7
-        subsd     %xmm6, %xmm2
-        subsd     %xmm7, %xmm0
-        subsd     %xmm2, %xmm0
-        movl      16(%esp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%esp), %eax
-        je        .L_2TAG_PACKET_10.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %eax
-        andl      $24576, %eax
-        orl       %eax, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_10.0.2:
-        xorpd     %xmm5, %xmm0
-        xorpd     %xmm5, %xmm3
-        subsd     %xmm3, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_9.0.2:
-        addl      $261886, %eax
-        cmpl      $261888, %eax
-        jb        .L_2TAG_PACKET_11.0.2
-        movd      %xmm0, %ecx
-        psrlq     $32, %xmm0
-        movd      %xmm0, %edx
-        andl      $2147483647, %edx
-        movl      $1072693248, %eax
-        subl      %edx, %eax
-        orl       %ecx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_12.0.2
-        movq      8(%esp), %xmm2
-        movd      %xmm2, %edx
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $2147483647, %ecx
-        subl      $1, %edx
-        sbbl      $2146435072, %ecx
-        cmpl      $0, %ecx
-        jge       .L_2TAG_PACKET_11.0.2
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_13.0.2
-.L_2TAG_PACKET_12.0.2:
-        movsd     5984(%ebx), %xmm1
-        movsd     6080(%ebx), %xmm2
-        movsd     6088(%ebx), %xmm0
-        movl      16(%esp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%esp), %eax
-        je        .L_2TAG_PACKET_14.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %eax
-        andl      $24576, %eax
-        orl       %eax, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_14.0.2:
-        andnpd    %xmm7, %xmm1
-        orpd      %xmm1, %xmm0
-        orpd      %xmm1, %xmm2
-        addsd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_0.0.2:
-        movl      16(%esp), %edx
-        andl      $-24577, %edx
-        movl      %edx, 24(%esp)
-        ldmxcsr   24(%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_11.0.2:
-        movsd     8(%esp), %xmm0
-        xorpd     %xmm6, %xmm6
-        movapd    %xmm0, %xmm7
-        pextrw    $3, %xmm0, %edx
-        andl      $32752, %edx
-        subl      $16, %edx
-        cmpl      $32736, %edx
-        jb        .L_2TAG_PACKET_15.0.2
-        addsd     %xmm0, %xmm6
-        orpd      %xmm6, %xmm0
-        mulsd     %xmm0, %xmm7
-.L_2TAG_PACKET_15.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-.L_2TAG_PACKET_13.0.2:
-        movl      16(%esp), %edx
-        andl      $-24577, %edx
-        cmpl      16(%esp), %edx
-        je        .L_2TAG_PACKET_4.0.2
-        stmxcsr   24(%esp)
-        movl      16(%esp), %edx
-        andl      $24576, %edx
-        orl       %edx, 24(%esp)
-        ldmxcsr   24(%esp)
-.L_2TAG_PACKET_4.0.2:
-        movl      64(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(asin)
-# -- End  asin
-
-# Start file scope ASM
-ALIAS_SYMBOL(asinl, asin);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	780903145
-	.long	1066854586
-	.long	858993459
-	.long	1068708659
-	.long	3340530119
-	.long	1067392113
-	.long	1431655765
-	.long	1069897045
-	.long	1321528399
-	.long	1066517740
-	.long	3067833783
-	.long	1067899757
-	.long	2021159460
-	.long	1065855096
-	.long	2576980378
-	.long	1066178969
-	.long	1431655765
-	.long	1069897045
-	.long	858993459
-	.long	1068708659
-	.long	3067833783
-	.long	1067899757
-	.long	0
-	.long	0
-	.long	3822952792
-	.long	1021639372
-	.long	182792448
-	.long	1068507836
-	.long	2264213271
-	.long	1019558908
-	.long	649052928
-	.long	1068524253
-	.long	1797139609
-	.long	1022295143
-	.long	1243095296
-	.long	1068540671
-	.long	1415938756
-	.long	1021439537
-	.long	2033294592
-	.long	1068557090
-	.long	2356809978
-	.long	1021777916
-	.long	3088063744
-	.long	1068573510
-	.long	2669055318
-	.long	1022124482
-	.long	180888576
-	.long	1068589932
-	.long	3566445325
-	.long	1021358712
-	.long	1970196992
-	.long	1068606354
-	.long	896980323
-	.long	1021319659
-	.long	4229555456
-	.long	1068622777
-	.long	436049712
-	.long	1021319758
-	.long	2732572160
-	.long	1068639202
-	.long	583123209
-	.long	1020797960
-	.long	1842831872
-	.long	1068655628
-	.long	1370449804
-	.long	1021429270
-	.long	1628994560
-	.long	1068672055
-	.long	2411391464
-	.long	1021057980
-	.long	2159763712
-	.long	1068688483
-	.long	1208692749
-	.long	1021943903
-	.long	3503886336
-	.long	1068704912
-	.long	538793309
-	.long	1019744063
-	.long	1435187200
-	.long	1068721343
-	.long	4085087612
-	.long	1020608419
-	.long	317469952
-	.long	1068737775
-	.long	144386942
-	.long	1021440732
-	.long	219617280
-	.long	1068754208
-	.long	2940088361
-	.long	1019981122
-	.long	1210558208
-	.long	1068770642
-	.long	2176850347
-	.long	1018373705
-	.long	3359268352
-	.long	1068787077
-	.long	2395611454
-	.long	1021889042
-	.long	2439803648
-	.long	1068803514
-	.long	1650705253
-	.long	1020227966
-	.long	2816203520
-	.long	1068819952
-	.long	3702166386
-	.long	1019379914
-	.long	262620672
-	.long	1068836392
-	.long	1855649370
-	.long	1020453124
-	.long	3438159616
-	.long	1068852832
-	.long	923063860
-	.long	1019273834
-	.long	3822105856
-	.long	1068869274
-	.long	4289947947
-	.long	1019434249
-	.long	1483729920
-	.long	1068885718
-	.long	787455814
-	.long	1020738379
-	.long	787321088
-	.long	1068902163
-	.long	3321653337
-	.long	1021842569
-	.long	1802253312
-	.long	1068918609
-	.long	2653633526
-	.long	1021821525
-	.long	302985984
-	.long	1068935057
-	.long	161272028
-	.long	1021655149
-	.long	653966080
-	.long	1068951506
-	.long	2566098667
-	.long	1020066219
-	.long	2924727296
-	.long	1068967956
-	.long	3646493722
-	.long	1014292285
-	.long	2889890304
-	.long	1068984408
-	.long	1081009196
-	.long	1022189620
-	.long	619098112
-	.long	1069000862
-	.long	4011643355
-	.long	1021773297
-	.long	477017600
-	.long	1069017317
-	.long	4030305534
-	.long	1021292252
-	.long	2533403904
-	.long	1069033773
-	.long	2645187591
-	.long	1019527099
-	.long	2563102208
-	.long	1069050231
-	.long	3857293792
-	.long	1022311697
-	.long	635982336
-	.long	1069066691
-	.long	3625936637
-	.long	1017511744
-	.long	1116940800
-	.long	1069083152
-	.long	3653872993
-	.long	1022016631
-	.long	4075964160
-	.long	1069099614
-	.long	2468900271
-	.long	1021769532
-	.long	993165568
-	.long	1069116079
-	.long	1358104224
-	.long	1021199776
-	.long	528586752
-	.long	1069132545
-	.long	2200950332
-	.long	1022024872
-	.long	2752395776
-	.long	1069149012
-	.long	3197072454
-	.long	1017751319
-	.long	3439855616
-	.long	1069165481
-	.long	1651081806
-	.long	1020809338
-	.long	2661257728
-	.long	1069181952
-	.long	539032752
-	.long	1021728805
-	.long	486957312
-	.long	1069198425
-	.long	3136045149
-	.long	1016888671
-	.long	1282340352
-	.long	1069214899
-	.long	2593963259
-	.long	1018956103
-	.long	822921728
-	.long	1069231375
-	.long	2146032737
-	.long	1022306465
-	.long	3474216192
-	.long	1069247852
-	.long	3976811625
-	.long	1021350207
-	.long	716902656
-	.long	1069264332
-	.long	718267222
-	.long	1018624727
-	.long	1211594496
-	.long	1069280813
-	.long	1485641389
-	.long	1018447451
-	.long	734070272
-	.long	1069297296
-	.long	354455128
-	.long	1021341291
-	.long	3650110720
-	.long	1069313780
-	.long	682185947
-	.long	1021651853
-	.long	1440663040
-	.long	1069330267
-	.long	3558574550
-	.long	1021615110
-	.long	2766612224
-	.long	1069346755
-	.long	874607978
-	.long	1017746872
-	.long	3404011008
-	.long	1069363245
-	.long	4154988502
-	.long	1021439906
-	.long	3423949056
-	.long	1069379737
-	.long	2263202309
-	.long	1021479615
-	.long	2897587712
-	.long	1069396231
-	.long	2562065031
-	.long	1022090363
-	.long	1896159232
-	.long	1069412727
-	.long	3836237663
-	.long	1019867288
-	.long	490968576
-	.long	1069429225
-	.long	3322056743
-	.long	1006752762
-	.long	3048360192
-	.long	1069445724
-	.long	1152314833
-	.long	1013122252
-	.long	1049850624
-	.long	1069462226
-	.long	3601590727
-	.long	1022214610
-	.long	3156899584
-	.long	1069478729
-	.long	1855169970
-	.long	1019487271
-	.long	851173376
-	.long	1069495235
-	.long	312649594
-	.long	1020868604
-	.long	2794281728
-	.long	1069511742
-	.long	1093490181
-	.long	1020777577
-	.long	468042496
-	.long	1069528252
-	.long	1152540679
-	.long	1021403732
-	.long	2534219264
-	.long	1069544763
-	.long	2292126035
-	.long	1021872430
-	.long	1376146432
-	.long	1069558527
-	.long	3293753641
-	.long	1020500454
-	.long	4175442432
-	.long	1069575044
-	.long	3626347564
-	.long	1021610969
-	.long	3523113472
-	.long	1069591566
-	.long	339956500
-	.long	1021119039
-	.long	4003350528
-	.long	1069608092
-	.long	3429333082
-	.long	1022813542
-	.long	1611067392
-	.long	1069624623
-	.long	2298017544
-	.long	1021977587
-	.long	931782144
-	.long	1069641158
-	.long	2164684743
-	.long	1021250988
-	.long	2256725504
-	.long	1069657697
-	.long	1138762335
-	.long	1021443776
-	.long	1582853120
-	.long	1069674241
-	.long	1084010382
-	.long	1022994693
-	.long	3497758720
-	.long	1069690789
-	.long	406366244
-	.long	1022713586
-	.long	3999816960
-	.long	1069707342
-	.long	1488723042
-	.long	1023381290
-	.long	3383096064
-	.long	1069723900
-	.long	2541558953
-	.long	1019137887
-	.long	1942403584
-	.long	1069740463
-	.long	1879620343
-	.long	1022653642
-	.long	4268263680
-	.long	1069757030
-	.long	3039077047
-	.long	1022252545
-	.long	2067062272
-	.long	1069773603
-	.long	4190670677
-	.long	1020725863
-	.long	4225828096
-	.long	1069790180
-	.long	1998567321
-	.long	1022014385
-	.long	2452507136
-	.long	1069806763
-	.long	1511628873
-	.long	1021900300
-	.long	1340746240
-	.long	1069823351
-	.long	788367341
-	.long	1022726208
-	.long	1190035456
-	.long	1069839944
-	.long	3856337230
-	.long	1021834118
-	.long	2300688384
-	.long	1069856542
-	.long	3211396579
-	.long	1022621365
-	.long	678886400
-	.long	1069873146
-	.long	4001011887
-	.long	1022042646
-	.long	921594112
-	.long	1069889755
-	.long	557811968
-	.long	1023065533
-	.long	3331668992
-	.long	1069906369
-	.long	1877060679
-	.long	1022419742
-	.long	3917875200
-	.long	1069922989
-	.long	1181055171
-	.long	1022752712
-	.long	2984829696
-	.long	1069939615
-	.long	4294526932
-	.long	1021499988
-	.long	838049024
-	.long	1069956247
-	.long	3658081878
-	.long	1022957952
-	.long	2078928384
-	.long	1069972884
-	.long	820353701
-	.long	1019391107
-	.long	2719854336
-	.long	1069989527
-	.long	1644022489
-	.long	1023378240
-	.long	3069117696
-	.long	1070006176
-	.long	2771393702
-	.long	1019319954
-	.long	3435962368
-	.long	1070022831
-	.long	3876394145
-	.long	1023024433
-	.long	4130595328
-	.long	1070039492
-	.long	1630447748
-	.long	1021465882
-	.long	1169236224
-	.long	1070056160
-	.long	2828355997
-	.long	1020458120
-	.long	3453997312
-	.long	1070072833
-	.long	164091641
-	.long	1020388279
-	.long	2708127744
-	.long	1070089513
-	.long	3036550223
-	.long	1023328684
-	.long	3540797696
-	.long	1070106199
-	.long	3710949463
-	.long	1022568805
-	.long	1972276736
-	.long	1070122892
-	.long	3885277950
-	.long	1019761674
-	.long	2613815552
-	.long	1070139591
-	.long	2764165077
-	.long	1022921023
-	.long	1487791616
-	.long	1070156297
-	.long	1330644769
-	.long	1023162679
-	.long	3207593472
-	.long	1070173009
-	.long	3911007221
-	.long	1022993496
-	.long	3797764608
-	.long	1070189728
-	.long	979712598
-	.long	1022554580
-	.long	3578920448
-	.long	1070206454
-	.long	2825738223
-	.long	1020223708
-	.long	2872795648
-	.long	1070223187
-	.long	392451124
-	.long	1022666279
-	.long	2002258432
-	.long	1070239927
-	.long	3730407632
-	.long	1023148291
-	.long	1291326464
-	.long	1070256674
-	.long	3723802980
-	.long	1022514089
-	.long	1065180928
-	.long	1070273428
-	.long	2635617463
-	.long	1022654470
-	.long	1650181632
-	.long	1070290189
-	.long	2061982883
-	.long	1022853411
-	.long	3373882880
-	.long	1070306957
-	.long	319732785
-	.long	1022017175
-	.long	2270081280
-	.long	1070323733
-	.long	2237757411
-	.long	1023064087
-	.long	2963732736
-	.long	1070340516
-	.long	468839165
-	.long	1023293774
-	.long	1491099904
-	.long	1070357307
-	.long	1502657946
-	.long	1021533479
-	.long	2479636480
-	.long	1070374105
-	.long	482913562
-	.long	1021986286
-	.long	1968133632
-	.long	1070390911
-	.long	3281474337
-	.long	1022646400
-	.long	291639040
-	.long	1070407725
-	.long	2453320259
-	.long	1022812423
-	.long	2081472512
-	.long	1070424546
-	.long	2939989570
-	.long	1023091888
-	.long	3380340480
-	.long	1070441375
-	.long	2850707499
-	.long	1021921109
-	.long	232287488
-	.long	1070458213
-	.long	3674625342
-	.long	1020725130
-	.long	1567614208
-	.long	1070475058
-	.long	9347334
-	.long	1022024009
-	.long	3433091072
-	.long	1070491911
-	.long	282524999
-	.long	1021433523
-	.long	1876877312
-	.long	1070508773
-	.long	3470449440
-	.long	1019309721
-	.long	1538472192
-	.long	1070525643
-	.long	2089486825
-	.long	1019698916
-	.long	2763830784
-	.long	1070542521
-	.long	443498115
-	.long	1020505194
-	.long	1605381632
-	.long	1070559408
-	.long	3018871601
-	.long	1022869913
-	.long	2706946048
-	.long	1070576303
-	.long	3936260892
-	.long	1023175875
-	.long	2123887360
-	.long	1070593207
-	.long	2994220655
-	.long	1022825948
-	.long	104015104
-	.long	1070603108
-	.long	335054493
-	.long	1023441853
-	.long	2904568832
-	.long	1070615800
-	.long	1451215633
-	.long	1023853857
-	.long	3456197120
-	.long	1070632739
-	.long	436334733
-	.long	1024026432
-	.long	252452352
-	.long	1070649697
-	.long	34596167
-	.long	1024031396
-	.long	3328018432
-	.long	1070666672
-	.long	2644547073
-	.long	1024296758
-	.long	1255829248
-	.long	1070683667
-	.long	552832586
-	.long	1023763122
-	.long	4097058560
-	.long	1070700680
-	.long	1955640623
-	.long	1021394654
-	.long	451770112
-	.long	1070717714
-	.long	3428903777
-	.long	1022941142
-	.long	408920832
-	.long	1070734767
-	.long	165503263
-	.long	1023894958
-	.long	1186960640
-	.long	1070751840
-	.long	435826450
-	.long	1024026134
-	.long	19078656
-	.long	1070768934
-	.long	1834169749
-	.long	1022899284
-	.long	2743490304
-	.long	1070786048
-	.long	494581074
-	.long	1018818479
-	.long	2328961024
-	.long	1070803184
-	.long	2987908834
-	.long	1022581110
-	.long	350011392
-	.long	1070820342
-	.long	240771184
-	.long	1024143083
-	.long	2692326912
-	.long	1070837521
-	.long	666056837
-	.long	1022394776
-	.long	2373274368
-	.long	1070854723
-	.long	2484337770
-	.long	1024228156
-	.long	1017131520
-	.long	1070871948
-	.long	3285648279
-	.long	1024025789
-	.long	265558272
-	.long	1070889196
-	.long	392241896
-	.long	1024252809
-	.long	1778008064
-	.long	1070906467
-	.long	1536107943
-	.long	1023949300
-	.long	2937184768
-	.long	1070923762
-	.long	3541062251
-	.long	1019448646
-	.long	1144442880
-	.long	1070941082
-	.long	3691683781
-	.long	1022123948
-	.long	2410165504
-	.long	1070958426
-	.long	1804181960
-	.long	1023945221
-	.long	4174350848
-	.long	1070975795
-	.long	2016094861
-	.long	1021716585
-	.long	3897012480
-	.long	1070993190
-	.long	175294410
-	.long	1023703404
-	.long	3353623040
-	.long	1071010611
-	.long	167973242
-	.long	1023240839
-	.long	45671168
-	.long	1071028059
-	.long	2166856113
-	.long	1021565413
-	.long	86063872
-	.long	1071045533
-	.long	2676254727
-	.long	1023985299
-	.long	1019772672
-	.long	1071063034
-	.long	989043593
-	.long	1021549587
-	.long	414297344
-	.long	1071080563
-	.long	3960972046
-	.long	1024307251
-	.long	155173120
-	.long	1071098120
-	.long	1830919291
-	.long	1021592251
-	.long	2151562240
-	.long	1071115705
-	.long	405408666
-	.long	1023423128
-	.long	4041854720
-	.long	1071133319
-	.long	2043497827
-	.long	1024411503
-	.long	3489224192
-	.long	1071150963
-	.long	3072215864
-	.long	1022698635
-	.long	2477196288
-	.long	1071168637
-	.long	1812195139
-	.long	1022689192
-	.long	3015298816
-	.long	1071186341
-	.long	764841969
-	.long	1021027331
-	.long	2844731136
-	.long	1071204076
-	.long	2878117321
-	.long	1019116513
-	.long	4028950528
-	.long	1071221842
-	.long	698911452
-	.long	1023265602
-	.long	69441536
-	.long	1071239641
-	.long	3253467847
-	.long	1020795075
-	.long	1676209920
-	.long	1071257471
-	.long	4272431167
-	.long	1022873982
-	.long	2408752384
-	.long	1071275334
-	.long	648519100
-	.long	1024385717
-	.long	151623680
-	.long	1071293231
-	.long	345257017
-	.long	1019561408
-	.long	1410154240
-	.long	1071311161
-	.long	197863993
-	.long	1023224207
-	.long	4131351552
-	.long	1071329125
-	.long	2620801789
-	.long	1024411169
-	.long	1999664384
-	.long	1071347125
-	.long	3952692616
-	.long	1024168086
-	.long	1617668864
-	.long	1071365160
-	.long	3019889809
-	.long	1021907692
-	.long	1032074240
-	.long	1071383231
-	.long	59469899
-	.long	1023656194
-	.long	2619492096
-	.long	1071401338
-	.long	1417526820
-	.long	1021457783
-	.long	202429440
-	.long	1071419483
-	.long	2927667935
-	.long	1019175447
-	.long	525044224
-	.long	1071437665
-	.long	38166811
-	.long	1023981879
-	.long	1779258880
-	.long	1071455885
-	.long	481252500
-	.long	1023310234
-	.long	2195673600
-	.long	1071474144
-	.long	3962395981
-	.long	1021339088
-	.long	44573696
-	.long	1071492443
-	.long	3936281395
-	.long	1023014829
-	.long	2226905344
-	.long	1071510781
-	.long	1515320476
-	.long	1024320623
-	.long	2800512512
-	.long	1071529160
-	.long	1225403697
-	.long	1021081846
-	.long	161113600
-	.long	1071547581
-	.long	3064809733
-	.long	1024173917
-	.long	1338410240
-	.long	1071566043
-	.long	2027604973
-	.long	1024362526
-	.long	522433280
-	.long	1071584548
-	.long	2055171723
-	.long	1023858825
-	.long	539595776
-	.long	1071603096
-	.long	3868820135
-	.long	1022936424
-	.long	4264017664
-	.long	1071621687
-	.long	3228065145
-	.long	1023479578
-	.long	1733924096
-	.long	1071640324
-	.long	3511934475
-	.long	1022496355
-	.long	108880384
-	.long	1071651839
-	.long	615880967
-	.long	1023519706
-	.long	3517856512
-	.long	1071661202
-	.long	3113108559
-	.long	1025190289
-	.long	4043153152
-	.long	1071670589
-	.long	1571836218
-	.long	1023106116
-	.long	3251299072
-	.long	1071680000
-	.long	3444076102
-	.long	1022187841
-	.long	2736921600
-	.long	1071689435
-	.long	272771483
-	.long	1025095280
-	.long	3897698560
-	.long	1071703633
-	.long	2075390188
-	.long	1022489022
-	.long	3209485056
-	.long	1071722652
-	.long	1438094065
-	.long	1021844944
-	.long	3781432064
-	.long	1071741774
-	.long	1675017145
-	.long	1024143828
-	.long	2684184064
-	.long	1071761003
-	.long	2259963753
-	.long	1024731393
-	.long	1840489728
-	.long	1071780342
-	.long	3372883597
-	.long	1023431408
-	.long	3764087808
-	.long	1071799794
-	.long	3307523102
-	.long	1024485788
-	.long	3006232320
-	.long	1071819364
-	.long	3088971966
-	.long	1025213251
-	.long	3374881280
-	.long	1071839055
-	.long	834437749
-	.long	1025236452
-	.long	797284864
-	.long	1071858872
-	.long	3122663941
-	.long	1025320473
-	.long	545765120
-	.long	1071878818
-	.long	826539625
-	.long	1022450955
-	.long	107562240
-	.long	1071898898
-	.long	339584600
-	.long	1022481255
-	.long	2123649024
-	.long	1071919116
-	.long	3912959833
-	.long	1024321009
-	.long	1562385664
-	.long	1071939478
-	.long	2846067230
-	.long	1023343981
-	.long	2963085824
-	.long	1071959988
-	.long	954548627
-	.long	1021475211
-	.long	3325550592
-	.long	1071980652
-	.long	3459651155
-	.long	1025305573
-	.long	775752448
-	.long	1072001476
-	.long	3582746667
-	.long	1023859460
-	.long	3238590720
-	.long	1072022464
-	.long	634636162
-	.long	1024472353
-	.long	2758801920
-	.long	1072043624
-	.long	3078216319
-	.long	1025304516
-	.long	1370319104
-	.long	1072064962
-	.long	2570569078
-	.long	1025099442
-	.long	2615805184
-	.long	1072086484
-	.long	3729933412
-	.long	1024605112
-	.long	3077336576
-	.long	1072108198
-	.long	1948916066
-	.long	1024781603
-	.long	1099528192
-	.long	1072130112
-	.long	3139143157
-	.long	1023729360
-	.long	1231903232
-	.long	1072152233
-	.long	1349513477
-	.long	1024737515
-	.long	1507504128
-	.long	1072174570
-	.long	3484516322
-	.long	1024000959
-	.long	2214659840
-	.long	1072197132
-	.long	2563820917
-	.long	1025225535
-	.long	1804739840
-	.long	1072219929
-	.long	760038746
-	.long	1024482855
-	.long	1413746688
-	.long	1072242971
-	.long	3401734714
-	.long	1025129838
-	.long	821409536
-	.long	1072266269
-	.long	3729772551
-	.long	1025484796
-	.long	3031825664
-	.long	1072289834
-	.long	122256749
-	.long	1024752594
-	.long	1710784256
-	.long	1072313680
-	.long	1518205483
-	.long	1024724809
-	.long	3025265152
-	.long	1072337819
-	.long	409951989
-	.long	1022835555
-	.long	287769088
-	.long	1072362267
-	.long	800355594
-	.long	1022484850
-	.long	198179840
-	.long	1072387038
-	.long	3502926213
-	.long	1024209373
-	.long	1909130496
-	.long	1072412149
-	.long	3064694319
-	.long	1025380823
-	.long	1941732096
-	.long	1072437619
-	.long	4112930390
-	.long	1024294679
-	.long	3492010496
-	.long	1072463467
-	.long	2684918107
-	.long	1023220233
-	.long	81959680
-	.long	1072489716
-	.long	220021366
-	.long	1020635131
-	.long	2297837056
-	.long	1072516387
-	.long	4027683826
-	.long	1021041185
-	.long	270404096
-	.long	1072543508
-	.long	2012766065
-	.long	1021780753
-	.long	3667376896
-	.long	1072571105
-	.long	2727981522
-	.long	1023009874
-	.long	330400256
-	.long	1072599212
-	.long	2940017003
-	.long	1025393439
-	.long	1119293952
-	.long	1072627861
-	.long	1608550416
-	.long	1022675612
-	.long	3536155904
-	.long	1072657091
-	.long	349665778
-	.long	1025156751
-	.long	3078046720
-	.long	1072686946
-	.long	2016159996
-	.long	1022193169
-	.long	455228416
-	.long	1072705361
-	.long	1908539328
-	.long	1026126332
-	.long	1871505664
-	.long	1072720988
-	.long	2784700894
-	.long	1025922277
-	.long	1630994432
-	.long	1072737010
-	.long	361107678
-	.long	1022887244
-	.long	2084558336
-	.long	1072753462
-	.long	2642784509
-	.long	1072689083
-	.long	1514442531
-	.long	1072688953
-	.long	333108933
-	.long	1072688821
-	.long	3392112024
-	.long	1072688686
-	.long	2099852862
-	.long	1072688550
-	.long	749609004
-	.long	1072688412
-	.long	3634632596
-	.long	1072688271
-	.long	2163248461
-	.long	1072688129
-	.long	628657846
-	.long	1072687985
-	.long	3324036511
-	.long	1072687838
-	.long	1657632815
-	.long	1072687690
-	.long	4217538760
-	.long	1072687539
-	.long	2411951597
-	.long	1072687387
-	.long	533944872
-	.long	1072687233
-	.long	2876566508
-	.long	1072687076
-	.long	847936891
-	.long	1072686918
-	.long	3036019913
-	.long	1072686757
-	.long	848884575
-	.long	1072686595
-	.long	2874443326
-	.long	1072686430
-	.long	520713666
-	.long	1072686264
-	.long	2375556481
-	.long	1072686095
-	.long	4141904948
-	.long	1072685924
-	.long	1522666382
-	.long	1072685752
-	.long	3105624104
-	.long	1072685577
-	.long	298666327
-	.long	1072685401
-	.long	1689524500
-	.long	1072685222
-	.long	2981002200
-	.long	1072685041
-	.long	4170844284
-	.long	1072684858
-	.long	961802263
-	.long	1072684674
-	.long	1941503454
-	.long	1072684487
-	.long	2812647170
-	.long	1072684298
-	.long	3572873869
-	.long	1072684107
-	.long	4219797823
-	.long	1072683914
-	.long	456039788
-	.long	1072683720
-	.long	869096151
-	.long	1072683523
-	.long	1161535119
-	.long	1072683324
-	.long	1330865866
-	.long	1072683123
-	.long	1374571204
-	.long	1072682920
-	.long	1290107538
-	.long	1072682715
-	.long	1074904836
-	.long	1072682508
-	.long	726366587
-	.long	1072682299
-	.long	241869763
-	.long	1072682088
-	.long	3913732079
-	.long	1072681874
-	.long	3149342765
-	.long	1072681659
-	.long	2240966306
-	.long	1072681442
-	.long	1185873216
-	.long	1072681223
-	.long	4276274591
-	.long	1072681001
-	.long	2919452883
-	.long	1072680778
-	.long	1407565635
-	.long	1072680553
-	.long	4032743551
-	.long	1072680325
-	.long	2202188565
-	.long	1072680096
-	.long	207977577
-	.long	1072679865
-	.long	2342160518
-	.long	1072679631
-	.long	11858423
-	.long	1072679396
-	.long	1804034453
-	.long	1072679158
-	.long	3420722787
-	.long	1072678918
-	.long	563930456
-	.long	1072678677
-	.long	1820539192
-	.long	1072678433
-	.long	2892501606
-	.long	1072678187
-	.long	3776710320
-	.long	1072677939
-	.long	175063337
-	.long	1072677690
-	.long	674333171
-	.long	1072677438
-	.long	976363026
-	.long	1072677184
-	.long	1077935934
-	.long	1072676928
-	.long	1921075490
-	.long	1072676540
-	.long	881493302
-	.long	1072676016
-	.long	3275752439
-	.long	1072675483
-	.long	486855588
-	.long	1072674943
-	.long	1077229111
-	.long	1072674394
-	.long	723950308
-	.long	1072673837
-	.long	3693582199
-	.long	1072673271
-	.long	1367335316
-	.long	1072672698
-	.long	2305837020
-	.long	1072672116
-	.long	2184358641
-	.long	1072671526
-	.long	972682840
-	.long	1072670928
-	.long	2935101762
-	.long	1072670321
-	.long	3745513263
-	.long	1072669706
-	.long	3372320886
-	.long	1072669083
-	.long	1783464620
-	.long	1072668452
-	.long	3241386215
-	.long	1072667812
-	.long	3418125284
-	.long	1072667164
-	.long	2280219148
-	.long	1072666508
-	.long	4088700758
-	.long	1072665843
-	.long	219227400
-	.long	1072665171
-	.long	3521816918
-	.long	1072664489
-	.long	1076205279
-	.long	1072663800
-	.long	1436484616
-	.long	1072663102
-	.long	271362610
-	.long	1072662396
-	.long	1838996688
-	.long	1072661681
-	.long	1807122518
-	.long	1072660958
-	.long	137953542
-	.long	1072660227
-	.long	1088178584
-	.long	1072659487
-	.long	324057537
-	.long	1072658739
-	.long	2101288076
-	.long	1072657982
-	.long	2085133974
-	.long	1072657217
-	.long	235324451
-	.long	1072656444
-	.long	806051592
-	.long	1072655662
-	.long	3756033140
-	.long	1072654871
-	.long	453542543
-	.long	1072654073
-	.long	3741177327
-	.long	1072653265
-	.long	691216109
-	.long	1072652450
-	.long	4145223372
-	.long	1072651625
-	.long	1174439091
-	.long	1072650793
-	.long	324416139
-	.long	1072649952
-	.long	1550246310
-	.long	1072649102
-	.long	511524674
-	.long	1072648244
-	.long	1457248482
-	.long	1072647377
-	.long	45944955
-	.long	1072646502
-	.long	525537397
-	.long	1072645618
-	.long	2848440188
-	.long	1072644725
-	.long	2671555633
-	.long	1072643824
-	.long	4241172637
-	.long	1072642914
-	.long	3213094278
-	.long	1072641996
-	.long	3832503688
-	.long	1072641069
-	.long	1754091534
-	.long	1072640134
-	.long	1221921804
-	.long	1072639190
-	.long	2184526489
-	.long	1072638237
-	.long	294902089
-	.long	1072637276
-	.long	4090375270
-	.long	1072636305
-	.long	632860906
-	.long	1072635327
-	.long	2753498702
-	.long	1072634339
-	.long	1808009252
-	.long	1072633343
-	.long	2036428672
-	.long	1072632338
-	.long	3383235626
-	.long	1072631324
-	.long	1497347484
-	.long	1072630302
-	.long	617018317
-	.long	1072629271
-	.long	684933058
-	.long	1072628231
-	.long	1643170798
-	.long	1072627182
-	.long	3011066360
-	.long	1072625592
-	.long	957158713
-	.long	1072623442
-	.long	1390907941
-	.long	1072621256
-	.long	3819155270
-	.long	1072619034
-	.long	3443571196
-	.long	1072616777
-	.long	4045412458
-	.long	1072614484
-	.long	805503923
-	.long	1072612156
-	.long	1778922015
-	.long	1072609791
-	.long	2125033665
-	.long	1072607390
-	.long	1287203863
-	.long	1072604953
-	.long	2992629568
-	.long	1072602479
-	.long	2367267127
-	.long	1072599969
-	.long	3115526047
-	.long	1072597422
-	.long	340219539
-	.long	1072594839
-	.long	2017215719
-	.long	1072592218
-	.long	3225443424
-	.long	1072589560
-	.long	3326565673
-	.long	1072586865
-	.long	1669811211
-	.long	1072584133
-	.long	1886735022
-	.long	1072581363
-	.long	3301071171
-	.long	1072578555
-	.long	928514283
-	.long	1072575710
-	.long	2656364059
-	.long	1072572826
-	.long	3473490507
-	.long	1072569904
-	.long	2649965606
-	.long	1072566944
-	.long	3736819052
-	.long	1072563945
-	.long	1680885175
-	.long	1072560908
-	.long	4413771
-	.long	1072557832
-	.long	2214869753
-	.long	1072554716
-	.long	3214725184
-	.long	1072551561
-	.long	2186079903
-	.long	1072548367
-	.long	2590372131
-	.long	1072545133
-	.long	3578146079
-	.long	1072541859
-	.long	4283712755
-	.long	1072538545
-	.long	3824834510
-	.long	1072535191
-	.long	1302400298
-	.long	1072531797
-	.long	95058636
-	.long	1072528362
-	.long	3563906063
-	.long	1072524885
-	.long	2167230730
-	.long	1072521368
-	.long	3524918334
-	.long	1072517809
-	.long	2353304918
-	.long	1072514209
-	.long	1939625839
-	.long	1072510567
-	.long	1256714581
-	.long	1072506883
-	.long	3552525848
-	.long	1072503156
-	.long	3464809522
-	.long	1072499387
-	.long	4200542593
-	.long	1072495575
-	.long	355609124
-	.long	1072491721
-	.long	3684139099
-	.long	1072487822
-	.long	148355918
-	.long	1072483881
-	.long	1457689242
-	.long	1072479895
-	.long	2118591596
-	.long	1072475865
-	.long	908848089
-	.long	1072471791
-	.long	877032689
-	.long	1072467672
-	.long	752012304
-	.long	1072463508
-	.long	3532301749
-	.long	1072459298
-	.long	3600563221
-	.long	1072455043
-	.long	3902857084
-	.long	1072450742
-	.long	3063101036
-	.long	1072446395
-	.long	3972344374
-	.long	1072442001
-	.long	903183549
-	.long	1072437561
-	.long	983892938
-	.long	1072433073
-	.long	2722858568
-	.long	1072428537
-	.long	302790515
-	.long	1072423954
-	.long	759811057
-	.long	1072419322
-	.long	2507809922
-	.long	1072414641
-	.long	2388408813
-	.long	1072407528
-	.long	2084492942
-	.long	1072397870
-	.long	2435703301
-	.long	1072388010
-	.long	1935433360
-	.long	1072377945
-	.long	2742047290
-	.long	1072367671
-	.long	2053284205
-	.long	1072357185
-	.long	657783367
-	.long	1072346483
-	.long	2893664841
-	.long	1072335560
-	.long	3718906405
-	.long	1072324413
-	.long	1547896303
-	.long	1072313038
-	.long	2494058440
-	.long	1072301429
-	.long	3133238742
-	.long	1072289582
-	.long	3327000086
-	.long	1072277492
-	.long	1860667274
-	.long	1072265154
-	.long	665340747
-	.long	1072252562
-	.long	443347841
-	.long	1072239710
-	.long	581282618
-	.long	1072226592
-	.long	3349780465
-	.long	1072213201
-	.long	914217606
-	.long	1072199532
-	.long	989797661
-	.long	1072185576
-	.long	945436416
-	.long	1072171326
-	.long	549291300
-	.long	1072156774
-	.long	1814636389
-	.long	1072141911
-	.long	239092858
-	.long	1072126729
-	.long	1794680724
-	.long	1072111217
-	.long	1241534678
-	.long	1072095366
-	.long	3366566214
-	.long	1072079164
-	.long	1244090828
-	.long	1072062601
-	.long	1708448120
-	.long	1072045663
-	.long	3544260650
-	.long	1072028337
-	.long	1402741403
-	.long	1072010610
-	.long	2551936888
-	.long	1071992465
-	.long	617669739
-	.long	1071973887
-	.long	794002186
-	.long	1071954857
-	.long	2021237693
-	.long	1071935356
-	.long	540450384
-	.long	1071915364
-	.long	1920555537
-	.long	1071894857
-	.long	2879585206
-	.long	1071873811
-	.long	3000237455
-	.long	1071852199
-	.long	3352974346
-	.long	1071829991
-	.long	569629937
-	.long	1071807155
-	.long	2077237208
-	.long	1071783653
-	.long	2284891805
-	.long	1071759446
-	.long	1226651784
-	.long	1071734489
-	.long	1102047405
-	.long	1071708731
-	.long	2009896384
-	.long	1071682115
-	.long	927419082
-	.long	1071654577
-	.long	85010366
-	.long	1071607413
-	.long	696431025
-	.long	1071548180
-	.long	2611410541
-	.long	1071486585
-	.long	2612593658
-	.long	1071422396
-	.long	3548155306
-	.long	1071355336
-	.long	3887997484
-	.long	1071285073
-	.long	244854763
-	.long	1071211202
-	.long	4214445648
-	.long	1071133216
-	.long	2303966727
-	.long	1071050478
-	.long	3991040013
-	.long	1070962152
-	.long	3126952278
-	.long	1070867118
-	.long	1817448378
-	.long	1070763804
-	.long	1793814864
-	.long	1070649884
-	.long	3507224072
-	.long	1070447193
-	.long	4027609105
-	.long	1070148772
-	.long	577507993
-	.long	1069779414
-	.long	2310232419
-	.long	1068931829
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	0
-	.long	0
-	.long	4294950912
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	2147483584
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.type	static_const_table,@object
-	.size	static_const_table,6096
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
deleted file mode 100644
index e491396..0000000
--- a/libm/x86/e_atan2.S
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//
-//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
-//   as follows.
-//                   /  sign(Y) atan(|Y/X|)                if X > 0
-//       atan2(Y,X) =
-//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
-//
-//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
-//   where PI and sgn can be determined by the four possible combinations of
-//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
-//   for atan(|Y/X|).
-//
-//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
-//   if X > 0, and sign(Y)*pi otherwise.
-//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
-//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
-//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
-//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
-//   calculated using the polynomial in 4 above.
-//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
-//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
-//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
-//
-//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
-//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
-//
-//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
-//   163 possible values. These values are calculated beforehand and stored
-//   in a table. The polynomial is the one used in 4.
-//
-// Special cases:
-//  atan2(+-0, +0) = +-0
-//  atan2(+-0, -0) = +-pi
-//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
-//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
-//  atan2(+-y, +INF) = +-0, for finite y > 0
-//  atan2(+-y, -INF) = +-pi, for finite y > 0
-//  atan2(+-INF, x) = +-pi/2, for finite x
-//  atan2(+-INF, +INF) = +-pi/4
-//  atan2(+-INF, -INF) = +-3*pi/4
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  atan2
-ENTRY(atan2)
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 64(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     136(%esp), %xmm1
-        movsd     128(%esp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        movq      %xmm0, 8(%esp)
-        andl      $32752, %eax
-        movq      %xmm1, 16(%esp)
-        subl      $14448, %eax
-        cmpl      $3840, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        subl      $14448, %eax
-        cmpl      $3840, %eax
-        ja        .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        unpcklpd  %xmm1, %xmm0
-        xorpd     %xmm5, %xmm5
-        xorpd     %xmm3, %xmm3
-        movl      $2048, %eax
-        pinsrw    $3, %eax, %xmm5
-        paddw     %xmm1, %xmm5
-        psrlq     $29, %xmm5
-        rcpss     %xmm5, %xmm3
-        xorpd     %xmm4, %xmm4
-        movl      $14336, %ecx
-        pinsrw    $3, %ecx, %xmm4
-        psllq     $29, %xmm3
-        paddw     %xmm4, %xmm3
-        mulsd     %xmm0, %xmm3
-        xorpd     %xmm2, %xmm2
-        xorpd     %xmm6, %xmm6
-        xorpd     %xmm7, %xmm7
-        movl      $32768, %eax
-        pinsrw    $2, %eax, %xmm6
-        movl      $32767, %ecx
-        pinsrw    $3, %ecx, %xmm7
-        paddd     %xmm6, %xmm3
-        andpd     %xmm7, %xmm3
-        movapd    %xmm3, %xmm5
-        pextrw    $3, %xmm3, %eax
-        movl      $16448, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        minsd     %xmm2, %xmm3
-        movmskpd  %xmm0, %edx
-        psllq     $1, %xmm0
-        psrlq     $1, %xmm0
-        cmpsd     $2, %xmm2, %xmm5
-        psllq     $1, %xmm1
-        psrlq     $1, %xmm1
-        movapd    %xmm1, %xmm6
-        movapd    %xmm1, %xmm7
-        movapd    %xmm0, %xmm2
-        movl      $0, %ecx
-        pinsrw    $0, %ecx, %xmm6
-        subsd     %xmm6, %xmm7
-        movapd    %xmm0, %xmm4
-        mulsd     %xmm3, %xmm6
-        mulsd     %xmm3, %xmm4
-        mulsd     %xmm3, %xmm7
-        andpd     %xmm5, %xmm0
-        subsd     %xmm6, %xmm0
-        andpd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm4
-        subsd     %xmm7, %xmm0
-        andl      $32752, %eax
-        subl      $16286, %eax
-        cmpl      $1121, %eax
-        ja        .L_2TAG_PACKET_3.0.2
-        divsd     %xmm4, %xmm0
-        pextrw    $3, %xmm3, %ecx
-        movsd     2944(%ebx), %xmm2
-        movsd     2960(%ebx), %xmm3
-        pextrw    $0, %xmm5, %eax
-        addl      %edx, %edx
-        movapd    2688(%ebx,%edx,8), %xmm6
-        movapd    2752(%ebx,%edx,8), %xmm1
-        subl      $16286, %ecx
-        notl      %eax
-        andl      $1, %eax
-        addl      %eax, %ecx
-        addl      %ecx, %ecx
-        movapd    (%ebx,%ecx,8), %xmm5
-        xorpd     %xmm1, %xmm5
-        addpd     %xmm6, %xmm5
-        movapd    %xmm5, %xmm6
-        unpckhpd  %xmm5, %xmm5
-        xorpd     %xmm0, %xmm1
-        movapd    %xmm1, %xmm4
-        mulsd     %xmm0, %xmm0
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm3
-        addsd     %xmm6, %xmm1
-        subsd     %xmm1, %xmm6
-        addsd     %xmm4, %xmm6
-        addsd     2952(%ebx), %xmm2
-        mulsd     %xmm0, %xmm3
-        mulsd     %xmm0, %xmm4
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm4, %xmm2
-        addsd     2968(%ebx), %xmm3
-        mulsd     %xmm3, %xmm2
-        addsd     %xmm6, %xmm2
-        addsd     %xmm2, %xmm1
-        movsd     %xmm1, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_3.0.2:
-        addl      $942, %eax
-        cmpl      $942, %eax
-        ja        .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm4, %xmm4
-        movl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm4
-        divsd     %xmm1, %xmm4
-        addl      %edx, %edx
-        movapd    2752(%ebx,%edx,8), %xmm6
-        unpcklpd  %xmm3, %xmm3
-        xorpd     %xmm6, %xmm0
-        xorpd     %xmm6, %xmm2
-        xorpd     %xmm6, %xmm3
-        movapd    2816(%ebx,%edx,8), %xmm7
-        movsd     2944(%ebx), %xmm1
-        movsd     2960(%ebx), %xmm5
-        andpd     2880(%ebx,%edx,8), %xmm3
-        mulsd     %xmm4, %xmm2
-        mulsd     %xmm4, %xmm0
-        movapd    %xmm2, %xmm6
-        mulsd     %xmm2, %xmm2
-        mulsd     %xmm2, %xmm1
-        addsd     %xmm2, %xmm5
-        mulsd     %xmm2, %xmm6
-        addsd     2952(%ebx), %xmm1
-        mulsd     %xmm2, %xmm5
-        addsd     %xmm0, %xmm7
-        addpd     %xmm3, %xmm7
-        mulsd     %xmm6, %xmm1
-        addsd     2968(%ebx), %xmm5
-        mulsd     %xmm1, %xmm5
-        addsd     %xmm7, %xmm5
-        unpckhpd  %xmm7, %xmm7
-        addsd     %xmm7, %xmm5
-        movsd     %xmm5, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        movsd     16(%esp), %xmm1
-        movsd     8(%esp), %xmm0
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      %eax, %ecx
-        jg        .L_2TAG_PACKET_6.0.2
-        pextrw    $3, %xmm1, %ecx
-        cmpl      $32767, %ecx
-        jg        .L_2TAG_PACKET_7.0.2
-        divsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
-        andpd     2672(%ebx), %xmm0
-        movsd     2640(%ebx), %xmm2
-        xorpd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_6.0.2:
-        andpd     2672(%ebx), %xmm0
-        movsd     2624(%ebx), %xmm2
-        xorpd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_0.0.2:
-.L_2TAG_PACKET_1.0.2:
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_8.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_9.0.2
-        movsd     2992(%ebx), %xmm3
-        movl      $1024, %edx
-        movsd     2976(%ebx), %xmm4
-        xorpd     %xmm6, %xmm6
-        movsd     3008(%ebx), %xmm7
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_11.0.2:
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_13.0.2:
-        addl      %ecx, %edx
-        subl      %eax, %edx
-        cmpl      $2048, %edx
-        ja        .L_2TAG_PACKET_5.0.2
-        addl      $15344, %edx
-        pinsrw    $3, %edx, %xmm6
-        andpd     %xmm4, %xmm0
-        andpd     %xmm4, %xmm1
-        orpd      %xmm6, %xmm0
-        orpd      %xmm7, %xmm1
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_10.0.2:
-        subl      $880, %edx
-        mulsd     %xmm3, %xmm0
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_14.0.2
-        jmp       .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_12.0.2:
-        addl      $880, %edx
-        mulsd     %xmm3, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_15.0.2
-        jmp       .L_2TAG_PACKET_13.0.2
-.L_2TAG_PACKET_8.0.2:
-        movd      %xmm0, %edx
-        movapd    %xmm0, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $1048575, %ecx
-        orl       %edx, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_16.0.2
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        cmpl      $32752, %eax
-        jae       .L_2TAG_PACKET_17.0.2
-        movapd    2624(%ebx), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-.L_2TAG_PACKET_18.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_16.0.2:
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_17.0.2:
-        movd      %xmm1, %eax
-        movapd    %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        movl      $-2147483648, %edx
-        andl      %ecx, %edx
-        andl      $1048575, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_19.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_20.0.2
-        movapd    2656(%ebx), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_19.0.2:
-        movapd    %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_20.0.2:
-        movapd    2656(%ebx), %xmm5
-        movapd    2624(%ebx), %xmm6
-        addpd     %xmm6, %xmm5
-        pshufd    $238, %xmm5, %xmm6
-        addpd     %xmm6, %xmm5
-        orpd      %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_9.0.2:
-        movd      %xmm1, %eax
-        movapd    %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        movl      $-2147483648, %edx
-        andl      %ecx, %edx
-        andl      $1048575, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_19.0.2
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_21.0.2
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_21.0.2:
-        movapd    2640(%ebx), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_14.0.2:
-        pextrw    $3, %xmm1, %edx
-        andl      $32768, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_22.0.2
-        movapd    2640(%ebx), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        comisd    %xmm0, %xmm1
-        orpd      %xmm5, %xmm0
-        jne       .L_2TAG_PACKET_23.0.2
-.L_2TAG_PACKET_24.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_23.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_22.0.2:
-        comisd    %xmm0, %xmm1
-        jne       .L_2TAG_PACKET_23.0.2
-        je        .L_2TAG_PACKET_24.0.2
-.L_2TAG_PACKET_15.0.2:
-        movapd    2624(%ebx), %xmm5
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-.L_2TAG_PACKET_4.0.2:
-        movl      64(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(atan2)
-# -- End  atan2
-
-# Start file scope ASM
-ALIAS_SYMBOL(atan2l, atan2);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	3390881280
-	.long	1067318733
-	.long	1411116779
-	.long	1018950063
-	.long	2985987840
-	.long	1067384211
-	.long	2088903695
-	.long	1018086027
-	.long	3148445184
-	.long	1067449685
-	.long	2044163806
-	.long	1017271335
-	.long	3667629184
-	.long	1067515494
-	.long	2353092775
-	.long	1019967309
-	.long	1546568832
-	.long	1067580954
-	.long	611991315
-	.long	1017602584
-	.long	3815996800
-	.long	1067646404
-	.long	466038598
-	.long	1019686426
-	.long	4050241920
-	.long	1067711845
-	.long	3265026328
-	.long	1019626952
-	.long	120454912
-	.long	1067777277
-	.long	1542207696
-	.long	1020155608
-	.long	2784639744
-	.long	1067842697
-	.long	3883834623
-	.long	1018602870
-	.long	1328010624
-	.long	1067908107
-	.long	1791097456
-	.long	1019053126
-	.long	2217794048
-	.long	1067973505
-	.long	551619938
-	.long	1018494194
-	.long	3333520000
-	.long	1068038891
-	.long	2390331823
-	.long	1019033022
-	.long	2557052032
-	.long	1068104265
-	.long	2423976108
-	.long	1019728674
-	.long	2067649536
-	.long	1068169626
-	.long	3757397745
-	.long	1018672362
-	.long	4047094784
-	.long	1068234973
-	.long	481613184
-	.long	1019275104
-	.long	2089853184
-	.long	1068300307
-	.long	1733914374
-	.long	1020124677
-	.long	2678003840
-	.long	1068365626
-	.long	1373600282
-	.long	1013935474
-	.long	3706496128
-	.long	1068430930
-	.long	1000610902
-	.long	1019673285
-	.long	3073179008
-	.long	1068496219
-	.long	1497143008
-	.long	1019900342
-	.long	2803716736
-	.long	1068562846
-	.long	1476677416
-	.long	1019444094
-	.long	3204984128
-	.long	1068628077
-	.long	1192335905
-	.long	1018748628
-	.long	831146624
-	.long	1068693273
-	.long	2733586224
-	.long	1018823295
-	.long	243029376
-	.long	1068758431
-	.long	950106081
-	.long	1019046675
-	.long	1735561920
-	.long	1068823549
-	.long	3546440856
-	.long	1020104712
-	.long	1339217792
-	.long	1068888626
-	.long	3028812387
-	.long	1019818321
-	.long	3706342144
-	.long	1068953659
-	.long	3814564029
-	.long	1017763871
-	.long	637726976
-	.long	1069018648
-	.long	3584007699
-	.long	1017976868
-	.long	1148779264
-	.long	1069083589
-	.long	2282532133
-	.long	1019483954
-	.long	1406131392
-	.long	1069148481
-	.long	1547359113
-	.long	1019786342
-	.long	1908875904
-	.long	1069213322
-	.long	1315508410
-	.long	1020009473
-	.long	3194947520
-	.long	1069278110
-	.long	3845393201
-	.long	1015803761
-	.long	1547487744
-	.long	1069342844
-	.long	3863107865
-	.long	1019810104
-	.long	1881061952
-	.long	1069407521
-	.long	4288343548
-	.long	1019687581
-	.long	563086336
-	.long	1069472140
-	.long	2582230241
-	.long	1020099350
-	.long	2594975552
-	.long	1069536698
-	.long	2306443764
-	.long	1019667244
-	.long	3438545024
-	.long	1069606573
-	.long	957455549
-	.long	1015587735
-	.long	4211357472
-	.long	1069670906
-	.long	2611778754
-	.long	1017877214
-	.long	3002835424
-	.long	1069735101
-	.long	235580458
-	.long	1020211685
-	.long	3905315424
-	.long	1069799150
-	.long	3630647617
-	.long	1018736849
-	.long	2849656576
-	.long	1069863047
-	.long	2412165062
-	.long	1019693004
-	.long	507429472
-	.long	1069926785
-	.long	1397750723
-	.long	1018412717
-	.long	2307470272
-	.long	1069990356
-	.long	1796470904
-	.long	1019796181
-	.long	1271814912
-	.long	1070053755
-	.long	189761565
-	.long	1016149115
-	.long	3800538144
-	.long	1070116974
-	.long	2524871582
-	.long	1018263353
-	.long	3916203552
-	.long	1070180008
-	.long	127848658
-	.long	1017672664
-	.long	457192032
-	.long	1070242851
-	.long	4020400938
-	.long	1019823010
-	.long	1385324704
-	.long	1070305495
-	.long	564511179
-	.long	1016079094
-	.long	2322869856
-	.long	1070367935
-	.long	2347103319
-	.long	1018927760
-	.long	3743438624
-	.long	1070430165
-	.long	877973862
-	.long	1019638162
-	.long	2392255552
-	.long	1070492180
-	.long	2432782267
-	.long	1018872629
-	.long	4180443328
-	.long	1070553973
-	.long	3102990015
-	.long	1020093101
-	.long	2547540832
-	.long	1070636485
-	.long	3877738253
-	.long	1017300424
-	.long	2735468912
-	.long	1070697461
-	.long	2446470256
-	.long	1019235378
-	.long	542633792
-	.long	1070757943
-	.long	583606328
-	.long	1018624131
-	.long	923265984
-	.long	1070817911
-	.long	1793926708
-	.long	1019714161
-	.long	918728448
-	.long	1070877348
-	.long	3726463586
-	.long	1019433296
-	.long	2572275008
-	.long	1070936237
-	.long	1845354238
-	.long	1019459238
-	.long	50974688
-	.long	1070994564
-	.long	983808064
-	.long	1016685418
-	.long	1105518320
-	.long	1071052313
-	.long	2357496692
-	.long	1015139882
-	.long	1264825328
-	.long	1071109472
-	.long	2244129354
-	.long	1019046344
-	.long	961157920
-	.long	1071166029
-	.long	3124185339
-	.long	1018541776
-	.long	1162701584
-	.long	1071221973
-	.long	1279780948
-	.long	1019268918
-	.long	3284935664
-	.long	1071277294
-	.long	2670033472
-	.long	1019833744
-	.long	497441888
-	.long	1071331985
-	.long	1032737410
-	.long	1019795212
-	.long	3377383904
-	.long	1071386036
-	.long	2356897182
-	.long	1020205553
-	.long	1126962000
-	.long	1071439443
-	.long	3723724586
-	.long	1015212418
-	.long	90291008
-	.long	1071492199
-	.long	4178672431
-	.long	1020186971
-	.long	190059536
-	.long	1071595741
-	.long	1763589807
-	.long	1019162163
-	.long	2497392840
-	.long	1071670654
-	.long	3036997041
-	.long	1020204325
-	.long	2616971944
-	.long	1071719773
-	.long	300151069
-	.long	1017041957
-	.long	2883518128
-	.long	1071767563
-	.long	2203981414
-	.long	1019190108
-	.long	1496354352
-	.long	1071814030
-	.long	332287966
-	.long	1016846435
-	.long	483276728
-	.long	1071859184
-	.long	653845024
-	.long	1018830914
-	.long	3097401072
-	.long	1071903039
-	.long	1514746408
-	.long	1019278972
-	.long	2737217248
-	.long	1071945615
-	.long	1358845067
-	.long	1017268275
-	.long	2072577560
-	.long	1071986933
-	.long	3041024735
-	.long	1019929672
-	.long	2266405656
-	.long	1072027017
-	.long	1271261130
-	.long	1012925070
-	.long	958652544
-	.long	1072065894
-	.long	2158017058
-	.long	1019955372
-	.long	3312993840
-	.long	1072103591
-	.long	765809169
-	.long	1019114443
-	.long	3177001304
-	.long	1072140139
-	.long	144180084
-	.long	1019822186
-	.long	3071642184
-	.long	1072175568
-	.long	4004602424
-	.long	1019420740
-	.long	4283953648
-	.long	1072209909
-	.long	1511950430
-	.long	1020176966
-	.long	1413754136
-	.long	1072243195
-	.long	856972295
-	.long	1015129638
-	.long	4073202944
-	.long	1072306725
-	.long	4068194804
-	.long	1019714860
-	.long	946117760
-	.long	1072366415
-	.long	694980733
-	.long	1020150135
-	.long	3980632032
-	.long	1072422512
-	.long	1313251280
-	.long	1019948709
-	.long	1468297112
-	.long	1072475260
-	.long	330111143
-	.long	1019809198
-	.long	3478063816
-	.long	1072524887
-	.long	2930067044
-	.long	1017784081
-	.long	1153979856
-	.long	1072571613
-	.long	2225786102
-	.long	1017634481
-	.long	2089828808
-	.long	1072615641
-	.long	474621367
-	.long	1017043414
-	.long	3531732632
-	.long	1072657163
-	.long	2276396220
-	.long	1018757240
-	.long	775214612
-	.long	1072694803
-	.long	3209744818
-	.long	1019963015
-	.long	662307284
-	.long	1072713319
-	.long	1381696763
-	.long	1019763781
-	.long	1192776652
-	.long	1072730830
-	.long	3017932994
-	.long	1015179769
-	.long	744202396
-	.long	1072747407
-	.long	2073854034
-	.long	1019512292
-	.long	8337908
-	.long	1072763115
-	.long	16004448
-	.long	1019599514
-	.long	3589868768
-	.long	1072778013
-	.long	1374369804
-	.long	1018019237
-	.long	121647320
-	.long	1072792159
-	.long	128481634
-	.long	1018115438
-	.long	2464923204
-	.long	1072805601
-	.long	1787331214
-	.long	1016798022
-	.long	4093304372
-	.long	1072830562
-	.long	3306868969
-	.long	1019384078
-	.long	1436891684
-	.long	1072853231
-	.long	676347266
-	.long	1017302183
-	.long	1104571840
-	.long	1072873890
-	.long	2870400285
-	.long	1019938149
-	.long	2037009832
-	.long	1072892781
-	.long	2956702105
-	.long	1016472908
-	.long	3139037960
-	.long	1072910111
-	.long	916057147
-	.long	1018364335
-	.long	1826698064
-	.long	1072926058
-	.long	2171961098
-	.long	1019669816
-	.long	1353941060
-	.long	1072940774
-	.long	1722928782
-	.long	1019926215
-	.long	1803191644
-	.long	1072954391
-	.long	1547878639
-	.long	1020259262
-	.long	1092591296
-	.long	1072967024
-	.long	3070107923
-	.long	1018320401
-	.long	2205372832
-	.long	1072978772
-	.long	787328196
-	.long	1014621351
-	.long	1291577100
-	.long	1072989723
-	.long	2964757301
-	.long	1020242528
-	.long	4234512804
-	.long	1072999952
-	.long	3136030038
-	.long	1017522144
-	.long	3248069132
-	.long	1073009528
-	.long	1506192355
-	.long	1018050472
-	.long	3932628500
-	.long	1073018509
-	.long	1045823554
-	.long	1019946655
-	.long	4195697848
-	.long	1073026948
-	.long	233443322
-	.long	1018917447
-	.long	2501811452
-	.long	1073034892
-	.long	901427976
-	.long	1017333852
-	.long	866379428
-	.long	1073049455
-	.long	2437443742
-	.long	1019678792
-	.long	1376865888
-	.long	1073062480
-	.long	3365790232
-	.long	1014547152
-	.long	3290094268
-	.long	1073074195
-	.long	3898947415
-	.long	1018683566
-	.long	354764884
-	.long	1073084787
-	.long	3854322404
-	.long	1019662058
-	.long	3332975496
-	.long	1073094406
-	.long	3171701655
-	.long	1017830922
-	.long	1141460088
-	.long	1073103181
-	.long	3946082701
-	.long	1020032019
-	.long	745761284
-	.long	1073111216
-	.long	1347210591
-	.long	1019106121
-	.long	1673304508
-	.long	1073118600
-	.long	1760606642
-	.long	1017324577
-	.long	983388240
-	.long	1073125409
-	.long	3740651204
-	.long	1019514104
-	.long	3895509100
-	.long	1073131706
-	.long	2409629983
-	.long	1020069322
-	.long	2128523668
-	.long	1073137548
-	.long	3045605368
-	.long	1018579174
-	.long	2075485692
-	.long	1073142981
-	.long	3720571789
-	.long	1017557436
-	.long	121855976
-	.long	1073148047
-	.long	2391744767
-	.long	1020160645
-	.long	4181733780
-	.long	1073152780
-	.long	995028816
-	.long	1019681295
-	.long	2887813280
-	.long	1073157214
-	.long	218733247
-	.long	1020003509
-	.long	2862180896
-	.long	1073161375
-	.long	2043806490
-	.long	1018602288
-	.long	3909375184
-	.long	1073168973
-	.long	1559903412
-	.long	1020103444
-	.long	3533966292
-	.long	1073175738
-	.long	734884149
-	.long	1018462962
-	.long	3815044608
-	.long	1073181799
-	.long	3630523428
-	.long	1017250093
-	.long	739639376
-	.long	1073187261
-	.long	4167476661
-	.long	1020008277
-	.long	1068309648
-	.long	1073192207
-	.long	2110061437
-	.long	1019295858
-	.long	2350566352
-	.long	1073196707
-	.long	582596516
-	.long	1018568821
-	.long	2529520024
-	.long	1073200819
-	.long	745552787
-	.long	1019053165
-	.long	1841667508
-	.long	1073204591
-	.long	3982568700
-	.long	1016503327
-	.long	2242261080
-	.long	1073208063
-	.long	3433582258
-	.long	1016196763
-	.long	715134328
-	.long	1073211270
-	.long	355901358
-	.long	1020087916
-	.long	2700735876
-	.long	1073214240
-	.long	3640957736
-	.long	1019780205
-	.long	141607580
-	.long	1073217000
-	.long	2488245051
-	.long	1020262395
-	.long	287934404
-	.long	1073219570
-	.long	2392691085
-	.long	1019883292
-	.long	2363373988
-	.long	1073221969
-	.long	4194561737
-	.long	1019237447
-	.long	3829340424
-	.long	1073224214
-	.long	429455526
-	.long	1019490975
-	.long	1988805928
-	.long	1073226320
-	.long	3029848706
-	.long	1018104889
-	.long	1647572320
-	.long	1073230161
-	.long	10289938
-	.long	1017394880
-	.long	3988000624
-	.long	1073233576
-	.long	1957559169
-	.long	1019434816
-	.long	4263843944
-	.long	1073236633
-	.long	204710264
-	.long	1019908761
-	.long	663197724
-	.long	1073239386
-	.long	1921757578
-	.long	1019778948
-	.long	3560800700
-	.long	1073241876
-	.long	3994348896
-	.long	1019230192
-	.long	2441785656
-	.long	1073244141
-	.long	871468611
-	.long	1014800505
-	.long	3277400272
-	.long	1073246209
-	.long	4092218139
-	.long	1020040842
-	.long	3951990120
-	.long	1073248105
-	.long	4276546478
-	.long	1019763677
-	.long	2737338540
-	.long	1073249850
-	.long	252776012
-	.long	1018794951
-	.long	1511361316
-	.long	1073251461
-	.long	3119653999
-	.long	1018514803
-	.long	3969162516
-	.long	1073252952
-	.long	1037069016
-	.long	1016792900
-	.long	413985240
-	.long	1073254338
-	.long	4110171432
-	.long	1020001345
-	.long	3681283576
-	.long	1073255627
-	.long	1463092818
-	.long	1020260354
-	.long	3146455488
-	.long	1073256831
-	.long	1031209123
-	.long	1016554799
-	.long	95214512
-	.long	1073257958
-	.long	1373808632
-	.long	1019493031
-	.long	4250240828
-	.long	1073259013
-	.long	3891047882
-	.long	1020108730
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	1072243195
-	.long	856972295
-	.long	1015129638
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	3221823995
-	.long	856972295
-	.long	3164710438
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	3164710438
-	.long	1413754136
-	.long	3221823995
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	2006262985
-	.long	1069310863
-	.long	2358449471
-	.long	3217342131
-	.long	3845454352
-	.long	1069952297
-	.long	2829679149
-	.long	1073771565
-	.long	4294967295
-	.long	2148532223
-	.long	0
-	.long	0
-	.long	0
-	.long	1130364928
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.type	static_const_table,@object
-	.size	static_const_table,3024
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_cosh.S b/libm/x86/e_cosh.S
deleted file mode 100644
index 567a9d0..0000000
--- a/libm/x86/e_cosh.S
+++ /dev/null
@@ -1,1349 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  cosh(x)=(exp(x)+exp(-x))/2
-//
-//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//          L2EH+L2EL (upper 26, lower 53 bits)
-//
-//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-//                              f=0.b1 b2 ... b7, k integer
-//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-//                       for |x| in [1/8,3*2^8)
-//  e^{-|x|}=2^{-k-f}*2^{-r}
-//
-//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
-//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
-//
-//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
-//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
-//
-//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
-//  the result is checked for overflow.
-//
-//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
-//  (error bound for polynomial expansion is below 0.501 ulp)
-//
-// Special cases:
-//  cosh(NaN) = quiet NaN, and raise invalid exception
-//  cosh(INF) = that INF
-//  cosh(0)=1
-//  for finite argument, only cosh(0)=1 is exact
-//  For IEEE double
-//  cosh(x) overflows
-//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  cosh
-ENTRY(cosh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        movsd     4240(%ebx), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     4192(%ebx), %xmm1
-        movsd     4200(%ebx), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     4096(%ebx), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        andl      $32767, %ecx
-        subl      $16320, %ecx
-        cmpl      $200, %ecx
-        jae       .L_2TAG_PACKET_0.0.2
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        movapd    %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        xorpd     %xmm5, %xmm5
-        subsd     %xmm6, %xmm3
-        movapd    4112(%ebx), %xmm4
-        addsd     %xmm1, %xmm2
-        movapd    4128(%ebx), %xmm6
-        subsd     %xmm3, %xmm7
-        movl      $32704, %edx
-        pinsrw    $3, %edx, %xmm5
-        movapd    4144(%ebx), %xmm1
-        addsd     %xmm7, %xmm2
-        movl      $127, %edx
-        andl      %eax, %edx
-        addl      %edx, %edx
-        shrl      $3, %eax
-        andl      $65520, %eax
-        addl      $16352, %eax
-        xorpd     %xmm0, %xmm0
-        cmpl      $184, %ecx
-        jae       .L_2TAG_PACKET_1.0.2
-        pshufd    $68, %xmm5, %xmm5
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        psubw     %xmm0, %xmm5
-        mulpd     (%ebx,%edx,8), %xmm0
-        mulpd     2048(%ebx,%edx,8), %xmm5
-        pshufd    $68, %xmm2, %xmm3
-        movapd    4160(%ebx), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        mulpd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulpd     4176(%ebx), %xmm2
-        mulpd     %xmm3, %xmm1
-        mulpd     %xmm3, %xmm7
-        mulpd     %xmm3, %xmm4
-        mulpd     %xmm3, %xmm1
-        addpd     %xmm7, %xmm6
-        movapd    %xmm0, %xmm7
-        addpd     %xmm1, %xmm4
-        shufpd    $0, %xmm5, %xmm7
-        addpd     %xmm5, %xmm0
-        mulpd     %xmm7, %xmm2
-        addpd     %xmm6, %xmm4
-        subsd     %xmm0, %xmm7
-        mulpd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm5, %xmm7
-        addpd     %xmm2, %xmm4
-        addsd     %xmm6, %xmm7
-        pshufd    $238, %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        addl      $16320, %ecx
-        cmpl      $16320, %ecx
-        ja        .L_2TAG_PACKET_3.0.2
-        cmpl      $15952, %ecx
-        jae       .L_2TAG_PACKET_4.0.2
-        addsd     %xmm2, %xmm6
-        movsd     4248(%ebx), %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_1.0.2:
-        subl      $16352, %eax
-        movl      %eax, %ecx
-        andl      $32752, %eax
-        shrl      $1, %eax
-        andl      $65520, %eax
-        subl      %eax, %ecx
-        addl      $16352, %eax
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        mulpd     (%ebx,%edx,8), %xmm0
-        pshufd    $68, %xmm2, %xmm3
-        movsd     4160(%ebx), %xmm7
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     4176(%ebx), %xmm2
-        mulsd     %xmm3, %xmm1
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm3, %xmm4
-        addl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm5
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm6, %xmm4
-        mulsd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm6, %xmm4
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm5, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        movl      $64, %edx
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_5.0.2
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
-        movapd    4208(%ebx), %xmm1
-        mulpd     %xmm5, %xmm5
-        movapd    4224(%ebx), %xmm2
-        xorpd     %xmm3, %xmm3
-        movapd    %xmm5, %xmm0
-        mulpd     %xmm5, %xmm1
-        movsd     4248(%ebx), %xmm6
-        mulpd     %xmm5, %xmm5
-        movl      $16352, %eax
-        pinsrw    $3, %eax, %xmm3
-        addpd     %xmm2, %xmm1
-        mulpd     %xmm5, %xmm1
-        pshufd    $238, %xmm1, %xmm2
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm2
-        addsd     %xmm2, %xmm0
-        addsd     %xmm6, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_3.0.2:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $64, %edx
-.L_2TAG_PACKET_5.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     112(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_6.0.2:
-        mulsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_2.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_7.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(cosh)
-# -- End  cosh
-
-# Start file scope ASM
-ALIAS_SYMBOL(coshl, cosh);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	3706687593
-	.long	1073526560
-	.long	3521726940
-	.long	1014301643
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.long	3607404736
-	.long	1044146952
-	.long	3607404736
-	.long	3191630600
-	.long	4277811695
-	.long	1063661122
-	.long	4277811695
-	.long	3211144770
-	.long	2140175755
-	.long	1033864261
-	.long	2140175755
-	.long	1033864261
-	.long	4289495988
-	.long	1054113747
-	.long	4289495988
-	.long	1054113747
-	.long	4277811695
-	.long	1064709698
-	.long	4277811695
-	.long	3212193346
-	.long	1610612736
-	.long	1080497479
-	.long	4166901572
-	.long	1053077003
-	.long	3078135644
-	.long	1049787983
-	.long	381774870
-	.long	1062650220
-	.long	436314137
-	.long	1056571808
-	.long	1431655765
-	.long	1067799893
-	.long	4160749568
-	.long	2147483647
-	.long	0
-	.long	1072693248
-	.type	static_const_table,@object
-	.size	static_const_table,4256
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_hypot.S b/libm/x86/e_hypot.S
deleted file mode 100644
index 8422024..0000000
--- a/libm/x86/e_hypot.S
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// X87 version:
-// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
-//
-// SSE version:
-// Swap x, y if |x|<|y|
-// For x=2^k*x, get y=y*2^(-k)
-// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
-//
-// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
-//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
-//
-// Result is 2^k*(S + Se),  where Se = S*e
-//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
-//
-// Return 2^k*(S+Se)
-//
-// For |y/x|<2^(-64), return x
-//
-// For cases where maximum biased exponent is either greater than 7fdh or
-// below 32, take a special path to check for special cases (0, NaN, Inf),
-// possible overflow, and more accurate computation for denormal results
-//
-// Special cases:
-//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
-//  hypot(x,+-0) is equivalent to fabs(x)
-//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
-//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
-//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  hypot
-ENTRY(hypot)
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $152, %esp
-        movl      %ebx, 96(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movapd    (%ebx), %xmm3
-        movsd     160(%esp), %xmm0
-        movsd     168(%esp), %xmm1
-        andpd     %xmm3, %xmm0
-        andpd     %xmm3, %xmm1
-        pextrw    $3, %xmm0, %eax
-        pextrw    $3, %xmm1, %edx
-        cmpl      $24528, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        cmpl      $24528, %edx
-        ja        .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        fldl      160(%esp)
-        fldl      168(%esp)
-        fxch      %st(1)
-        fmul      %st(0), %st
-        fxch      %st(1)
-        nop       
-        fmul      %st(0), %st
-        faddp     %st, %st(1)
-        fsqrt     
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        cmpl      $32752, %eax
-        movl      %eax, %ecx
-        jae       .L_2TAG_PACKET_3.0.2
-        subl      %edx, %ecx
-        cmpl      $32752, %edx
-        jae       .L_2TAG_PACKET_3.0.2
-        addl      $928, %ecx
-        addl      %edx, %eax
-        cmpl      $1856, %ecx
-        ja        .L_2TAG_PACKET_4.0.2
-        cmpl      $49056, %eax
-        jb        .L_2TAG_PACKET_1.0.2
-        fldl      160(%esp)
-        fldl      168(%esp)
-        fxch      %st(1)
-        fmul      %st(0), %st
-        fxch      %st(1)
-        nop       
-        fmul      %st(0), %st
-        faddp     %st, %st(1)
-        fsqrt     
-.L_2TAG_PACKET_5.0.2:
-        fstl      (%esp)
-        fstpt     16(%esp)
-        xorl      %eax, %eax
-        movw      24(%esp), %ax
-        cmpl      $17407, %eax
-        jae       .L_2TAG_PACKET_6.0.2
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_4.0.2:
-        movsd     %xmm0, 32(%esp)
-        movsd     %xmm1, 40(%esp)
-        fldl      32(%esp)
-        faddl     40(%esp)
-        jmp       .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_6.0.2:
-        movl      $46, %edx
-.L_2TAG_PACKET_8.0.2:
-        movsd     160(%esp), %xmm0
-        movsd     168(%esp), %xmm1
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
-        shufpd    $0, %xmm1, %xmm0
-        movdqa    %xmm0, %xmm2
-        movdqa    16(%ebx), %xmm3
-        movsd     %xmm0, 32(%esp)
-        movsd     %xmm1, 40(%esp)
-        cmppd     $3, %xmm0, %xmm2
-        cmppd     $0, %xmm0, %xmm3
-        movmskpd  %xmm2, %edx
-        movmskpd  %xmm3, %eax
-        testl     %edx, %edx
-        je        .L_2TAG_PACKET_9.0.2
-        fldl      32(%esp)
-        fmull     40(%esp)
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_10.0.2
-        testl     $2, %eax
-        jne       .L_2TAG_PACKET_11.0.2
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_9.0.2:
-        fldl      32(%esp)
-        faddl     40(%esp)
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_10.0.2:
-        fstpl     40(%esp)
-        fldl      32(%esp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_11.0.2:
-        fstpl     32(%esp)
-        fldl      40(%esp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_2.0.2:
-.L_2TAG_PACKET_7.0.2:
-        movl      96(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(hypot)
-# -- End  hypot
-
-# Start file scope ASM
-ALIAS_SYMBOL(hypotl, hypot);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	4294967295
-	.long	2147483647
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	2146435072
-	.type	static_const_table,@object
-	.size	static_const_table,32
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_log10.S b/libm/x86/e_log10.S
deleted file mode 100644
index 473cea3..0000000
--- a/libm/x86/e_log10.S
+++ /dev/null
@@ -1,795 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//    Let x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpss instruction (B0)
-//    B = int((B0*LH*2^7+0.5))/2^7
-//    LH is a short approximation for log10(e)
-//
-//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
-//
-//    Result:  k*log10(2) - log(B) + p(r)
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//  log10(0) = -INF with divide-by-zero exception raised                                           
-//  log10(1) = +0
-//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
-//  log10(+INF) = +INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  log10
-ENTRY(log10)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movl      $1054736384, %ecx
-        movd      %ecx, %xmm7
-        xorpd     %xmm3, %xmm3
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm3
-        movsd     112(%esp), %xmm0
-        movapd    %xmm0, %xmm1
-        movl      $32768, %edx
-        movd      %edx, %xmm4
-        movapd    2128(%ebx), %xmm5
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $16352, %ecx
-        psllq     $5, %xmm0
-        movsd     2144(%ebx), %xmm2
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $78, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        mulss     %xmm7, %xmm0
-        orpd      %xmm3, %xmm1
-        andpd     %xmm1, %xmm5
-        paddd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm6, %xmm0
-        andl      $32752, %eax
-        subl      %ecx, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        mulsd     %xmm0, %xmm1
-        movsd     2064(%ebx), %xmm6
-        movapd    2080(%ebx), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    -1504(%ebx,%edx), %xmm0
-        movapd    2096(%ebx), %xmm4
-        addsd     %xmm5, %xmm1
-        movapd    2112(%ebx), %xmm2
-        mulsd     %xmm7, %xmm6
-        pshufd    $68, %xmm1, %xmm5
-        mulsd     2072(%ebx), %xmm7
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm4
-        movsd     2152(%ebx), %xmm6
-        mulpd     %xmm5, %xmm5
-        addpd     %xmm2, %xmm4
-        mulpd     %xmm5, %xmm3
-        pshufd    $228, %xmm0, %xmm2
-        addsd     %xmm1, %xmm0
-        mulsd     %xmm1, %xmm4
-        subsd     %xmm0, %xmm2
-        mulsd     %xmm1, %xmm6
-        addsd     %xmm2, %xmm1
-        pshufd    $238, %xmm0, %xmm2
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm2, %xmm7
-        addsd     %xmm6, %xmm1
-        addpd     %xmm3, %xmm4
-        addsd     %xmm7, %xmm1
-        mulpd     %xmm5, %xmm4
-        addsd     %xmm4, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        movsd     112(%esp), %xmm0
-        movapd    %xmm0, %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        cmpl      $16, %eax
-        jb        .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
-        ja        .L_2TAG_PACKET_5.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_5.0.2
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        movl      $9, %edx
-        mulsd     %xmm1, %xmm0
-.L_2TAG_PACKET_9.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     112(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_8.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $8, %edx
-        jmp       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_4.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_8.0.2
-        xorpd     %xmm1, %xmm1
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movapd    %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psllq     $5, %xmm0
-        movsd     2144(%ebx), %xmm2
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $78, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_10.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(log10)
-# -- End  log10
-
-# Start file scope ASM
-ALIAS_SYMBOL(log10l, log10);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	1352628224
-	.long	1070810131
-	.long	521319256
-	.long	1025503025
-	.long	2150839296
-	.long	1070801944
-	.long	3329350096
-	.long	3170190015
-	.long	1360613376
-	.long	1070793794
-	.long	2024059075
-	.long	1024991594
-	.long	1875350528
-	.long	1070785680
-	.long	2163882141
-	.long	3163564137
-	.long	2312126464
-	.long	1070777602
-	.long	1975711076
-	.long	1023674196
-	.long	1306336256
-	.long	1070769560
-	.long	3524899523
-	.long	3170508164
-	.long	1806334976
-	.long	1070761553
-	.long	4254777025
-	.long	1025238739
-	.long	2483193856
-	.long	1070753581
-	.long	3800671317
-	.long	3172916830
-	.long	2025350144
-	.long	1070745644
-	.long	1731514745
-	.long	1025501083
-	.long	3433285632
-	.long	1070737741
-	.long	2551857336
-	.long	3169662186
-	.long	1134317568
-	.long	1070729873
-	.long	3426297655
-	.long	3172637891
-	.long	2457152512
-	.long	1070722038
-	.long	63549415
-	.long	1025415416
-	.long	1861803008
-	.long	1070714237
-	.long	1910171636
-	.long	1023977580
-	.long	2414140416
-	.long	1070706469
-	.long	4002514337
-	.long	3170841618
-	.long	2900726784
-	.long	1070698734
-	.long	3268064083
-	.long	1022459609
-	.long	2123517952
-	.long	1070691032
-	.long	1767031218
-	.long	1022448156
-	.long	3194569728
-	.long	1070683362
-	.long	3402332618
-	.long	3171671160
-	.long	650882048
-	.long	1070675725
-	.long	4146023905
-	.long	3171023038
-	.long	1928988672
-	.long	1070668119
-	.long	1438617867
-	.long	1016360491
-	.long	1594908672
-	.long	1070660545
-	.long	971389377
-	.long	1024763979
-	.long	2818746368
-	.long	1070653002
-	.long	3555925341
-	.long	3172434821
-	.long	194584576
-	.long	1070645491
-	.long	943919215
-	.long	3172950063
-	.long	1215096832
-	.long	1070638010
-	.long	2283358588
-	.long	1022335098
-	.long	501519360
-	.long	1070630560
-	.long	480904295
-	.long	1024437959
-	.long	1278266368
-	.long	1070623140
-	.long	2755806066
-	.long	3172342012
-	.long	2487812096
-	.long	1070615750
-	.long	2489653202
-	.long	3172481099
-	.long	3085451264
-	.long	1070608390
-	.long	3759184951
-	.long	3172574892
-	.long	2039090176
-	.long	1070601060
-	.long	1361176676
-	.long	3172355319
-	.long	953057280
-	.long	1070591423
-	.long	1176587546
-	.long	3166422018
-	.long	3370524672
-	.long	1070576879
-	.long	3669570051
-	.long	1025376630
-	.long	749742080
-	.long	1070562394
-	.long	707700964
-	.long	3170814058
-	.long	4008353792
-	.long	1070547965
-	.long	3247327652
-	.long	1022431400
-	.long	2612455424
-	.long	1070533594
-	.long	2453457344
-	.long	3172322969
-	.long	3230920704
-	.long	1070519279
-	.long	1296781801
-	.long	1025115335
-	.long	3965253632
-	.long	1070505020
-	.long	373075289
-	.long	1017938528
-	.long	2593157120
-	.long	1070476669
-	.long	1068054086
-	.long	1021616576
-	.long	925962240
-	.long	1070448537
-	.long	850121213
-	.long	1023928989
-	.long	1732556800
-	.long	1070420620
-	.long	1305206740
-	.long	3172665570
-	.long	3815630848
-	.long	1070392915
-	.long	192642943
-	.long	3172699907
-	.long	2001758208
-	.long	1070365420
-	.long	2820786683
-	.long	1024704867
-	.long	16746496
-	.long	1070338131
-	.long	1399573110
-	.long	3171372773
-	.long	1886492672
-	.long	1070311044
-	.long	3621428075
-	.long	3172974358
-	.long	3338196992
-	.long	1070284157
-	.long	3793882035
-	.long	1025124701
-	.long	381769728
-	.long	1070257468
-	.long	3877933342
-	.long	3170195490
-	.long	2186491904
-	.long	1070230972
-	.long	1838687089
-	.long	1017927292
-	.long	1008330752
-	.long	1070204668
-	.long	2228321664
-	.long	1025352196
-	.long	2247065600
-	.long	1070178552
-	.long	1413900906
-	.long	3170902532
-	.long	2964070400
-	.long	1070152622
-	.long	3590454629
-	.long	1025016844
-	.long	465154048
-	.long	1070126876
-	.long	2079688550
-	.long	3172268183
-	.long	883615744
-	.long	1070101310
-	.long	989244452
-	.long	3171900485
-	.long	1993768960
-	.long	1070075922
-	.long	1124327841
-	.long	3172964992
-	.long	1794471936
-	.long	1070050710
-	.long	1140575046
-	.long	1022673726
-	.long	2797932544
-	.long	1070025671
-	.long	1894836933
-	.long	3172544059
-	.long	3433797632
-	.long	1070000803
-	.long	3221831166
-	.long	3171921685
-	.long	2338371584
-	.long	1069976104
-	.long	3732461053
-	.long	3164513518
-	.long	2644013056
-	.long	1069951571
-	.long	2519460462
-	.long	3172548740
-	.long	3383814144
-	.long	1069927202
-	.long	2290997657
-	.long	1025499649
-	.long	3781380096
-	.long	1069902995
-	.long	380479405
-	.long	1025184136
-	.long	3245785088
-	.long	1069878948
-	.long	1096398261
-	.long	3169885192
-	.long	1366712320
-	.long	1069855059
-	.long	2218343715
-	.long	3170281628
-	.long	2204717056
-	.long	1069831325
-	.long	2668334011
-	.long	1025264524
-	.long	1401772032
-	.long	1069807745
-	.long	4103993159
-	.long	1022925721
-	.long	3356721152
-	.long	1069784316
-	.long	3573790772
-	.long	3172186527
-	.long	4041148416
-	.long	1069761037
-	.long	4027691910
-	.long	3171276990
-	.long	3880151040
-	.long	1069737906
-	.long	4087118786
-	.long	3172710734
-	.long	3453364224
-	.long	1069714921
-	.long	99014299
-	.long	3172003077
-	.long	3491092480
-	.long	1069692080
-	.long	3801836701
-	.long	3172989287
-	.long	575580160
-	.long	1069669382
-	.long	1920406012
-	.long	3170874125
-	.long	22282240
-	.long	1069646824
-	.long	964193370
-	.long	1019363159
-	.long	2991429632
-	.long	1069624404
-	.long	3372589890
-	.long	1023425053
-	.long	2189645824
-	.long	1069602122
-	.long	2610503872
-	.long	1023652442
-	.long	3341467648
-	.long	1069579975
-	.long	1190292004
-	.long	1022425665
-	.long	3711293440
-	.long	1069557962
-	.long	1104795356
-	.long	1023625829
-	.long	1380401152
-	.long	1069524644
-	.long	1156998217
-	.long	1025100499
-	.long	765710336
-	.long	1069481144
-	.long	1736649113
-	.long	1024999439
-	.long	849412096
-	.long	1069437902
-	.long	2618178330
-	.long	3170853629
-	.long	1433104384
-	.long	1069394915
-	.long	43477267
-	.long	3170378811
-	.long	2548596736
-	.long	1069352180
-	.long	3967367063
-	.long	1025246584
-	.long	157577216
-	.long	1069309695
-	.long	100402533
-	.long	3172825502
-	.long	3326238720
-	.long	1069267455
-	.long	1176892909
-	.long	1025464099
-	.long	4155494400
-	.long	1069225459
-	.long	3713707617
-	.long	3172630046
-	.long	3545804800
-	.long	1069183704
-	.long	857007315
-	.long	1024965777
-	.long	2602520576
-	.long	1069142187
-	.long	2588758347
-	.long	1022463131
-	.long	2631196672
-	.long	1069100905
-	.long	2118424235
-	.long	1022490989
-	.long	838135808
-	.long	1069059856
-	.long	4117002727
-	.long	1024874520
-	.long	3210903552
-	.long	1069019036
-	.long	650070125
-	.long	3172012966
-	.long	3039211520
-	.long	1068978444
-	.long	438055812
-	.long	1017743757
-	.long	2385633280
-	.long	1068938077
-	.long	3011990369
-	.long	3171312044
-	.long	3491618816
-	.long	1068897932
-	.long	712813818
-	.long	3172720400
-	.long	183644160
-	.long	1068858008
-	.long	4287006742
-	.long	1022379728
-	.long	3639214080
-	.long	1068818300
-	.long	353762279
-	.long	3172980009
-	.long	3728416768
-	.long	1068778808
-	.long	1851367730
-	.long	1025486574
-	.long	3370094592
-	.long	1068739529
-	.long	4046594913
-	.long	3172567047
-	.long	1348407296
-	.long	1068700461
-	.long	143189675
-	.long	1025397632
-	.long	899403776
-	.long	1068661601
-	.long	3753687842
-	.long	3170772772
-	.long	1117708288
-	.long	1068622947
-	.long	1857340812
-	.long	3170782678
-	.long	1248276480
-	.long	1068584497
-	.long	1289858203
-	.long	1025222289
-	.long	683237376
-	.long	1068546249
-	.long	2356679608
-	.long	3171629170
-	.long	3253764096
-	.long	1068508200
-	.long	3267136556
-	.long	1018554987
-	.long	94478336
-	.long	1068441756
-	.long	1927868814
-	.long	3169378180
-	.long	3233144832
-	.long	1068366445
-	.long	2682188854
-	.long	1023964004
-	.long	2940297216
-	.long	1068291522
-	.long	275301289
-	.long	1023944679
-	.long	3677708288
-	.long	1068216982
-	.long	302658771
-	.long	1024465567
-	.long	1576968192
-	.long	1068142822
-	.long	3672035940
-	.long	3172254610
-	.long	1614069760
-	.long	1068069037
-	.long	480052905
-	.long	3172692062
-	.long	424435712
-	.long	1067995624
-	.long	2207869657
-	.long	3170965436
-	.long	3477782528
-	.long	1067922578
-	.long	2980661858
-	.long	3164990018
-	.long	3598401536
-	.long	1067849897
-	.long	1974393034
-	.long	3171357083
-	.long	2435235840
-	.long	1067777577
-	.long	1385289011
-	.long	1024615823
-	.long	1867333632
-	.long	1067705614
-	.long	3442236633
-	.long	1025334384
-	.long	3999301632
-	.long	1067634004
-	.long	3506472073
-	.long	1025132546
-	.long	2566971392
-	.long	1067562745
-	.long	1425757592
-	.long	3172358463
-	.long	112943104
-	.long	1067491833
-	.long	1693407156
-	.long	3172426603
-	.long	3079929856
-	.long	1067392159
-	.long	3999942455
-	.long	1018549369
-	.long	2443837440
-	.long	1067251701
-	.long	974534460
-	.long	1023963412
-	.long	359366656
-	.long	1067111917
-	.long	2204915018
-	.long	1013514416
-	.long	3564519424
-	.long	1066972799
-	.long	3977441659
-	.long	3170879860
-	.long	2011086848
-	.long	1066834343
-	.long	590145514
-	.long	1025390011
-	.long	3216982016
-	.long	1066696541
-	.long	3629120110
-	.long	1024330313
-	.long	2194128896
-	.long	1066559388
-	.long	2367098512
-	.long	3172260338
-	.long	2916220928
-	.long	1066422877
-	.long	2262431886
-	.long	1021229446
-	.long	2263941120
-	.long	1066172214
-	.long	3118507287
-	.long	1021484970
-	.long	3076292608
-	.long	1065901726
-	.long	1411737803
-	.long	3172957147
-	.long	1186136064
-	.long	1065632488
-	.long	3109349337
-	.long	1025397383
-	.long	3085303808
-	.long	1065364487
-	.long	584715031
-	.long	3172596519
-	.long	1821048832
-	.long	1064842211
-	.long	2182246895
-	.long	3172536214
-	.long	697368576
-	.long	1064311094
-	.long	3157561765
-	.long	3172716357
-	.long	894042112
-	.long	1063260131
-	.long	3237958154
-	.long	3172587292
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1352628224
-	.long	1066615827
-	.long	521319256
-	.long	1021308721
-	.long	3248877870
-	.long	1077250164
-	.long	1691676429
-	.long	3221787401
-	.long	945132465
-	.long	3223701783
-	.long	3700831335
-	.long	1073506818
-	.long	2141010593
-	.long	1075227551
-	.long	3698831637
-	.long	3220339442
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	4294959104
-	.long	0
-	.long	1071366144
-	.long	3207479560
-	.long	1062894188
-	.type	static_const_table,@object
-	.size	static_const_table,2160
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_sinh.S b/libm/x86/e_sinh.S
deleted file mode 100644
index b9a2930..0000000
--- a/libm/x86/e_sinh.S
+++ /dev/null
@@ -1,1407 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  sinh(x)=(exp(x)-exp(-x))/2
-//
-//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//          L2EH+L2EL (upper 26, lower 53 bits)
-//
-//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-//                              f=0.b1 b2 ... b7, k integer
-//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-//                       for |x| in [23/64,3*2^7)
-//  e^{-|x|}=2^{-k-f}*2^{-r}
-//
-//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
-//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
-//
-//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
-//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
-//
-//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
-//  the result is checked for overflow.
-//
-//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
-//  To reduce rounding errors, the p3*x^3 term is computed as
-//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
-//  where x=xh+xl, (xh are the leading 17 bits of x), and
-//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
-//  (error bound for polynomial expansion is below 0.51 ulp)
-//
-// Special cases:
-//  sinh(NaN) = quiet NaN, and raise invalid exception
-//  sinh(+/-INF) = +/-INF
-//  sinh(x) = x for subnormals
-//  for finite argument, only sinh(0)=0 is exact
-//  For IEEE double
-//    sinh(x) overflows  for x > 
-//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  sinh
-ENTRY(sinh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        movsd     4272(%ebx), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     4192(%ebx), %xmm1
-        movsd     4200(%ebx), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     4096(%ebx), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        movl      $32768, %edx
-        andl      %ecx, %edx
-        andl      $32767, %ecx
-        subl      $16343, %ecx
-        cmpl      $177, %ecx
-        jae       .L_2TAG_PACKET_0.0.2
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        shll      $3, %edx
-        orl       %edx, %eax
-        movapd    %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        xorpd     %xmm5, %xmm5
-        subsd     %xmm6, %xmm3
-        movapd    4112(%ebx), %xmm4
-        addsd     %xmm1, %xmm2
-        movapd    4128(%ebx), %xmm6
-        subsd     %xmm3, %xmm7
-        movl      $32704, %edx
-        pinsrw    $3, %edx, %xmm5
-        movapd    4144(%ebx), %xmm1
-        addsd     %xmm7, %xmm2
-        movl      $127, %edx
-        andl      %eax, %edx
-        addl      %edx, %edx
-        shrl      $3, %eax
-        andl      $65520, %eax
-        addl      $16352, %eax
-        xorpd     %xmm0, %xmm0
-        cmpl      $161, %ecx
-        jae       .L_2TAG_PACKET_1.0.2
-        pshufd    $68, %xmm5, %xmm5
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        psubw     %xmm0, %xmm5
-        mulpd     (%ebx,%edx,8), %xmm0
-        mulpd     2048(%ebx,%edx,8), %xmm5
-        pshufd    $68, %xmm2, %xmm3
-        movapd    4160(%ebx), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        mulpd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulpd     4176(%ebx), %xmm2
-        mulpd     %xmm3, %xmm1
-        mulpd     %xmm3, %xmm7
-        mulpd     %xmm3, %xmm4
-        mulpd     %xmm3, %xmm1
-        addpd     %xmm7, %xmm6
-        movapd    %xmm0, %xmm7
-        addpd     %xmm1, %xmm4
-        shufpd    $0, %xmm5, %xmm7
-        subpd     %xmm5, %xmm0
-        mulpd     %xmm7, %xmm2
-        addpd     %xmm6, %xmm4
-        subsd     %xmm0, %xmm7
-        mulpd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        subsd     %xmm5, %xmm7
-        addpd     %xmm2, %xmm4
-        addsd     %xmm6, %xmm7
-        pshufd    $238, %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_1.0.2:
-        subl      $16352, %eax
-        movl      %eax, %ecx
-        andl      $32752, %eax
-        shrl      $1, %eax
-        andl      $65520, %eax
-        subl      %eax, %ecx
-        addl      $16352, %eax
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        mulpd     (%ebx,%edx,8), %xmm0
-        pshufd    $68, %xmm2, %xmm3
-        movsd     4160(%ebx), %xmm7
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     4176(%ebx), %xmm2
-        mulsd     %xmm3, %xmm1
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm3, %xmm4
-        addl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm5
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm6, %xmm4
-        mulsd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm6, %xmm4
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm5, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        movl      $127, %edx
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_3.0.2
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        addl      $16343, %ecx
-        cmpl      $16343, %ecx
-        ja        .L_2TAG_PACKET_4.0.2
-        cmpl      $15856, %ecx
-        jb        .L_2TAG_PACKET_5.0.2
-        movapd    4208(%ebx), %xmm1
-        pshufd    $68, %xmm0, %xmm6
-        mulpd     %xmm5, %xmm5
-        movapd    4224(%ebx), %xmm2
-        pshufd    $68, %xmm0, %xmm7
-        movapd    4240(%ebx), %xmm3
-        pshufd    $68, %xmm0, %xmm4
-        andpd     4256(%ebx), %xmm6
-        mulpd     %xmm5, %xmm1
-        mulsd     %xmm5, %xmm2
-        subpd     %xmm6, %xmm4
-        mulpd     %xmm5, %xmm7
-        addpd     %xmm3, %xmm1
-        pshufd    $68, %xmm6, %xmm3
-        mulpd     %xmm5, %xmm5
-        mulsd     %xmm7, %xmm2
-        mulpd     %xmm7, %xmm1
-        pshufd    $68, %xmm0, %xmm7
-        mulsd     %xmm6, %xmm6
-        addsd     %xmm7, %xmm7
-        mulsd     %xmm4, %xmm4
-        mulpd     %xmm5, %xmm1
-        addsd     %xmm0, %xmm7
-        mulsd     %xmm3, %xmm6
-        mulsd     %xmm3, %xmm7
-        pshufd    $238, %xmm1, %xmm3
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm2, %xmm3
-        pshufd    $238, %xmm2, %xmm2
-        addsd     %xmm4, %xmm7
-        movapd    %xmm0, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm5, %xmm7
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm2, %xmm7
-        subsd     %xmm0, %xmm4
-        addsd     %xmm7, %xmm1
-        addsd     %xmm4, %xmm6
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_5.0.2:
-        cmpl      $16, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        movapd    %xmm0, %xmm1
-        mulsd     %xmm1, %xmm1
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm2, %xmm2
-        movl      $17392, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        xorpd     %xmm3, %xmm3
-        movl      $15344, %edx
-        pinsrw    $3, %edx, %xmm3
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm3, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_7.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        orl       %edx, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        movl      $127, %edx
-.L_2TAG_PACKET_3.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     112(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm1
-        andnpd    %xmm0, %xmm1
-        mulsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_2.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_8.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(sinh)
-# -- End  sinh
-
-# Start file scope ASM
-ALIAS_SYMBOL(sinhl, sinh);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	3706687593
-	.long	1073526560
-	.long	3521726940
-	.long	1014301643
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.long	3607404736
-	.long	1044146952
-	.long	3607404736
-	.long	3191630600
-	.long	4277811695
-	.long	1063661122
-	.long	4277811695
-	.long	3211144770
-	.long	2140175755
-	.long	1033864261
-	.long	2140175755
-	.long	1033864261
-	.long	4289495988
-	.long	1054113747
-	.long	4289495988
-	.long	1054113747
-	.long	4277811695
-	.long	1064709698
-	.long	4277811695
-	.long	1064709698
-	.long	1610612736
-	.long	1080497479
-	.long	4166901572
-	.long	1053077003
-	.long	329805064
-	.long	1038488134
-	.long	2773927730
-	.long	1053236707
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1069897045
-	.long	1744127201
-	.long	1046144581
-	.long	436314137
-	.long	1059717536
-	.long	0
-	.long	4294967280
-	.long	0
-	.long	4294967280
-	.long	4160749568
-	.long	2147483647
-	.type	static_const_table,@object
-	.size	static_const_table,4280
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_reduce_pi04l.S b/libm/x86/libm_reduce_pi04l.S
deleted file mode 100644
index 25976ea..0000000
--- a/libm/x86/libm_reduce_pi04l.S
+++ /dev/null
@@ -1,3718 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin  __libm_reduce_pi04l
-	.text
-       .align    16,0x90
-	.hidden __libm_reduce_pi04l
-	.globl __libm_reduce_pi04l
-__libm_reduce_pi04l:
-# parameter 1: 8 + %ebp
-# parameter 2: 20 + %ebp
-# parameter 3: 24 + %ebp
-..B1.1:
-        pushl     %ebp
-        movl      %esp, %ebp
-        andl      $-16, %esp
-        pushl     %esi
-        pushl     %edi
-        pushl     %ebx
-        subl      $20, %esp
-        movzwl    16(%ebp), %ebx
-        andl      $32767, %ebx
-        movl      20(%ebp), %eax
-        cmpl      $16413, %ebx
-        movl      24(%ebp), %esi
-        call      ..L2
-..L2:
-        popl      %edi
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
-        movl      %eax, 4(%esp)
-        jge       ..B1.8
-..B1.2:
-        fldt      8(%ebp)
-        fldl      __4onpi_d@GOTOFF(%edi)
-        fmul      %st(1), %st
-        fstpt     8(%esp)
-        movzwl    16(%esp), %ecx
-        negl      %ecx
-        addl      $30, %ecx
-        movl      12(%esp), %eax
-        shrl      %cl, %eax
-        cmpl      $0, 4(%esp)
-        jne       ..B1.4
-..B1.3:
-        lea       1(%eax), %ecx
-        andl      $-2, %ecx
-        jmp       ..B1.5
-..B1.4:
-        movl      %eax, %ecx
-        addl      4(%esp), %eax
-        movl      %eax, %edx
-        andl      $1, %edx
-        addl      %edx, %ecx
-..B1.5:
-        fldl      _TWO_32H@GOTOFF(%edi)
-        cmpl      $16400, %ebx
-        movl      %ecx, (%esp)
-        fildl     (%esp)
-        jge       ..B1.7
-..B1.6:
-        fldl      _pi04_3d@GOTOFF(%edi)
-        fmul      %st(1), %st
-        fsubrp    %st, %st(3)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fld       %st(2)
-        fadd      %st(1), %st
-        fsubp     %st, %st(1)
-        fld       %st(0)
-        fxch      %st(1)
-        fsubr     %st, %st(3)
-        fldl      8+_pi04_3d@GOTOFF(%edi)
-        fmul      %st(3), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        fsub      %st(2), %st
-        fsubp     %st, %st(1)
-        faddp     %st, %st(3)
-        fldl      16+_pi04_3d@GOTOFF(%edi)
-        fmulp     %st, %st(2)
-        fld       %st(1)
-        fsubr     %st(1), %st
-        fsubr     %st, %st(1)
-        fxch      %st(2)
-        fsubrp    %st, %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        jmp       ..B1.15
-..B1.7:
-        fldl      _pi04_5d@GOTOFF(%edi)
-        fmul      %st(1), %st
-        fsubrp    %st, %st(3)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fld       %st(2)
-        fadd      %st(1), %st
-        fsubp     %st, %st(1)
-        fld       %st(0)
-        fxch      %st(1)
-        fsubr     %st, %st(3)
-        fldl      8+_pi04_5d@GOTOFF(%edi)
-        fmul      %st(3), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        fsub      %st(2), %st
-        fsubp     %st, %st(1)
-        faddp     %st, %st(3)
-        fldl      16+_pi04_5d@GOTOFF(%edi)
-        fmul      %st(2), %st
-        fld       %st(0)
-        fsubr     %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        fsubrp    %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(3)
-        fldl      24+_pi04_5d@GOTOFF(%edi)
-        fmul      %st(2), %st
-        fld       %st(0)
-        fsubr     %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        fsubrp    %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(3)
-        fldl      32+_pi04_5d@GOTOFF(%edi)
-        fmulp     %st, %st(2)
-        fld       %st(1)
-        fsubr     %st(1), %st
-        fsubr     %st, %st(1)
-        fxch      %st(2)
-        fsubrp    %st, %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        jmp       ..B1.15
-..B1.8:
-        fldt      8(%ebp)
-        addl      $-16417, %ebx
-        fmull     _SCALE@GOTOFF(%edi)
-        movl      $-2078209981, %eax
-        imull     %ebx
-        addl      %ebx, %edx
-        movl      %ebx, %ecx
-        sarl      $4, %edx
-        sarl      $31, %ecx
-        subl      %ecx, %edx
-        movl      %edx, %eax
-        shll      $5, %eax
-        fstpt     8(%ebp)
-        fldt      8(%ebp)
-        subl      %edx, %eax
-        movl      $0, 8(%ebp)
-        subl      %eax, %ebx
-        fldt      8(%ebp)
-        cmpl      $17, %ebx
-        fsubr     %st, %st(1)
-        jl        ..B1.10
-..B1.9:
-        lea       (,%edx,8), %eax
-        lea       (%eax,%edx,4), %ecx
-        incl      %edx
-        fldt      __4onpi_31l@GOTOFF(%ecx,%edi)
-        fmul      %st(2), %st
-        fldt      12+__4onpi_31l@GOTOFF(%edi,%ecx)
-        fmul      %st(2), %st
-        fld       %st(0)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fld       %st(1)
-        fadd      %st(1), %st
-        fstpt     8(%esp)
-        andl      $-16777216, 8(%esp)
-        fldt      8(%esp)
-        fsubrp    %st, %st(1)
-        jmp       ..B1.11
-..B1.10:
-        fldl      _zeros@GOTOFF(%edi)
-        fld       %st(0)
-..B1.11:
-        fld       %st(0)
-        lea       (,%edx,8), %eax
-        fld       %st(3)
-        lea       (%eax,%edx,4), %edx
-        fldt      __4onpi_31l@GOTOFF(%edx,%edi)
-        fmul      %st(6), %st
-        movl      %edx, (%esp)
-        fadd      %st, %st(2)
-        fxch      %st(2)
-        fsubr     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fldt      12+__4onpi_31l@GOTOFF(%edx,%edi)
-        fmul      %st, %st(2)
-        fld       %st(2)
-        fadd      %st(2), %st
-        fld       %st(0)
-        fxch      %st(1)
-        fsub      %st, %st(3)
-        fxch      %st(3)
-        fchs      
-        faddp     %st, %st(4)
-        fxch      %st(3)
-        faddp     %st, %st(4)
-        fxch      %st(2)
-        fadd      %st(3), %st
-        fxch      %st(2)
-        fmul      %st(5), %st
-        fadd      %st, %st(2)
-        fld       %st(4)
-        fldt      24+__4onpi_31l@GOTOFF(%edx,%edi)
-        fmul      %st, %st(1)
-        fxch      %st(1)
-        fadd      %st, %st(4)
-        fxch      %st(4)
-        fstpt     8(%esp)
-        movzwl    16(%esp), %ebx
-        andl      $32767, %ebx
-        cmpl      $16415, %ebx
-        jge       ..B1.13
-..B1.12:
-        negl      %ebx
-        addl      $30, %ebx
-        movl      %ebx, %ecx
-        movl      12(%esp), %eax
-        shrl      %cl, %eax
-        shll      %cl, %eax
-        movl      %eax, 12(%esp)
-        movl      $0, 8(%esp)
-        shrl      %cl, %eax
-        jmp       ..B1.14
-..B1.13:
-        negl      %ebx
-        addl      $30, %ebx
-        movl      %ebx, %ecx
-        movl      8(%esp), %edx
-        shrl      %cl, %edx
-        shll      %cl, %edx
-        negl      %ecx
-        movl      12(%esp), %eax
-        shll      %cl, %eax
-        movl      %ebx, %ecx
-        movl      %edx, 8(%esp)
-        shrl      %cl, %edx
-        orl       %edx, %eax
-..B1.14:
-        fldt      8(%esp)
-        addl      4(%esp), %eax
-        fsubrp    %st, %st(3)
-        fmul      %st(6), %st
-        fld       %st(4)
-        movl      %eax, %edx
-        andl      $1, %edx
-        fadd      %st(3), %st
-        movl      (%esp), %ecx
-        fsubr     %st, %st(3)
-        fxch      %st(3)
-        faddp     %st, %st(5)
-        fld       %st(1)
-        fxch      %st(3)
-        faddl     zero_none@GOTOFF(%edi,%edx,8)
-        fadd      %st, %st(3)
-        fsub      %st(3), %st
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(4)
-        fld       %st(2)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(3)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(3)
-        fld       %st(0)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fld       %st(2)
-        fldt      36+__4onpi_31l@GOTOFF(%ecx,%edi)
-        fmul      %st, %st(1)
-        fld       %st(1)
-        fadd      %st(3), %st
-        fsubr     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fld       %st(0)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fld       %st(2)
-        fldt      48+__4onpi_31l@GOTOFF(%ecx,%edi)
-        fmul      %st, %st(1)
-        fld       %st(1)
-        fadd      %st(3), %st
-        fsubr     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fld       %st(3)
-        fxch      %st(2)
-        fmul      %st(5), %st
-        fldt      60+__4onpi_31l@GOTOFF(%ecx,%edi)
-        fmul      %st, %st(3)
-        fxch      %st(3)
-        faddp     %st, %st(1)
-        fld       %st(0)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(3)
-        fld       %st(3)
-        fxch      %st(2)
-        fmul      %st(5), %st
-        fldt      72+__4onpi_31l@GOTOFF(%ecx,%edi)
-        fmul      %st, %st(3)
-        fxch      %st(3)
-        faddp     %st, %st(1)
-        fld       %st(0)
-        fadd      %st(2), %st
-        fsubr     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        faddp     %st, %st(3)
-        fxch      %st(1)
-        fmulp     %st, %st(4)
-        fldt      84+__4onpi_31l@GOTOFF(%edi,%ecx)
-        fmulp     %st, %st(3)
-        fxch      %st(2)
-        faddp     %st, %st(3)
-        fld       %st(2)
-        fadd      %st(2), %st
-        fldl      _TWO_32H@GOTOFF(%edi)
-        fmul      %st(1), %st
-        fadd      %st, %st(1)
-        fsubrp    %st, %st(1)
-        fsubr     %st, %st(2)
-        fxch      %st(3)
-        faddp     %st, %st(2)
-        faddp     %st, %st(1)
-        fldl      _pi04_2d@GOTOFF(%edi)
-        fld       %st(0)
-        fmul      %st(2), %st
-        fxch      %st(2)
-        fadd      %st(3), %st
-        fxch      %st(1)
-        fmulp     %st, %st(3)
-        fmull     8+_pi04_2d@GOTOFF(%edi)
-        faddp     %st, %st(1)
-..B1.15:
-        fldl      _TWO_12H@GOTOFF(%edi)
-        fld       %st(2)
-        fadd      %st(2), %st
-        fmul      %st, %st(1)
-        fstpt     8(%esp)
-        fldt      8(%esp)
-        fadd      %st(1), %st
-        fsubp     %st, %st(1)
-        fstl      (%esi)
-        fsubrp    %st, %st(2)
-        faddp     %st, %st(1)
-        fstpl     8(%esi)
-        addl      $20, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-        .align    16,0x90
-	.type	__libm_reduce_pi04l,@function
-	.size	__libm_reduce_pi04l,.-__libm_reduce_pi04l
-	.data
-# -- End  __libm_reduce_pi04l
-	.section .rodata, "a"
-	.align 8
-	.align 8
-zero_none:
-	.long	0x00000000,0x00000000
-	.long	0x00000000,0xbff00000
-	.type	zero_none,@object
-	.size	zero_none,16
-	.align 4
-__4onpi_d:
-	.long	1841940611
-	.long	1072979760
-	.type	__4onpi_d,@object
-	.size	__4onpi_d,8
-	.align 4
-_TWO_32H:
-	.long	0
-	.long	1106771968
-	.type	_TWO_32H,@object
-	.size	_TWO_32H,8
-	.align 4
-_pi04_3d:
-	.long	1413754112
-	.long	1072243195
-	.long	2563527040
-	.long	1021855384
-	.long	3417685868
-	.long	3118450936
-	.type	_pi04_3d,@object
-	.size	_pi04_3d,24
-	.align 4
-_pi04_5d:
-	.long	1413480448
-	.long	1072243195
-	.long	442499072
-	.long	1036039265
-	.long	771751936
-	.long	999496074
-	.long	622854144
-	.long	963347354
-	.long	1396597664
-	.long	922906692
-	.type	_pi04_5d,@object
-	.size	_pi04_5d,40
-	.align 4
-_SCALE:
-	.long	0
-	.long	845152256
-	.type	_SCALE,@object
-	.size	_SCALE,8
-	.align 4
-_zeros:
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.type	_zeros,@object
-	.size	_zeros,16
-	.align 4
-_pi04_2d:
-	.long	1413480448
-	.long	1072243195
-	.long	442655537
-	.long	1036039265
-	.type	_pi04_2d,@object
-	.size	_pi04_2d,16
-	.align 4
-_TWO_12H:
-	.long	0
-	.long	1085800448
-	.type	_TWO_12H,@object
-	.size	_TWO_12H,8
-	.align 2
-__4onpi_31l:
-	.word	0
-	.word	0
-	.word	0
-	.word	0
-	.word	0
-	.word	0
-	.word	0
-	.word	0
-	.word	33646
-	.word	41721
-	.word	16600
-	.word	0
-	.word	0
-	.word	0
-	.word	10832
-	.word	40072
-	.word	16567
-	.word	0
-	.word	0
-	.word	0
-	.word	44008
-	.word	65043
-	.word	16537
-	.word	0
-	.word	0
-	.word	0
-	.word	28384
-	.word	64154
-	.word	16505
-	.word	0
-	.word	0
-	.word	0
-	.word	38272
-	.word	56162
-	.word	16472
-	.word	0
-	.word	0
-	.word	0
-	.word	7298
-	.word	51682
-	.word	16445
-	.word	0
-	.word	0
-	.word	0
-	.word	45504
-	.word	65320
-	.word	16409
-	.word	0
-	.word	0
-	.word	0
-	.word	61204
-	.word	44922
-	.word	16382
-	.word	0
-	.word	0
-	.word	0
-	.word	18652
-	.word	50030
-	.word	16351
-	.word	0
-	.word	0
-	.word	0
-	.word	14144
-	.word	59657
-	.word	16318
-	.word	0
-	.word	0
-	.word	0
-	.word	37450
-	.word	47105
-	.word	16290
-	.word	0
-	.word	0
-	.word	0
-	.word	14898
-	.word	56641
-	.word	16259
-	.word	0
-	.word	0
-	.word	0
-	.word	34680
-	.word	34623
-	.word	16226
-	.word	0
-	.word	0
-	.word	0
-	.word	4760
-	.word	45515
-	.word	16196
-	.word	0
-	.word	0
-	.word	0
-	.word	41480
-	.word	40187
-	.word	16166
-	.word	0
-	.word	0
-	.word	0
-	.word	47852
-	.word	55252
-	.word	16134
-	.word	0
-	.word	0
-	.word	0
-	.word	54072
-	.word	35081
-	.word	16103
-	.word	0
-	.word	0
-	.word	0
-	.word	26808
-	.word	57421
-	.word	16071
-	.word	0
-	.word	0
-	.word	0
-	.word	20068
-	.word	57232
-	.word	16042
-	.word	0
-	.word	0
-	.word	0
-	.word	49576
-	.word	60188
-	.word	16009
-	.word	0
-	.word	0
-	.word	0
-	.word	10016
-	.word	52861
-	.word	15978
-	.word	0
-	.word	0
-	.word	0
-	.word	30648
-	.word	35825
-	.word	15947
-	.word	0
-	.word	0
-	.word	0
-	.word	60542
-	.word	58528
-	.word	15918
-	.word	0
-	.word	0
-	.word	0
-	.word	65468
-	.word	61743
-	.word	15887
-	.word	0
-	.word	0
-	.word	0
-	.word	64960
-	.word	45825
-	.word	15851
-	.word	0
-	.word	0
-	.word	0
-	.word	50604
-	.word	38792
-	.word	15825
-	.word	0
-	.word	0
-	.word	0
-	.word	18394
-	.word	33435
-	.word	15794
-	.word	0
-	.word	0
-	.word	0
-	.word	55780
-	.word	42703
-	.word	15763
-	.word	0
-	.word	0
-	.word	0
-	.word	14056
-	.word	63841
-	.word	15731
-	.word	0
-	.word	0
-	.word	0
-	.word	63080
-	.word	62563
-	.word	15700
-	.word	0
-	.word	0
-	.word	0
-	.word	20840
-	.word	62207
-	.word	15669
-	.word	0
-	.word	0
-	.word	0
-	.word	30094
-	.word	59983
-	.word	15639
-	.word	0
-	.word	0
-	.word	0
-	.word	61818
-	.word	60389
-	.word	15608
-	.word	0
-	.word	0
-	.word	0
-	.word	40186
-	.word	40579
-	.word	15577
-	.word	0
-	.word	0
-	.word	0
-	.word	42170
-	.word	58004
-	.word	15546
-	.word	0
-	.word	0
-	.word	0
-	.word	55276
-	.word	39678
-	.word	15514
-	.word	0
-	.word	0
-	.word	0
-	.word	44672
-	.word	36806
-	.word	15481
-	.word	0
-	.word	0
-	.word	0
-	.word	13060
-	.word	34144
-	.word	15452
-	.word	0
-	.word	0
-	.word	0
-	.word	28016
-	.word	57231
-	.word	15419
-	.word	0
-	.word	0
-	.word	0
-	.word	16112
-	.word	44995
-	.word	15390
-	.word	0
-	.word	0
-	.word	0
-	.word	53464
-	.word	33387
-	.word	15358
-	.word	0
-	.word	0
-	.word	0
-	.word	7296
-	.word	60751
-	.word	15325
-	.word	0
-	.word	0
-	.word	0
-	.word	29452
-	.word	45231
-	.word	15297
-	.word	0
-	.word	0
-	.word	0
-	.word	26208
-	.word	49689
-	.word	15266
-	.word	0
-	.word	0
-	.word	0
-	.word	37900
-	.word	44002
-	.word	15235
-	.word	0
-	.word	0
-	.word	0
-	.word	57340
-	.word	33800
-	.word	15204
-	.word	0
-	.word	0
-	.word	0
-	.word	27544
-	.word	50178
-	.word	15173
-	.word	0
-	.word	0
-	.word	0
-	.word	6168
-	.word	40132
-	.word	15142
-	.word	0
-	.word	0
-	.word	0
-	.word	21392
-	.word	43702
-	.word	15109
-	.word	0
-	.word	0
-	.word	0
-	.word	45168
-	.word	54372
-	.word	15081
-	.word	0
-	.word	0
-	.word	0
-	.word	8986
-	.word	40688
-	.word	15050
-	.word	0
-	.word	0
-	.word	0
-	.word	1648
-	.word	53745
-	.word	15018
-	.word	0
-	.word	0
-	.word	0
-	.word	30520
-	.word	55795
-	.word	14986
-	.word	0
-	.word	0
-	.word	0
-	.word	43060
-	.word	32914
-	.word	14956
-	.word	0
-	.word	0
-	.word	0
-	.word	46172
-	.word	52771
-	.word	14925
-	.word	0
-	.word	0
-	.word	0
-	.word	14056
-	.word	45285
-	.word	14893
-	.word	0
-	.word	0
-	.word	0
-	.word	53590
-	.word	44868
-	.word	14864
-	.word	0
-	.word	0
-	.word	0
-	.word	40786
-	.word	35970
-	.word	14833
-	.word	0
-	.word	0
-	.word	0
-	.word	33436
-	.word	65411
-	.word	14801
-	.word	0
-	.word	0
-	.word	0
-	.word	32006
-	.word	61382
-	.word	14771
-	.word	0
-	.word	0
-	.word	0
-	.word	37856
-	.word	45239
-	.word	14738
-	.word	0
-	.word	0
-	.word	0
-	.word	60894
-	.word	49555
-	.word	14709
-	.word	0
-	.word	0
-	.word	0
-	.word	48064
-	.word	53065
-	.word	14674
-	.word	0
-	.word	0
-	.word	0
-	.word	48624
-	.word	54844
-	.word	14647
-	.word	0
-	.word	0
-	.word	0
-	.word	7988
-	.word	40762
-	.word	14616
-	.word	0
-	.word	0
-	.word	0
-	.word	16270
-	.word	58745
-	.word	14585
-	.word	0
-	.word	0
-	.word	0
-	.word	37064
-	.word	50168
-	.word	14553
-	.word	0
-	.word	0
-	.word	0
-	.word	18624
-	.word	63736
-	.word	14519
-	.word	0
-	.word	0
-	.word	0
-	.word	60758
-	.word	44966
-	.word	14492
-	.word	0
-	.word	0
-	.word	0
-	.word	33304
-	.word	47465
-	.word	14461
-	.word	0
-	.word	0
-	.word	0
-	.word	6226
-	.word	60503
-	.word	14430
-	.word	0
-	.word	0
-	.word	0
-	.word	26380
-	.word	54900
-	.word	14398
-	.word	0
-	.word	0
-	.word	0
-	.word	44352
-	.word	49860
-	.word	14368
-	.word	0
-	.word	0
-	.word	0
-	.word	11904
-	.word	42646
-	.word	14337
-	.word	0
-	.word	0
-	.word	0
-	.word	55296
-	.word	50279
-	.word	14300
-	.word	0
-	.word	0
-	.word	0
-	.word	15474
-	.word	50606
-	.word	14275
-	.word	0
-	.word	0
-	.word	0
-	.word	45062
-	.word	44137
-	.word	14244
-	.word	0
-	.word	0
-	.word	0
-	.word	13472
-	.word	36063
-	.word	14210
-	.word	0
-	.word	0
-	.word	0
-	.word	40658
-	.word	53854
-	.word	14182
-	.word	0
-	.word	0
-	.word	0
-	.word	28652
-	.word	43690
-	.word	14151
-	.word	0
-	.word	0
-	.word	0
-	.word	24640
-	.word	64348
-	.word	14118
-	.word	0
-	.word	0
-	.word	0
-	.word	30284
-	.word	41980
-	.word	14088
-	.word	0
-	.word	0
-	.word	0
-	.word	45652
-	.word	38222
-	.word	14057
-	.word	0
-	.word	0
-	.word	0
-	.word	15900
-	.word	62940
-	.word	14026
-	.word	0
-	.word	0
-	.word	0
-	.word	31494
-	.word	50741
-	.word	13996
-	.word	0
-	.word	0
-	.word	0
-	.word	43194
-	.word	55096
-	.word	13965
-	.word	0
-	.word	0
-	.word	0
-	.word	1740
-	.word	45646
-	.word	13933
-	.word	0
-	.word	0
-	.word	0
-	.word	28936
-	.word	44150
-	.word	13903
-	.word	0
-	.word	0
-	.word	0
-	.word	8996
-	.word	42955
-	.word	13872
-	.word	0
-	.word	0
-	.word	0
-	.word	44096
-	.word	61205
-	.word	13839
-	.word	0
-	.word	0
-	.word	0
-	.word	44614
-	.word	54550
-	.word	13810
-	.word	0
-	.word	0
-	.word	0
-	.word	24926
-	.word	57347
-	.word	13779
-	.word	0
-	.word	0
-	.word	0
-	.word	3312
-	.word	61415
-	.word	13745
-	.word	0
-	.word	0
-	.word	0
-	.word	64336
-	.word	63884
-	.word	13717
-	.word	0
-	.word	0
-	.word	0
-	.word	2748
-	.word	62259
-	.word	13685
-	.word	0
-	.word	0
-	.word	0
-	.word	56672
-	.word	51775
-	.word	13653
-	.word	0
-	.word	0
-	.word	0
-	.word	32438
-	.word	55423
-	.word	13624
-	.word	0
-	.word	0
-	.word	0
-	.word	17652
-	.word	45713
-	.word	13593
-	.word	0
-	.word	0
-	.word	0
-	.word	65408
-	.word	51586
-	.word	13558
-	.word	0
-	.word	0
-	.word	0
-	.word	40416
-	.word	55736
-	.word	13531
-	.word	0
-	.word	0
-	.word	0
-	.word	52546
-	.word	37734
-	.word	13500
-	.word	0
-	.word	0
-	.word	0
-	.word	48880
-	.word	64238
-	.word	13469
-	.word	0
-	.word	0
-	.word	0
-	.word	56004
-	.word	46833
-	.word	13437
-	.word	0
-	.word	0
-	.word	0
-	.word	61760
-	.word	38110
-	.word	13405
-	.word	0
-	.word	0
-	.word	0
-	.word	41496
-	.word	35659
-	.word	13374
-	.word	0
-	.word	0
-	.word	0
-	.word	25472
-	.word	41269
-	.word	13342
-	.word	0
-	.word	0
-	.word	0
-	.word	45444
-	.word	36018
-	.word	13314
-	.word	0
-	.word	0
-	.word	0
-	.word	6510
-	.word	56417
-	.word	13283
-	.word	0
-	.word	0
-	.word	0
-	.word	3072
-	.word	56837
-	.word	13252
-	.word	0
-	.word	0
-	.word	0
-	.word	61338
-	.word	48440
-	.word	13221
-	.word	0
-	.word	0
-	.word	0
-	.word	49568
-	.word	57088
-	.word	13189
-	.word	0
-	.word	0
-	.word	0
-	.word	4240
-	.word	39283
-	.word	13157
-	.word	0
-	.word	0
-	.word	0
-	.word	18562
-	.word	33537
-	.word	13128
-	.word	0
-	.word	0
-	.word	0
-	.word	31422
-	.word	44487
-	.word	13097
-	.word	0
-	.word	0
-	.word	0
-	.word	31930
-	.word	60459
-	.word	13066
-	.word	0
-	.word	0
-	.word	0
-	.word	42272
-	.word	36641
-	.word	13033
-	.word	0
-	.word	0
-	.word	0
-	.word	28940
-	.word	36150
-	.word	13004
-	.word	0
-	.word	0
-	.word	0
-	.word	21010
-	.word	50925
-	.word	12973
-	.word	0
-	.word	0
-	.word	0
-	.word	29448
-	.word	64886
-	.word	12941
-	.word	0
-	.word	0
-	.word	0
-	.word	20500
-	.word	54600
-	.word	12911
-	.word	0
-	.word	0
-	.word	0
-	.word	54258
-	.word	46233
-	.word	12880
-	.word	0
-	.word	0
-	.word	0
-	.word	32628
-	.word	42502
-	.word	12848
-	.word	0
-	.word	0
-	.word	0
-	.word	61608
-	.word	55072
-	.word	12818
-	.word	0
-	.word	0
-	.word	0
-	.word	6236
-	.word	57871
-	.word	12786
-	.word	0
-	.word	0
-	.word	0
-	.word	42408
-	.word	34616
-	.word	12756
-	.word	0
-	.word	0
-	.word	0
-	.word	56692
-	.word	51963
-	.word	12724
-	.word	0
-	.word	0
-	.word	0
-	.word	39094
-	.word	48526
-	.word	12694
-	.word	0
-	.word	0
-	.word	0
-	.word	59870
-	.word	38783
-	.word	12663
-	.word	0
-	.word	0
-	.word	0
-	.word	26560
-	.word	33165
-	.word	12632
-	.word	0
-	.word	0
-	.word	0
-	.word	58666
-	.word	37666
-	.word	12601
-	.word	0
-	.word	0
-	.word	0
-	.word	58728
-	.word	39788
-	.word	12569
-	.word	0
-	.word	0
-	.word	0
-	.word	9048
-	.word	43530
-	.word	12538
-	.word	0
-	.word	0
-	.word	0
-	.word	58496
-	.word	57659
-	.word	12505
-	.word	0
-	.word	0
-	.word	0
-	.word	12324
-	.word	37025
-	.word	12477
-	.word	0
-	.word	0
-	.word	0
-	.word	38432
-	.word	55856
-	.word	12445
-	.word	0
-	.word	0
-	.word	0
-	.word	35210
-	.word	45960
-	.word	12415
-	.word	0
-	.word	0
-	.word	0
-	.word	45644
-	.word	51345
-	.word	12384
-	.word	0
-	.word	0
-	.word	0
-	.word	32854
-	.word	63883
-	.word	12353
-	.word	0
-	.word	0
-	.word	0
-	.word	29348
-	.word	41450
-	.word	12321
-	.word	0
-	.word	0
-	.word	0
-	.word	27384
-	.word	38024
-	.word	12289
-	.word	0
-	.word	0
-	.word	0
-	.word	57356
-	.word	57291
-	.word	12260
-	.word	0
-	.word	0
-	.word	0
-	.word	61164
-	.word	51521
-	.word	12228
-	.word	0
-	.word	0
-	.word	0
-	.word	21472
-	.word	59151
-	.word	12196
-	.word	0
-	.word	0
-	.word	0
-	.word	36704
-	.word	39943
-	.word	12165
-	.word	0
-	.word	0
-	.word	0
-	.word	45864
-	.word	50151
-	.word	12136
-	.word	0
-	.word	0
-	.word	0
-	.word	37892
-	.word	63687
-	.word	12104
-	.word	0
-	.word	0
-	.word	0
-	.word	14560
-	.word	51615
-	.word	12073
-	.word	0
-	.word	0
-	.word	0
-	.word	38776
-	.word	55684
-	.word	12041
-	.word	0
-	.word	0
-	.word	0
-	.word	59136
-	.word	53570
-	.word	12010
-	.word	0
-	.word	0
-	.word	0
-	.word	55556
-	.word	37955
-	.word	11981
-	.word	0
-	.word	0
-	.word	0
-	.word	54458
-	.word	44670
-	.word	11950
-	.word	0
-	.word	0
-	.word	0
-	.word	36446
-	.word	34084
-	.word	11919
-	.word	0
-	.word	0
-	.word	0
-	.word	46416
-	.word	51693
-	.word	11886
-	.word	0
-	.word	0
-	.word	0
-	.word	21432
-	.word	34376
-	.word	11857
-	.word	0
-	.word	0
-	.word	0
-	.word	56036
-	.word	34809
-	.word	11826
-	.word	0
-	.word	0
-	.word	0
-	.word	10562
-	.word	55654
-	.word	11795
-	.word	0
-	.word	0
-	.word	0
-	.word	20264
-	.word	53052
-	.word	11763
-	.word	0
-	.word	0
-	.word	0
-	.word	64064
-	.word	50415
-	.word	11729
-	.word	0
-	.word	0
-	.word	0
-	.word	17444
-	.word	48295
-	.word	11701
-	.word	0
-	.word	0
-	.word	0
-	.word	11874
-	.word	52677
-	.word	11671
-	.word	0
-	.word	0
-	.word	0
-	.word	60808
-	.word	39275
-	.word	11640
-	.word	0
-	.word	0
-	.word	0
-	.word	31792
-	.word	55677
-	.word	11606
-	.word	0
-	.word	0
-	.word	0
-	.word	60710
-	.word	49006
-	.word	11578
-	.word	0
-	.word	0
-	.word	0
-	.word	10520
-	.word	37403
-	.word	11546
-	.word	0
-	.word	0
-	.word	0
-	.word	20004
-	.word	59470
-	.word	11515
-	.word	0
-	.word	0
-	.word	0
-	.word	28096
-	.word	37612
-	.word	11485
-	.word	0
-	.word	0
-	.word	0
-	.word	20268
-	.word	44280
-	.word	11453
-	.word	0
-	.word	0
-	.word	0
-	.word	50740
-	.word	61588
-	.word	11422
-	.word	0
-	.word	0
-	.word	0
-	.word	56432
-	.word	58835
-	.word	11390
-	.word	0
-	.word	0
-	.word	0
-	.word	8576
-	.word	42496
-	.word	11355
-	.word	0
-	.word	0
-	.word	0
-	.word	33920
-	.word	54912
-	.word	11324
-	.word	0
-	.word	0
-	.word	0
-	.word	35620
-	.word	54843
-	.word	11298
-	.word	0
-	.word	0
-	.word	0
-	.word	736
-	.word	43591
-	.word	11264
-	.word	0
-	.word	0
-	.word	0
-	.word	39632
-	.word	61060
-	.word	11235
-	.word	0
-	.word	0
-	.word	0
-	.word	63452
-	.word	63129
-	.word	11206
-	.word	0
-	.word	0
-	.word	0
-	.word	56798
-	.word	58512
-	.word	11175
-	.word	0
-	.word	0
-	.word	0
-	.word	13472
-	.word	46333
-	.word	11141
-	.word	0
-	.word	0
-	.word	0
-	.word	37300
-	.word	36598
-	.word	11112
-	.word	0
-	.word	0
-	.word	0
-	.word	41952
-	.word	41639
-	.word	11079
-	.word	0
-	.word	0
-	.word	0
-	.word	52452
-	.word	33459
-	.word	11050
-	.word	0
-	.word	0
-	.word	0
-	.word	58558
-	.word	33287
-	.word	11020
-	.word	0
-	.word	0
-	.word	0
-	.word	7570
-	.word	43843
-	.word	10989
-	.word	0
-	.word	0
-	.word	0
-	.word	59416
-	.word	63990
-	.word	10957
-	.word	0
-	.word	0
-	.word	0
-	.word	65298
-	.word	47744
-	.word	10927
-	.word	0
-	.word	0
-	.word	0
-	.word	21076
-	.word	34089
-	.word	10896
-	.word	0
-	.word	0
-	.word	0
-	.word	7048
-	.word	57394
-	.word	10865
-	.word	0
-	.word	0
-	.word	0
-	.word	12872
-	.word	55405
-	.word	10832
-	.word	0
-	.word	0
-	.word	0
-	.word	12608
-	.word	51669
-	.word	10798
-	.word	0
-	.word	0
-	.word	0
-	.word	5350
-	.word	48455
-	.word	10772
-	.word	0
-	.word	0
-	.word	0
-	.word	23568
-	.word	58692
-	.word	10740
-	.word	0
-	.word	0
-	.word	0
-	.word	40784
-	.word	37046
-	.word	10708
-	.word	0
-	.word	0
-	.word	0
-	.word	38992
-	.word	43861
-	.word	10678
-	.word	0
-	.word	0
-	.word	0
-	.word	10064
-	.word	40199
-	.word	10648
-	.word	0
-	.word	0
-	.word	0
-	.word	26368
-	.word	35771
-	.word	10611
-	.word	0
-	.word	0
-	.word	0
-	.word	23994
-	.word	60721
-	.word	10586
-	.word	0
-	.word	0
-	.word	0
-	.word	25052
-	.word	34302
-	.word	10554
-	.word	0
-	.word	0
-	.word	0
-	.word	39842
-	.word	54964
-	.word	10524
-	.word	0
-	.word	0
-	.word	0
-	.word	11568
-	.word	58277
-	.word	10491
-	.word	0
-	.word	0
-	.word	0
-	.word	26160
-	.word	46438
-	.word	10461
-	.word	0
-	.word	0
-	.word	0
-	.word	23252
-	.word	43049
-	.word	10431
-	.word	0
-	.word	0
-	.word	0
-	.word	35288
-	.word	58000
-	.word	10400
-	.word	0
-	.word	0
-	.word	0
-	.word	14614
-	.word	50216
-	.word	10369
-	.word	0
-	.word	0
-	.word	0
-	.word	1168
-	.word	48804
-	.word	10336
-	.word	0
-	.word	0
-	.word	0
-	.word	60934
-	.word	33006
-	.word	10307
-	.word	0
-	.word	0
-	.word	0
-	.word	64512
-	.word	62247
-	.word	10272
-	.word	0
-	.word	0
-	.word	0
-	.word	59968
-	.word	43121
-	.word	10240
-	.word	0
-	.word	0
-	.word	0
-	.word	25560
-	.word	39974
-	.word	10212
-	.word	0
-	.word	0
-	.word	0
-	.word	1978
-	.word	49353
-	.word	10183
-	.word	0
-	.word	0
-	.word	0
-	.word	16290
-	.word	38807
-	.word	10152
-	.word	0
-	.word	0
-	.word	0
-	.word	8646
-	.word	65226
-	.word	10121
-	.word	0
-	.word	0
-	.word	0
-	.word	56896
-	.word	34317
-	.word	10088
-	.word	0
-	.word	0
-	.word	0
-	.word	40136
-	.word	39118
-	.word	10057
-	.word	0
-	.word	0
-	.word	0
-	.word	14200
-	.word	41756
-	.word	10026
-	.word	0
-	.word	0
-	.word	0
-	.word	59256
-	.word	63202
-	.word	9995
-	.word	0
-	.word	0
-	.word	0
-	.word	22968
-	.word	63553
-	.word	9965
-	.word	0
-	.word	0
-	.word	0
-	.word	736
-	.word	44292
-	.word	9933
-	.word	0
-	.word	0
-	.word	0
-	.word	23186
-	.word	37760
-	.word	9904
-	.word	0
-	.word	0
-	.word	0
-	.word	51008
-	.word	34950
-	.word	9869
-	.word	0
-	.word	0
-	.word	0
-	.word	1664
-	.word	64248
-	.word	9836
-	.word	0
-	.word	0
-	.word	0
-	.word	64352
-	.word	35199
-	.word	9811
-	.word	0
-	.word	0
-	.word	0
-	.word	34656
-	.word	63747
-	.word	9780
-	.word	0
-	.word	0
-	.word	0
-	.word	44330
-	.word	49864
-	.word	9749
-	.word	0
-	.word	0
-	.word	0
-	.word	11654
-	.word	35567
-	.word	9718
-	.word	0
-	.word	0
-	.word	0
-	.word	7924
-	.word	58919
-	.word	9686
-	.word	0
-	.word	0
-	.word	0
-	.word	2532
-	.word	32800
-	.word	9655
-	.word	0
-	.word	0
-	.word	0
-	.word	30024
-	.word	53799
-	.word	9624
-	.word	0
-	.word	0
-	.word	0
-	.word	30172
-	.word	64347
-	.word	9593
-	.word	0
-	.word	0
-	.word	0
-	.word	60036
-	.word	51382
-	.word	9562
-	.word	0
-	.word	0
-	.word	0
-	.word	58576
-	.word	33093
-	.word	9531
-	.word	0
-	.word	0
-	.word	0
-	.word	13888
-	.word	38760
-	.word	9500
-	.word	0
-	.word	0
-	.word	0
-	.word	9322
-	.word	52460
-	.word	9470
-	.word	0
-	.word	0
-	.word	0
-	.word	20944
-	.word	41077
-	.word	9437
-	.word	0
-	.word	0
-	.word	0
-	.word	17976
-	.word	41861
-	.word	9407
-	.word	0
-	.word	0
-	.word	0
-	.word	55176
-	.word	55158
-	.word	9377
-	.word	0
-	.word	0
-	.word	0
-	.word	4976
-	.word	35223
-	.word	9346
-	.word	0
-	.word	0
-	.word	0
-	.word	7816
-	.word	39783
-	.word	9314
-	.word	0
-	.word	0
-	.word	0
-	.word	27656
-	.word	55669
-	.word	9284
-	.word	0
-	.word	0
-	.word	0
-	.word	64944
-	.word	53184
-	.word	9250
-	.word	0
-	.word	0
-	.word	0
-	.word	12544
-	.word	49190
-	.word	9222
-	.word	0
-	.word	0
-	.word	0
-	.word	50612
-	.word	44644
-	.word	9190
-	.word	0
-	.word	0
-	.word	0
-	.word	8832
-	.word	63111
-	.word	9155
-	.word	0
-	.word	0
-	.word	0
-	.word	11744
-	.word	36870
-	.word	9129
-	.word	0
-	.word	0
-	.word	0
-	.word	9404
-	.word	63025
-	.word	9098
-	.word	0
-	.word	0
-	.word	0
-	.word	47316
-	.word	43381
-	.word	9067
-	.word	0
-	.word	0
-	.word	0
-	.word	55716
-	.word	47433
-	.word	9035
-	.word	0
-	.word	0
-	.word	0
-	.word	46414
-	.word	48441
-	.word	9005
-	.word	0
-	.word	0
-	.word	0
-	.word	19116
-	.word	39506
-	.word	8974
-	.word	0
-	.word	0
-	.word	0
-	.word	48060
-	.word	53381
-	.word	8943
-	.word	0
-	.word	0
-	.word	0
-	.word	57112
-	.word	50739
-	.word	8911
-	.word	0
-	.word	0
-	.word	0
-	.word	5840
-	.word	60581
-	.word	8879
-	.word	0
-	.word	0
-	.word	0
-	.word	62112
-	.word	57199
-	.word	8846
-	.word	0
-	.word	0
-	.word	0
-	.word	35908
-	.word	59499
-	.word	8818
-	.word	0
-	.word	0
-	.word	0
-	.word	13760
-	.word	48116
-	.word	8787
-	.word	0
-	.word	0
-	.word	0
-	.word	3136
-	.word	56059
-	.word	8752
-	.word	0
-	.word	0
-	.word	0
-	.word	37596
-	.word	39221
-	.word	8726
-	.word	0
-	.word	0
-	.word	0
-	.word	3232
-	.word	48550
-	.word	8691
-	.word	0
-	.word	0
-	.word	0
-	.word	22872
-	.word	42749
-	.word	8662
-	.word	0
-	.word	0
-	.word	0
-	.word	41948
-	.word	40319
-	.word	8633
-	.word	0
-	.word	0
-	.word	0
-	.word	31196
-	.word	64693
-	.word	8601
-	.word	0
-	.word	0
-	.word	0
-	.word	62052
-	.word	52923
-	.word	8571
-	.word	0
-	.word	0
-	.word	0
-	.word	2750
-	.word	33544
-	.word	8540
-	.word	0
-	.word	0
-	.word	0
-	.word	12462
-	.word	46179
-	.word	8509
-	.word	0
-	.word	0
-	.word	0
-	.word	25128
-	.word	45120
-	.word	8476
-	.word	0
-	.word	0
-	.word	0
-	.word	51634
-	.word	62523
-	.word	8447
-	.word	0
-	.word	0
-	.word	0
-	.word	15758
-	.word	42163
-	.word	8416
-	.word	0
-	.word	0
-	.word	0
-	.word	34022
-	.word	36267
-	.word	8385
-	.word	0
-	.word	0
-	.word	0
-	.word	41252
-	.word	39796
-	.word	8353
-	.word	0
-	.word	0
-	.word	0
-	.word	49782
-	.word	54423
-	.word	8323
-	.word	0
-	.word	0
-	.word	0
-	.word	25428
-	.word	42086
-	.word	8291
-	.word	0
-	.word	0
-	.word	0
-	.word	34388
-	.word	44810
-	.word	8260
-	.word	0
-	.word	0
-	.word	0
-	.word	7456
-	.word	64092
-	.word	8228
-	.word	0
-	.word	0
-	.word	0
-	.word	48336
-	.word	62448
-	.word	8196
-	.word	0
-	.word	0
-	.word	0
-	.word	60912
-	.word	61622
-	.word	8167
-	.word	0
-	.word	0
-	.word	0
-	.word	17852
-	.word	37250
-	.word	8137
-	.word	0
-	.word	0
-	.word	0
-	.word	57940
-	.word	56453
-	.word	8106
-	.word	0
-	.word	0
-	.word	0
-	.word	47256
-	.word	59825
-	.word	8074
-	.word	0
-	.word	0
-	.word	0
-	.word	3774
-	.word	59120
-	.word	8044
-	.word	0
-	.word	0
-	.word	0
-	.word	43448
-	.word	62852
-	.word	8012
-	.word	0
-	.word	0
-	.word	0
-	.word	4840
-	.word	57195
-	.word	7982
-	.word	0
-	.word	0
-	.word	0
-	.word	40862
-	.word	52565
-	.word	7951
-	.word	0
-	.word	0
-	.word	0
-	.word	1440
-	.word	60474
-	.word	7919
-	.word	0
-	.word	0
-	.word	0
-	.word	55520
-	.word	38648
-	.word	7889
-	.word	0
-	.word	0
-	.word	0
-	.word	15316
-	.word	52422
-	.word	7857
-	.word	0
-	.word	0
-	.word	0
-	.word	18704
-	.word	47227
-	.word	7827
-	.word	0
-	.word	0
-	.word	0
-	.word	48892
-	.word	54283
-	.word	7795
-	.word	0
-	.word	0
-	.word	0
-	.word	12670
-	.word	41990
-	.word	7765
-	.word	0
-	.word	0
-	.word	0
-	.word	27570
-	.word	49842
-	.word	7734
-	.word	0
-	.word	0
-	.word	0
-	.word	47230
-	.word	47992
-	.word	7703
-	.word	0
-	.word	0
-	.word	0
-	.word	41020
-	.word	56253
-	.word	7671
-	.word	0
-	.word	0
-	.word	0
-	.word	23404
-	.word	58312
-	.word	7641
-	.word	0
-	.word	0
-	.word	0
-	.word	35176
-	.word	51854
-	.word	7610
-	.word	0
-	.word	0
-	.word	0
-	.word	49188
-	.word	59051
-	.word	7578
-	.word	0
-	.word	0
-	.word	0
-	.word	16656
-	.word	54507
-	.word	7546
-	.word	0
-	.word	0
-	.word	0
-	.word	41320
-	.word	48565
-	.word	7517
-	.word	0
-	.word	0
-	.word	0
-	.word	302
-	.word	42490
-	.word	7486
-	.word	0
-	.word	0
-	.word	0
-	.word	26680
-	.word	39967
-	.word	7454
-	.word	0
-	.word	0
-	.word	0
-	.word	41304
-	.word	43638
-	.word	7424
-	.word	0
-	.word	0
-	.word	0
-	.word	2314
-	.word	48533
-	.word	7393
-	.word	0
-	.word	0
-	.word	0
-	.word	63294
-	.word	35693
-	.word	7362
-	.word	0
-	.word	0
-	.word	0
-	.word	24538
-	.word	48319
-	.word	7331
-	.word	0
-	.word	0
-	.word	0
-	.word	56296
-	.word	47263
-	.word	7300
-	.word	0
-	.word	0
-	.word	0
-	.word	28236
-	.word	38599
-	.word	7268
-	.word	0
-	.word	0
-	.word	0
-	.word	6594
-	.word	62116
-	.word	7238
-	.word	0
-	.word	0
-	.word	0
-	.word	47104
-	.word	63573
-	.word	7198
-	.word	0
-	.word	0
-	.word	0
-	.word	34812
-	.word	34303
-	.word	7176
-	.word	0
-	.word	0
-	.word	0
-	.word	5144
-	.word	33695
-	.word	7145
-	.word	0
-	.word	0
-	.word	0
-	.word	24966
-	.word	55768
-	.word	7114
-	.word	0
-	.word	0
-	.word	0
-	.word	62720
-	.word	43946
-	.word	7078
-	.word	0
-	.word	0
-	.word	0
-	.word	31542
-	.word	56062
-	.word	7052
-	.word	0
-	.word	0
-	.word	0
-	.word	62356
-	.word	59096
-	.word	7020
-	.word	0
-	.word	0
-	.word	0
-	.word	28412
-	.word	40533
-	.word	6990
-	.word	0
-	.word	0
-	.word	0
-	.word	24080
-	.word	50467
-	.word	6958
-	.word	0
-	.word	0
-	.word	0
-	.word	33296
-	.word	46841
-	.word	6925
-	.word	0
-	.word	0
-	.word	0
-	.word	39600
-	.word	38627
-	.word	6897
-	.word	0
-	.word	0
-	.word	0
-	.word	14436
-	.word	37607
-	.word	6865
-	.word	0
-	.word	0
-	.word	0
-	.word	39032
-	.word	56421
-	.word	6833
-	.word	0
-	.word	0
-	.word	0
-	.word	64032
-	.word	54987
-	.word	6804
-	.word	0
-	.word	0
-	.word	0
-	.word	27648
-	.word	42212
-	.word	6768
-	.word	0
-	.word	0
-	.word	0
-	.word	43840
-	.word	46107
-	.word	6739
-	.word	0
-	.word	0
-	.word	0
-	.word	17316
-	.word	36574
-	.word	6711
-	.word	0
-	.word	0
-	.word	0
-	.word	8928
-	.word	37652
-	.word	6677
-	.word	0
-	.word	0
-	.word	0
-	.word	24944
-	.word	47433
-	.word	6648
-	.word	0
-	.word	0
-	.word	0
-	.word	27392
-	.word	57430
-	.word	6616
-	.word	0
-	.word	0
-	.word	0
-	.word	39848
-	.word	43340
-	.word	6585
-	.word	0
-	.word	0
-	.word	0
-	.word	64160
-	.word	43542
-	.word	6555
-	.word	0
-	.word	0
-	.word	0
-	.word	35226
-	.word	63015
-	.word	6525
-	.word	0
-	.word	0
-	.word	0
-	.word	40736
-	.word	64368
-	.word	6493
-	.word	0
-	.word	0
-	.word	0
-	.word	42168
-	.word	49526
-	.word	6462
-	.word	0
-	.word	0
-	.word	0
-	.word	45596
-	.word	34243
-	.word	6432
-	.word	0
-	.word	0
-	.word	0
-	.word	20690
-	.word	39705
-	.word	6401
-	.word	0
-	.word	0
-	.word	0
-	.word	54448
-	.word	46856
-	.word	6368
-	.word	0
-	.word	0
-	.word	0
-	.word	64392
-	.word	62736
-	.word	6337
-	.word	0
-	.word	0
-	.word	0
-	.word	12780
-	.word	56461
-	.word	6307
-	.word	0
-	.word	0
-	.word	0
-	.word	15360
-	.word	49145
-	.word	6277
-	.word	0
-	.word	0
-	.word	0
-	.word	20512
-	.word	49931
-	.word	6242
-	.word	0
-	.word	0
-	.word	0
-	.word	54512
-	.word	55820
-	.word	6212
-	.word	0
-	.word	0
-	.word	0
-	.word	8402
-	.word	39333
-	.word	6184
-	.word	0
-	.word	0
-	.word	0
-	.word	34094
-	.word	53593
-	.word	6153
-	.word	0
-	.word	0
-	.word	0
-	.word	31960
-	.word	38817
-	.word	6121
-	.word	0
-	.word	0
-	.word	0
-	.word	16954
-	.word	39291
-	.word	6091
-	.word	0
-	.word	0
-	.word	0
-	.word	49600
-	.word	48765
-	.word	6056
-	.word	0
-	.word	0
-	.word	0
-	.word	59580
-	.word	56541
-	.word	6029
-	.word	0
-	.word	0
-	.word	0
-	.word	35624
-	.word	44550
-	.word	5998
-	.word	0
-	.word	0
-	.word	0
-	.word	4142
-	.word	47316
-	.word	5967
-	.word	0
-	.word	0
-	.word	0
-	.word	43520
-	.word	43612
-	.word	5935
-	.word	0
-	.word	0
-	.word	0
-	.word	20976
-	.word	40896
-	.word	5902
-	.word	0
-	.word	0
-	.word	0
-	.word	63576
-	.word	57729
-	.word	5874
-	.word	0
-	.word	0
-	.word	0
-	.word	37288
-	.word	33122
-	.word	5843
-	.word	0
-	.word	0
-	.word	0
-	.word	24384
-	.word	52079
-	.word	5809
-	.word	0
-	.word	0
-	.word	0
-	.word	47952
-	.word	58719
-	.word	5779
-	.word	0
-	.word	0
-	.word	0
-	.word	44242
-	.word	55445
-	.word	5750
-	.word	0
-	.word	0
-	.word	0
-	.word	61232
-	.word	38847
-	.word	5716
-	.word	0
-	.word	0
-	.word	0
-	.word	63232
-	.word	46039
-	.word	5683
-	.word	0
-	.word	0
-	.word	0
-	.word	13396
-	.word	42933
-	.word	5657
-	.word	0
-	.word	0
-	.word	0
-	.word	27392
-	.word	43305
-	.word	5622
-	.word	0
-	.word	0
-	.word	0
-	.word	40708
-	.word	35319
-	.word	5595
-	.word	0
-	.word	0
-	.word	0
-	.word	44408
-	.word	55685
-	.word	5564
-	.word	0
-	.word	0
-	.word	0
-	.word	42090
-	.word	44607
-	.word	5533
-	.word	0
-	.word	0
-	.word	0
-	.word	25504
-	.word	53466
-	.word	5500
-	.word	0
-	.word	0
-	.word	0
-	.word	24208
-	.word	33149
-	.word	5470
-	.word	0
-	.word	0
-	.word	0
-	.word	5268
-	.word	45375
-	.word	5440
-	.word	0
-	.word	0
-	.word	0
-	.word	144
-	.word	40000
-	.word	5409
-	.word	0
-	.word	0
-	.word	0
-	.word	56688
-	.word	52358
-	.word	5376
-	.word	0
-	.word	0
-	.word	0
-	.word	25848
-	.word	56175
-	.word	5345
-	.word	0
-	.word	0
-	.word	0
-	.word	57900
-	.word	44055
-	.word	5315
-	.word	0
-	.word	0
-	.word	0
-	.word	24800
-	.word	43437
-	.word	5283
-	.word	0
-	.word	0
-	.word	0
-	.word	17984
-	.word	54872
-	.word	5249
-	.word	0
-	.word	0
-	.word	0
-	.word	25744
-	.word	41345
-	.word	5223
-	.word	0
-	.word	0
-	.word	0
-	.word	7668
-	.word	43682
-	.word	5191
-	.word	0
-	.word	0
-	.word	0
-	.word	47434
-	.word	36705
-	.word	5161
-	.word	0
-	.word	0
-	.word	0
-	.word	20888
-	.word	40323
-	.word	5129
-	.word	0
-	.word	0
-	.word	0
-	.word	3962
-	.word	43032
-	.word	5099
-	.word	0
-	.word	0
-	.word	0
-	.word	50270
-	.word	49260
-	.word	5068
-	.word	0
-	.word	0
-	.word	0
-	.word	20160
-	.word	64041
-	.word	5032
-	.word	0
-	.word	0
-	.word	0
-	.word	25624
-	.word	36013
-	.word	5004
-	.word	0
-	.word	0
-	.word	0
-	.word	48328
-	.word	59345
-	.word	4975
-	.word	0
-	.word	0
-	.word	0
-	.word	51508
-	.word	63920
-	.word	4943
-	.word	0
-	.word	0
-	.word	0
-	.word	27872
-	.word	39135
-	.word	4913
-	.word	0
-	.word	0
-	.word	0
-	.word	13590
-	.word	58857
-	.word	4882
-	.word	0
-	.word	0
-	.word	0
-	.word	50880
-	.word	61323
-	.word	4847
-	.word	0
-	.word	0
-	.word	0
-	.word	44802
-	.word	37181
-	.word	4820
-	.word	0
-	.word	0
-	.word	0
-	.word	53808
-	.word	57813
-	.word	4789
-	.word	0
-	.word	0
-	.word	0
-	.word	64424
-	.word	49714
-	.word	4757
-	.word	0
-	.word	0
-	.word	0
-	.word	31652
-	.word	44011
-	.word	4727
-	.word	0
-	.word	0
-	.word	0
-	.word	28252
-	.word	50834
-	.word	4696
-	.word	0
-	.word	0
-	.word	0
-	.word	30370
-	.word	38742
-	.word	4665
-	.word	0
-	.word	0
-	.word	0
-	.word	57728
-	.word	58403
-	.word	4628
-	.word	0
-	.word	0
-	.word	0
-	.word	35900
-	.word	37112
-	.word	4603
-	.word	0
-	.word	0
-	.word	0
-	.word	40764
-	.word	40914
-	.word	4572
-	.word	0
-	.word	0
-	.word	0
-	.word	21472
-	.word	46910
-	.word	4541
-	.word	0
-	.word	0
-	.word	0
-	.word	17854
-	.word	35030
-	.word	4510
-	.word	0
-	.word	0
-	.word	0
-	.word	4378
-	.word	35776
-	.word	4479
-	.word	0
-	.word	0
-	.word	0
-	.word	57962
-	.word	55295
-	.word	4448
-	.word	0
-	.word	0
-	.word	0
-	.word	64352
-	.word	56717
-	.word	4415
-	.word	0
-	.word	0
-	.word	0
-	.word	37744
-	.word	49416
-	.word	4384
-	.word	0
-	.word	0
-	.word	0
-	.word	38484
-	.word	35759
-	.word	4355
-	.word	0
-	.word	0
-	.word	0
-	.word	55020
-	.word	54969
-	.word	4324
-	.word	0
-	.word	0
-	.word	0
-	.word	9188
-	.word	55223
-	.word	4292
-	.word	0
-	.word	0
-	.word	0
-	.word	6822
-	.word	43079
-	.word	4262
-	.word	0
-	.word	0
-	.word	0
-	.word	48870
-	.word	40943
-	.word	4231
-	.word	0
-	.word	0
-	.word	0
-	.word	9936
-	.word	42731
-	.word	4198
-	.word	0
-	.word	0
-	.word	0
-	.word	23430
-	.word	43136
-	.word	4169
-	.word	0
-	.word	0
-	.word	0
-	.word	4700
-	.word	55665
-	.word	4137
-	.word	0
-	.word	0
-	.word	0
-	.word	8056
-	.word	40216
-	.word	4106
-	.word	0
-	.word	0
-	.word	0
-	.word	3716
-	.word	45403
-	.word	4075
-	.word	0
-	.word	0
-	.word	0
-	.word	53440
-	.word	49488
-	.word	4044
-	.word	0
-	.word	0
-	.word	0
-	.word	41776
-	.word	50188
-	.word	4013
-	.word	0
-	.word	0
-	.word	0
-	.word	20994
-	.word	64556
-	.word	3983
-	.word	0
-	.word	0
-	.word	0
-	.word	16252
-	.word	60661
-	.word	3951
-	.word	0
-	.word	0
-	.word	0
-	.word	61252
-	.word	65021
-	.word	3920
-	.word	0
-	.word	0
-	.word	0
-	.word	16236
-	.word	43803
-	.word	3889
-	.word	0
-	.word	0
-	.word	0
-	.word	63064
-	.word	35308
-	.word	3857
-	.word	0
-	.word	0
-	.word	0
-	.word	49096
-	.word	39848
-	.word	3828
-	.word	0
-	.word	0
-	.word	0
-	.word	15680
-	.word	48673
-	.word	3797
-	.word	0
-	.word	0
-	.word	0
-	.word	48068
-	.word	50957
-	.word	3766
-	.word	0
-	.word	0
-	.word	0
-	.word	20824
-	.word	56086
-	.word	3734
-	.word	0
-	.word	0
-	.word	0
-	.word	46504
-	.word	43224
-	.word	3704
-	.word	0
-	.word	0
-	.word	0
-	.word	52428
-	.word	46094
-	.word	3672
-	.word	0
-	.word	0
-	.word	0
-	.word	17548
-	.word	52066
-	.word	3642
-	.word	0
-	.word	0
-	.word	0
-	.word	61738
-	.word	35565
-	.word	3611
-	.word	0
-	.word	0
-	.word	0
-	.word	31184
-	.word	50588
-	.word	3579
-	.word	0
-	.word	0
-	.word	0
-	.word	1716
-	.word	52681
-	.word	3549
-	.word	0
-	.word	0
-	.word	0
-	.word	44656
-	.word	43385
-	.word	3518
-	.word	0
-	.word	0
-	.word	0
-	.word	12668
-	.word	43259
-	.word	3486
-	.word	0
-	.word	0
-	.word	0
-	.word	24544
-	.word	35408
-	.word	3453
-	.word	0
-	.word	0
-	.word	0
-	.word	28854
-	.word	65018
-	.word	3425
-	.word	0
-	.word	0
-	.word	0
-	.word	5696
-	.word	40391
-	.word	3393
-	.word	0
-	.word	0
-	.word	0
-	.word	39580
-	.word	56400
-	.word	3363
-	.word	0
-	.word	0
-	.word	0
-	.word	20428
-	.word	39579
-	.word	3332
-	.word	0
-	.word	0
-	.word	0
-	.word	32328
-	.word	36727
-	.word	3301
-	.word	0
-	.word	0
-	.word	0
-	.word	34020
-	.word	54457
-	.word	3270
-	.word	0
-	.word	0
-	.word	0
-	.word	34016
-	.word	48400
-	.word	3238
-	.word	0
-	.word	0
-	.word	0
-	.word	6922
-	.word	51417
-	.word	3208
-	.word	0
-	.word	0
-	.word	0
-	.word	27208
-	.word	64641
-	.word	3176
-	.word	0
-	.word	0
-	.word	0
-	.word	1802
-	.word	48886
-	.word	3146
-	.word	0
-	.word	0
-	.word	0
-	.word	35440
-	.word	61590
-	.word	3115
-	.word	0
-	.word	0
-	.word	0
-	.word	60610
-	.word	51604
-	.word	3084
-	.word	0
-	.word	0
-	.word	0
-	.word	5440
-	.word	38199
-	.word	3050
-	.word	0
-	.word	0
-	.word	0
-	.word	6914
-	.word	43867
-	.word	3022
-	.word	0
-	.word	0
-	.word	0
-	.word	24000
-	.word	45256
-	.word	2989
-	.word	0
-	.word	0
-	.word	0
-	.word	51496
-	.word	57396
-	.word	2959
-	.word	0
-	.word	0
-	.word	0
-	.word	11538
-	.word	46256
-	.word	2929
-	.word	0
-	.word	0
-	.word	0
-	.word	36802
-	.word	48020
-	.word	2898
-	.word	0
-	.word	0
-	.word	0
-	.word	57910
-	.word	57903
-	.word	2867
-	.word	0
-	.word	0
-	.word	0
-	.word	47484
-	.word	48798
-	.word	2835
-	.word	0
-	.word	0
-	.word	0
-	.word	57766
-	.word	57709
-	.word	2805
-	.word	0
-	.word	0
-	.word	0
-	.word	54064
-	.word	47856
-	.word	2774
-	.word	0
-	.word	0
-	.word	0
-	.word	49340
-	.word	48080
-	.word	2743
-	.word	0
-	.word	0
-	.word	0
-	.word	36454
-	.word	56731
-	.word	2712
-	.word	0
-	.word	0
-	.word	0
-	.word	51548
-	.word	63385
-	.word	2681
-	.word	0
-	.word	0
-	.word	0
-	.word	56000
-	.word	48716
-	.word	2645
-	.word	0
-	.word	0
-	.word	0
-	.word	44992
-	.word	50040
-	.word	2615
-	.word	0
-	.word	0
-	.word	0
-	.word	43136
-	.word	58177
-	.word	2585
-	.word	0
-	.word	0
-	.word	0
-	.word	49730
-	.word	33270
-	.word	2557
-	.word	0
-	.word	0
-	.word	0
-	.word	29808
-	.word	51063
-	.word	2526
-	.word	0
-	.word	0
-	.word	0
-	.word	25276
-	.word	46724
-	.word	2494
-	.word	0
-	.word	0
-	.word	0
-	.word	17324
-	.word	35928
-	.word	2463
-	.word	0
-	.word	0
-	.word	0
-	.word	52284
-	.word	63916
-	.word	2433
-	.word	0
-	.word	0
-	.word	0
-	.word	5414
-	.word	46704
-	.word	2402
-	.word	0
-	.word	0
-	.word	0
-	.word	51710
-	.word	57168
-	.word	2371
-	.word	0
-	.word	0
-	.word	0
-	.word	27366
-	.word	49253
-	.word	2340
-	.word	0
-	.word	0
-	.word	0
-	.word	45332
-	.word	53033
-	.word	2309
-	.word	0
-	.word	0
-	.word	0
-	.word	54152
-	.word	37418
-	.word	2276
-	.word	0
-	.word	0
-	.word	0
-	.word	53076
-	.word	47398
-	.word	2247
-	.word	0
-	.word	0
-	.word	0
-	.word	14374
-	.word	59477
-	.word	2216
-	.word	0
-	.word	0
-	.word	0
-	.word	59336
-	.word	33435
-	.word	2184
-	.word	0
-	.word	0
-	.word	0
-	.word	21612
-	.word	43267
-	.word	2154
-	.word	0
-	.word	0
-	.word	0
-	.word	34664
-	.word	39372
-	.word	2121
-	.word	0
-	.word	0
-	.word	0
-	.word	172
-	.word	62761
-	.word	2091
-	.word	0
-	.word	0
-	.word	0
-	.word	9816
-	.word	40715
-	.word	2060
-	.word	0
-	.word	0
-	.word	0
-	.word	65116
-	.word	40481
-	.word	2030
-	.word	0
-	.word	0
-	.word	0
-	.word	28066
-	.word	39184
-	.word	1999
-	.word	0
-	.word	0
-	.word	0
-	.word	37408
-	.word	63923
-	.word	1968
-	.word	0
-	.word	0
-	.word	0
-	.word	15760
-	.word	42305
-	.word	1937
-	.word	0
-	.word	0
-	.word	0
-	.word	28236
-	.word	59340
-	.word	1905
-	.word	0
-	.word	0
-	.word	0
-	.word	43258
-	.word	59402
-	.word	1875
-	.word	0
-	.word	0
-	.word	0
-	.word	19988
-	.word	50087
-	.word	1844
-	.word	0
-	.word	0
-	.word	0
-	.word	63456
-	.word	47833
-	.word	1810
-	.word	0
-	.word	0
-	.word	0
-	.word	65184
-	.word	61426
-	.word	1781
-	.word	0
-	.word	0
-	.word	0
-	.word	52982
-	.word	48456
-	.word	1751
-	.word	0
-	.word	0
-	.word	0
-	.word	30020
-	.word	62809
-	.word	1719
-	.word	0
-	.word	0
-	.word	0
-	.word	9096
-	.word	63061
-	.word	1688
-	.word	0
-	.word	0
-	.word	0
-	.word	59648
-	.word	44374
-	.word	1654
-	.word	0
-	.word	0
-	.word	0
-	.word	11456
-	.word	33847
-	.word	1625
-	.word	0
-	.word	0
-	.word	0
-	.word	12392
-	.word	50500
-	.word	1595
-	.word	0
-	.word	0
-	.word	0
-	.word	56432
-	.word	59196
-	.word	1563
-	.word	0
-	.word	0
-	.word	0
-	.word	61008
-	.word	40265
-	.word	1532
-	.word	0
-	.word	0
-	.word	0
-	.word	37842
-	.word	33270
-	.word	1503
-	.word	0
-	.word	0
-	.word	0
-	.word	37916
-	.word	44543
-	.word	1471
-	.word	0
-	.word	0
-	.word	0
-	.word	11490
-	.word	36421
-	.word	1441
-	.word	0
-	.word	0
-	.word	0
-	.word	19040
-	.word	38397
-	.word	1409
-	.word	0
-	.word	0
-	.word	0
-	.word	31224
-	.word	47162
-	.word	1379
-	.word	0
-	.word	0
-	.word	0
-	.word	52056
-	.word	41461
-	.word	1347
-	.word	0
-	.word	0
-	.word	0
-	.word	10810
-	.word	56374
-	.word	1317
-	.word	0
-	.word	0
-	.word	0
-	.word	5358
-	.word	35086
-	.word	1286
-	.word	0
-	.word	0
-	.word	0
-	.word	36640
-	.word	50226
-	.word	1251
-	.word	0
-	.word	0
-	.word	0
-	.word	33856
-	.word	45597
-	.word	1222
-	.word	0
-	.word	0
-	.word	0
-	.word	21552
-	.word	63128
-	.word	1191
-	.word	0
-	.word	0
-	.word	0
-	.word	1198
-	.word	35616
-	.word	1162
-	.word	0
-	.word	0
-	.word	0
-	.word	1232
-	.word	59506
-	.word	1131
-	.word	0
-	.word	0
-	.word	0
-	.word	51086
-	.word	34963
-	.word	1100
-	.word	0
-	.word	0
-	.word	0
-	.word	3960
-	.word	39061
-	.word	1067
-	.word	0
-	.word	0
-	.word	0
-	.word	4564
-	.word	57134
-	.word	1037
-	.word	0
-	.word	0
-	.word	0
-	.word	59468
-	.word	35285
-	.word	1007
-	.word	0
-	.word	0
-	.word	0
-	.word	63422
-	.word	35431
-	.word	976
-	.word	0
-	.word	0
-	.word	0
-	.word	38352
-	.word	51462
-	.word	945
-	.word	0
-	.word	0
-	.word	0
-	.word	25806
-	.word	55660
-	.word	914
-	.word	0
-	.word	0
-	.word	0
-	.word	38842
-	.word	41327
-	.word	883
-	.word	0
-	.word	0
-	.word	0
-	.word	17980
-	.word	50458
-	.word	852
-	.word	0
-	.word	0
-	.word	0
-	.word	61194
-	.word	59710
-	.word	821
-	.word	0
-	.word	0
-	.word	0
-	.word	21098
-	.word	42086
-	.word	790
-	.word	0
-	.word	0
-	.word	0
-	.word	16704
-	.word	43341
-	.word	757
-	.word	0
-	.word	0
-	.word	0
-	.word	46316
-	.word	52840
-	.word	728
-	.word	0
-	.word	0
-	.word	0
-	.word	20386
-	.word	33936
-	.word	697
-	.word	0
-	.word	0
-	.word	0
-	.word	20064
-	.word	51864
-	.word	664
-	.word	0
-	.word	0
-	.word	0
-	.word	2268
-	.word	57500
-	.word	634
-	.word	0
-	.word	0
-	.word	0
-	.word	11152
-	.word	51171
-	.word	604
-	.word	0
-	.word	0
-	.word	0
-	.word	23164
-	.word	63727
-	.word	572
-	.word	0
-	.word	0
-	.word	0
-	.word	20514
-	.word	40280
-	.word	542
-	.word	0
-	.word	0
-	.word	0
-	.word	21818
-	.word	57922
-	.word	511
-	.word	0
-	.word	0
-	.word	0
-	.word	32366
-	.word	46413
-	.word	480
-	.word	0
-	.word	0
-	.word	0
-	.word	53972
-	.word	43148
-	.word	449
-	.word	0
-	.word	0
-	.word	0
-	.word	30134
-	.word	65133
-	.word	418
-	.word	0
-	.word	0
-	.word	0
-	.word	15282
-	.word	61516
-	.word	387
-	.word	0
-	.word	0
-	.word	0
-	.word	49872
-	.word	49222
-	.word	355
-	.word	0
-	.word	0
-	.word	0
-	.word	9484
-	.word	63958
-	.word	325
-	.word	0
-	.word	0
-	.word	0
-	.word	47028
-	.word	35341
-	.word	294
-	.word	0
-	.word	0
-	.word	0
-	.word	6770
-	.word	58613
-	.word	263
-	.word	0
-	.word	0
-	.word	0
-	.word	33372
-	.word	43448
-	.word	232
-	.word	0
-	.word	0
-	.word	0
-	.word	27792
-	.word	51629
-	.word	198
-	.word	0
-	.word	0
-	.word	0
-	.word	19712
-	.word	53691
-	.word	170
-	.word	0
-	.word	0
-	.word	0
-	.word	42144
-	.word	60929
-	.word	135
-	.word	0
-	.word	0
-	.word	0
-	.word	35240
-	.word	48799
-	.word	107
-	.word	0
-	.word	0
-	.word	0
-	.word	910
-	.word	51212
-	.word	77
-	.word	0
-	.word	0
-	.word	0
-	.word	65062
-	.word	33668
-	.word	46
-	.word	0
-	.word	0
-	.word	0
-	.word	52624
-	.word	51799
-	.word	14
-	.word	0
-	.type	__4onpi_31l,@object
-	.size	__4onpi_31l,6444
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_sincos_huge.S b/libm/x86/libm_sincos_huge.S
deleted file mode 100644
index 4601b87..0000000
--- a/libm/x86/libm_sincos_huge.S
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin  __libm_sincos_huge
-	.text
-       .align    16,0x90
-	.hidden __libm_sincos_huge
-	.globl __libm_sincos_huge
-__libm_sincos_huge:
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-# parameter 3: 20 + %ebp
-..B1.1:
-        pushl     %ebp
-        movl      %esp, %ebp
-        andl      $-64, %esp
-        pushl     %esi
-        pushl     %edi
-        pushl     %ebx
-        subl      $52, %esp
-        movl      16(%ebp), %eax
-        movl      20(%ebp), %edx
-        movl      %eax, 32(%esp)
-        movl      %edx, 36(%esp)
-..B1.2:
-        fnstcw    30(%esp)
-..B1.3:
-        call      ..L2
-..L2:
-        popl      %edi
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
-        movsd     8(%ebp), %xmm1
-        movl      12(%ebp), %esi
-        movl      %esi, %eax
-        andl      $2147483647, %eax
-        andps     .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
-        shrl      $31, %esi
-        movl      %eax, 40(%esp)
-        cmpl      $1104150528, %eax
-        movsd     %xmm1, 8(%ebp)
-        jae       ..B1.11
-..B1.4:
-        movsd     _Pi4Inv@GOTOFF(%edi), %xmm0
-        mulsd     %xmm1, %xmm0
-        movzwl    30(%esp), %edx
-        movl      %edx, %eax
-        andl      $768, %eax
-        movsd     %xmm0, (%esp)
-        cmpl      $768, %eax
-        je        ..B1.42
-..B1.5:
-        orl       $-64768, %edx
-        movw      %dx, 28(%esp)
-..B1.6:
-        fldcw     28(%esp)
-..B1.7:
-        movsd     8(%ebp), %xmm1
-        movl      $1, %ebx
-..B1.8:
-        movl      %ebx, 12(%esp)
-        movl      4(%esp), %ebx
-        movl      %ebx, %eax
-        movl      %esi, 8(%esp)
-        movl      %ebx, %esi
-        shrl      $20, %esi
-        andl      $1048575, %eax
-        movl      %esi, %ecx
-        orl       $1048576, %eax
-        negl      %ecx
-        movl      %eax, %edx
-        addl      $19, %ecx
-        addl      $13, %esi
-        movl      %ecx, 24(%esp)
-        shrl      %cl, %edx
-        movl      %esi, %ecx
-        shll      %cl, %eax
-        movl      24(%esp), %ecx
-        movl      (%esp), %esi
-        shrl      %cl, %esi
-        orl       %esi, %eax
-        cmpl      $1094713344, %ebx
-        movsd     %xmm1, 16(%esp)
-        fldl      16(%esp)
-        cmovb     %edx, %eax
-        movl      8(%esp), %esi
-        lea       1(%eax), %edx
-        movl      %edx, %ebx
-        andl      $-2, %ebx
-        movl      %ebx, 16(%esp)
-        fildl     16(%esp)
-        movl      12(%esp), %ebx
-        cmpl      $1094713344, 40(%esp)
-        jae       ..B1.10
-..B1.9:
-        fldl      _Pi4x3@GOTOFF(%edi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      8+_Pi4x3@GOTOFF(%edi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      16+_Pi4x3@GOTOFF(%edi)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        jmp       ..B1.17
-..B1.10:
-        fldl      _Pi4x4@GOTOFF(%edi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      8+_Pi4x4@GOTOFF(%edi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      16+_Pi4x4@GOTOFF(%edi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      24+_Pi4x4@GOTOFF(%edi)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        jmp       ..B1.17
-..B1.11:
-        movzwl    30(%esp), %edx
-        movl      %edx, %eax
-        andl      $768, %eax
-        cmpl      $768, %eax
-        je        ..B1.43
-..B1.12:
-        orl       $-64768, %edx
-        movw      %dx, 28(%esp)
-..B1.13:
-        fldcw     28(%esp)
-..B1.14:
-        movsd     8(%ebp), %xmm1
-        movl      $1, %ebx
-..B1.15:
-        movsd     %xmm1, 16(%esp)
-        fldl      16(%esp)
-        addl      $-32, %esp
-        lea       32(%esp), %eax
-        fstpt     (%esp)
-        movl      $0, 12(%esp)
-        movl      %eax, 16(%esp)
-        call      __libm_reduce_pi04l
-..B1.46:
-        addl      $32, %esp
-..B1.16:
-        fldl      (%esp)
-        lea       1(%eax), %edx
-        fldl      8(%esp)
-        faddp     %st, %st(1)
-..B1.17:
-        movl      %edx, %ecx
-        addl      $3, %eax
-        shrl      $2, %ecx
-        andl      $1, %ecx
-        shrl      $2, %eax
-        xorl      %ecx, %esi
-        movl      36(%esp), %ecx
-        andl      $1, %eax
-        andl      $3, %ecx
-        cmpl      $3, %ecx
-        jne       ..B1.25
-..B1.18:
-        fldt      84+_SP@GOTOFF(%edi)
-        fld       %st(1)
-        fmul      %st(2), %st
-        testb     $2, %dl
-        fmul      %st, %st(1)
-        fldt      72+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      60+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      48+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      36+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      24+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      12+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      _SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fmul      %st, %st(1)
-        fldt      84+_CP@GOTOFF(%edi)
-        fmul      %st(1), %st
-        fldt      72+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      60+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      48+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      36+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      24+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      12+_CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      _CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(1)
-        fldl      _ones@GOTOFF(%edi,%esi,8)
-        fldl      _ones@GOTOFF(%edi,%eax,8)
-        je        ..B1.22
-..B1.19:
-        fmulp     %st, %st(4)
-        testl     %ebx, %ebx
-        fxch      %st(2)
-        fmul      %st(3), %st
-        movl      32(%esp), %eax
-        faddp     %st, %st(3)
-        fxch      %st(2)
-        fstpl     (%eax)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        fstpl     8(%eax)
-        je        ..B1.21
-..B1.20:
-        fldcw     30(%esp)
-..B1.21:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.22:
-        fxch      %st(1)
-        fmulp     %st, %st(4)
-        testl     %ebx, %ebx
-        fxch      %st(2)
-        fmul      %st(3), %st
-        movl      32(%esp), %eax
-        faddp     %st, %st(3)
-        fxch      %st(2)
-        fstpl     8(%eax)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        fstpl     (%eax)
-        je        ..B1.24
-..B1.23:
-        fldcw     30(%esp)
-..B1.24:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.25:
-        testb     $2, 36(%esp)
-        je        ..B1.33
-..B1.26:
-        fld       %st(0)
-        testb     $2, %dl
-        fmul      %st(1), %st
-        fld       %st(0)
-        fmul      %st(1), %st
-        je        ..B1.30
-..B1.27:
-        fstp      %st(2)
-        fldt      84+_CP@GOTOFF(%edi)
-        testl     %ebx, %ebx
-        fmul      %st(2), %st
-        fldt      72+_CP@GOTOFF(%edi)
-        fmul      %st(3), %st
-        fldt      60+_CP@GOTOFF(%edi)
-        movl      32(%esp), %eax
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      48+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      36+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      24+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      12+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(3)
-        fldt      _CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        fldl      _ones@GOTOFF(%edi,%esi,8)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        fstpl     8(%eax)
-        je        ..B1.29
-..B1.28:
-        fldcw     30(%esp)
-..B1.29:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.30:
-        fldt      84+_SP@GOTOFF(%edi)
-        testl     %ebx, %ebx
-        fmul      %st(1), %st
-        fldt      72+_SP@GOTOFF(%edi)
-        fmul      %st(2), %st
-        fldt      60+_SP@GOTOFF(%edi)
-        movl      32(%esp), %eax
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      48+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      36+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      24+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      12+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(2)
-        fldt      _SP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(2)
-        faddp     %st, %st(1)
-        fldl      _ones@GOTOFF(%edi,%esi,8)
-        fmulp     %st, %st(2)
-        fmul      %st(1), %st
-        faddp     %st, %st(1)
-        fstpl     8(%eax)
-        je        ..B1.32
-..B1.31:
-        fldcw     30(%esp)
-..B1.32:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.33:
-        testb     $1, 36(%esp)
-        je        ..B1.41
-..B1.34:
-        fld       %st(0)
-        testb     $2, %dl
-        fmul      %st(1), %st
-        fld       %st(0)
-        fmul      %st(1), %st
-        je        ..B1.38
-..B1.35:
-        fldt      84+_SP@GOTOFF(%edi)
-        testl     %ebx, %ebx
-        fmul      %st(1), %st
-        fldt      72+_SP@GOTOFF(%edi)
-        fmul      %st(2), %st
-        fldt      60+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      48+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      36+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      24+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      12+_SP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(2)
-        fldt      _SP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(2)
-        faddp     %st, %st(1)
-        fldl      _ones@GOTOFF(%edi,%eax,8)
-        fmulp     %st, %st(2)
-        fmul      %st(1), %st
-        movl      32(%esp), %eax
-        faddp     %st, %st(1)
-        fstpl     (%eax)
-        je        ..B1.37
-..B1.36:
-        fldcw     30(%esp)
-..B1.37:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.38:
-        fstp      %st(2)
-        fldt      84+_CP@GOTOFF(%edi)
-        testl     %ebx, %ebx
-        fmul      %st(2), %st
-        fldt      72+_CP@GOTOFF(%edi)
-        fmul      %st(3), %st
-        fldt      60+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      48+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      36+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      24+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(3), %st
-        fldt      12+_CP@GOTOFF(%edi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(3)
-        fldt      _CP@GOTOFF(%edi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        fldl      _ones@GOTOFF(%edi,%eax,8)
-        fmul      %st, %st(1)
-        movl      32(%esp), %eax
-        faddp     %st, %st(1)
-        fstpl     (%eax)
-        je        ..B1.40
-..B1.39:
-        fldcw     30(%esp)
-..B1.40:
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.41:
-        fstp      %st(0)
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.42:
-        xorl      %ebx, %ebx
-        jmp       ..B1.8
-..B1.43:
-        xorl      %ebx, %ebx
-        jmp       ..B1.15
-        .align    16,0x90
-	.type	__libm_sincos_huge,@function
-	.size	__libm_sincos_huge,.-__libm_sincos_huge
-	.data
-# -- End  __libm_sincos_huge
-	.section .rodata, "a"
-	.align 16
-	.align 16
-.L_2il0floatpacket.0:
-	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
-	.type	.L_2il0floatpacket.0,@object
-	.size	.L_2il0floatpacket.0,16
-	.align 16
-_Pi4Inv:
-	.long	1841940611
-	.long	1072979760
-	.type	_Pi4Inv,@object
-	.size	_Pi4Inv,8
-	.space 8, 0x00 	# pad
-	.align 16
-_Pi4x3:
-	.long	1413754880
-	.long	3219726843
-	.long	993632256
-	.long	1027030475
-	.long	3773204808
-	.long	3129236486
-	.type	_Pi4x3,@object
-	.size	_Pi4x3,24
-	.space 8, 0x00 	# pad
-	.align 16
-_Pi4x4:
-	.long	1413480448
-	.long	3219726843
-	.long	442499072
-	.long	3183522913
-	.long	771751936
-	.long	3146979722
-	.long	622873025
-	.long	3110831002
-	.type	_Pi4x4,@object
-	.size	_Pi4x4,32
-	.align 16
-_SP:
-	.word	43691
-	.word	43690
-	.word	43690
-	.word	43690
-	.word	49148
-	.word	0
-	.word	34951
-	.word	34952
-	.word	34952
-	.word	34952
-	.word	16376
-	.word	0
-	.word	50471
-	.word	3328
-	.word	208
-	.word	53261
-	.word	49138
-	.word	0
-	.word	17910
-	.word	46614
-	.word	7466
-	.word	47343
-	.word	16364
-	.word	0
-	.word	33371
-	.word	14743
-	.word	11071
-	.word	55090
-	.word	49125
-	.word	0
-	.word	48947
-	.word	35764
-	.word	12250
-	.word	45202
-	.word	16350
-	.word	0
-	.word	17574
-	.word	60698
-	.word	10735
-	.word	55102
-	.word	49110
-	.word	0
-	.word	34320
-	.word	12415
-	.word	25249
-	.word	51489
-	.word	16334
-	.word	0
-	.type	_SP,@object
-	.size	_SP,96
-	.align 16
-_CP:
-	.word	0
-	.word	0
-	.word	0
-	.word	32768
-	.word	49150
-	.word	0
-	.word	43685
-	.word	43690
-	.word	43690
-	.word	43690
-	.word	16378
-	.word	0
-	.word	39983
-	.word	2912
-	.word	24758
-	.word	46603
-	.word	49141
-	.word	0
-	.word	61476
-	.word	3244
-	.word	208
-	.word	53261
-	.word	16367
-	.word	0
-	.word	1022
-	.word	16229
-	.word	32187
-	.word	37874
-	.word	49129
-	.word	0
-	.word	55373
-	.word	44526
-	.word	50840
-	.word	36726
-	.word	16354
-	.word	0
-	.word	55994
-	.word	65145
-	.word	59958
-	.word	51657
-	.word	49114
-	.word	0
-	.word	15046
-	.word	2976
-	.word	1998
-	.word	54661
-	.word	16338
-	.word	0
-	.type	_CP,@object
-	.size	_CP,96
-	.align 16
-_ones:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	3220176896
-	.type	_ones,@object
-	.size	_ones,16
-	.data
-	.hidden __libm_reduce_pi04l
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_tancot_huge.S b/libm/x86/libm_tancot_huge.S
deleted file mode 100644
index cdaa820..0000000
--- a/libm/x86/libm_tancot_huge.S
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin  __libm_tancot_huge
-	.text
-       .align    16,0x90
-	.hidden __libm_tancot_huge
-	.globl __libm_tancot_huge
-__libm_tancot_huge:
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-# parameter 3: 20 + %ebp
-..B1.1:
-        pushl     %ebp
-        movl      %esp, %ebp
-        andl      $-64, %esp
-        pushl     %esi
-        pushl     %edi
-        pushl     %ebx
-        subl      $52, %esp
-        movl      16(%ebp), %eax
-        movl      20(%ebp), %ebx
-        movl      %eax, 40(%esp)
-..B1.2:
-        fnstcw    38(%esp)
-..B1.3:
-        movl      12(%ebp), %edx
-        movl      %edx, %eax
-        andl      $2147483647, %eax
-        shrl      $31, %edx
-        movl      %edx, 44(%esp)
-        cmpl      $1104150528, %eax
-        call      ..L2
-..L2:
-        popl      %esi
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%esi), %esi
-        jae       ..B1.11
-..B1.4:
-        movsd     8(%ebp), %xmm1
-        movzwl    38(%esp), %ecx
-        movl      %ecx, %edx
-        andl      $768, %edx
-        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm1
-        cmpl      $768, %edx
-        movsd     _Pi4Inv@GOTOFF(%esi), %xmm0
-        mulsd     %xmm1, %xmm0
-        movsd     %xmm1, 8(%ebp)
-        movsd     %xmm0, (%esp)
-        je        ..B1.39
-..B1.5:
-        orl       $-64768, %ecx
-        movw      %cx, 36(%esp)
-..B1.6:
-        fldcw     36(%esp)
-..B1.7:
-        movsd     8(%ebp), %xmm1
-        movl      $1, %edi
-..B1.8:
-        movl      %esi, 12(%esp)
-        movl      4(%esp), %esi
-        movl      %esi, %edx
-        movl      %edi, 24(%esp)
-        movl      %esi, %edi
-        shrl      $20, %edi
-        andl      $1048575, %edx
-        movl      %edi, %ecx
-        orl       $1048576, %edx
-        negl      %ecx
-        addl      $13, %edi
-        movl      %ebx, 8(%esp)
-        addl      $19, %ecx
-        movl      %edx, %ebx
-        movl      %ecx, 28(%esp)
-        shrl      %cl, %ebx
-        movl      %edi, %ecx
-        shll      %cl, %edx
-        movl      28(%esp), %ecx
-        movl      (%esp), %edi
-        shrl      %cl, %edi
-        orl       %edi, %edx
-        cmpl      $1094713344, %esi
-        movsd     %xmm1, 16(%esp)
-        fldl      16(%esp)
-        cmovb     %ebx, %edx
-        movl      24(%esp), %edi
-        movl      12(%esp), %esi
-        lea       1(%edx), %ebx
-        andl      $-2, %ebx
-        movl      %ebx, 16(%esp)
-        cmpl      $1094713344, %eax
-        fildl     16(%esp)
-        movl      8(%esp), %ebx
-        jae       ..B1.10
-..B1.9:
-        fldl      _Pi4x3@GOTOFF(%esi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      8+_Pi4x3@GOTOFF(%esi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      16+_Pi4x3@GOTOFF(%esi)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        jmp       ..B1.17
-..B1.10:
-        fldl      _Pi4x4@GOTOFF(%esi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      8+_Pi4x4@GOTOFF(%esi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      16+_Pi4x4@GOTOFF(%esi)
-        fmul      %st(1), %st
-        faddp     %st, %st(2)
-        fldl      24+_Pi4x4@GOTOFF(%esi)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        jmp       ..B1.17
-..B1.11:
-        movzwl    38(%esp), %edx
-        movl      %edx, %eax
-        andl      $768, %eax
-        cmpl      $768, %eax
-        je        ..B1.40
-..B1.12:
-        orl       $-64768, %edx
-        movw      %dx, 36(%esp)
-..B1.13:
-        fldcw     36(%esp)
-..B1.14:
-        movl      $1, %edi
-..B1.15:
-        movsd     8(%ebp), %xmm0
-        addl      $-32, %esp
-        andps     .L_2il0floatpacket.0@GOTOFF(%esi), %xmm0
-        lea       32(%esp), %eax
-        movsd     %xmm0, 16(%eax)
-        fldl      16(%eax)
-        fstpt     (%esp)
-        movl      $0, 12(%esp)
-        movl      %eax, 16(%esp)
-        call      __libm_reduce_pi04l
-..B1.43:
-        movl      %eax, %edx
-        addl      $32, %esp
-..B1.16:
-        fldl      (%esp)
-        fldl      8(%esp)
-        faddp     %st, %st(1)
-..B1.17:
-        movl      %ebx, %eax
-        andl      $3, %eax
-        cmpl      $3, %eax
-        jne       ..B1.24
-..B1.18:
-        fldl      _ones@GOTOFF(%esi)
-        incl      %edx
-        fdiv      %st(1), %st
-        testb     $2, %dl
-        fstpt     24(%esp)
-        fld       %st(0)
-        fmul      %st(1), %st
-        fld       %st(0)
-        fmul      %st(1), %st
-        fldt      36+_TP@GOTOFF(%esi)
-        fmul      %st(2), %st
-        fldt      24+_TP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      12+_TP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      36+_TQ@GOTOFF(%esi)
-        fmul      %st(3), %st
-        fldt      24+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(3), %st
-        fldt      12+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(3), %st
-        fldt      _TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fldt      _TP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fldt      132+_GP@GOTOFF(%esi)
-        fmul      %st(3), %st
-        fldt      120+_GP@GOTOFF(%esi)
-        fmul      %st(4), %st
-        fldt      108+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      96+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      84+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      72+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      60+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      48+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      36+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(4), %st
-        fldt      24+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(4)
-        fldt      12+_GP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(4), %st
-        fmul      %st(5), %st
-        fldt      _GP@GOTOFF(%esi)
-        faddp     %st, %st(4)
-        fxch      %st(3)
-        fmul      %st(5), %st
-        faddp     %st, %st(3)
-        je        ..B1.20
-..B1.19:
-        fldt      24(%esp)
-        fxch      %st(1)
-        fdivrp    %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(3)
-        movl      44(%esp), %eax
-        xorl      $1, %eax
-        fxch      %st(2)
-        fmul      %st(3), %st
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(2)
-        fmul      %st, %st(3)
-        fxch      %st(3)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fstpl     16(%esp)
-        fmul      %st(1), %st
-        fxch      %st(1)
-        fmulp     %st, %st(2)
-        movsd     16(%esp), %xmm0
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm1
-        jmp       ..B1.21
-..B1.20:
-        fdivrp    %st, %st(1)
-        fmulp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        movl      44(%esp), %eax
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(1)
-        fmul      %st, %st(3)
-        fxch      %st(3)
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        fmul      %st(1), %st
-        fldt      24(%esp)
-        fmulp     %st, %st(2)
-        movsd     16(%esp), %xmm0
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm1
-..B1.21:
-        testl     %edi, %edi
-        je        ..B1.23
-..B1.22:
-        fldcw     38(%esp)
-..B1.23:
-        movl      40(%esp), %eax
-        movsd     %xmm0, (%eax)
-        movsd     %xmm1, 8(%eax)
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.24:
-        testb     $2, %bl
-        je        ..B1.31
-..B1.25:
-        incl      %edx
-        fld       %st(0)
-        fmul      %st(1), %st
-        testb     $2, %dl
-        je        ..B1.27
-..B1.26:
-        fldl      _ones@GOTOFF(%esi)
-        fdiv      %st(2), %st
-        fld       %st(1)
-        fmul      %st(2), %st
-        fldt      132+_GP@GOTOFF(%esi)
-        fmul      %st(1), %st
-        fldt      120+_GP@GOTOFF(%esi)
-        fmul      %st(2), %st
-        fldt      108+_GP@GOTOFF(%esi)
-        movl      44(%esp), %eax
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        xorl      $1, %eax
-        fldt      96+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      84+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      72+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      60+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      48+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      36+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      24+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(2)
-        fldt      12+_GP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(3)
-        fldt      _GP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(3), %st
-        fxch      %st(2)
-        fmulp     %st, %st(3)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(2)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm0
-        jmp       ..B1.28
-..B1.27:
-        fldt      36+_TP@GOTOFF(%esi)
-        fmul      %st(1), %st
-        fldt      24+_TP@GOTOFF(%esi)
-        movl      44(%esp), %eax
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        fldt      36+_TQ@GOTOFF(%esi)
-        fmul      %st(2), %st
-        fldt      24+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      12+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      _TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fldt      12+_TP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      _TP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fdivp     %st, %st(1)
-        fmulp     %st, %st(1)
-        fmul      %st(1), %st
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(1)
-        fmulp     %st, %st(2)
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm0
-..B1.28:
-        testl     %edi, %edi
-        je        ..B1.30
-..B1.29:
-        fldcw     38(%esp)
-..B1.30:
-        movl      40(%esp), %eax
-        movsd     %xmm0, (%eax)
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.31:
-        testb     $1, %bl
-        je        ..B1.38
-..B1.32:
-        incl      %edx
-        fld       %st(0)
-        fmul      %st(1), %st
-        testb     $2, %dl
-        je        ..B1.34
-..B1.33:
-        fldt      36+_TP@GOTOFF(%esi)
-        fmul      %st(1), %st
-        fldt      24+_TP@GOTOFF(%esi)
-        movl      44(%esp), %eax
-        faddp     %st, %st(1)
-        fmul      %st(1), %st
-        xorl      $1, %eax
-        fldt      36+_TQ@GOTOFF(%esi)
-        fmul      %st(2), %st
-        fldt      24+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      12+_TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(2), %st
-        fldt      _TQ@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fldt      12+_TP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      _TP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fdivp     %st, %st(1)
-        fmulp     %st, %st(1)
-        fmul      %st(1), %st
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(1)
-        fmulp     %st, %st(2)
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm0
-        jmp       ..B1.35
-..B1.34:
-        fldl      _ones@GOTOFF(%esi)
-        fdiv      %st(2), %st
-        fld       %st(1)
-        fmul      %st(2), %st
-        fldt      132+_GP@GOTOFF(%esi)
-        fmul      %st(1), %st
-        fldt      120+_GP@GOTOFF(%esi)
-        fmul      %st(2), %st
-        fldt      108+_GP@GOTOFF(%esi)
-        movl      44(%esp), %eax
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      96+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      84+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      72+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      60+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      48+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      36+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmul      %st(2), %st
-        fldt      24+_GP@GOTOFF(%esi)
-        faddp     %st, %st(2)
-        fxch      %st(1)
-        fmulp     %st, %st(2)
-        fldt      12+_GP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmulp     %st, %st(3)
-        fldt      _GP@GOTOFF(%esi)
-        faddp     %st, %st(1)
-        fmul      %st(3), %st
-        fxch      %st(2)
-        fmulp     %st, %st(3)
-        fxch      %st(1)
-        faddp     %st, %st(2)
-        fldl      _ones@GOTOFF(%esi,%eax,8)
-        fmul      %st, %st(2)
-        fmulp     %st, %st(1)
-        faddp     %st, %st(1)
-        fstpl     16(%esp)
-        movsd     16(%esp), %xmm0
-..B1.35:
-        testl     %edi, %edi
-        je        ..B1.37
-..B1.36:
-        fldcw     38(%esp)
-..B1.37:
-        movl      40(%esp), %eax
-        movsd     %xmm0, 8(%eax)
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.38:
-        fstp      %st(0)
-        addl      $52, %esp
-        popl      %ebx
-        popl      %edi
-        popl      %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B1.39:
-        xorl      %edi, %edi
-        jmp       ..B1.8
-..B1.40:
-        xorl      %edi, %edi
-        jmp       ..B1.15
-        .align    16,0x90
-	.type	__libm_tancot_huge,@function
-	.size	__libm_tancot_huge,.-__libm_tancot_huge
-	.data
-# -- End  __libm_tancot_huge
-	.section .rodata, "a"
-	.align 16
-	.align 16
-.L_2il0floatpacket.0:
-	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
-	.type	.L_2il0floatpacket.0,@object
-	.size	.L_2il0floatpacket.0,16
-	.align 16
-_Pi4Inv:
-	.long	1841940611
-	.long	1072979760
-	.type	_Pi4Inv,@object
-	.size	_Pi4Inv,8
-	.space 8, 0x00 	# pad
-	.align 16
-_Pi4x3:
-	.long	1413754880
-	.long	3219726843
-	.long	993632256
-	.long	1027030475
-	.long	3773204808
-	.long	3129236486
-	.type	_Pi4x3,@object
-	.size	_Pi4x3,24
-	.space 8, 0x00 	# pad
-	.align 16
-_Pi4x4:
-	.long	1413480448
-	.long	3219726843
-	.long	442499072
-	.long	3183522913
-	.long	771751936
-	.long	3146979722
-	.long	622873025
-	.long	3110831002
-	.type	_Pi4x4,@object
-	.size	_Pi4x4,32
-	.align 16
-_ones:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	3220176896
-	.type	_ones,@object
-	.size	_ones,16
-	.align 16
-_TP:
-	.word	19670
-	.word	44908
-	.word	50960
-	.word	50786
-	.word	49149
-	.word	0
-	.word	19206
-	.word	45228
-	.word	54194
-	.word	52268
-	.word	16377
-	.word	0
-	.word	227
-	.word	51280
-	.word	43560
-	.word	38195
-	.word	49139
-	.word	0
-	.word	12272
-	.word	18029
-	.word	6715
-	.word	45670
-	.word	16357
-	.word	0
-	.type	_TP,@object
-	.size	_TP,48
-	.align 16
-_TQ:
-	.word	14748
-	.word	33681
-	.word	5452
-	.word	38090
-	.word	49151
-	.word	0
-	.word	46755
-	.word	50026
-	.word	17634
-	.word	35372
-	.word	16382
-	.word	0
-	.word	46863
-	.word	53352
-	.word	42702
-	.word	59869
-	.word	49145
-	.word	0
-	.word	33295
-	.word	20942
-	.word	32118
-	.word	39935
-	.word	16371
-	.word	0
-	.type	_TQ,@object
-	.size	_TQ,48
-	.align 16
-_GP:
-	.word	43691
-	.word	43690
-	.word	43690
-	.word	43690
-	.word	49149
-	.word	0
-	.word	46639
-	.word	2912
-	.word	24758
-	.word	46603
-	.word	49145
-	.word	0
-	.word	57255
-	.word	2218
-	.word	21984
-	.word	35507
-	.word	49142
-	.word	0
-	.word	34208
-	.word	43033
-	.word	48281
-	.word	56811
-	.word	49138
-	.word	0
-	.word	28773
-	.word	27191
-	.word	31071
-	.word	45908
-	.word	49135
-	.word	0
-	.word	43257
-	.word	33777
-	.word	11976
-	.word	37184
-	.word	49132
-	.word	0
-	.word	62410
-	.word	35990
-	.word	36363
-	.word	60269
-	.word	49128
-	.word	0
-	.word	13659
-	.word	55568
-	.word	26569
-	.word	48851
-	.word	49125
-	.word	0
-	.word	10347
-	.word	46238
-	.word	47188
-	.word	39576
-	.word	49122
-	.word	0
-	.word	2161
-	.word	6703
-	.word	25719
-	.word	64708
-	.word	49118
-	.word	0
-	.word	42329
-	.word	7593
-	.word	44754
-	.word	47734
-	.word	49115
-	.word	0
-	.word	163
-	.word	32746
-	.word	39875
-	.word	61957
-	.word	49112
-	.word	0
-	.type	_GP,@object
-	.size	_GP,144
-	.data
-	.hidden __libm_reduce_pi04l
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_atan.S b/libm/x86/s_atan.S
deleted file mode 100644
index 71ca4db..0000000
--- a/libm/x86/s_atan.S
+++ /dev/null
@@ -1,934 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// This implementation uses the main path for |x| in [2^{-5},2^65).
-// For |x| in [2^{-64},2^{-5}), a secondary path is used.
-// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
-// We use the following definition of B and X` so that the formula
-// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
-//
-// X = (-1)^s * 2^k * 1. x1 x2 ... x52
-//
-// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
-// Define One = 0 if k >= 5; and One = 1 otherwise
-// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
-// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
-//
-// Tau is 0 if k <= -6;
-// Tau is atan( B )  if -5 <= k <= 4
-// Tau is pi/2 if k >= 5
-//
-// Special cases:
-//  atan(NaN) = quiet NaN
-//  atan(+/-INF) = +/-Pi/2
-//  atan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  atan
-ENTRY(atan)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 48(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        movsd     2640(%ebx), %xmm3
-        movsd     2624(%ebx), %xmm5
-        movsd     2656(%ebx), %xmm4
-        movsd     %xmm0, 8(%esp)
-        pextrw    $3, %xmm0, %edx
-        andpd     %xmm0, %xmm3
-        pshufd    $68, %xmm0, %xmm1
-        orpd      %xmm4, %xmm3
-        movl      %edx, %eax
-        andl      $32767, %edx
-        subl      $16288, %edx
-        cmpl      $159, %edx
-        ja        .L_2TAG_PACKET_0.0.2
-        mulsd     %xmm3, %xmm1
-        subsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm1
-        divsd     %xmm1, %xmm0
-        addl      $1, %edx
-        movsd     2672(%ebx), %xmm2
-        movsd     2688(%ebx), %xmm4
-        andl      $32768, %eax
-        xorpd     %xmm7, %xmm7
-        pinsrw    $3, %eax, %xmm7
-        addl      %edx, %edx
-        movsd     (%ebx,%edx,8), %xmm6
-        movsd     8(%ebx,%edx,8), %xmm5
-        xorpd     %xmm7, %xmm5
-        xorpd     %xmm7, %xmm6
-        movsd     2680(%ebx), %xmm7
-        pshufd    $68, %xmm0, %xmm1
-        mulsd     %xmm0, %xmm0
-        pshufd    $68, %xmm1, %xmm3
-        addsd     %xmm6, %xmm1
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm4
-        subsd     %xmm1, %xmm6
-        mulsd     %xmm0, %xmm4
-        addsd     %xmm7, %xmm2
-        mulsd     %xmm3, %xmm0
-        addsd     %xmm3, %xmm6
-        mulsd     %xmm2, %xmm0
-        addsd     2696(%ebx), %xmm4
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm6, %xmm0
-        addsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        addl      $944, %edx
-        cmpl      $1103, %edx
-        ja        .L_2TAG_PACKET_2.0.2
-        movsd     2672(%ebx), %xmm4
-        movsd     2688(%ebx), %xmm7
-        movsd     8(%esp), %xmm0
-        mulsd     %xmm1, %xmm1
-        movsd     2680(%ebx), %xmm2
-        movsd     2696(%ebx), %xmm5
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm1, %xmm7
-        movapd    %xmm1, %xmm6
-        mulsd     %xmm0, %xmm1
-        addsd     %xmm4, %xmm2
-        mulsd     %xmm6, %xmm7
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm7, %xmm2
-        addsd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        addl      $15344, %edx
-        cmpl      $16368, %edx
-        ja        .L_2TAG_PACKET_3.0.2
-        movsd     8(%esp), %xmm0
-        movsd     8(%esp), %xmm1
-        cmpl      $16, %edx
-        jae       .L_2TAG_PACKET_4.0.2
-        mulsd     %xmm0, %xmm1
-.L_2TAG_PACKET_4.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
-        cmpl      $17392, %edx
-        jae       .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm1, %xmm1
-        movl      $49136, %ecx
-        pinsrw    $3, %ecx, %xmm1
-        divsd     %xmm0, %xmm1
-        movsd     2672(%ebx), %xmm2
-        movsd     2688(%ebx), %xmm4
-        andl      $32768, %eax
-        xorpd     %xmm7, %xmm7
-        pinsrw    $3, %eax, %xmm7
-        addl      %edx, %edx
-        movsd     2592(%ebx), %xmm6
-        movsd     2600(%ebx), %xmm5
-        xorpd     %xmm7, %xmm5
-        xorpd     %xmm7, %xmm6
-        movsd     2680(%ebx), %xmm7
-        pshufd    $68, %xmm1, %xmm0
-        mulsd     %xmm1, %xmm1
-        pshufd    $68, %xmm0, %xmm3
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm1, %xmm4
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm7, %xmm2
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm3, %xmm6
-        mulsd     %xmm2, %xmm1
-        addsd     2696(%ebx), %xmm4
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm4, %xmm1
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
-        movsd     8(%esp), %xmm4
-        movsd     2608(%ebx), %xmm0
-        movsd     2592(%ebx), %xmm2
-        movsd     2600(%ebx), %xmm3
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        andl      $2147483647, %edx
-        cmpl      $2146435072, %edx
-        jae       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_7.0.2:
-        andnpd    %xmm4, %xmm0
-        orpd      %xmm0, %xmm2
-        orpd      %xmm3, %xmm0
-        addsd     %xmm2, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_6.0.2:
-        subl      $2146435072, %edx
-        orl       %edx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_7.0.2
-        movapd    %xmm4, %xmm0
-        addsd     %xmm0, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-.L_2TAG_PACKET_1.0.2:
-        movl      48(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(atan)
-# -- End  atan
-
-# Start file scope ASM
-ALIAS_SYMBOL(atanl, atan);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3819695742
-	.long	1067482761
-	.long	2398680355
-	.long	3155462074
-	.long	2998791009
-	.long	1067548225
-	.long	3868465248
-	.long	3157182472
-	.long	3339424991
-	.long	1067613680
-	.long	3296670360
-	.long	1010752543
-	.long	2710002256
-	.long	1067679126
-	.long	3403896007
-	.long	1010910768
-	.long	3275701428
-	.long	1067744562
-	.long	119959933
-	.long	1011482843
-	.long	2908636881
-	.long	1067809988
-	.long	2464489612
-	.long	1011545526
-	.long	3777889398
-	.long	1067875403
-	.long	3262682165
-	.long	1009703919
-	.long	3759667419
-	.long	1067940807
-	.long	1838130851
-	.long	3157373556
-	.long	732369940
-	.long	1068006200
-	.long	1203428313
-	.long	1010055371
-	.long	1166616461
-	.long	1068071580
-	.long	2901274051
-	.long	3158549977
-	.long	2945472892
-	.long	1068136947
-	.long	3726120658
-	.long	1009762715
-	.long	3954480976
-	.long	1068202301
-	.long	1289173457
-	.long	1009429861
-	.long	2081752829
-	.long	1068267642
-	.long	1836909874
-	.long	1006212095
-	.long	3807999788
-	.long	1068332968
-	.long	2172459940
-	.long	3156162078
-	.long	2731789884
-	.long	1068398280
-	.long	3450718392
-	.long	3159216547
-	.long	1044477961
-	.long	1068463577
-	.long	2230553229
-	.long	1011424339
-	.long	1486930287
-	.long	1068530218
-	.long	2861547474
-	.long	1012041376
-	.long	2293016881
-	.long	1068595466
-	.long	136843272
-	.long	1012684797
-	.long	201518157
-	.long	1068660680
-	.long	63231984
-	.long	1012427198
-	.long	4054234584
-	.long	1068725856
-	.long	3927006960
-	.long	1011878955
-	.long	1246477213
-	.long	1068790995
-	.long	1494265652
-	.long	3155219350
-	.long	678186699
-	.long	1068856093
-	.long	1264361424
-	.long	3159256693
-	.long	2690594995
-	.long	1068921148
-	.long	3906996379
-	.long	1009288267
-	.long	3362611517
-	.long	1068986159
-	.long	1650970041
-	.long	3158331771
-	.long	3102162111
-	.long	1069051124
-	.long	365917035
-	.long	3160264153
-	.long	2352611067
-	.long	1069116041
-	.long	4008970190
-	.long	3159478182
-	.long	1594134794
-	.long	1069180908
-	.long	466690178
-	.long	1012526501
-	.long	1345079306
-	.long	1069245723
-	.long	2268273568
-	.long	3160164092
-	.long	2163300970
-	.long	1069310484
-	.long	2750834800
-	.long	3158113482
-	.long	352522716
-	.long	1069375190
-	.long	1750411372
-	.long	1011790845
-	.long	848541647
-	.long	1069439838
-	.long	2164207573
-	.long	1011698350
-	.long	40647312
-	.long	1069504427
-	.long	2949165434
-	.long	3159107267
-	.long	2216766270
-	.long	1069574357
-	.long	2197920765
-	.long	3161055954
-	.long	1090914384
-	.long	1069638757
-	.long	2330454674
-	.long	1013365998
-	.long	387601244
-	.long	1069703022
-	.long	3185681168
-	.long	1013434071
-	.long	3991640484
-	.long	1069767144
-	.long	1313211590
-	.long	3161087959
-	.long	3322489502
-	.long	1069831118
-	.long	3013977995
-	.long	1013053011
-	.long	3121698570
-	.long	1069894936
-	.long	4069015667
-	.long	1013023362
-	.long	4289964660
-	.long	1069958591
-	.long	1736191156
-	.long	3158266731
-	.long	3903312386
-	.long	1070022077
-	.long	1833592413
-	.long	3159731471
-	.long	3818449864
-	.long	1070085387
-	.long	851036429
-	.long	3159730451
-	.long	2097480306
-	.long	1070148515
-	.long	3506390884
-	.long	3160462302
-	.long	1611694502
-	.long	1070211454
-	.long	2785735540
-	.long	3160465144
-	.long	1464694796
-	.long	1070274198
-	.long	4229277299
-	.long	3159907000
-	.long	1299612775
-	.long	1070336741
-	.long	4116653788
-	.long	3160427739
-	.long	1310544789
-	.long	1070399077
-	.long	1064430331
-	.long	1013218202
-	.long	2253168030
-	.long	1070461200
-	.long	1405044609
-	.long	3157623179
-	.long	1159567373
-	.long	1070523105
-	.long	2353445521
-	.long	3159992176
-	.long	1359373750
-	.long	1070605818
-	.long	1748171336
-	.long	3161879263
-	.long	908341706
-	.long	1070667034
-	.long	3372710815
-	.long	3161775245
-	.long	1743027350
-	.long	1070727765
-	.long	687089934
-	.long	3160507171
-	.long	2055355646
-	.long	1070787992
-	.long	2392855242
-	.long	1013682469
-	.long	690426164
-	.long	1070847697
-	.long	1103926666
-	.long	1014052810
-	.long	1483247847
-	.long	1070906862
-	.long	2082645847
-	.long	3161345479
-	.long	392040270
-	.long	1070965472
-	.long	2407720023
-	.long	1014053754
-	.long	2673846014
-	.long	1071023511
-	.long	1293605532
-	.long	3158464385
-	.long	1384215810
-	.long	1071080967
-	.long	2446095872
-	.long	3159216407
-	.long	3101660631
-	.long	1071137826
-	.long	698040758
-	.long	1014855328
-	.long	2094057058
-	.long	1071194078
-	.long	2282048339
-	.long	1014040385
-	.long	1712750594
-	.long	1071249712
-	.long	1204372378
-	.long	3162276464
-	.long	1411515787
-	.long	1071304719
-	.long	949080808
-	.long	1015006403
-	.long	931538085
-	.long	1071359091
-	.long	3027127039
-	.long	1014307233
-	.long	179139065
-	.long	1071412821
-	.long	4285547492
-	.long	3161934731
-	.long	3387721259
-	.long	1071465902
-	.long	373225773
-	.long	1013486625
-	.long	2132236852
-	.long	1071544299
-	.long	3250533429
-	.long	1014031677
-	.long	1942070284
-	.long	1071645596
-	.long	1237964179
-	.long	3163239113
-	.long	1532707802
-	.long	1071695380
-	.long	330645583
-	.long	1012495610
-	.long	2294184979
-	.long	1071743834
-	.long	3959472897
-	.long	1015833116
-	.long	3805060714
-	.long	1071790961
-	.long	2671256142
-	.long	1013727772
-	.long	2215037898
-	.long	1071836770
-	.long	2683359117
-	.long	1015831902
-	.long	483661594
-	.long	1071881273
-	.long	836288326
-	.long	3162648643
-	.long	1534679894
-	.long	1071924486
-	.long	373258696
-	.long	3162470096
-	.long	1538714628
-	.long	1071966430
-	.long	3199433068
-	.long	1015325501
-	.long	527642555
-	.long	1072007128
-	.long	3636832592
-	.long	3161843145
-	.long	291339150
-	.long	1072046605
-	.long	890169537
-	.long	3160586117
-	.long	2450210201
-	.long	1072084888
-	.long	1636353294
-	.long	3163193400
-	.long	2411367951
-	.long	1072122007
-	.long	374899873
-	.long	1011331750
-	.long	681549971
-	.long	1072157992
-	.long	506411689
-	.long	1015373954
-	.long	1466745541
-	.long	1072192873
-	.long	2143860931
-	.long	1013364334
-	.long	2845622366
-	.long	1072226682
-	.long	2869178209
-	.long	3162423682
-	.long	2838871438
-	.long	1072275456
-	.long	3742223599
-	.long	1014338577
-	.long	4200275274
-	.long	1072337034
-	.long	1566539915
-	.long	3161839550
-	.long	3034733530
-	.long	1072394897
-	.long	652621408
-	.long	3162261964
-	.long	3207412993
-	.long	1072449290
-	.long	3206124665
-	.long	1014408733
-	.long	624461478
-	.long	1072500450
-	.long	932437485
-	.long	1015204343
-	.long	767665908
-	.long	1072548600
-	.long	1037911952
-	.long	3163527627
-	.long	1110773639
-	.long	1072593952
-	.long	2371517912
-	.long	3160465741
-	.long	1940828530
-	.long	1072636704
-	.long	2731408428
-	.long	3162895795
-	.long	1911329388
-	.long	1072677041
-	.long	1773089615
-	.long	3159569267
-	.long	1764715788
-	.long	1072704191
-	.long	691346949
-	.long	3164069946
-	.long	3332979233
-	.long	1072722195
-	.long	3550733983
-	.long	1014770628
-	.long	1321870254
-	.long	1072739231
-	.long	1415315820
-	.long	1016224052
-	.long	3657429030
-	.long	1072755365
-	.long	3910539033
-	.long	1015966402
-	.long	4197624557
-	.long	1072770661
-	.long	2333399254
-	.long	3164546480
-	.long	1512059493
-	.long	1072785177
-	.long	2701510318
-	.long	1016178092
-	.long	453379037
-	.long	1072798965
-	.long	4046344253
-	.long	3162814364
-	.long	1942345162
-	.long	1072818388
-	.long	621134147
-	.long	1016335195
-	.long	4210176273
-	.long	1072842164
-	.long	2701013387
-	.long	3164326619
-	.long	4185644010
-	.long	1072863795
-	.long	4163699341
-	.long	1016203112
-	.long	679688788
-	.long	1072883543
-	.long	4147276762
-	.long	1014066750
-	.long	29432865
-	.long	1072901630
-	.long	970415797
-	.long	1016902063
-	.long	4070721092
-	.long	1072918247
-	.long	2539004411
-	.long	3163736096
-	.long	2252468843
-	.long	1072933561
-	.long	3424082887
-	.long	3163407177
-	.long	2929724825
-	.long	1072947712
-	.long	3661482235
-	.long	3163846989
-	.long	1377513368
-	.long	1072960824
-	.long	3987926680
-	.long	1013647908
-	.long	1031632908
-	.long	1072973003
-	.long	3672217151
-	.long	1016614619
-	.long	2516508130
-	.long	1072984342
-	.long	545855020
-	.long	3162728930
-	.long	3792452178
-	.long	1072994923
-	.long	3420119467
-	.long	1016471430
-	.long	3147791459
-	.long	1073004818
-	.long	1342204979
-	.long	1013937254
-	.long	999189752
-	.long	1073014090
-	.long	1006335472
-	.long	3162850919
-	.long	711011011
-	.long	1073022794
-	.long	4633488
-	.long	3162966895
-	.long	15640363
-	.long	1073030980
-	.long	1686389560
-	.long	3164376226
-	.long	1218463589
-	.long	1073042382
-	.long	1526837110
-	.long	3163533985
-	.long	2538470555
-	.long	1073056144
-	.long	2273304406
-	.long	3163784996
-	.long	1229720947
-	.long	1073068489
-	.long	2971628206
-	.long	3162356540
-	.long	3115427016
-	.long	1073079621
-	.long	4215132957
-	.long	3164282762
-	.long	4030612557
-	.long	1073089709
-	.long	1913251691
-	.long	3163671292
-	.long	2728521257
-	.long	1073098892
-	.long	2861089500
-	.long	1015454459
-	.long	1118696283
-	.long	1073107285
-	.long	1628948053
-	.long	1016179658
-	.long	2682711255
-	.long	1073114984
-	.long	2906306266
-	.long	1014142643
-	.long	2073898081
-	.long	1073122072
-	.long	1322740454
-	.long	3164497217
-	.long	1403700297
-	.long	1073128618
-	.long	416137895
-	.long	3162781466
-	.long	2502685617
-	.long	1073134681
-	.long	3242008732
-	.long	1014593495
-	.long	1531926851
-	.long	1073140313
-	.long	1362708094
-	.long	1016517604
-	.long	3572814411
-	.long	1073145557
-	.long	3709790527
-	.long	1012646874
-	.long	1695536111
-	.long	1073150453
-	.long	3980346340
-	.long	1016705136
-	.long	2363057203
-	.long	1073155033
-	.long	2551194792
-	.long	1012569695
-	.long	2873365682
-	.long	1073159327
-	.long	3181154748
-	.long	1017041450
-	.long	1053384691
-	.long	1073165288
-	.long	3074536879
-	.long	1016965660
-	.long	3270542712
-	.long	1073172451
-	.long	2535319415
-	.long	3163051778
-	.long	1353631484
-	.long	1073178850
-	.long	1173833755
-	.long	1015534537
-	.long	3511218460
-	.long	1073184599
-	.long	1243608109
-	.long	3161592122
-	.long	4121259284
-	.long	1073189793
-	.long	398584912
-	.long	3163829923
-	.long	1193862106
-	.long	1073194509
-	.long	1873745539
-	.long	3163802819
-	.long	3861949790
-	.long	1073198808
-	.long	3841261147
-	.long	1015587248
-	.long	1486904578
-	.long	1073202745
-	.long	1634726776
-	.long	3163847886
-	.long	2879153715
-	.long	1073206362
-	.long	200456242
-	.long	3164138657
-	.long	385353253
-	.long	1073209698
-	.long	1186355517
-	.long	1014887155
-	.long	1125865839
-	.long	1073212783
-	.long	203561262
-	.long	3161244927
-	.long	1221361475
-	.long	1073215645
-	.long	3382476563
-	.long	1014936138
-	.long	2077323573
-	.long	1073218307
-	.long	1005121005
-	.long	3164430752
-	.long	215611373
-	.long	1073220790
-	.long	353198764
-	.long	3164485137
-	.long	2347419265
-	.long	1073223110
-	.long	1103143360
-	.long	1016542137
-	.long	1379112765
-	.long	1073225284
-	.long	381583533
-	.long	3162870833
-	.long	3891198463
-	.long	1073228298
-	.long	1771275754
-	.long	1014654681
-	.long	3395914051
-	.long	1073231917
-	.long	2350900914
-	.long	3164013978
-	.long	2799919478
-	.long	1073235146
-	.long	2893950164
-	.long	3163260901
-	.long	1138673476
-	.long	1073238045
-	.long	2622204785
-	.long	3164174388
-	.long	3408855940
-	.long	1073240661
-	.long	2800881650
-	.long	1016008624
-	.long	2044858738
-	.long	1073243035
-	.long	604544785
-	.long	1017022901
-	.long	2578795176
-	.long	1073245198
-	.long	2557332925
-	.long	1016135165
-	.long	4196285314
-	.long	1073247177
-	.long	2032365307
-	.long	1016194735
-	.long	224877747
-	.long	1073248996
-	.long	497926916
-	.long	1016947111
-	.long	3271386490
-	.long	1073250671
-	.long	2689994846
-	.long	1016631513
-	.long	813635989
-	.long	1073252221
-	.long	747035277
-	.long	3164530136
-	.long	369829519
-	.long	1073253658
-	.long	2182033858
-	.long	3163190340
-	.long	1187679052
-	.long	1073254994
-	.long	673954443
-	.long	1016149821
-	.long	4232586098
-	.long	1073256239
-	.long	497775200
-	.long	3162179015
-	.long	426690558
-	.long	1073257404
-	.long	3063343247
-	.long	1016865578
-	.long	1624065902
-	.long	1073258494
-	.long	1354224996
-	.long	3163503778
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	4294901760
-	.long	0
-	.long	0
-	.long	0
-	.long	32768
-	.long	0
-	.long	0
-	.long	2006262985
-	.long	1069310863
-	.long	2358449471
-	.long	3217342131
-	.long	3845454352
-	.long	1069952297
-	.long	2829679149
-	.long	1073771565
-	.type	static_const_table,@object
-	.size	static_const_table,2704
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_cbrt.S b/libm/x86/s_cbrt.S
deleted file mode 100644
index 53d3cc2..0000000
--- a/libm/x86/s_cbrt.S
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
-//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
-//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
-//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
-//   (T stores the high 53 bits, D stores the low order bits)
-//   Result=2^k*T+(2^k*T*r)*P+2^k*D
-//   where P=p1+p2*r+..+p8*r^7
-//
-// Special cases:
-//  cbrt(NaN) = quiet NaN, and raise invalid exception
-//  cbrt(INF) = that INF
-//  cbrt(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  cbrt
-ENTRY(cbrt)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %esi, 52(%esp)
-        call      static_func
-        movl      %eax, %esi
-        movsd     128(%esp), %xmm0
-        movapd    %xmm0, %xmm7
-        movsd     %xmm0, 8(%esp)
-        movl      $524032, %edx
-        movsd     64(%esi), %xmm5
-        movsd     80(%esi), %xmm3
-        psrlq     $44, %xmm7
-        pextrw    $0, %xmm7, %ecx
-        movd      %xmm7, %eax
-        movsd     96(%esi), %xmm1
-        movsd     112(%esi), %xmm2
-        movl      %ebx, 16(%esp)
-        andl      $248, %ecx
-        movsd     128(%ecx,%esi), %xmm4
-        movl      %eax, %ebx
-        andl      %eax, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_0.0.2
-        cmpl      $524032, %edx
-        je        .L_2TAG_PACKET_1.0.2
-        shrl      $8, %edx
-        shrl      $8, %ebx
-        andpd     %xmm0, %xmm2
-        andpd     %xmm5, %xmm0
-        orpd      %xmm2, %xmm3
-        orpd      %xmm0, %xmm1
-        movapd    (%esi), %xmm5
-        movl      $5462, %eax
-        movapd    16(%esi), %xmm6
-        mull      %edx
-        movl      %ebx, %edx
-        andl      $2047, %ebx
-        shrl      $14, %eax
-        andl      $2048, %edx
-        subl      %eax, %ebx
-        subl      %eax, %ebx
-        subl      %eax, %ebx
-        shll      $8, %ebx
-        addl      $682, %eax
-        orl       %edx, %eax
-        movd      %eax, %xmm7
-        addl      %ebx, %ecx
-        psllq     $52, %xmm7
-.L_2TAG_PACKET_2.0.2:
-        movapd    32(%esi), %xmm2
-        movapd    48(%esi), %xmm0
-        subsd     %xmm3, %xmm1
-        movq      %xmm7, %xmm3
-        mulsd     384(%ecx,%esi), %xmm7
-        mulsd     %xmm4, %xmm1
-        mulsd     1152(%ecx,%esi), %xmm3
-        movapd    %xmm1, %xmm4
-        unpcklpd  %xmm1, %xmm1
-        mulpd     %xmm1, %xmm5
-        mulpd     %xmm1, %xmm6
-        mulpd     %xmm1, %xmm1
-        addpd     %xmm5, %xmm2
-        addpd     %xmm6, %xmm0
-        mulpd     %xmm1, %xmm2
-        mulpd     %xmm1, %xmm1
-        mulsd     %xmm7, %xmm4
-        addpd     %xmm2, %xmm0
-        movl      16(%esp), %ebx
-        mulsd     %xmm0, %xmm1
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm3, %xmm0
-        addsd     %xmm7, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_0.0.2:
-        mulsd     1984(%esi), %xmm0
-        movq      %xmm0, %xmm7
-        movl      $524032, %edx
-        psrlq     $44, %xmm7
-        pextrw    $0, %xmm7, %ecx
-        movd      %xmm7, %eax
-        andl      $248, %ecx
-        movsd     128(%ecx,%esi), %xmm4
-        movl      %eax, %ebx
-        andl      %eax, %edx
-        shrl      $8, %edx
-        shrl      $8, %ebx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_4.0.2
-        andpd     %xmm0, %xmm2
-        andpd     %xmm5, %xmm0
-        orpd      %xmm2, %xmm3
-        orpd      %xmm0, %xmm1
-        movapd    (%esi), %xmm5
-        movl      $5462, %eax
-        movapd    16(%esi), %xmm6
-        mull      %edx
-        movl      %ebx, %edx
-        andl      $2047, %ebx
-        shrl      $14, %eax
-        andl      $2048, %edx
-        subl      %eax, %ebx
-        subl      %eax, %ebx
-        subl      %eax, %ebx
-        shll      $8, %ebx
-        addl      $661, %eax
-        orl       %edx, %eax
-        movd      %eax, %xmm7
-        addl      %ebx, %ecx
-        psllq     $52, %xmm7
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
-        cmpl      $0, %ebx
-        jne       .L_2TAG_PACKET_5.0.2
-        movl      16(%esp), %ebx
-        fldl      1952(%esi)
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_5.0.2:
-        movl      16(%esp), %ebx
-        fldl      1968(%esi)
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_1.0.2:
-        movl      16(%esp), %ebx
-        movl      132(%esp), %eax
-        movl      128(%esp), %edx
-        movl      %eax, %ecx
-        andl      $2147483647, %ecx
-        cmpl      $2146435072, %ecx
-        ja        .L_2TAG_PACKET_6.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_6.0.2
-        cmpl      $2146435072, %eax
-        jne       .L_2TAG_PACKET_7.0.2
-        fldl      1920(%esi)
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_7.0.2:
-        fldl      1936(%esi)
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_6.0.2:
-        movsd     8(%esp), %xmm0
-        addsd     %xmm0, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-.L_2TAG_PACKET_3.0.2:
-        movl      52(%esp), %esi
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(cbrt)
-# -- End  cbrt
-
-# Start file scope ASM
-ALIAS_SYMBOL(cbrtl, cbrt);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	1553778919
-	.long	3213899486
-	.long	3534952507
-	.long	3215266280
-	.long	1646371399
-	.long	3214412045
-	.long	477218588
-	.long	3216798151
-	.long	3582521621
-	.long	1066628362
-	.long	1007461464
-	.long	1068473053
-	.long	889629714
-	.long	1067378449
-	.long	1431655765
-	.long	1070945621
-	.long	4294967295
-	.long	1048575
-	.long	0
-	.long	0
-	.long	0
-	.long	3220193280
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	1032192
-	.long	0
-	.long	0
-	.long	528611360
-	.long	3220144632
-	.long	2884679527
-	.long	3220082993
-	.long	1991868891
-	.long	3220024928
-	.long	2298714891
-	.long	3219970134
-	.long	58835168
-	.long	3219918343
-	.long	3035110223
-	.long	3219869313
-	.long	1617585086
-	.long	3219822831
-	.long	2500867033
-	.long	3219778702
-	.long	4241943008
-	.long	3219736752
-	.long	258732970
-	.long	3219696825
-	.long	404232216
-	.long	3219658776
-	.long	2172167368
-	.long	3219622476
-	.long	1544257904
-	.long	3219587808
-	.long	377579543
-	.long	3219554664
-	.long	1616385542
-	.long	3219522945
-	.long	813783277
-	.long	3219492562
-	.long	3940743189
-	.long	3219463431
-	.long	2689777499
-	.long	3219435478
-	.long	1700977147
-	.long	3219408632
-	.long	3169102082
-	.long	3219382828
-	.long	327235604
-	.long	3219358008
-	.long	1244336319
-	.long	3219334115
-	.long	1300311200
-	.long	3219311099
-	.long	3095471925
-	.long	3219288912
-	.long	2166487928
-	.long	3219267511
-	.long	2913108253
-	.long	3219246854
-	.long	293672978
-	.long	3219226904
-	.long	288737297
-	.long	3219207624
-	.long	1810275472
-	.long	3219188981
-	.long	174592167
-	.long	3219170945
-	.long	3539053052
-	.long	3219153485
-	.long	2164392968
-	.long	3219136576
-	.long	572345495
-	.long	1072698681
-	.long	1998204467
-	.long	1072709382
-	.long	3861501553
-	.long	1072719872
-	.long	2268192434
-	.long	1072730162
-	.long	2981979308
-	.long	1072740260
-	.long	270859143
-	.long	1072750176
-	.long	2958651392
-	.long	1072759916
-	.long	313113243
-	.long	1072769490
-	.long	919449400
-	.long	1072778903
-	.long	2809328903
-	.long	1072788162
-	.long	2222981587
-	.long	1072797274
-	.long	2352530781
-	.long	1072806244
-	.long	594152517
-	.long	1072815078
-	.long	1555767199
-	.long	1072823780
-	.long	4282421314
-	.long	1072832355
-	.long	2355578597
-	.long	1072840809
-	.long	1162590619
-	.long	1072849145
-	.long	797864051
-	.long	1072857367
-	.long	431273680
-	.long	1072865479
-	.long	2669831148
-	.long	1072873484
-	.long	733477752
-	.long	1072881387
-	.long	4280220604
-	.long	1072889189
-	.long	801961634
-	.long	1072896896
-	.long	2915370760
-	.long	1072904508
-	.long	1159613482
-	.long	1072912030
-	.long	2689944798
-	.long	1072919463
-	.long	1248687822
-	.long	1072926811
-	.long	2967951030
-	.long	1072934075
-	.long	630170432
-	.long	1072941259
-	.long	3760898254
-	.long	1072948363
-	.long	0
-	.long	1072955392
-	.long	2370273294
-	.long	1072962345
-	.long	1261754802
-	.long	1072972640
-	.long	546334065
-	.long	1072986123
-	.long	1054893830
-	.long	1072999340
-	.long	1571187597
-	.long	1073012304
-	.long	1107975175
-	.long	1073025027
-	.long	3606909377
-	.long	1073037519
-	.long	1113616747
-	.long	1073049792
-	.long	4154744632
-	.long	1073061853
-	.long	3358931423
-	.long	1073073713
-	.long	4060702372
-	.long	1073085379
-	.long	747576176
-	.long	1073096860
-	.long	3023138255
-	.long	1073108161
-	.long	1419988548
-	.long	1073119291
-	.long	1914185305
-	.long	1073130255
-	.long	294389948
-	.long	1073141060
-	.long	3761802570
-	.long	1073151710
-	.long	978281566
-	.long	1073162213
-	.long	823148820
-	.long	1073172572
-	.long	2420954441
-	.long	1073182792
-	.long	3815449908
-	.long	1073192878
-	.long	2046058587
-	.long	1073202835
-	.long	1807524753
-	.long	1073212666
-	.long	2628681401
-	.long	1073222375
-	.long	3225667357
-	.long	1073231966
-	.long	1555307421
-	.long	1073241443
-	.long	3454043099
-	.long	1073250808
-	.long	1208137896
-	.long	1073260066
-	.long	3659916772
-	.long	1073269218
-	.long	1886261264
-	.long	1073278269
-	.long	3593647839
-	.long	1073287220
-	.long	3086012205
-	.long	1073296075
-	.long	2769796922
-	.long	1073304836
-	.long	888716057
-	.long	1073317807
-	.long	2201465623
-	.long	1073334794
-	.long	164369365
-	.long	1073351447
-	.long	3462666733
-	.long	1073367780
-	.long	2773905457
-	.long	1073383810
-	.long	1342879088
-	.long	1073399550
-	.long	2543933975
-	.long	1073415012
-	.long	1684477781
-	.long	1073430209
-	.long	3532178543
-	.long	1073445151
-	.long	1147747300
-	.long	1073459850
-	.long	1928031793
-	.long	1073474314
-	.long	2079717015
-	.long	1073488553
-	.long	4016765315
-	.long	1073502575
-	.long	3670431139
-	.long	1073516389
-	.long	3549227225
-	.long	1073530002
-	.long	11637607
-	.long	1073543422
-	.long	588220169
-	.long	1073556654
-	.long	2635407503
-	.long	1073569705
-	.long	2042029317
-	.long	1073582582
-	.long	1925128962
-	.long	1073595290
-	.long	4136375664
-	.long	1073607834
-	.long	759964600
-	.long	1073620221
-	.long	4257606771
-	.long	1073632453
-	.long	297278907
-	.long	1073644538
-	.long	3655053093
-	.long	1073656477
-	.long	2442253172
-	.long	1073668277
-	.long	1111876799
-	.long	1073679941
-	.long	3330973139
-	.long	1073691472
-	.long	3438879452
-	.long	1073702875
-	.long	3671565478
-	.long	1073714153
-	.long	1317849547
-	.long	1073725310
-	.long	1642364115
-	.long	1073736348
-	.long	4050900474
-	.long	1014427190
-	.long	1157977860
-	.long	1016444461
-	.long	1374568199
-	.long	1017271387
-	.long	2809163288
-	.long	1016882676
-	.long	3742377377
-	.long	1013168191
-	.long	3101606597
-	.long	1017541672
-	.long	65224358
-	.long	1017217597
-	.long	2691591250
-	.long	1017266643
-	.long	4020758549
-	.long	1017689313
-	.long	1316310992
-	.long	1018030788
-	.long	1031537856
-	.long	1014090882
-	.long	3261395239
-	.long	1016413641
-	.long	886424999
-	.long	1016313335
-	.long	3114776834
-	.long	1014195875
-	.long	1681120620
-	.long	1017825416
-	.long	1329600273
-	.long	1016625740
-	.long	465474623
-	.long	1017097119
-	.long	4251633980
-	.long	1017169077
-	.long	1986990133
-	.long	1017710645
-	.long	752958613
-	.long	1017159641
-	.long	2216216792
-	.long	1018020163
-	.long	4282860129
-	.long	1015924861
-	.long	1557627859
-	.long	1016039538
-	.long	3889219754
-	.long	1018086237
-	.long	3684996408
-	.long	1017353275
-	.long	723532103
-	.long	1017717141
-	.long	2951149676
-	.long	1012528470
-	.long	831890937
-	.long	1017830553
-	.long	1031212645
-	.long	1017387331
-	.long	2741737450
-	.long	1017604974
-	.long	2863311531
-	.long	1003776682
-	.long	4276736099
-	.long	1013153088
-	.long	4111778382
-	.long	1015673686
-	.long	1728065769
-	.long	1016413986
-	.long	2708718031
-	.long	1018078833
-	.long	1069335005
-	.long	1015291224
-	.long	700037144
-	.long	1016482032
-	.long	2904566452
-	.long	1017226861
-	.long	4074156649
-	.long	1017622651
-	.long	25019565
-	.long	1015245366
-	.long	3601952608
-	.long	1015771755
-	.long	3267129373
-	.long	1017904664
-	.long	503203103
-	.long	1014921629
-	.long	2122011730
-	.long	1018027866
-	.long	3927295461
-	.long	1014189456
-	.long	2790625147
-	.long	1016024251
-	.long	1330460186
-	.long	1016940346
-	.long	4033568463
-	.long	1015538390
-	.long	3695818227
-	.long	1017509621
-	.long	257573361
-	.long	1017208868
-	.long	3227697852
-	.long	1017337964
-	.long	234118548
-	.long	1017169577
-	.long	4009025803
-	.long	1017278524
-	.long	1948343394
-	.long	1017749310
-	.long	678398162
-	.long	1018144239
-	.long	3083864863
-	.long	1016669086
-	.long	2415453452
-	.long	1017890370
-	.long	175467344
-	.long	1017330033
-	.long	3197359580
-	.long	1010339928
-	.long	2071276951
-	.long	1015941358
-	.long	268372543
-	.long	1016737773
-	.long	938132959
-	.long	1017389108
-	.long	1816750559
-	.long	1017337448
-	.long	4119203749
-	.long	1017152174
-	.long	2578653878
-	.long	1013108497
-	.long	2470331096
-	.long	1014678606
-	.long	123855735
-	.long	1016553320
-	.long	1265650889
-	.long	1014782687
-	.long	3414398172
-	.long	1017182638
-	.long	1040773369
-	.long	1016158401
-	.long	3483628886
-	.long	1016886550
-	.long	4140499405
-	.long	1016191425
-	.long	3893477850
-	.long	1016964495
-	.long	3935319771
-	.long	1009634717
-	.long	2978982660
-	.long	1015027112
-	.long	2452709923
-	.long	1017990229
-	.long	3190365712
-	.long	1015835149
-	.long	4237588139
-	.long	1015832925
-	.long	2610678389
-	.long	1017962711
-	.long	2127316774
-	.long	1017405770
-	.long	824267502
-	.long	1017959463
-	.long	2165924042
-	.long	1017912225
-	.long	2774007076
-	.long	1013257418
-	.long	4123916326
-	.long	1017582284
-	.long	1976417958
-	.long	1016959909
-	.long	4092806412
-	.long	1017711279
-	.long	119251817
-	.long	1015363631
-	.long	3475418768
-	.long	1017675415
-	.long	1972580503
-	.long	1015470684
-	.long	815541017
-	.long	1017517969
-	.long	2429917451
-	.long	1017397776
-	.long	4062888482
-	.long	1016749897
-	.long	68284153
-	.long	1017925678
-	.long	2207779246
-	.long	1016320298
-	.long	1183466520
-	.long	1017408657
-	.long	143326427
-	.long	1017060403
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	0
-	.long	0
-	.long	4293918720
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	1138753536
-	.long	0
-	.long	0
-	.type	static_const_table,@object
-	.size	static_const_table,2000
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_cos.S b/libm/x86/s_cos.S
deleted file mode 100644
index e47c63e..0000000
--- a/libm/x86/s_cos.S
+++ /dev/null
@@ -1,892 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//     1. RANGE REDUCTION
-//
-//     We perform an initial range reduction from X to r with
-//
-//          X =~= N * pi/32 + r
-//
-//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
-//     where |N| <= 932560. Beyond this, the range reduction is
-//     insufficiently accurate. For extremely small inputs, 
-//     denormalization can occur internally, impacting performance.
-//     This means that the main path is actually only taken for
-//     2^-252 <= |X| < 90112.
-//
-//     To avoid branches, we perform the range reduction to full
-//     accuracy each time.
-//
-//          X - N * (P_1 + P_2 + P_3)
-//
-//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
-//     is exact) and P_3 is a 53-bit number. Together, these
-//     approximate pi well enough for all cases in the restricted
-//     range.
-//
-//     The main reduction sequence is:
-//
-//             y = 32/pi * x
-//             N = integer(y)
-//     (computed by adding and subtracting off SHIFTER)
-//
-//             m_1 = N * P_1
-//             m_2 = N * P_2
-//             r_1 = x - m_1
-//             r = r_1 - m_2
-//     (this r can be used for most of the calculation)
-//
-//             c_1 = r_1 - r
-//             m_3 = N * P_3
-//             c_2 = c_1 - m_2
-//             c = c_2 - m_3
-//
-//     2. MAIN ALGORITHM
-//
-//     The algorithm uses a table lookup based on B = M * pi / 32
-//     where M = N mod 64. The stored values are:
-//       sigma             closest power of 2 to cos(B)
-//       C_hl              53-bit cos(B) - sigma
-//       S_hi + S_lo       2 * 53-bit sin(B)
-//
-//     The computation is organized as follows:
-//
-//          sin(B + r + c) = [sin(B) + sigma * r] +
-//                           r * (cos(B) - sigma) +
-//                           sin(B) * [cos(r + c) - 1] +
-//                           cos(B) * [sin(r + c) - r]
-//
-//     which is approximately:
-//
-//          [S_hi + sigma * r] +
-//          C_hl * r +
-//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
-//          (C_hl + sigma) * [(sin(r) - r) + c]
-//
-//     and this is what is actually computed. We separate this sum
-//     into four parts:
-//
-//          hi + med + pols + corr
-//
-//     where
-//
-//          hi       = S_hi + sigma r
-//          med      = C_hl * r
-//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-//     3. POLYNOMIAL
-//
-//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-//     (sin(r) - r) can be rearranged freely, since it is quite
-//     small, so we exploit parallelism to the fullest.
-//
-//          psc4       =   SC_4 * r_1
-//          msc4       =   psc4 * r
-//          r2         =   r * r
-//          msc2       =   SC_2 * r2
-//          r4         =   r2 * r2
-//          psc3       =   SC_3 + msc4
-//          psc1       =   SC_1 + msc2
-//          msc3       =   r4 * psc3
-//          sincospols =   psc1 + msc3
-//          pols       =   sincospols *
-//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-//     4. CORRECTION TERM
-//
-//     This is where the "c" component of the range reduction is
-//     taken into account; recall that just "r" is used for most of
-//     the calculation.
-//
-//          -c   = m_3 - c_2
-//          -d   = S_hi * r - (C_hl + sigma)
-//          corr = -c * -d + S_lo
-//
-//     5. COMPENSATED SUMMATIONS
-//
-//     The two successive compensated summations add up the high
-//     and medium parts, leaving just the low parts to add up at
-//     the end.
-//
-//          rs        =  sigma * r
-//          res_int   =  S_hi + rs
-//          k_0       =  S_hi - res_int
-//          k_2       =  k_0 + rs
-//          med       =  C_hl * r
-//          res_hi    =  res_int + med
-//          k_1       =  res_int - res_hi
-//          k_3       =  k_1 + med
-//
-//     6. FINAL SUMMATION
-//
-//     We now add up all the small parts:
-//
-//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-//     Now the overall result is just:
-//
-//          res_hi + res_lo
-//
-//     7. SMALL ARGUMENTS
-//
-//     Inputs with |X| < 2^-252 are treated specially as
-//     1 - |x|.
-//
-// Special cases:
-//  cos(NaN) = quiet NaN, and raise invalid exception
-//  cos(INF) = NaN and raise invalid exception
-//  cos(0) = 1
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  cos
-ENTRY(cos)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 56(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        subl      $12336, %eax
-        cmpl      $4293, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        movsd     2160(%ebx), %xmm1
-        mulsd     %xmm0, %xmm1
-        movapd    2240(%ebx), %xmm5
-        movsd     2224(%ebx), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        movsd     2128(%ebx), %xmm3
-        movapd    2112(%ebx), %xmm2
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %edx
-        cvtsi2sdl %edx, %xmm1
-        mulsd     %xmm1, %xmm3
-        unpcklpd  %xmm1, %xmm1
-        addl      $1865232, %edx
-        movapd    %xmm0, %xmm4
-        andl      $63, %edx
-        movapd    2096(%ebx), %xmm5
-        lea       (%ebx), %eax
-        shll      $5, %edx
-        addl      %edx, %eax
-        mulpd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm0
-        mulsd     2144(%ebx), %xmm1
-        subsd     %xmm3, %xmm4
-        movsd     8(%eax), %xmm7
-        unpcklpd  %xmm0, %xmm0
-        movapd    %xmm4, %xmm3
-        subsd     %xmm2, %xmm4
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm2, %xmm0
-        movapd    2064(%ebx), %xmm6
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm2, %xmm3
-        movapd    (%eax), %xmm2
-        subsd     %xmm3, %xmm1
-        movsd     24(%eax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     2080(%ebx), %xmm5
-        mulsd     (%eax), %xmm4
-        addpd     2048(%ebx), %xmm6
-        mulpd     %xmm0, %xmm5
-        movapd    %xmm3, %xmm0
-        addsd     8(%eax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movapd    %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movsd     8(%eax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%eax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm0, %xmm5
-        addsd     %xmm7, %xmm3
-        addsd     %xmm5, %xmm1
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        unpckhpd  %xmm6, %xmm6
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm4
-        movsd     %xmm4, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        jg        .L_2TAG_PACKET_2.0.2
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        pinsrw    $3, %eax, %xmm0
-        movsd     2192(%ebx), %xmm1
-        subsd     %xmm0, %xmm1
-        movsd     %xmm1, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movl      132(%esp), %eax
-        andl      $2146435072, %eax
-        cmpl      $2146435072, %eax
-        je        .L_2TAG_PACKET_3.0.2
-        subl      $32, %esp
-        movsd     %xmm0, (%esp)
-        lea       40(%esp), %eax
-        movl      %eax, 8(%esp)
-        movl      $1, %eax
-        movl      %eax, 12(%esp)
-        call      __libm_sincos_huge
-        addl      $32, %esp
-        fldl      8(%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
-        fldl      128(%esp)
-        fmull     2208(%ebx)
-.L_2TAG_PACKET_1.0.2:
-        movl      56(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(cos)
-# -- End  cos
-
-# Start file scope ASM
-ALIAS_SYMBOL(cosl, cos);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	1072693248
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	1072693248
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	1071644672
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	1071644672
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	1070596096
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	1070596096
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	1069547520
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	3217031168
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	3218079744
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	3218079744
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	3219128320
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	3219128320
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	3220176896
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	3220176896
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	3219128320
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	3219128320
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	3218079744
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	3218079744
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	3217031168
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	1069547520
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	1070596096
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	1070596096
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	1071644672
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	1071644672
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	1072693248
-	.long	1431655765
-	.long	3217380693
-	.long	0
-	.long	3219128320
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1067799893
-	.long	436314138
-	.long	3207201184
-	.long	381774871
-	.long	3210133868
-	.long	2773927732
-	.long	1053236707
-	.long	436314138
-	.long	1056571808
-	.long	442499072
-	.long	1032893537
-	.long	442499072
-	.long	1032893537
-	.long	1413480448
-	.long	1069097467
-	.long	0
-	.long	0
-	.long	771977331
-	.long	996350346
-	.long	0
-	.long	0
-	.long	1841940611
-	.long	1076125488
-	.long	0
-	.long	0
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.type	static_const_table,@object
-	.size	static_const_table,2256
-	.data
-	.hidden __libm_sincos_huge
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_expm1.S b/libm/x86/s_expm1.S
deleted file mode 100644
index 1816f59..0000000
--- a/libm/x86/s_expm1.S
+++ /dev/null
@@ -1,702 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// Description:
-//  Let K = 64 (table size).
-//
-//  Four sub-domains:
-//    1. |x| < 1/(2*K)
-//      expm1(x) ~ P(x)
-//    2. 1/(2*K) <= |x| <= 56*log(2)
-//       x       x/log(2)    n
-//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
-//    3. 56*log(2) < x < MAX_LOG
-//       x       x   x/log(2)    n
-//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
-//    4. x < -56*log(2)
-//       x            x
-//      e - 1 = -1 + e ~ -1
-//    where
-//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
-//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
-//                  j/K
-//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-//       P(y) is a minimax polynomial approximation of exp(x)-1
-//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-//    In case 3, to avoid problems with arithmetic overflow and underflow,
-//              n                        n1  n2
-//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-//    and BIAS is a value of exponent bias.
-//
-// Special cases:
-//  expm1(NaN) is NaN
-//  expm1(+INF) is +INF
-//  expm1(-INF) is -1
-//  expm1(x) is x for subnormals
-//  for finite argument, only expm1(0)=0 is exact.
-//  For IEEE double
-//    if x > 709.782712893383973096 then expm1(x) overflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  expm1
-ENTRY(expm1)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 64(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        unpcklpd  %xmm0, %xmm0
-        movapd    64(%ebx), %xmm1
-        movapd    48(%ebx), %xmm6
-        movapd    80(%ebx), %xmm2
-        movapd    96(%ebx), %xmm3
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        movl      $16527, %edx
-        subl      %eax, %edx
-        subl      $16304, %eax
-        orl       %eax, %edx
-        cmpl      $-2147483648, %edx
-        jae       .L_2TAG_PACKET_0.0.2
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm6, %xmm1
-        movapd    %xmm1, %xmm7
-        subpd     %xmm6, %xmm1
-        mulpd     %xmm1, %xmm2
-        movapd    112(%ebx), %xmm4
-        mulpd     %xmm1, %xmm3
-        movapd    128(%ebx), %xmm5
-        subpd     %xmm2, %xmm0
-        movd      %xmm7, %eax
-        movl      %eax, %ecx
-        andl      $63, %ecx
-        shll      $4, %ecx
-        sarl      $6, %eax
-        movl      %eax, %edx
-        subpd     %xmm3, %xmm0
-        movapd    160(%ebx,%ecx), %xmm2
-        movsd     144(%ebx), %xmm3
-        mulpd     %xmm0, %xmm4
-        movapd    %xmm0, %xmm1
-        mulpd     %xmm0, %xmm0
-        mulsd     %xmm0, %xmm3
-        addpd     %xmm4, %xmm5
-        mulsd     %xmm0, %xmm0
-        movapd    %xmm2, %xmm4
-        unpckhpd  %xmm2, %xmm2
-        movdqa    16(%ebx), %xmm6
-        pand      %xmm6, %xmm7
-        movdqa    32(%ebx), %xmm6
-        paddq     %xmm6, %xmm7
-        psllq     $46, %xmm7
-        mulsd     %xmm0, %xmm3
-        mulpd     %xmm5, %xmm0
-        addl      $894, %edx
-        cmpl      $1916, %edx
-        ja        .L_2TAG_PACKET_1.0.2
-        addsd     %xmm3, %xmm0
-        xorpd     %xmm3, %xmm3
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm3
-        orpd      %xmm7, %xmm2
-        mulsd     %xmm4, %xmm7
-        movapd    %xmm3, %xmm6
-        addsd     %xmm1, %xmm3
-        pextrw    $3, %xmm2, %edx
-        pshufd    $238, %xmm0, %xmm5
-        psrlq     $38, %xmm3
-        psllq     $38, %xmm3
-        movapd    %xmm2, %xmm4
-        subsd     %xmm3, %xmm6
-        addsd     %xmm5, %xmm0
-        addsd     %xmm6, %xmm1
-        addsd     %xmm7, %xmm4
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm2, %xmm3
-        xorpd     %xmm5, %xmm5
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm5
-        addsd     %xmm1, %xmm0
-        movl      $17184, %ecx
-        subl      %edx, %ecx
-        subl      $16256, %edx
-        orl       %edx, %ecx
-        jl        .L_2TAG_PACKET_2.0.2
-        mulsd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm3
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-.L_2TAG_PACKET_3.0.2:
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_2.0.2:
-        cmpl      $0, %edx
-        jl        .L_2TAG_PACKET_5.0.2
-        mulsd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm7
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_5.0.2:
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        subsd     %xmm5, %xmm0
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_1.0.2:
-        movl      132(%esp), %ecx
-        addsd     %xmm0, %xmm1
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        cmpl      $0, %ecx
-        jl        .L_2TAG_PACKET_6.0.2
-        fstcw     24(%esp)
-        movzwl    24(%esp), %edx
-        orl       $768, %edx
-        movw      %dx, 28(%esp)
-        fldcw     28(%esp)
-        movl      %eax, %edx
-        sarl      $1, %eax
-        subl      %eax, %edx
-        movdqa    (%ebx), %xmm6
-        pandn     %xmm2, %xmm6
-        addl      $1023, %eax
-        movd      %eax, %xmm3
-        psllq     $52, %xmm3
-        orpd      %xmm3, %xmm6
-        mulsd     %xmm3, %xmm4
-        movsd     %xmm0, 8(%esp)
-        fldl      8(%esp)
-        movsd     %xmm6, 16(%esp)
-        fldl      16(%esp)
-        movsd     %xmm4, 16(%esp)
-        fldl      16(%esp)
-        addl      $1023, %edx
-        movd      %edx, %xmm4
-        psllq     $52, %xmm4
-        faddp     %st, %st(1)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        movsd     %xmm4, 8(%esp)
-        fldl      8(%esp)
-        fmulp     %st, %st(1)
-        fstpl     8(%esp)
-        movsd     8(%esp), %xmm0
-        fldcw     24(%esp)
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_7.0.2
-        jmp       .L_2TAG_PACKET_4.0.2
-        cmpl      $-2147483648, %ecx
-        jb        .L_2TAG_PACKET_7.0.2
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
-        movl      $41, %edx
-.L_2TAG_PACKET_8.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     128(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_10.0.2:
-        cmpl      $2146435072, %eax
-        jae       .L_2TAG_PACKET_11.0.2
-        movsd     1272(%ebx), %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $41, %edx
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_11.0.2:
-        movl      132(%esp), %eax
-        movl      128(%esp), %edx
-        movl      %eax, %ecx
-        andl      $2147483647, %eax
-        cmpl      $2146435072, %eax
-        ja        .L_2TAG_PACKET_12.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_12.0.2
-        cmpl      $0, %ecx
-        jl        .L_2TAG_PACKET_13.0.2
-        movsd     1256(%ebx), %xmm0
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_13.0.2:
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_12.0.2:
-        movsd     128(%esp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_14.0.2:
-        addl      $16304, %eax
-        cmpl      $15504, %eax
-        jb        .L_2TAG_PACKET_15.0.2
-        movapd    1184(%ebx), %xmm2
-        pshufd    $68, %xmm0, %xmm1
-        movapd    1200(%ebx), %xmm3
-        movapd    1216(%ebx), %xmm4
-        movsd     1232(%ebx), %xmm5
-        mulsd     %xmm1, %xmm1
-        xorpd     %xmm6, %xmm6
-        movl      $16352, %eax
-        pinsrw    $3, %eax, %xmm6
-        mulpd     %xmm0, %xmm2
-        xorpd     %xmm7, %xmm7
-        movl      $16368, %edx
-        pinsrw    $3, %edx, %xmm7
-        addpd     %xmm3, %xmm2
-        mulsd     %xmm1, %xmm5
-        pshufd    $228, %xmm1, %xmm3
-        mulpd     %xmm1, %xmm1
-        mulsd     %xmm0, %xmm6
-        mulpd     %xmm0, %xmm2
-        addpd     %xmm4, %xmm2
-        movapd    %xmm7, %xmm4
-        addsd     %xmm6, %xmm7
-        mulpd     %xmm3, %xmm1
-        psrlq     $27, %xmm7
-        psllq     $27, %xmm7
-        movsd     1288(%ebx), %xmm3
-        subsd     %xmm7, %xmm4
-        mulpd     %xmm1, %xmm2
-        addsd     %xmm4, %xmm6
-        pshufd    $238, %xmm2, %xmm1
-        addsd     %xmm2, %xmm6
-        andpd     %xmm0, %xmm3
-        movapd    %xmm0, %xmm4
-        addsd     %xmm6, %xmm1
-        subsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm1
-        mulsd     %xmm7, %xmm3
-        mulsd     %xmm7, %xmm0
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm4, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_15.0.2:
-        cmpl      $16, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        movapd    %xmm0, %xmm2
-        movd      %xmm0, %eax
-        psrlq     $31, %xmm2
-        movd      %xmm2, %ecx
-        orl       %ecx, %eax
-        je        .L_2TAG_PACKET_3.0.2
-        movl      $16, %edx
-        xorpd     %xmm1, %xmm1
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm1
-        movl      $42, %edx
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_0.0.2:
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_14.0.2
-        movl      132(%esp), %eax
-        cmpl      $1083179008, %eax
-        jge       .L_2TAG_PACKET_10.0.2
-        cmpl      $-1048576, %eax
-        jae       .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_4.0.2:
-        movsd     %xmm0, 48(%esp)
-        fldl      48(%esp)
-.L_2TAG_PACKET_9.0.2:
-        movl      64(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(expm1)
-# -- End  expm1
-
-# Start file scope ASM
-ALIAS_SYMBOL(expm1l, expm1);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	4293918720
-	.long	0
-	.long	4293918720
-	.long	4294967232
-	.long	0
-	.long	4294967232
-	.long	0
-	.long	65472
-	.long	0
-	.long	65472
-	.long	0
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	1127743488
-	.long	1697350398
-	.long	1079448903
-	.long	1697350398
-	.long	1079448903
-	.long	4277796864
-	.long	1065758274
-	.long	4277796864
-	.long	1065758274
-	.long	3164486458
-	.long	1025308570
-	.long	3164486458
-	.long	1025308570
-	.long	1963358694
-	.long	1065423121
-	.long	1431655765
-	.long	1069897045
-	.long	1431655765
-	.long	1067799893
-	.long	0
-	.long	1071644672
-	.long	381774871
-	.long	1062650220
-	.long	381774871
-	.long	1062650220
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1000070955
-	.long	1042145304
-	.long	1040187392
-	.long	11418
-	.long	988267849
-	.long	1039500660
-	.long	3539992576
-	.long	22960
-	.long	36755401
-	.long	1042114290
-	.long	402653184
-	.long	34629
-	.long	3634769483
-	.long	1042178627
-	.long	1820327936
-	.long	46424
-	.long	2155991225
-	.long	1041560680
-	.long	847249408
-	.long	58348
-	.long	2766913307
-	.long	1039293264
-	.long	3489660928
-	.long	70401
-	.long	3651174602
-	.long	1040488175
-	.long	2927624192
-	.long	82586
-	.long	3073892131
-	.long	1042240606
-	.long	1006632960
-	.long	94904
-	.long	1328391742
-	.long	1042019037
-	.long	3942645760
-	.long	107355
-	.long	2650893825
-	.long	1041903210
-	.long	822083584
-	.long	119943
-	.long	2397289153
-	.long	1041802037
-	.long	2281701376
-	.long	132667
-	.long	430997175
-	.long	1042110606
-	.long	1845493760
-	.long	145530
-	.long	1230936525
-	.long	1041801015
-	.long	1702887424
-	.long	158533
-	.long	740675935
-	.long	1040178913
-	.long	4110417920
-	.long	171677
-	.long	3489810261
-	.long	1041825986
-	.long	2793406464
-	.long	184965
-	.long	2532600530
-	.long	1040767882
-	.long	167772160
-	.long	198398
-	.long	3542557060
-	.long	1041827263
-	.long	2986344448
-	.long	211976
-	.long	1401563777
-	.long	1041061093
-	.long	922746880
-	.long	225703
-	.long	3129406026
-	.long	1041852413
-	.long	880803840
-	.long	239579
-	.long	900993572
-	.long	1039283234
-	.long	1275068416
-	.long	253606
-	.long	2115029358
-	.long	1042140042
-	.long	562036736
-	.long	267786
-	.long	1086643152
-	.long	1041785419
-	.long	1610612736
-	.long	282120
-	.long	82864366
-	.long	1041256244
-	.long	3045064704
-	.long	296610
-	.long	2392968152
-	.long	1040913683
-	.long	3573547008
-	.long	311258
-	.long	2905856183
-	.long	1040002214
-	.long	1988100096
-	.long	326066
-	.long	3742008261
-	.long	1040011137
-	.long	1451229184
-	.long	341035
-	.long	863393794
-	.long	1040880621
-	.long	914358272
-	.long	356167
-	.long	1446136837
-	.long	1041372426
-	.long	3707764736
-	.long	371463
-	.long	927855201
-	.long	1040617636
-	.long	360710144
-	.long	386927
-	.long	1492679939
-	.long	1041050306
-	.long	2952790016
-	.long	402558
-	.long	608827001
-	.long	1041582217
-	.long	2181038080
-	.long	418360
-	.long	606260204
-	.long	1042271987
-	.long	1711276032
-	.long	434334
-	.long	3163044019
-	.long	1041843851
-	.long	1006632960
-	.long	450482
-	.long	4148747325
-	.long	1041962972
-	.long	3900702720
-	.long	466805
-	.long	802924201
-	.long	1041275378
-	.long	1442840576
-	.long	483307
-	.long	3052749833
-	.long	1041940577
-	.long	1937768448
-	.long	499988
-	.long	2216116399
-	.long	1041486744
-	.long	914358272
-	.long	516851
-	.long	2729697836
-	.long	1041445764
-	.long	2566914048
-	.long	533897
-	.long	540608356
-	.long	1041310907
-	.long	2600468480
-	.long	551129
-	.long	2916344493
-	.long	1040535661
-	.long	1107296256
-	.long	568549
-	.long	731391814
-	.long	1039497014
-	.long	2566914048
-	.long	586158
-	.long	1024722704
-	.long	1041461625
-	.long	2961178624
-	.long	603959
-	.long	3806831748
-	.long	1041732499
-	.long	2675965952
-	.long	621954
-	.long	238953304
-	.long	1040316488
-	.long	2189426688
-	.long	640145
-	.long	749123235
-	.long	1041725785
-	.long	2063597568
-	.long	658534
-	.long	1168187977
-	.long	1041175214
-	.long	2986344448
-	.long	677123
-	.long	3506096399
-	.long	1042186095
-	.long	1426063360
-	.long	695915
-	.long	1470221620
-	.long	1041675499
-	.long	2566914048
-	.long	714911
-	.long	3182425146
-	.long	1041483134
-	.long	3087007744
-	.long	734114
-	.long	3131698208
-	.long	1042208657
-	.long	4068474880
-	.long	753526
-	.long	2300504125
-	.long	1041428596
-	.long	2415919104
-	.long	773150
-	.long	2290297931
-	.long	1037388400
-	.long	3716153344
-	.long	792987
-	.long	3532148223
-	.long	1041626194
-	.long	771751936
-	.long	813041
-	.long	1161884404
-	.long	1042015258
-	.long	3699376128
-	.long	833312
-	.long	876383176
-	.long	1037968878
-	.long	1241513984
-	.long	853805
-	.long	3379986796
-	.long	1042213153
-	.long	3699376128
-	.long	874520
-	.long	1545797737
-	.long	1041681569
-	.long	58720256
-	.long	895462
-	.long	2925146801
-	.long	1042212567
-	.long	855638016
-	.long	916631
-	.long	1316627971
-	.long	1038516204
-	.long	3883925504
-	.long	938030
-	.long	3267869137
-	.long	1040337004
-	.long	2726297600
-	.long	959663
-	.long	3720868999
-	.long	1041782409
-	.long	3992977408
-	.long	981531
-	.long	433316142
-	.long	1041994064
-	.long	1526726656
-	.long	1003638
-	.long	781232103
-	.long	1040093400
-	.long	2172649472
-	.long	1025985
-	.long	2773927732
-	.long	1053236707
-	.long	381774871
-	.long	1062650220
-	.long	379653899
-	.long	1056571845
-	.long	286331153
-	.long	1065423121
-	.long	436314138
-	.long	1059717536
-	.long	1431655765
-	.long	1067799893
-	.long	1431655765
-	.long	1069897045
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	2146435071
-	.long	0
-	.long	1048576
-	.long	4227858432
-	.long	4294967295
-	.type	static_const_table,@object
-	.size	static_const_table,1296
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_log1p.S b/libm/x86/s_log1p.S
deleted file mode 100644
index de7b87b..0000000
--- a/libm/x86/s_log1p.S
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//    Let x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpps instruction (B0)
-//    B = int((B0*2^7+0.5))/2^7
-//
-//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-//    Result:  k*log(2) - log(B) + p(r)
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//   log1p(NaN) = quiet NaN, and raise invalid exception
-//   log1p(+INF) = that INF
-//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
-//   log1p(-1) = -INF, and raises divide-by-zero exception
-//   log1p(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  log1p
-ENTRY(log1p)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        xorpd     %xmm3, %xmm3
-        movl      $32768, %ecx
-        movd      %ecx, %xmm4
-        movsd     2128(%ebx), %xmm5
-        pshufd    $68, %xmm0, %xmm7
-        movapd    %xmm2, %xmm6
-        pextrw    $3, %xmm0, %ecx
-        addsd     %xmm2, %xmm0
-        movapd    %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        subsd     %xmm0, %xmm6
-        orpd      %xmm2, %xmm0
-        psllq     $5, %xmm0
-        psrlq     $34, %xmm0
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        addsd     %xmm6, %xmm7
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        andl      $32752, %ecx
-        cmpl      $16256, %ecx
-        jb        .L_2TAG_PACKET_1.0.2
-        andl      $32752, %eax
-        movl      $32720, %ecx
-        subl      %eax, %ecx
-        pinsrw    $3, %ecx, %xmm3
-.L_2TAG_PACKET_2.0.2:
-        mulsd     %xmm3, %xmm7
-        paddd     %xmm4, %xmm0
-        xorpd     %xmm4, %xmm4
-        movl      $14336, %ecx
-        pinsrw    $3, %ecx, %xmm4
-        orpd      %xmm2, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm1, %xmm5
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm1
-        paddd     %xmm4, %xmm0
-        mulsd     %xmm0, %xmm5
-        movl      $16352, %ecx
-        subl      %ecx, %eax
-        cvtsi2sdl %eax, %xmm4
-        mulsd     %xmm0, %xmm7
-        mulsd     %xmm0, %xmm1
-        movsd     2064(%ebx), %xmm6
-        movapd    2080(%ebx), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    (%ebx,%edx), %xmm0
-        movapd    2096(%ebx), %xmm2
-        addsd     %xmm5, %xmm1
-        movapd    %xmm1, %xmm5
-        addsd     %xmm7, %xmm1
-        subsd     %xmm1, %xmm5
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm4, %xmm6
-        mulsd     2072(%ebx), %xmm4
-        mulsd     %xmm1, %xmm3
-        pshufd    $68, %xmm1, %xmm5
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm2
-        mulpd     %xmm5, %xmm5
-        pshufd    $228, %xmm0, %xmm6
-        addsd     %xmm1, %xmm0
-        addpd     2112(%ebx), %xmm2
-        mulpd     %xmm5, %xmm3
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm7, %xmm4
-        mulsd     %xmm1, %xmm7
-        addsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm6
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm6, %xmm4
-        subsd     %xmm7, %xmm1
-        addpd     %xmm3, %xmm2
-        addsd     %xmm4, %xmm1
-        mulpd     %xmm5, %xmm2
-        addsd     %xmm2, %xmm1
-        pshufd    $238, %xmm2, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_0.0.2:
-        movsd     112(%esp), %xmm0
-        movapd    %xmm0, %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_4.0.2
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_6.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_7.0.2:
-        ja        .L_2TAG_PACKET_6.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_6.0.2
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_4.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_7.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_8.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        movl      $141, %edx
-        mulsd     %xmm1, %xmm0
-.L_2TAG_PACKET_9.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     112(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_5.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $140, %edx
-        jmp       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_1.0.2:
-        movsd     112(%esp), %xmm0
-        cmpl      $15504, %ecx
-        jb        .L_2TAG_PACKET_11.0.2
-        movapd    2144(%ebx), %xmm1
-        pshufd    $68, %xmm0, %xmm0
-        movapd    2160(%ebx), %xmm2
-        pshufd    $68, %xmm0, %xmm4
-        movapd    2176(%ebx), %xmm3
-        mulpd     %xmm0, %xmm1
-        xorpd     %xmm6, %xmm6
-        mulpd     %xmm4, %xmm4
-        addpd     %xmm2, %xmm1
-        pshufd    $68, %xmm4, %xmm5
-        mulpd     %xmm0, %xmm4
-        movl      $49120, %eax
-        pinsrw    $3, %eax, %xmm6
-        mulpd     %xmm0, %xmm1
-        mulsd     %xmm4, %xmm4
-        addpd     %xmm3, %xmm1
-        mulsd     %xmm6, %xmm5
-        mulpd     %xmm4, %xmm1
-        pshufd    $238, %xmm1, %xmm7
-        addsd     %xmm7, %xmm1
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_11.0.2:
-        cmpl      $16, %ecx
-        jb        .L_2TAG_PACKET_12.0.2
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_12.0.2:
-        movapd    %xmm0, %xmm1
-        mulsd     %xmm1, %xmm1
-        jmp       .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_3.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_10.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(log1p)
-# -- End  log1p
-
-# Start file scope ASM
-ALIAS_SYMBOL(log1pl, log1p);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	4277811200
-	.long	1072049730
-	.long	2479318832
-	.long	1026487127
-	.long	2854492160
-	.long	1072033410
-	.long	215631550
-	.long	1025638968
-	.long	1547061248
-	.long	1072017216
-	.long	2886781435
-	.long	1026423395
-	.long	649825280
-	.long	1072001146
-	.long	4281533405
-	.long	1024038923
-	.long	646346752
-	.long	1071985198
-	.long	1562735921
-	.long	1023790276
-	.long	2203734016
-	.long	1071969370
-	.long	1838397691
-	.long	3173936209
-	.long	1872169984
-	.long	1071953661
-	.long	3981202460
-	.long	1022325013
-	.long	669557760
-	.long	1071938069
-	.long	4182597802
-	.long	3173174122
-	.long	4076413952
-	.long	1071922591
-	.long	1209029111
-	.long	3170736207
-	.long	556125184
-	.long	1071907228
-	.long	821086028
-	.long	3173437049
-	.long	204914688
-	.long	1071891976
-	.long	2097025986
-	.long	3171071798
-	.long	387545088
-	.long	1071876834
-	.long	3142936996
-	.long	3173092218
-	.long	2912783360
-	.long	1071861800
-	.long	2502420140
-	.long	1024505919
-	.long	1144260608
-	.long	1071846874
-	.long	3315658140
-	.long	3173469843
-	.long	1471209472
-	.long	1071832053
-	.long	129621009
-	.long	3172443877
-	.long	1829683200
-	.long	1071817336
-	.long	3885467693
-	.long	1025535275
-	.long	288676864
-	.long	1071802722
-	.long	86139472
-	.long	3171639793
-	.long	3636378624
-	.long	1071788208
-	.long	1850238587
-	.long	1024654342
-	.long	1606817792
-	.long	1071773795
-	.long	3388899795
-	.long	3173675586
-	.long	1236164608
-	.long	1071759480
-	.long	3983599207
-	.long	1020046558
-	.long	1089616896
-	.long	1071745262
-	.long	4171974224
-	.long	1024773198
-	.long	4143093760
-	.long	1071731139
-	.long	2727587401
-	.long	3173965207
-	.long	600267776
-	.long	1071717112
-	.long	3147685042
-	.long	3173353031
-	.long	2249313280
-	.long	1071703177
-	.long	125835074
-	.long	1025255832
-	.long	3805303808
-	.long	1071689334
-	.long	2289991207
-	.long	1025460331
-	.long	87278592
-	.long	1071675583
-	.long	1106114045
-	.long	1025933602
-	.long	3195405312
-	.long	1071661920
-	.long	3885316576
-	.long	3171206239
-	.long	3853649920
-	.long	1071648346
-	.long	2977069852
-	.long	3171236771
-	.long	2944026624
-	.long	1071625048
-	.long	1008093493
-	.long	1023444474
-	.long	3993180160
-	.long	1071598247
-	.long	1862355595
-	.long	1024642533
-	.long	1454641152
-	.long	1071571617
-	.long	1514603089
-	.long	1026500596
-	.long	3286085632
-	.long	1071545154
-	.long	1400028424
-	.long	3173279056
-	.long	438773760
-	.long	1071518858
-	.long	120727864
-	.long	3172148914
-	.long	1212979200
-	.long	1071492725
-	.long	1625055594
-	.long	3172901933
-	.long	1189017600
-	.long	1071466754
-	.long	3920062376
-	.long	1025727407
-	.long	403064832
-	.long	1071440943
-	.long	1053271728
-	.long	3171391427
-	.long	3343210496
-	.long	1071415289
-	.long	3243395502
-	.long	3173627613
-	.long	1765777408
-	.long	1071389792
-	.long	2145968512
-	.long	1026354304
-	.long	461430784
-	.long	1071364449
-	.long	4094322285
-	.long	1026021467
-	.long	71706624
-	.long	1071339258
-	.long	763632021
-	.long	1024496933
-	.long	1380503552
-	.long	1071314217
-	.long	1383547992
-	.long	3173088453
-	.long	1015732224
-	.long	1071289325
-	.long	3198646877
-	.long	1025390322
-	.long	35977216
-	.long	1071264580
-	.long	2141026805
-	.long	1025754693
-	.long	3927306240
-	.long	1071239979
-	.long	282116272
-	.long	3173394334
-	.long	1125341184
-	.long	1071215523
-	.long	2768427504
-	.long	3172279059
-	.long	1666971648
-	.long	1071191208
-	.long	786837629
-	.long	3172427445
-	.long	2827694080
-	.long	1071167033
-	.long	3857122416
-	.long	3173014241
-	.long	2003683328
-	.long	1071142997
-	.long	859010954
-	.long	1026545007
-	.long	1004017664
-	.long	1071119098
-	.long	3356644970
-	.long	3173458064
-	.long	1753020416
-	.long	1071095334
-	.long	788338552
-	.long	1026157693
-	.long	1992718336
-	.long	1071071704
-	.long	1239179443
-	.long	1026394889
-	.long	3870234624
-	.long	1071048206
-	.long	2082614663
-	.long	1024926053
-	.long	1050437632
-	.long	1071024840
-	.long	660007840
-	.long	1025548499
-	.long	188395520
-	.long	1071001603
-	.long	3878792704
-	.long	3173889571
-	.long	3747176448
-	.long	1070978493
-	.long	144991708
-	.long	3171552042
-	.long	1405669376
-	.long	1070955511
-	.long	3999088879
-	.long	1025486317
-	.long	121151488
-	.long	1070932654
-	.long	2170865497
-	.long	1026473584
-	.long	2652319744
-	.long	1070909920
-	.long	453695652
-	.long	3173916809
-	.long	3262236672
-	.long	1070887309
-	.long	157800053
-	.long	3173984206
-	.long	601221120
-	.long	1070864820
-	.long	3968917661
-	.long	1023992886
-	.long	1999843328
-	.long	1070842450
-	.long	3053895004
-	.long	1024998228
-	.long	1992167424
-	.long	1070820199
-	.long	2968614856
-	.long	1024552653
-	.long	3788726272
-	.long	1070798065
-	.long	3542170808
-	.long	3173573242
-	.long	2094829568
-	.long	1070776048
-	.long	1246758132
-	.long	1026202874
-	.long	288675840
-	.long	1070754146
-	.long	3747328950
-	.long	1026331585
-	.long	1829681152
-	.long	1070732357
-	.long	3125197546
-	.long	1024100318
-	.long	1666869248
-	.long	1070710681
-	.long	1363656119
-	.long	1026336493
-	.long	3417110528
-	.long	1070689116
-	.long	4154791553
-	.long	1026267853
-	.long	2183653376
-	.long	1070667662
-	.long	1671819292
-	.long	3173785870
-	.long	1734434816
-	.long	1070646317
-	.long	373091049
-	.long	1025972363
-	.long	1615681536
-	.long	1070625080
-	.long	384650897
-	.long	1022926043
-	.long	1445382144
-	.long	1070603950
-	.long	344320330
-	.long	3172397196
-	.long	1823715328
-	.long	1070569756
-	.long	3389841200
-	.long	1025231852
-	.long	3839688704
-	.long	1070527917
-	.long	1706790417
-	.long	3167363349
-	.long	4293332992
-	.long	1070486286
-	.long	1614935088
-	.long	1019351591
-	.long	2966720512
-	.long	1070444861
-	.long	4145393717
-	.long	3173711658
-	.long	4066729984
-	.long	1070403639
-	.long	1974925028
-	.long	3171437182
-	.long	3337621504
-	.long	1070362619
-	.long	3314953170
-	.long	3169971314
-	.long	943448064
-	.long	1070321799
-	.long	1498682038
-	.long	3173862340
-	.long	1465634816
-	.long	1070281176
-	.long	1319952810
-	.long	3171693965
-	.long	1015734272
-	.long	1070240749
-	.long	1347821929
-	.long	3173544515
-	.long	118001664
-	.long	1070200516
-	.long	1751482746
-	.long	1026134093
-	.long	3707174912
-	.long	1070160474
-	.long	1486946159
-	.long	1023930920
-	.long	3946381312
-	.long	1070120623
-	.long	2867408081
-	.long	3171368276
-	.long	1699848192
-	.long	1070080961
-	.long	2590187139
-	.long	1025379803
-	.long	2235846656
-	.long	1070041485
-	.long	1888568069
-	.long	3172754960
-	.long	2339729408
-	.long	1070002194
-	.long	3852214753
-	.long	3173323149
-	.long	3196850176
-	.long	1069963086
-	.long	742141560
-	.long	1025101707
-	.long	1800683520
-	.long	1069924160
-	.long	3949500444
-	.long	3172102179
-	.long	3835801600
-	.long	1069885413
-	.long	3848895943
-	.long	1025913832
-	.long	2201202688
-	.long	1069846845
-	.long	1425913464
-	.long	1025868665
-	.long	2778279936
-	.long	1069808453
-	.long	2120889677
-	.long	3173831128
-	.long	2954203136
-	.long	1069770236
-	.long	592147081
-	.long	1019621288
-	.long	210141184
-	.long	1069732193
-	.long	3414275233
-	.long	1023647084
-	.long	709476352
-	.long	1069694321
-	.long	2413027164
-	.long	1024462115
-	.long	2116284416
-	.long	1069656619
-	.long	1144559924
-	.long	1026336654
-	.long	2183651328
-	.long	1069619086
-	.long	3459057650
-	.long	1025634168
-	.long	3047047168
-	.long	1069581720
-	.long	1879674924
-	.long	3173508573
-	.long	970711040
-	.long	1069541521
-	.long	1335954173
-	.long	3173332182
-	.long	2198478848
-	.long	1069467449
-	.long	2951103968
-	.long	3173892200
-	.long	1669611520
-	.long	1069393703
-	.long	531044147
-	.long	1025149248
-	.long	29114368
-	.long	1069320280
-	.long	3327831251
-	.long	1025918673
-	.long	2376949760
-	.long	1069247176
-	.long	737634533
-	.long	3172176000
-	.long	1085390848
-	.long	1069174390
-	.long	3108243400
-	.long	3171828406
-	.long	1566130176
-	.long	1069101918
-	.long	985483226
-	.long	1025708380
-	.long	792780800
-	.long	1069029758
-	.long	4184866295
-	.long	1024426204
-	.long	183156736
-	.long	1068957907
-	.long	2845699378
-	.long	1022107277
-	.long	1301782528
-	.long	1068886362
-	.long	1012735262
-	.long	3173804294
-	.long	1562411008
-	.long	1068815121
-	.long	2197086703
-	.long	3170187813
-	.long	2815549440
-	.long	1068744181
-	.long	2782613207
-	.long	1026345054
-	.long	2756124672
-	.long	1068673540
-	.long	2929486205
-	.long	3173037800
-	.long	3511050240
-	.long	1068603195
-	.long	1443733147
-	.long	3173331549
-	.long	3047047168
-	.long	1068533144
-	.long	1879674924
-	.long	3172459997
-	.long	3221667840
-	.long	1068427825
-	.long	1338588027
-	.long	3171815742
-	.long	3453861888
-	.long	1068288883
-	.long	1205348359
-	.long	3172624626
-	.long	3506110464
-	.long	1068150514
-	.long	893105198
-	.long	1025571866
-	.long	346013696
-	.long	1068012714
-	.long	3495569021
-	.long	3172563349
-	.long	4074029056
-	.long	1067875476
-	.long	3961106338
-	.long	3171065595
-	.long	3559784448
-	.long	1067738798
-	.long	1975385384
-	.long	3173783155
-	.long	797769728
-	.long	1067602675
-	.long	3760305787
-	.long	1026047642
-	.long	2313633792
-	.long	1067467101
-	.long	1559353171
-	.long	1023480256
-	.long	3960766464
-	.long	1067213778
-	.long	1067365107
-	.long	1025865926
-	.long	684261376
-	.long	1066944805
-	.long	844762164
-	.long	3173687482
-	.long	630718464
-	.long	1066676905
-	.long	2458269694
-	.long	1024033081
-	.long	1486061568
-	.long	1066410070
-	.long	115537874
-	.long	3173243995
-	.long	2743664640
-	.long	1065886792
-	.long	3665098304
-	.long	3173471607
-	.long	1971912704
-	.long	1065357333
-	.long	2577214440
-	.long	3171993451
-	.long	1498939392
-	.long	1064306693
-	.long	3409036923
-	.long	1025599151
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	4277811200
-	.long	1067855426
-	.long	2479318832
-	.long	1022292823
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1030730101
-	.long	3217380702
-	.long	1431655765
-	.long	1070945621
-	.long	2576980378
-	.long	1070176665
-	.long	0
-	.long	3219128320
-	.long	0
-	.long	4294959104
-	.long	0
-	.long	4294959104
-	.long	0
-	.long	3217031168
-	.long	2576980378
-	.long	1070176665
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1431655765
-	.long	3217380693
-	.long	1431655765
-	.long	1070945621
-	.type	static_const_table,@object
-	.size	static_const_table,2192
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_sin.S b/libm/x86/s_sin.S
deleted file mode 100644
index 74d1b86..0000000
--- a/libm/x86/s_sin.S
+++ /dev/null
@@ -1,907 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//     1. RANGE REDUCTION
-//
-//     We perform an initial range reduction from X to r with
-//
-//          X =~= N * pi/32 + r
-//
-//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
-//     where |N| <= 932560. Beyond this, the range reduction is
-//     insufficiently accurate. For extremely small inputs, 
-//     denormalization can occur internally, impacting performance.
-//     This means that the main path is actually only taken for
-//     2^-252 <= |X| < 90112.
-//
-//     To avoid branches, we perform the range reduction to full
-//     accuracy each time.
-//
-//          X - N * (P_1 + P_2 + P_3)
-//
-//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
-//     is exact) and P_3 is a 53-bit number. Together, these
-//     approximate pi well enough for all cases in the restricted
-//     range.
-//
-//     The main reduction sequence is:
-//
-//             y = 32/pi * x
-//             N = integer(y)
-//     (computed by adding and subtracting off SHIFTER)
-//
-//             m_1 = N * P_1
-//             m_2 = N * P_2
-//             r_1 = x - m_1
-//             r = r_1 - m_2
-//     (this r can be used for most of the calculation)
-//
-//             c_1 = r_1 - r
-//             m_3 = N * P_3
-//             c_2 = c_1 - m_2
-//             c = c_2 - m_3
-//
-//     2. MAIN ALGORITHM
-//
-//     The algorithm uses a table lookup based on B = M * pi / 32
-//     where M = N mod 64. The stored values are:
-//       sigma             closest power of 2 to cos(B)
-//       C_hl              53-bit cos(B) - sigma
-//       S_hi + S_lo       2 * 53-bit sin(B)
-//
-//     The computation is organized as follows:
-//
-//          sin(B + r + c) = [sin(B) + sigma * r] +
-//                           r * (cos(B) - sigma) +
-//                           sin(B) * [cos(r + c) - 1] +
-//                           cos(B) * [sin(r + c) - r]
-//
-//     which is approximately:
-//
-//          [S_hi + sigma * r] +
-//          C_hl * r +
-//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
-//          (C_hl + sigma) * [(sin(r) - r) + c]
-//
-//     and this is what is actually computed. We separate this sum
-//     into four parts:
-//
-//          hi + med + pols + corr
-//
-//     where
-//
-//          hi       = S_hi + sigma r
-//          med      = C_hl * r
-//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-//     3. POLYNOMIAL
-//
-//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-//     (sin(r) - r) can be rearranged freely, since it is quite
-//     small, so we exploit parallelism to the fullest.
-//
-//          psc4       =   SC_4 * r_1
-//          msc4       =   psc4 * r
-//          r2         =   r * r
-//          msc2       =   SC_2 * r2
-//          r4         =   r2 * r2
-//          psc3       =   SC_3 + msc4
-//          psc1       =   SC_1 + msc2
-//          msc3       =   r4 * psc3
-//          sincospols =   psc1 + msc3
-//          pols       =   sincospols *
-//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-//     4. CORRECTION TERM
-//
-//     This is where the "c" component of the range reduction is
-//     taken into account; recall that just "r" is used for most of
-//     the calculation.
-//
-//          -c   = m_3 - c_2
-//          -d   = S_hi * r - (C_hl + sigma)
-//          corr = -c * -d + S_lo
-//
-//     5. COMPENSATED SUMMATIONS
-//
-//     The two successive compensated summations add up the high
-//     and medium parts, leaving just the low parts to add up at
-//     the end.
-//
-//          rs        =  sigma * r
-//          res_int   =  S_hi + rs
-//          k_0       =  S_hi - res_int
-//          k_2       =  k_0 + rs
-//          med       =  C_hl * r
-//          res_hi    =  res_int + med
-//          k_1       =  res_int - res_hi
-//          k_3       =  k_1 + med
-//
-//     6. FINAL SUMMATION
-//
-//     We now add up all the small parts:
-//
-//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-//     Now the overall result is just:
-//
-//          res_hi + res_lo
-//
-//     7. SMALL ARGUMENTS
-//
-//     If |x| < SNN (SNN meaning the smallest normal number), we
-//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-//     do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-//  sin(NaN) = quiet NaN, and raise invalid exception
-//  sin(INF) = NaN and raise invalid exception
-//  sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  sin
-ENTRY(sin)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 56(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        subl      $12336, %eax
-        cmpl      $4293, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        movsd     2160(%ebx), %xmm1
-        mulsd     %xmm0, %xmm1
-        movsd     2272(%ebx), %xmm5
-        movapd    2256(%ebx), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        movsd     2128(%ebx), %xmm3
-        movapd    2112(%ebx), %xmm2
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %edx
-        cvtsi2sdl %edx, %xmm1
-        mulsd     %xmm1, %xmm3
-        unpcklpd  %xmm1, %xmm1
-        addl      $1865216, %edx
-        movapd    %xmm0, %xmm4
-        andl      $63, %edx
-        movapd    2096(%ebx), %xmm5
-        lea       (%ebx), %eax
-        shll      $5, %edx
-        addl      %edx, %eax
-        mulpd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm0
-        mulsd     2144(%ebx), %xmm1
-        subsd     %xmm3, %xmm4
-        movsd     8(%eax), %xmm7
-        unpcklpd  %xmm0, %xmm0
-        movapd    %xmm4, %xmm3
-        subsd     %xmm2, %xmm4
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm2, %xmm0
-        movapd    2064(%ebx), %xmm6
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm2, %xmm3
-        movapd    (%eax), %xmm2
-        subsd     %xmm3, %xmm1
-        movsd     24(%eax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     2080(%ebx), %xmm5
-        mulsd     (%eax), %xmm4
-        addpd     2048(%ebx), %xmm6
-        mulpd     %xmm0, %xmm5
-        movapd    %xmm3, %xmm0
-        addsd     8(%eax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movapd    %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movsd     8(%eax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%eax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm0, %xmm5
-        addsd     %xmm7, %xmm3
-        addsd     %xmm5, %xmm1
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        unpckhpd  %xmm6, %xmm6
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm4
-        movsd     %xmm4, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        jg        .L_2TAG_PACKET_2.0.2
-        shrl      $4, %eax
-        cmpl      $268434685, %eax
-        jne       .L_2TAG_PACKET_3.0.2
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
-        movsd     2192(%ebx), %xmm3
-        mulsd     %xmm0, %xmm3
-        subsd     %xmm0, %xmm3
-        mulsd     2208(%ebx), %xmm3
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movl      132(%esp), %eax
-        andl      $2146435072, %eax
-        cmpl      $2146435072, %eax
-        je        .L_2TAG_PACKET_4.0.2
-        subl      $32, %esp
-        movsd     %xmm0, (%esp)
-        lea       40(%esp), %eax
-        movl      %eax, 8(%esp)
-        movl      $2, %eax
-        movl      %eax, 12(%esp)
-        call      __libm_sincos_huge
-        addl      $32, %esp
-        fldl      16(%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
-        fldl      128(%esp)
-        fmull     2240(%ebx)
-.L_2TAG_PACKET_1.0.2:
-        movl      56(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(sin)
-# -- End  sin
-
-# Start file scope ASM
-ALIAS_SYMBOL(sinl, sin);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	1072693248
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	1072693248
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	1071644672
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	1071644672
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	1070596096
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	1070596096
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	1069547520
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	3217031168
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	3218079744
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	3218079744
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	3219128320
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	3219128320
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	3220176896
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	3220176896
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	3219128320
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	3219128320
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	3218079744
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	3218079744
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	3217031168
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	1069547520
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	1070596096
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	1070596096
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	1071644672
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	1071644672
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	1072693248
-	.long	1431655765
-	.long	3217380693
-	.long	0
-	.long	3219128320
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1067799893
-	.long	436314138
-	.long	3207201184
-	.long	381774871
-	.long	3210133868
-	.long	2773927732
-	.long	1053236707
-	.long	436314138
-	.long	1056571808
-	.long	442499072
-	.long	1032893537
-	.long	442499072
-	.long	1032893537
-	.long	1413480448
-	.long	1069097467
-	.long	0
-	.long	0
-	.long	771977331
-	.long	996350346
-	.long	0
-	.long	0
-	.long	1841940611
-	.long	1076125488
-	.long	0
-	.long	0
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	0
-	.long	0
-	.long	1130364928
-	.long	0
-	.long	0
-	.long	0
-	.long	1015021568
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	1072693247
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.type	static_const_table,@object
-	.size	static_const_table,2288
-	.data
-	.hidden __libm_sincos_huge
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_tan.S b/libm/x86/s_tan.S
deleted file mode 100644
index 7935efe..0000000
--- a/libm/x86/s_tan.S
+++ /dev/null
@@ -1,1766 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// Polynomials coefficients and other constants.
-//
-// Note that in this algorithm, there is a different polynomial for
-// each breakpoint, so there are 32 sets of polynomial coefficients
-// as well as 32 instances of the other constants.
-//
-// The polynomial coefficients and constants are offset from the start
-// of the main block as follows:
-//
-//   0:  c8 | c0
-//  16:  c9 | c1
-//  32: c10 | c2
-//  48: c11 | c3
-//  64: c12 | c4
-//  80: c13 | c5
-//  96: c14 | c6
-// 112: c15 | c7
-// 128: T_hi
-// 136: T_lo
-// 144: Sigma
-// 152: T_hl
-// 160: Tau
-// 168: Mask
-// 176: (end of block)
-//
-// The total table size is therefore 5632 bytes.
-//
-// Note that c0 and c1 are always zero. We could try storing
-// other constants here, and just loading the low part of the
-// SIMD register in these cases, after ensuring the high part
-// is zero.
-//
-// The higher terms of the polynomial are computed in the *low*
-// part of the SIMD register. This is so we can overlap the
-// multiplication by r^8 and the unpacking of the other part.
-//
-// The constants are:
-// T_hi + T_lo = accurate constant term in power series
-// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
-// Tau = multiplier for the reciprocal, always -1 or 0
-//
-// The basic reconstruction formula using these constants is:
-//
-// High = tau * recip_hi + t_hi
-// Med = (sgn * r + t_hl * r)_hi
-// Low = (sgn * r + t_hl * r)_lo +
-//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
-//
-// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
-//
-// (c0 = c1 = 0, but using them keeps SIMD regularity)
-//
-// We then do a compensated sum High + Med, add the low parts together
-// and then do the final sum.
-//
-// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
-// modulo pi/2
-//
-// Special cases:
-//  tan(NaN) = quiet NaN, and raise invalid exception
-//  tan(INF) = NaN and raise invalid exception
-//  tan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  tan
-ENTRY(tan)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 56(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        subl      $14368, %eax
-        cmpl      $2216, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        movapd    5840(%ebx), %xmm5
-        movapd    5856(%ebx), %xmm6
-        unpcklpd  %xmm0, %xmm0
-        movapd    5712(%ebx), %xmm4
-        andpd     %xmm0, %xmm4
-        movapd    5632(%ebx), %xmm1
-        mulpd     %xmm0, %xmm1
-        orpd      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        movapd    %xmm1, %xmm7
-        unpckhpd  %xmm7, %xmm7
-        cvttsd2si %xmm7, %edx
-        cvttpd2dq %xmm1, %xmm1
-        cvtdq2pd  %xmm1, %xmm1
-        mulpd     %xmm6, %xmm1
-        movapd    5664(%ebx), %xmm3
-        movsd     5728(%ebx), %xmm5
-        addl      $469248, %edx
-        movapd    5680(%ebx), %xmm4
-        mulpd     %xmm1, %xmm3
-        andl      $31, %edx
-        mulsd     %xmm1, %xmm5
-        movl      %edx, %ecx
-        mulpd     %xmm1, %xmm4
-        shll      $1, %ecx
-        subpd     %xmm3, %xmm0
-        mulpd     5696(%ebx), %xmm1
-        addl      %ecx, %edx
-        shll      $2, %ecx
-        addl      %ecx, %edx
-        addsd     %xmm0, %xmm5
-        movapd    %xmm0, %xmm2
-        subpd     %xmm4, %xmm0
-        movsd     5744(%ebx), %xmm6
-        shll      $4, %edx
-        lea       (%ebx), %eax
-        andpd     5776(%ebx), %xmm5
-        movapd    %xmm0, %xmm3
-        addl      %edx, %eax
-        subpd     %xmm0, %xmm2
-        unpckhpd  %xmm0, %xmm0
-        divsd     %xmm5, %xmm6
-        subpd     %xmm4, %xmm2
-        movapd    16(%eax), %xmm7
-        subsd     %xmm5, %xmm3
-        mulpd     %xmm0, %xmm7
-        subpd     %xmm1, %xmm2
-        movapd    48(%eax), %xmm1
-        mulpd     %xmm0, %xmm1
-        movapd    96(%eax), %xmm4
-        mulpd     %xmm0, %xmm4
-        addsd     %xmm3, %xmm2
-        movapd    %xmm0, %xmm3
-        mulpd     %xmm0, %xmm0
-        addpd     (%eax), %xmm7
-        addpd     32(%eax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     80(%eax), %xmm4
-        addpd     %xmm1, %xmm7
-        movapd    112(%eax), %xmm1
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm0
-        addpd     %xmm1, %xmm4
-        movapd    64(%eax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm1, %xmm7
-        movapd    %xmm3, %xmm1
-        mulpd     %xmm0, %xmm3
-        mulsd     %xmm0, %xmm0
-        mulpd     144(%eax), %xmm1
-        mulpd     %xmm3, %xmm4
-        movapd    %xmm1, %xmm3
-        addpd     %xmm4, %xmm7
-        movapd    %xmm1, %xmm4
-        mulsd     %xmm7, %xmm0
-        unpckhpd  %xmm7, %xmm7
-        addsd     %xmm7, %xmm0
-        unpckhpd  %xmm1, %xmm1
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        movapd    %xmm2, %xmm4
-        movsd     144(%eax), %xmm7
-        unpckhpd  %xmm2, %xmm2
-        addsd     152(%eax), %xmm7
-        mulsd     %xmm2, %xmm7
-        addsd     136(%eax), %xmm7
-        addsd     %xmm1, %xmm7
-        addsd     %xmm7, %xmm0
-        movsd     5744(%ebx), %xmm7
-        mulsd     %xmm6, %xmm4
-        movsd     168(%eax), %xmm2
-        andpd     %xmm6, %xmm2
-        mulsd     %xmm2, %xmm5
-        mulsd     160(%eax), %xmm6
-        subsd     %xmm5, %xmm7
-        subsd     128(%eax), %xmm2
-        subsd     %xmm4, %xmm7
-        mulsd     %xmm6, %xmm7
-        movapd    %xmm3, %xmm4
-        subsd     %xmm2, %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm4
-        addsd     %xmm4, %xmm0
-        subsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        jg        .L_2TAG_PACKET_2.0.2
-        shrl      $4, %eax
-        cmpl      $268434558, %eax
-        jne       .L_2TAG_PACKET_3.0.2
-        movapd    %xmm0, %xmm3
-        mulsd     5808(%ebx), %xmm3
-.L_2TAG_PACKET_3.0.2:
-        movsd     5792(%ebx), %xmm3
-        mulsd     %xmm0, %xmm3
-        addsd     %xmm0, %xmm3
-        mulsd     5808(%ebx), %xmm3
-        movsd     %xmm3, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movq      5712(%ebx), %xmm7
-        andpd     %xmm0, %xmm7
-        xorpd     %xmm0, %xmm7
-        ucomisd   5760(%ebx), %xmm7
-        je        .L_2TAG_PACKET_4.0.2
-        subl      $32, %esp
-        movsd     %xmm0, (%esp)
-        lea       40(%esp), %eax
-        movl      %eax, 8(%esp)
-        movl      $2, %eax
-        movl      %eax, 12(%esp)
-        call      __libm_tancot_huge
-        addl      $32, %esp
-        fldl      8(%esp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
-        movq      %xmm0, (%esp)
-        fldl      (%esp)
-        fsubl     (%esp)
-.L_2TAG_PACKET_1.0.2:
-        movl      56(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(tan)
-# -- End  tan
-
-# Start file scope ASM
-ALIAS_SYMBOL(tanl, tan);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1066820852
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1441186365
-	.long	1065494243
-	.long	1431655765
-	.long	1070945621
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	236289504
-	.long	1064135997
-	.long	286331153
-	.long	1069617425
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1160476131
-	.long	1062722102
-	.long	463583772
-	.long	1068212666
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1313038235
-	.long	1066745731
-	.long	0
-	.long	0
-	.long	1013878342
-	.long	1067152618
-	.long	0
-	.long	0
-	.long	3663426833
-	.long	1065725283
-	.long	3693284251
-	.long	1069118808
-	.long	650852232
-	.long	1065882376
-	.long	1996245381
-	.long	1071000265
-	.long	2008746170
-	.long	1064664197
-	.long	3055842593
-	.long	1068578846
-	.long	1495406348
-	.long	1064652437
-	.long	2269530157
-	.long	1069711235
-	.long	285563696
-	.long	1063576465
-	.long	1046897440
-	.long	1067705865
-	.long	233429731
-	.long	1063453151
-	.long	522045958
-	.long	1068476590
-	.long	2354785698
-	.long	1069102779
-	.long	1317599141
-	.long	1012432133
-	.long	0
-	.long	1072693248
-	.long	2828230105
-	.long	1065606626
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1512545955
-	.long	1068119047
-	.long	0
-	.long	0
-	.long	1127048698
-	.long	1067909459
-	.long	0
-	.long	0
-	.long	2300200450
-	.long	1067254767
-	.long	3593250296
-	.long	1070233561
-	.long	3009365544
-	.long	1066902117
-	.long	1127373050
-	.long	1071173457
-	.long	3046103305
-	.long	1066371299
-	.long	24583402
-	.long	1069723988
-	.long	4082511758
-	.long	1065914199
-	.long	3223889699
-	.long	1070020367
-	.long	548927984
-	.long	1065415756
-	.long	558065897
-	.long	1068949418
-	.long	680073315
-	.long	1064940726
-	.long	388873200
-	.long	1068944270
-	.long	3763679576
-	.long	1070167541
-	.long	1497360404
-	.long	1009710547
-	.long	0
-	.long	1072693248
-	.long	64931152
-	.long	1067729411
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2467582782
-	.long	1069256389
-	.long	0
-	.long	0
-	.long	162150096
-	.long	1068946420
-	.long	0
-	.long	0
-	.long	3702794237
-	.long	1068579152
-	.long	3631919291
-	.long	1070936926
-	.long	3456821413
-	.long	1068217218
-	.long	2031366438
-	.long	1071495745
-	.long	1596664020
-	.long	1067799281
-	.long	1509038701
-	.long	1070601643
-	.long	583171477
-	.long	1067510148
-	.long	3785344682
-	.long	1070618476
-	.long	2402036048
-	.long	1067075736
-	.long	3233018412
-	.long	1069913186
-	.long	411280568
-	.long	1066710556
-	.long	1065584192
-	.long	1069747896
-	.long	895247324
-	.long	1070819848
-	.long	500078909
-	.long	3161288781
-	.long	0
-	.long	1072693248
-	.long	729983843
-	.long	1068994194
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1458794562
-	.long	1070398550
-	.long	0
-	.long	0
-	.long	2857777489
-	.long	1070137637
-	.long	0
-	.long	0
-	.long	1024359517
-	.long	1069876531
-	.long	2616040238
-	.long	1071582937
-	.long	1609024636
-	.long	1069675088
-	.long	2529240549
-	.long	1071836633
-	.long	1510128600
-	.long	1069440113
-	.long	2251697184
-	.long	1071253687
-	.long	1262761453
-	.long	1069142850
-	.long	1263091857
-	.long	1071190461
-	.long	3043383486
-	.long	1068885191
-	.long	2476932470
-	.long	1070842002
-	.long	3659995028
-	.long	1068669200
-	.long	855891755
-	.long	1070696894
-	.long	2583490354
-	.long	1071284857
-	.long	3062633575
-	.long	1014008623
-	.long	0
-	.long	1072693248
-	.long	2550940471
-	.long	1069938201
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3422807297
-	.long	1071640847
-	.long	0
-	.long	0
-	.long	1151658053
-	.long	1071494715
-	.long	0
-	.long	0
-	.long	929607071
-	.long	1071346340
-	.long	1037049034
-	.long	1072037305
-	.long	2786928657
-	.long	1071215282
-	.long	1447406859
-	.long	1072265209
-	.long	3490952107
-	.long	1071090851
-	.long	3205232916
-	.long	1071968658
-	.long	1297344304
-	.long	1070977120
-	.long	1066110976
-	.long	1071946035
-	.long	3803721480
-	.long	1070871082
-	.long	1496754229
-	.long	1071807201
-	.long	2982550683
-	.long	1070773243
-	.long	4014441989
-	.long	1071736222
-	.long	419968236
-	.long	1071717047
-	.long	3451266538
-	.long	3163444811
-	.long	0
-	.long	1072693248
-	.long	2960267235
-	.long	1070745841
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	724322768
-	.long	1072881308
-	.long	0
-	.long	0
-	.long	643153048
-	.long	1072905816
-	.long	0
-	.long	0
-	.long	4285079458
-	.long	1072928558
-	.long	3912524733
-	.long	1072622983
-	.long	118362272
-	.long	1072952754
-	.long	4107767972
-	.long	1072827408
-	.long	2689502883
-	.long	1072976922
-	.long	946523347
-	.long	1072772766
-	.long	573204189
-	.long	1073001761
-	.long	581531518
-	.long	1072826391
-	.long	1386236526
-	.long	1073026959
-	.long	3718905905
-	.long	1072832823
-	.long	1145558140
-	.long	1073052673
-	.long	513572637
-	.long	1072861969
-	.long	716700048
-	.long	1071997368
-	.long	547126769
-	.long	1015523525
-	.long	0
-	.long	1072693248
-	.long	1097907398
-	.long	1071420120
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3349892442
-	.long	1074290212
-	.long	0
-	.long	0
-	.long	3913197405
-	.long	1074501181
-	.long	0
-	.long	0
-	.long	2494034522
-	.long	1074739170
-	.long	1264738763
-	.long	1073084804
-	.long	1520293906
-	.long	1074899632
-	.long	1958936600
-	.long	1073411493
-	.long	2133649635
-	.long	1075052171
-	.long	4270740730
-	.long	1073574708
-	.long	1728930189
-	.long	1075224844
-	.long	1303998552
-	.long	1073799186
-	.long	618611933
-	.long	1075420255
-	.long	1769828046
-	.long	1073938542
-	.long	2200537986
-	.long	1075641421
-	.long	433361110
-	.long	1074105369
-	.long	719595600
-	.long	1072317184
-	.long	294527206
-	.long	3162140088
-	.long	0
-	.long	1073741824
-	.long	3811788216
-	.long	3218400550
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1704352102
-	.long	1075943001
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1076258036
-	.long	0
-	.long	0
-	.long	2211264291
-	.long	1076659010
-	.long	0
-	.long	1073741824
-	.long	1441186365
-	.long	1077028579
-	.long	1431655765
-	.long	1074091349
-	.long	876943673
-	.long	1077353622
-	.long	2863311531
-	.long	1074440874
-	.long	236289504
-	.long	1077767485
-	.long	286331153
-	.long	1074860305
-	.long	2805473311
-	.long	1078115278
-	.long	95443718
-	.long	1075163227
-	.long	1160476131
-	.long	1078450742
-	.long	463583772
-	.long	1075552698
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	1073741824
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1330165971
-	.long	3207850745
-	.long	0
-	.long	0
-	.long	217536623
-	.long	1059109098
-	.long	0
-	.long	0
-	.long	3492120849
-	.long	3205151475
-	.long	602185705
-	.long	3215678092
-	.long	760422958
-	.long	1056312597
-	.long	555127889
-	.long	1067545266
-	.long	3139784124
-	.long	3202470837
-	.long	3690544014
-	.long	3213150171
-	.long	95707915
-	.long	1053635428
-	.long	4003114407
-	.long	1064581412
-	.long	2034926231
-	.long	3199711161
-	.long	3759536023
-	.long	3210559989
-	.long	3826928214
-	.long	1050893819
-	.long	3837960785
-	.long	1061790379
-	.long	1526325248
-	.long	3217967566
-	.long	2356426521
-	.long	1025423456
-	.long	0
-	.long	0
-	.long	457728975
-	.long	1071088276
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1398462608
-	.long	3207303968
-	.long	0
-	.long	0
-	.long	26205983
-	.long	1058461213
-	.long	0
-	.long	0
-	.long	56226238
-	.long	3204528612
-	.long	2754706541
-	.long	3215359511
-	.long	2187799823
-	.long	1055634437
-	.long	790323742
-	.long	1067402587
-	.long	1372385848
-	.long	3201651479
-	.long	4097292716
-	.long	3212856302
-	.long	3348210357
-	.long	1052830099
-	.long	2442796466
-	.long	1064337602
-	.long	862608142
-	.long	3198830754
-	.long	170296152
-	.long	3210060867
-	.long	3755571428
-	.long	1049933343
-	.long	3614866008
-	.long	1061361670
-	.long	719978496
-	.long	3217669096
-	.long	1998842465
-	.long	3174703977
-	.long	0
-	.long	0
-	.long	3749156607
-	.long	1071048258
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3120498638
-	.long	3206749304
-	.long	0
-	.long	0
-	.long	2773578114
-	.long	1058009312
-	.long	0
-	.long	0
-	.long	2030783676
-	.long	3203817873
-	.long	2223654598
-	.long	3215071936
-	.long	2976134650
-	.long	1054987244
-	.long	706390066
-	.long	1067217386
-	.long	4258437615
-	.long	3200900378
-	.long	1066252975
-	.long	3212391267
-	.long	815777514
-	.long	1051989462
-	.long	3202745457
-	.long	1064010682
-	.long	2493556375
-	.long	3198004753
-	.long	1046243251
-	.long	3209678971
-	.long	2593078846
-	.long	1049017717
-	.long	2763962276
-	.long	1060970161
-	.long	701480960
-	.long	3217377742
-	.long	3205862232
-	.long	3174660915
-	.long	0
-	.long	0
-	.long	2267016812
-	.long	1071015664
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	2107155798
-	.long	3206166872
-	.long	0
-	.long	0
-	.long	2642992129
-	.long	1057424578
-	.long	0
-	.long	0
-	.long	1936992811
-	.long	3203204426
-	.long	1485063559
-	.long	3214682643
-	.long	1432914553
-	.long	1054319398
-	.long	3996381654
-	.long	1067075828
-	.long	2833029256
-	.long	3200223545
-	.long	2866066872
-	.long	3211982662
-	.long	2432888737
-	.long	1051234178
-	.long	3669764559
-	.long	1063748136
-	.long	2458496952
-	.long	3197170774
-	.long	1948234989
-	.long	3209098147
-	.long	2843698787
-	.long	1048163519
-	.long	3398041407
-	.long	1060559728
-	.long	2829230080
-	.long	3217092115
-	.long	1034046433
-	.long	3174271903
-	.long	0
-	.long	0
-	.long	298675305
-	.long	1070989821
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	437603223
-	.long	3205589761
-	.long	0
-	.long	0
-	.long	759330352
-	.long	1057048511
-	.long	0
-	.long	0
-	.long	3107463368
-	.long	3202507988
-	.long	3144465176
-	.long	3214191500
-	.long	2290961810
-	.long	1053841035
-	.long	1618153340
-	.long	1066971547
-	.long	3836869393
-	.long	3199400272
-	.long	584032116
-	.long	3211469261
-	.long	1245704358
-	.long	1050626462
-	.long	4247487438
-	.long	1063561943
-	.long	1669034927
-	.long	3196274812
-	.long	3844233498
-	.long	3208626322
-	.long	2706958524
-	.long	1047411374
-	.long	3857199098
-	.long	1060281647
-	.long	3593904128
-	.long	3216590719
-	.long	3267547836
-	.long	3172163321
-	.long	0
-	.long	0
-	.long	4076712227
-	.long	1070970214
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3290090340
-	.long	3204793485
-	.long	0
-	.long	0
-	.long	3685760367
-	.long	1056668370
-	.long	0
-	.long	0
-	.long	2655163949
-	.long	3201674917
-	.long	628750575
-	.long	3213566872
-	.long	680140505
-	.long	1053299777
-	.long	2954464709
-	.long	1066900026
-	.long	803201619
-	.long	3198516435
-	.long	1466315631
-	.long	3210837162
-	.long	1611220163
-	.long	1049972438
-	.long	2766187256
-	.long	1063437894
-	.long	1804579484
-	.long	3195331491
-	.long	3695969289
-	.long	3207854418
-	.long	2617238373
-	.long	1046675948
-	.long	3095830084
-	.long	1060095334
-	.long	3789570048
-	.long	3216034914
-	.long	23826559
-	.long	3172048060
-	.long	0
-	.long	0
-	.long	3870939386
-	.long	1070956467
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1571758758
-	.long	3203672535
-	.long	0
-	.long	0
-	.long	113026373
-	.long	1056416381
-	.long	0
-	.long	0
-	.long	1913766298
-	.long	3200523326
-	.long	2507068734
-	.long	3212502004
-	.long	4000648818
-	.long	1053003803
-	.long	2446607349
-	.long	1066858259
-	.long	912662124
-	.long	3197333001
-	.long	1349489537
-	.long	3209765608
-	.long	3412972607
-	.long	1049641401
-	.long	1721283327
-	.long	1063366855
-	.long	1466691883
-	.long	3194116746
-	.long	3852528092
-	.long	3206760861
-	.long	285443293
-	.long	1046158380
-	.long	1758739894
-	.long	1059895449
-	.long	1858781184
-	.long	3214984212
-	.long	3447575948
-	.long	1024675855
-	.long	0
-	.long	0
-	.long	2242038011
-	.long	1070948320
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	737611454
-	.long	1056336527
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3594790527
-	.long	1052911621
-	.long	381774871
-	.long	1066844524
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3303051618
-	.long	1049456050
-	.long	3154187623
-	.long	1063343722
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	528061788
-	.long	1045944910
-	.long	2469719819
-	.long	1059831159
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1431655765
-	.long	1070945621
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1571758758
-	.long	1056188887
-	.long	0
-	.long	0
-	.long	113026373
-	.long	1056416381
-	.long	0
-	.long	0
-	.long	1913766298
-	.long	1053039678
-	.long	2507068734
-	.long	1065018356
-	.long	4000648818
-	.long	1053003803
-	.long	2446607349
-	.long	1066858259
-	.long	912662124
-	.long	1049849353
-	.long	1349489537
-	.long	1062281960
-	.long	3412972607
-	.long	1049641401
-	.long	1721283327
-	.long	1063366855
-	.long	1466691883
-	.long	1046633098
-	.long	3852528092
-	.long	1059277213
-	.long	285443293
-	.long	1046158380
-	.long	1758739894
-	.long	1059895449
-	.long	1858781184
-	.long	1067500564
-	.long	3447575948
-	.long	3172159503
-	.long	0
-	.long	0
-	.long	2242038011
-	.long	1070948320
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3290090340
-	.long	1057309837
-	.long	0
-	.long	0
-	.long	3685760367
-	.long	1056668370
-	.long	0
-	.long	0
-	.long	2655163949
-	.long	1054191269
-	.long	628750575
-	.long	1066083224
-	.long	680140505
-	.long	1053299777
-	.long	2954464709
-	.long	1066900026
-	.long	803201619
-	.long	1051032787
-	.long	1466315631
-	.long	1063353514
-	.long	1611220163
-	.long	1049972438
-	.long	2766187256
-	.long	1063437894
-	.long	1804579484
-	.long	1047847843
-	.long	3695969289
-	.long	1060370770
-	.long	2617238373
-	.long	1046675948
-	.long	3095830084
-	.long	1060095334
-	.long	3789570048
-	.long	1068551266
-	.long	23826559
-	.long	1024564412
-	.long	0
-	.long	0
-	.long	3870939386
-	.long	1070956467
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	437603223
-	.long	1058106113
-	.long	0
-	.long	0
-	.long	759330352
-	.long	1057048511
-	.long	0
-	.long	0
-	.long	3107463368
-	.long	1055024340
-	.long	3144465176
-	.long	1066707852
-	.long	2290961810
-	.long	1053841035
-	.long	1618153340
-	.long	1066971547
-	.long	3836869393
-	.long	1051916624
-	.long	584032116
-	.long	1063985613
-	.long	1245704358
-	.long	1050626462
-	.long	4247487438
-	.long	1063561943
-	.long	1669034927
-	.long	1048791164
-	.long	3844233498
-	.long	1061142674
-	.long	2706958524
-	.long	1047411374
-	.long	3857199098
-	.long	1060281647
-	.long	3593904128
-	.long	1069107071
-	.long	3267547836
-	.long	1024679673
-	.long	0
-	.long	0
-	.long	4076712227
-	.long	1070970214
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	2107155798
-	.long	1058683224
-	.long	0
-	.long	0
-	.long	2642992129
-	.long	1057424578
-	.long	0
-	.long	0
-	.long	1936992811
-	.long	1055720778
-	.long	1485063559
-	.long	1067198995
-	.long	1432914553
-	.long	1054319398
-	.long	3996381654
-	.long	1067075828
-	.long	2833029256
-	.long	1052739897
-	.long	2866066872
-	.long	1064499014
-	.long	2432888737
-	.long	1051234178
-	.long	3669764559
-	.long	1063748136
-	.long	2458496952
-	.long	1049687126
-	.long	1948234989
-	.long	1061614499
-	.long	2843698787
-	.long	1048163519
-	.long	3398041407
-	.long	1060559728
-	.long	2829230080
-	.long	1069608467
-	.long	1034046433
-	.long	1026788255
-	.long	0
-	.long	0
-	.long	298675305
-	.long	1070989821
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3120498638
-	.long	1059265656
-	.long	0
-	.long	0
-	.long	2773578114
-	.long	1058009312
-	.long	0
-	.long	0
-	.long	2030783676
-	.long	1056334225
-	.long	2223654598
-	.long	1067588288
-	.long	2976134650
-	.long	1054987244
-	.long	706390066
-	.long	1067217386
-	.long	4258437615
-	.long	1053416730
-	.long	1066252975
-	.long	1064907619
-	.long	815777514
-	.long	1051989462
-	.long	3202745457
-	.long	1064010682
-	.long	2493556375
-	.long	1050521105
-	.long	1046243251
-	.long	1062195323
-	.long	2593078846
-	.long	1049017717
-	.long	2763962276
-	.long	1060970161
-	.long	701480960
-	.long	1069894094
-	.long	3205862232
-	.long	1027177267
-	.long	0
-	.long	0
-	.long	2267016812
-	.long	1071015664
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1398462608
-	.long	1059820320
-	.long	0
-	.long	0
-	.long	26205983
-	.long	1058461213
-	.long	0
-	.long	0
-	.long	56226238
-	.long	1057044964
-	.long	2754706541
-	.long	1067875863
-	.long	2187799823
-	.long	1055634437
-	.long	790323742
-	.long	1067402587
-	.long	1372385848
-	.long	1054167831
-	.long	4097292716
-	.long	1065372654
-	.long	3348210357
-	.long	1052830099
-	.long	2442796466
-	.long	1064337602
-	.long	862608142
-	.long	1051347106
-	.long	170296152
-	.long	1062577219
-	.long	3755571428
-	.long	1049933343
-	.long	3614866008
-	.long	1061361670
-	.long	719978496
-	.long	1070185448
-	.long	1998842465
-	.long	1027220329
-	.long	0
-	.long	0
-	.long	3749156607
-	.long	1071048258
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1330165971
-	.long	1060367097
-	.long	0
-	.long	0
-	.long	217536623
-	.long	1059109098
-	.long	0
-	.long	0
-	.long	3492120849
-	.long	1057667827
-	.long	602185705
-	.long	1068194444
-	.long	760422958
-	.long	1056312597
-	.long	555127889
-	.long	1067545266
-	.long	3139784124
-	.long	1054987189
-	.long	3690544014
-	.long	1065666523
-	.long	95707915
-	.long	1053635428
-	.long	4003114407
-	.long	1064581412
-	.long	2034926231
-	.long	1052227513
-	.long	3759536023
-	.long	1063076341
-	.long	3826928214
-	.long	1050893819
-	.long	3837960785
-	.long	1061790379
-	.long	1526325248
-	.long	1070483918
-	.long	2356426521
-	.long	3172907104
-	.long	0
-	.long	0
-	.long	457728975
-	.long	1071088276
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1704352102
-	.long	3223426649
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1076258036
-	.long	0
-	.long	0
-	.long	2211264291
-	.long	3224142658
-	.long	0
-	.long	3221225472
-	.long	1441186365
-	.long	1077028579
-	.long	1431655765
-	.long	1074091349
-	.long	876943673
-	.long	3224837270
-	.long	2863311531
-	.long	3221924522
-	.long	236289504
-	.long	1077767485
-	.long	286331153
-	.long	1074860305
-	.long	2805473311
-	.long	3225598926
-	.long	95443718
-	.long	3222646875
-	.long	1160476131
-	.long	1078450742
-	.long	463583772
-	.long	1075552698
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	1073741824
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3349892442
-	.long	3221773860
-	.long	0
-	.long	0
-	.long	3913197405
-	.long	1074501181
-	.long	0
-	.long	0
-	.long	2494034522
-	.long	3222222818
-	.long	1264738763
-	.long	3220568452
-	.long	1520293906
-	.long	1074899632
-	.long	1958936600
-	.long	1073411493
-	.long	2133649635
-	.long	3222535819
-	.long	4270740730
-	.long	3221058356
-	.long	1728930189
-	.long	1075224844
-	.long	1303998552
-	.long	1073799186
-	.long	618611933
-	.long	3222903903
-	.long	1769828046
-	.long	3221422190
-	.long	2200537986
-	.long	1075641421
-	.long	433361110
-	.long	1074105369
-	.long	719595600
-	.long	3219800832
-	.long	294527206
-	.long	1014656440
-	.long	0
-	.long	1073741824
-	.long	3811788216
-	.long	3218400550
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	724322768
-	.long	3220364956
-	.long	0
-	.long	0
-	.long	643153048
-	.long	1072905816
-	.long	0
-	.long	0
-	.long	4285079458
-	.long	3220412206
-	.long	3912524733
-	.long	3220106631
-	.long	118362272
-	.long	1072952754
-	.long	4107767972
-	.long	1072827408
-	.long	2689502883
-	.long	3220460570
-	.long	946523347
-	.long	3220256414
-	.long	573204189
-	.long	1073001761
-	.long	581531518
-	.long	1072826391
-	.long	1386236526
-	.long	3220510607
-	.long	3718905905
-	.long	3220316471
-	.long	1145558140
-	.long	1073052673
-	.long	513572637
-	.long	1072861969
-	.long	716700048
-	.long	3219481016
-	.long	547126769
-	.long	3163007173
-	.long	0
-	.long	1072693248
-	.long	1097907398
-	.long	1071420120
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3422807297
-	.long	3219124495
-	.long	0
-	.long	0
-	.long	1151658053
-	.long	1071494715
-	.long	0
-	.long	0
-	.long	929607071
-	.long	3218829988
-	.long	1037049034
-	.long	3219520953
-	.long	2786928657
-	.long	1071215282
-	.long	1447406859
-	.long	1072265209
-	.long	3490952107
-	.long	3218574499
-	.long	3205232916
-	.long	3219452306
-	.long	1297344304
-	.long	1070977120
-	.long	1066110976
-	.long	1071946035
-	.long	3803721480
-	.long	3218354730
-	.long	1496754229
-	.long	3219290849
-	.long	2982550683
-	.long	1070773243
-	.long	4014441989
-	.long	1071736222
-	.long	419968236
-	.long	3219200695
-	.long	3451266538
-	.long	1015961163
-	.long	0
-	.long	1072693248
-	.long	2960267235
-	.long	1070745841
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1458794562
-	.long	3217882198
-	.long	0
-	.long	0
-	.long	2857777489
-	.long	1070137637
-	.long	0
-	.long	0
-	.long	1024359517
-	.long	3217360179
-	.long	2616040238
-	.long	3219066585
-	.long	1609024636
-	.long	1069675088
-	.long	2529240549
-	.long	1071836633
-	.long	1510128600
-	.long	3216923761
-	.long	2251697184
-	.long	3218737335
-	.long	1262761453
-	.long	1069142850
-	.long	1263091857
-	.long	1071190461
-	.long	3043383486
-	.long	3216368839
-	.long	2476932470
-	.long	3218325650
-	.long	3659995028
-	.long	1068669200
-	.long	855891755
-	.long	1070696894
-	.long	2583490354
-	.long	3218768505
-	.long	3062633575
-	.long	3161492271
-	.long	0
-	.long	1072693248
-	.long	2550940471
-	.long	1069938201
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2467582782
-	.long	3216740037
-	.long	0
-	.long	0
-	.long	162150096
-	.long	1068946420
-	.long	0
-	.long	0
-	.long	3702794237
-	.long	3216062800
-	.long	3631919291
-	.long	3218420574
-	.long	3456821413
-	.long	1068217218
-	.long	2031366438
-	.long	1071495745
-	.long	1596664020
-	.long	3215282929
-	.long	1509038701
-	.long	3218085291
-	.long	583171477
-	.long	1067510148
-	.long	3785344682
-	.long	1070618476
-	.long	2402036048
-	.long	3214559384
-	.long	3233018412
-	.long	3217396834
-	.long	411280568
-	.long	1066710556
-	.long	1065584192
-	.long	1069747896
-	.long	895247324
-	.long	3218303496
-	.long	500078909
-	.long	1013805133
-	.long	0
-	.long	1072693248
-	.long	729983843
-	.long	1068994194
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1512545955
-	.long	3215602695
-	.long	0
-	.long	0
-	.long	1127048698
-	.long	1067909459
-	.long	0
-	.long	0
-	.long	2300200450
-	.long	3214738415
-	.long	3593250296
-	.long	3217717209
-	.long	3009365544
-	.long	1066902117
-	.long	1127373050
-	.long	1071173457
-	.long	3046103305
-	.long	3213854947
-	.long	24583402
-	.long	3217207636
-	.long	4082511758
-	.long	1065914199
-	.long	3223889699
-	.long	1070020367
-	.long	548927984
-	.long	3212899404
-	.long	558065897
-	.long	3216433066
-	.long	680073315
-	.long	1064940726
-	.long	388873200
-	.long	1068944270
-	.long	3763679576
-	.long	3217651189
-	.long	1497360404
-	.long	3157194195
-	.long	0
-	.long	1072693248
-	.long	64931152
-	.long	1067729411
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1313038235
-	.long	3214229379
-	.long	0
-	.long	0
-	.long	1013878342
-	.long	1067152618
-	.long	0
-	.long	0
-	.long	3663426833
-	.long	3213208931
-	.long	3693284251
-	.long	3216602456
-	.long	650852232
-	.long	1065882376
-	.long	1996245381
-	.long	1071000265
-	.long	2008746170
-	.long	3212147845
-	.long	3055842593
-	.long	3216062494
-	.long	1495406348
-	.long	1064652437
-	.long	2269530157
-	.long	1069711235
-	.long	285563696
-	.long	3211060113
-	.long	1046897440
-	.long	3215189513
-	.long	233429731
-	.long	1063453151
-	.long	522045958
-	.long	1068476590
-	.long	2354785698
-	.long	3216586427
-	.long	1317599141
-	.long	3159915781
-	.long	0
-	.long	1072693248
-	.long	2828230105
-	.long	1065606626
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1841940611
-	.long	1071931184
-	.long	1841940611
-	.long	1076125488
-	.long	0
-	.long	1131937792
-	.long	0
-	.long	1127743488
-	.long	1413758976
-	.long	1069097467
-	.long	1413742592
-	.long	1069097467
-	.long	1734819840
-	.long	3174229945
-	.long	1280049152
-	.long	1028033571
-	.long	923219018
-	.long	984130272
-	.long	57701189
-	.long	988383790
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	1734816687
-	.long	1026746297
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	0
-	.long	4294705152
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	0
-	.long	1130364928
-	.long	0
-	.long	0
-	.long	0
-	.long	1015021568
-	.long	0
-	.long	0
-	.long	0
-	.long	1017118720
-	.long	0
-	.long	0
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1076887552
-	.long	0
-	.long	1072693248
-	.type	static_const_table,@object
-	.size	static_const_table,5872
-	.data
-	.hidden __libm_tancot_huge
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_tanh.S b/libm/x86/s_tanh.S
deleted file mode 100644
index 777519f..0000000
--- a/libm/x86/s_tanh.S
+++ /dev/null
@@ -1,1361 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//         L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
-//                             f=0.b1 b2 ... b8, k integer
-// 2^{-f} is approximated as Tn[f]+Dn[f]
-// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
-//
-//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
-//                      for |x| in [23/64,3*2^7)
-// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
-//
-// For |x| in [2^{-4},2^5):
-//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
-//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
-//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
-//  1+T0+D0+p*(T0+D0)=KH+KL, where
-//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
-//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
-//  eps ~ (R*KH-1)+R*KL
-//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
-//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
-//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
-//    The result is formed as
-//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
-//                                                  set at the end
-//
-// For |x| in [2^{-64},2^{-4}):
-//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
-//
-// For |x|<2^{-64}:  x is returned
-//
-// For |x|>=2^32: return +/-1
-//
-// Special cases:
-//  tanh(NaN) = quiet NaN, and raise invalid exception
-//  tanh(INF) = that INF
-//  tanh(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  tanh
-ENTRY(tanh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     112(%esp), %xmm0
-        movsd     4256(%ebx), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     4112(%ebx), %xmm1
-        movsd     4120(%ebx), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     4096(%ebx), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        movl      $32768, %edx
-        andl      %ecx, %edx
-        andl      $32767, %ecx
-        subl      $16304, %ecx
-        cmpl      $144, %ecx
-        jae       .L_2TAG_PACKET_0.0.2
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        movapd    %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        movsd     4264(%ebx), %xmm4
-        subsd     %xmm6, %xmm3
-        xorpd     %xmm0, %xmm0
-        addsd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm7
-        movapd    4128(%ebx), %xmm6
-        addsd     %xmm7, %xmm2
-        movl      $255, %ecx
-        andl      %eax, %ecx
-        addl      %ecx, %ecx
-        movapd    (%ebx,%ecx,8), %xmm5
-        shrl      $4, %eax
-        andl      $65520, %eax
-        subl      $16368, %eax
-        negl      %eax
-        pinsrw    $3, %eax, %xmm0
-        movapd    4144(%ebx), %xmm1
-        pshufd    $68, %xmm0, %xmm0
-        mulpd     %xmm5, %xmm0
-        movsd     4160(%ebx), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        movapd    %xmm4, %xmm5
-        addsd     %xmm0, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm7
-        mulpd     %xmm2, %xmm2
-        addpd     %xmm6, %xmm1
-        mulsd     %xmm2, %xmm2
-        movsd     4264(%ebx), %xmm3
-        mulpd     %xmm2, %xmm1
-        pshufd    $78, %xmm1, %xmm6
-        addsd     %xmm6, %xmm1
-        movapd    %xmm1, %xmm6
-        addsd     %xmm7, %xmm1
-        mulsd     %xmm0, %xmm1
-        addsd     %xmm4, %xmm1
-        andpd     4224(%ebx), %xmm4
-        divsd     %xmm1, %xmm5
-        subsd     %xmm4, %xmm3
-        pshufd    $238, %xmm0, %xmm1
-        addsd     %xmm0, %xmm3
-        movapd    %xmm4, %xmm2
-        addsd     %xmm1, %xmm3
-        mulsd     %xmm7, %xmm1
-        mulsd     %xmm0, %xmm7
-        addsd     %xmm1, %xmm3
-        addsd     %xmm7, %xmm4
-        movsd     4240(%ebx), %xmm1
-        mulsd     %xmm0, %xmm6
-        andpd     4224(%ebx), %xmm4
-        addsd     %xmm6, %xmm3
-        movapd    %xmm4, %xmm6
-        subsd     %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        movsd     4264(%ebx), %xmm7
-        andpd     %xmm1, %xmm5
-        addsd     %xmm2, %xmm3
-        mulsd     %xmm5, %xmm4
-        xorpd     %xmm2, %xmm2
-        mulsd     %xmm5, %xmm3
-        subsd     4272(%ebx), %xmm6
-        subsd     %xmm7, %xmm4
-        xorl      $32768, %edx
-        pinsrw    $3, %edx, %xmm2
-        addsd     %xmm3, %xmm4
-        mulsd     %xmm5, %xmm6
-        movapd    %xmm3, %xmm1
-        mulsd     %xmm4, %xmm3
-        movapd    %xmm6, %xmm0
-        mulsd     %xmm4, %xmm6
-        subsd     %xmm3, %xmm1
-        subsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
-        addl      $960, %ecx
-        cmpl      $1104, %ecx
-        jae       .L_2TAG_PACKET_2.0.2
-        movapd    4176(%ebx), %xmm2
-        pshufd    $68, %xmm0, %xmm1
-        movapd    4192(%ebx), %xmm3
-        mulpd     %xmm1, %xmm1
-        movapd    4208(%ebx), %xmm4
-        mulpd     %xmm1, %xmm2
-        pshufd    $68, %xmm1, %xmm5
-        addpd     %xmm3, %xmm2
-        mulsd     %xmm5, %xmm5
-        mulpd     %xmm1, %xmm2
-        mulsd     %xmm5, %xmm5
-        addpd     %xmm4, %xmm2
-        mulpd     %xmm5, %xmm2
-        pshufd    $238, %xmm2, %xmm5
-        addsd     %xmm5, %xmm2
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        addl      $15344, %ecx
-        cmpl      $16448, %ecx
-        jae       .L_2TAG_PACKET_3.0.2
-        cmpl      $16, %ecx
-        jb        .L_2TAG_PACKET_4.0.2
-        xorpd     %xmm2, %xmm2
-        movl      $17392, %eax
-        pinsrw    $3, %eax, %xmm2
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm2
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
-        movapd    %xmm0, %xmm2
-        mulsd     %xmm2, %xmm2
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm2, %xmm2
-        movl      $15344, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        movapd    %xmm2, %xmm3
-        mulsd     %xmm2, %xmm2
-        addsd     %xmm3, %xmm2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm0, %xmm0
-        orl       $16368, %edx
-        pinsrw    $3, %edx, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
-        movapd    %xmm0, %xmm2
-        movd      %xmm0, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_6.0.2
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_1.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_7.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(tanh)
-# -- End  tanh
-
-# Start file scope ASM
-ALIAS_SYMBOL(tanhl, tanh);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	1797923801
-	.long	1072687577
-	.long	1950547427
-	.long	1013229059
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	915592468
-	.long	1072676282
-	.long	352947894
-	.long	3161024371
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	35929225
-	.long	1072665048
-	.long	2809788041
-	.long	3159436968
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	2038973688
-	.long	1072653874
-	.long	892941374
-	.long	1016046459
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	1222472308
-	.long	1072642761
-	.long	1054357470
-	.long	3161021018
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	481706282
-	.long	1072631708
-	.long	1696079173
-	.long	3162710528
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	2719515920
-	.long	1072620714
-	.long	2760332941
-	.long	1015137933
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2256325230
-	.long	1072609780
-	.long	580117746
-	.long	1015317295
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	2009970496
-	.long	1072598905
-	.long	2159039665
-	.long	3162572948
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	610758006
-	.long	1072588089
-	.long	1965209397
-	.long	3161866232
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	991358482
-	.long	1072577331
-	.long	838715019
-	.long	3163157668
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	1796832535
-	.long	1072566631
-	.long	3176955716
-	.long	3160585513
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	1679558232
-	.long	1072555989
-	.long	2390342287
-	.long	3163333970
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	3594158869
-	.long	1072545404
-	.long	2456521700
-	.long	3163256561
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	1912561781
-	.long	1072534877
-	.long	3147495102
-	.long	1015678253
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3898795731
-	.long	1072524406
-	.long	1249994144
-	.long	1011869818
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	3939148246
-	.long	1072513992
-	.long	3210352148
-	.long	1015274323
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	721996136
-	.long	1072503635
-	.long	563754734
-	.long	1015371318
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1532734324
-	.long	1072493333
-	.long	3094216535
-	.long	3163162857
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	778901109
-	.long	1072483087
-	.long	2248183955
-	.long	3161268751
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	1464976603
-	.long	1072472896
-	.long	3507292405
-	.long	3161977534
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	2307442995
-	.long	1072462760
-	.long	3190117721
-	.long	3162404539
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	2029714210
-	.long	1072452679
-	.long	613660079
-	.long	1015099143
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3657065772
-	.long	1072442652
-	.long	399025623
-	.long	3162957078
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1631695677
-	.long	1072432680
-	.long	2717633076
-	.long	3162344026
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	3287523847
-	.long	1072422761
-	.long	1625971539
-	.long	3157009955
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	3080351519
-	.long	1072412896
-	.long	3379126788
-	.long	3157218001
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4062661092
-	.long	1072403084
-	.long	1422616006
-	.long	3163255318
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	703710506
-	.long	1072393326
-	.long	1384660846
-	.long	1015195891
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	364333489
-	.long	1072383620
-	.long	3923737744
-	.long	3161421373
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	1822067026
-	.long	1072373966
-	.long	1241994956
-	.long	1015340290
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	3861050111
-	.long	1072364364
-	.long	254893773
-	.long	3162813180
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	977020788
-	.long	1072354815
-	.long	3065100517
-	.long	1015541563
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	557149882
-	.long	1072345317
-	.long	3672720709
-	.long	1014537265
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	1405169241
-	.long	1072335870
-	.long	2998539689
-	.long	3162830951
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2331271250
-	.long	1072326474
-	.long	812057446
-	.long	1012207446
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	2152073944
-	.long	1072317129
-	.long	1486860576
-	.long	3163203456
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	3985553595
-	.long	1072307834
-	.long	4002146062
-	.long	1015834136
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	2366108318
-	.long	1072298590
-	.long	2867985102
-	.long	3161762254
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	424392917
-	.long	1072289396
-	.long	2749202995
-	.long	3162838718
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1297350157
-	.long	1072280251
-	.long	1308022040
-	.long	3163412558
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	3833209506
-	.long	1072271155
-	.long	2722920684
-	.long	1013754842
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	2591453363
-	.long	1072262109
-	.long	2132396182
-	.long	3159074198
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	727685349
-	.long	1072253112
-	.long	2038246809
-	.long	3162358742
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	1403662306
-	.long	1072244163
-	.long	2788809599
-	.long	3161671007
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	3492293770
-	.long	1072235262
-	.long	2248032210
-	.long	1015386826
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	1577608921
-	.long	1072226410
-	.long	1875489510
-	.long	3162968394
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	3134592888
-	.long	1072217605
-	.long	4232266862
-	.long	1015991134
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	2759350287
-	.long	1072208848
-	.long	1148526634
-	.long	1015894933
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	3643909174
-	.long	1072200138
-	.long	3537586109
-	.long	1014354647
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	396319521
-	.long	1072191476
-	.long	4172420816
-	.long	3159074632
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	515457527
-	.long	1072182860
-	.long	836709333
-	.long	1015651226
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	2916157145
-	.long	1072174290
-	.long	219487565
-	.long	1015309367
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	2224145553
-	.long	1072165767
-	.long	3482522030
-	.long	3161489169
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	1660913392
-	.long	1072157290
-	.long	4218599604
-	.long	1015135707
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	158781403
-	.long	1072148859
-	.long	2221464712
-	.long	3163286453
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	950803702
-	.long	1072140473
-	.long	1655364926
-	.long	1015237032
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	2980802057
-	.long	1072132132
-	.long	378619896
-	.long	1015773303
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	903334909
-	.long	1072123837
-	.long	1636462108
-	.long	1015039997
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	2263535754
-	.long	1072115586
-	.long	752233586
-	.long	3162639008
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	1727278727
-	.long	1072107380
-	.long	3562710623
-	.long	1011471940
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	2555984613
-	.long	1072099218
-	.long	2652555442
-	.long	3162552692
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	3721688645
-	.long	1072091100
-	.long	3069276937
-	.long	1015839401
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	4201977662
-	.long	1072083026
-	.long	748330254
-	.long	1013594357
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	2979960120
-	.long	1072074996
-	.long	2599109725
-	.long	1014498493
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	3339203574
-	.long	1072067009
-	.long	1483497780
-	.long	3162408754
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	4273770423
-	.long	1072059065
-	.long	3383180809
-	.long	3163218901
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	488188413
-	.long	1072051165
-	.long	3199821029
-	.long	1015564048
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3872257780
-	.long	1072043306
-	.long	1253592103
-	.long	1015958334
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	551349105
-	.long	1072035491
-	.long	3821916050
-	.long	3162106589
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2425981843
-	.long	1072027717
-	.long	2830390851
-	.long	3163346599
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	4222122499
-	.long	1072019985
-	.long	1277378074
-	.long	3163256737
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	671025100
-	.long	1072012296
-	.long	3832014351
-	.long	3163022030
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	3689071823
-	.long	1072004647
-	.long	2321004996
-	.long	3162552716
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3723038930
-	.long	1071997040
-	.long	378465264
-	.long	3162569582
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	4109806887
-	.long	1071989474
-	.long	422403966
-	.long	1014469229
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	3896463087
-	.long	1071981949
-	.long	1139797873
-	.long	3161233805
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	2135241198
-	.long	1071974465
-	.long	1236747871
-	.long	1013589147
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2178460671
-	.long	1071967021
-	.long	777878098
-	.long	3162842493
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3088564500
-	.long	1071959617
-	.long	1762311517
-	.long	1015045673
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	3933059031
-	.long	1071952253
-	.long	2133366768
-	.long	3161531832
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3784486610
-	.long	1071944929
-	.long	1581883040
-	.long	3161698953
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	1720398391
-	.long	1071937645
-	.long	3980678963
-	.long	3163300080
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1118294578
-	.long	1071930400
-	.long	2197495694
-	.long	3159909401
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	1065662932
-	.long	1071923194
-	.long	2533670915
-	.long	1014530238
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	654919306
-	.long	1071916027
-	.long	3232961757
-	.long	3163047469
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	3278348324
-	.long	1071908898
-	.long	3069497416
-	.long	1014750712
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	3743175029
-	.long	1071901808
-	.long	2072812490
-	.long	3162175075
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	1156440435
-	.long	1071894757
-	.long	2351451249
-	.long	1013967056
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	3219942644
-	.long	1071887743
-	.long	3798990616
-	.long	1015368806
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	460407023
-	.long	1071880768
-	.long	4237175092
-	.long	3163138469
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	589198666
-	.long	1071873830
-	.long	2664346172
-	.long	3163157962
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	2732492859
-	.long	1071866929
-	.long	2691479646
-	.long	3162255684
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	1726216749
-	.long	1071860066
-	.long	2466808228
-	.long	3161676405
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	1000925746
-	.long	1071853240
-	.long	1018491672
-	.long	3163309544
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	3991843581
-	.long	1071846450
-	.long	4092853457
-	.long	1014585763
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	1253935211
-	.long	1071839698
-	.long	1395382931
-	.long	3159702613
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	526652809
-	.long	1071832982
-	.long	4223459736
-	.long	1015879375
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	964107055
-	.long	1071826302
-	.long	2800439588
-	.long	3162833221
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	1724976915
-	.long	1071819658
-	.long	420909223
-	.long	3163117379
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	1972484976
-	.long	1071813050
-	.long	675290301
-	.long	3161640050
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	874372905
-	.long	1071806478
-	.long	100263788
-	.long	1015940732
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1897844341
-	.long	1071799941
-	.long	1254300460
-	.long	1015275938
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	4219606026
-	.long	1071793439
-	.long	2434574742
-	.long	1014681548
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2725843665
-	.long	1071786973
-	.long	1433917087
-	.long	1014838523
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	897099801
-	.long	1071780542
-	.long	754756297
-	.long	1015241005
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	2218315341
-	.long	1071774145
-	.long	2694295388
-	.long	3163288868
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	1588871207
-	.long	1071767783
-	.long	143439582
-	.long	3162963416
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2502433899
-	.long	1071761455
-	.long	2148595913
-	.long	1015023991
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	4162030108
-	.long	1071755161
-	.long	2763428480
-	.long	1015529349
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	1480023343
-	.long	1071748902
-	.long	2247196168
-	.long	1015327453
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	2257959872
-	.long	1071742676
-	.long	3802946148
-	.long	1012964927
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	1416741826
-	.long	1071736484
-	.long	2196380210
-	.long	1011413563
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2471440686
-	.long	1071730325
-	.long	968836267
-	.long	3162214888
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	351405227
-	.long	1071724200
-	.long	3125337328
-	.long	3159822479
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	2875075254
-	.long	1071718107
-	.long	4144233330
-	.long	3163333716
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	685187902
-	.long	1071712048
-	.long	378731989
-	.long	1014843115
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	1608493509
-	.long	1071706021
-	.long	3159622171
-	.long	3162807737
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	590962156
-	.long	1071700027
-	.long	3829346666
-	.long	3163275597
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1172597893
-	.long	1071694065
-	.long	114433263
-	.long	1015347593
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	2602514713
-	.long	1071688135
-	.long	2268929336
-	.long	1014354284
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	4133881824
-	.long	1071682237
-	.long	2148155345
-	.long	3162931299
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	728934454
-	.long	1071676372
-	.long	1413842688
-	.long	1014178612
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	238821257
-	.long	1071670538
-	.long	1469694871
-	.long	3162884987
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	1928746161
-	.long	1071664735
-	.long	983617676
-	.long	1014285177
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	772914124
-	.long	1071658964
-	.long	4004372762
-	.long	1012230161
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	339411585
-	.long	1071653224
-	.long	264588982
-	.long	3161636657
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.long	4200250559
-	.long	1071647514
-	.long	2808127345
-	.long	3161781938
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.long	1610612736
-	.long	1082594631
-	.long	4166901572
-	.long	1055174155
-	.long	3884607281
-	.long	3168131199
-	.long	3607404735
-	.long	3190582024
-	.long	1874480759
-	.long	1032041131
-	.long	4286760334
-	.long	1053736893
-	.long	4277811695
-	.long	3211144770
-	.long	0
-	.long	0
-	.long	236289503
-	.long	1064135997
-	.long	463583772
-	.long	3215696314
-	.long	1441186365
-	.long	3212977891
-	.long	286331153
-	.long	1069617425
-	.long	2284589306
-	.long	1066820852
-	.long	1431655765
-	.long	3218429269
-	.long	0
-	.long	4294967280
-	.long	0
-	.long	4294967280
-	.long	4294705152
-	.long	4294967295
-	.long	4294705152
-	.long	4294967295
-	.long	4160749568
-	.long	2147483647
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	1073741824
-	.type	static_const_table,@object
-	.size	static_const_table,4280
-	.data
-	.section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86_64/e_acos.S b/libm/x86_64/e_acos.S
deleted file mode 100644
index 57c910e..0000000
--- a/libm/x86_64/e_acos.S
+++ /dev/null
@@ -1,1957 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  To compute acos(s), separate schemes are used when s is in different
-//  intervals.
-//
-//  |s| in [2^{-4}, sqrt(3)/2):
-//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-//       acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-//       For the first degree term, r is evaluated as
-//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-//       (sqrt(1-t^2) read from table)
-//  The main source of error is still R (may still be affected by up to 3 ulps
-//  of rounding error). The table size must be sufficiently large, to minimize
-//  this effect.
-//
-//  |s| in [sqrt(3)/2, 255/256):
-//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-//       acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-//   acos(-|s|)=pi-acos(|s|)
-//       (The -PI constant, or 0, is added to the result. The sign is set at
-//        the end)
-//       asin(r) evaluated as a polynomial (same as above)
-//       The first degree term is evaluated as
-//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-//  |s|<2^{-4}: acos(s)=pi/2-asin(s)
-//              evaluate asin(s) as 13-degree polynomial
-//
-//  |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
-//  asin(q) is evaluated as 13-degree polynomial
-//      q^2=(1-|s|)/2 is obtained in advance
-//         2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
-//   acos(-|s|)=pi-acos(|s|)
-//       (The -PI constant, or 0, is added to the result. The sign is set at
-//        the end)
-//
-// Special cases:
-//  acos(NaN) = quiet NaN, and raise invalid exception
-//  acos(INF) = QNaN and raise invalid exception
-//  acos(x) = QNaN and raise invalid exception, for |x|>1.0
-//  acos(1) = +0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  acos
-ENTRY(acos)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_acos.1:
-        subq      $24, %rsp
-..___tag_value_acos.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        movsd     ABSVALMASK(%rip), %xmm4
-        movsd     ONEMASK(%rip), %xmm3
-        xorpd     %xmm5, %xmm5
-        movsd     TMASK(%rip), %xmm2
-        movq      %xmm0, %xmm1
-        psrlq     $44, %xmm0
-        movd      %xmm0, %edx
-        movq      %xmm1, %xmm7
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movq      %xmm1, %xmm0
-        movl      $524287, %eax
-        andl      %edx, %eax
-        subl      $260864, %eax
-        cmpl      $955, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        mulsd     %xmm1, %xmm1
-        andl      $65535, %edx
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andpd     %xmm7, %xmm2
-        andl      $-4, %edx
-        subl      $64256, %edx
-        lea       T_table(%rip), %r8
-        movsd     (%r8,%rdx,2), %xmm1
-        orpd      %xmm5, %xmm2
-        lea       Tbl_addr(%rip), %r8
-        movapd    (%r8,%rdx,4), %xmm4
-        movq      %xmm7, %xmm6
-        addsd     %xmm2, %xmm7
-        subsd     %xmm2, %xmm0
-        mulsd     %xmm0, %xmm7
-        mulsd     %xmm1, %xmm6
-        mulsd     %xmm2, %xmm3
-        movq      %xmm6, %xmm1
-        addsd     %xmm3, %xmm6
-        divsd     %xmm6, %xmm7
-        movsd     24+cv(%rip), %xmm0
-        movsd     8+cv(%rip), %xmm5
-        subsd     %xmm3, %xmm1
-        psrlq     $63, %xmm2
-        movq      %xmm1, %xmm3
-        psllq     $63, %xmm2
-        mulsd     %xmm1, %xmm1
-        pshufd    $68, %xmm2, %xmm2
-        movsd     16+cv(%rip), %xmm6
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm4
-        mulsd     %xmm3, %xmm5
-        subpd     PI_BY_2(%rip), %xmm4
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm3, %xmm0
-        subsd     %xmm4, %xmm5
-        pshufd    $238, %xmm4, %xmm4
-        addsd     %xmm5, %xmm0
-        subsd     %xmm7, %xmm0
-        subsd     %xmm4, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        subl      $955, %eax
-        cmpl      $65, %eax
-        jae       .L_2TAG_PACKET_1.0.2
-        psrlq     $38, %xmm7
-        psllq     $38, %xmm7
-        pmovmskb  %xmm0, %eax
-        andnpd    %xmm0, %xmm4
-        subsd     %xmm7, %xmm1
-        movq      %xmm7, %xmm6
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm6, %xmm0
-        orpd      %xmm4, %xmm5
-        subsd     %xmm7, %xmm3
-        mulsd     %xmm1, %xmm0
-        movq      %xmm3, %xmm4
-        subsd     %xmm0, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andl      $128, %eax
-        shrl      $7, %eax
-        negl      %eax
-        movq      %xmm3, %xmm7
-        andpd     %xmm3, %xmm2
-        psllq     $2, %xmm3
-        pextrw    $3, %xmm3, %edx
-        orpd      %xmm5, %xmm2
-        movd      %eax, %xmm3
-        pshufd    $0, %xmm3, %xmm3
-        subl      $65216, %edx
-        addl      %edx, %edx
-        lea       T_table(%rip), %r8
-        mulsd     (%r8,%rdx,4), %xmm7
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm2, %xmm2
-        subsd     %xmm7, %xmm6
-        andpd     NEG_PI(%rip), %xmm3
-        addsd     %xmm1, %xmm6
-        subsd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm7
-        movsd     8+cv(%rip), %xmm5
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm7
-        movsd     24+cv(%rip), %xmm0
-        divsd     %xmm7, %xmm4
-        movsd     16+cv(%rip), %xmm2
-        lea       Tbl_addr(%rip), %r8
-        addpd     (%r8,%rdx,8), %xmm3
-        movq      %xmm6, %xmm1
-        mulsd     %xmm6, %xmm6
-        mulsd     %xmm6, %xmm0
-        mulsd     %xmm6, %xmm1
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm6, %xmm1
-        addsd     %xmm2, %xmm0
-        pxor      %xmm6, %xmm6
-        mulsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm5
-        addsd     %xmm5, %xmm0
-        andl      $32768, %eax
-        pinsrw    $3, %eax, %xmm6
-        movq      %xmm4, %xmm5
-        pshufd    $238, %xmm3, %xmm3
-        addsd     %xmm3, %xmm4
-        subsd     %xmm4, %xmm3
-        addsd     %xmm3, %xmm5
-        addsd     %xmm5, %xmm0
-        addsd     %xmm4, %xmm0
-        xorpd     %xmm6, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_1.0.2:
-        addl      $15291, %eax
-        cmpl      $14336, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        unpcklpd  %xmm0, %xmm0
-        movapd    cv2(%rip), %xmm6
-        unpcklpd  %xmm0, %xmm1
-        movapd    16+cv2(%rip), %xmm2
-        movapd    32+cv2(%rip), %xmm4
-        mulpd     %xmm0, %xmm0
-        movapd    PI_BY_2(%rip), %xmm5
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm6
-        mulpd     %xmm0, %xmm0
-        movq      %xmm1, %xmm3
-        mulsd     %xmm1, %xmm1
-        addpd     %xmm2, %xmm6
-        mulpd     %xmm0, %xmm4
-        mulsd     %xmm3, %xmm1
-        addpd     %xmm4, %xmm6
-        pshufd    $238, %xmm5, %xmm0
-        mulpd     %xmm6, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        subsd     %xmm7, %xmm0
-        pshufd    $238, %xmm1, %xmm2
-        subsd     %xmm1, %xmm5
-        subsd     %xmm0, %xmm6
-        subsd     %xmm2, %xmm5
-        subsd     %xmm6, %xmm7
-        subsd     %xmm7, %xmm5
-        addsd     %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        subl      $15356, %eax
-        cmpl      $4, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        xorpd     %xmm6, %xmm6
-        andpd     ABSVALMASK(%rip), %xmm7
-        movsd     ONE_BY_2(%rip), %xmm4
-        movapd    cv2(%rip), %xmm1
-        mulsd     %xmm4, %xmm7
-        movapd    16+cv2(%rip), %xmm2
-        subsd     %xmm7, %xmm4
-        movapd    32+cv2(%rip), %xmm3
-        pshufd    $68, %xmm4, %xmm7
-        sqrtsd    %xmm4, %xmm4
-        mulpd     %xmm7, %xmm1
-        pshufd    $68, %xmm7, %xmm5
-        pextrw    $3, %xmm0, %eax
-        mulpd     %xmm7, %xmm7
-        addpd     %xmm1, %xmm2
-        movsd     HALFMASK(%rip), %xmm1
-        mulpd     %xmm7, %xmm3
-        cmpsd     $1, %xmm6, %xmm0
-        mulsd     %xmm5, %xmm7
-        addpd     %xmm3, %xmm2
-        pshufd    $68, %xmm0, %xmm0
-        mulsd     %xmm7, %xmm2
-        andpd     NEG_PI(%rip), %xmm0
-        mulpd     %xmm5, %xmm2
-        andpd     %xmm4, %xmm1
-        pshufd    $68, %xmm4, %xmm3
-        subsd     %xmm1, %xmm4
-        addsd     %xmm3, %xmm3
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm4, %xmm3
-        subsd     %xmm1, %xmm5
-        mulsd     %xmm3, %xmm4
-        pshufd    $238, %xmm3, %xmm3
-        subsd     %xmm4, %xmm5
-        divsd     %xmm3, %xmm5
-        addpd     %xmm3, %xmm3
-        mulpd     %xmm3, %xmm2
-        pshufd    $238, %xmm2, %xmm4
-        addsd     %xmm0, %xmm2
-        andl      $32768, %eax
-        pinsrw    $3, %eax, %xmm6
-        pshufd    $238, %xmm0, %xmm0
-        addsd     %xmm4, %xmm2
-        addsd     %xmm5, %xmm2
-        addsd     %xmm3, %xmm2
-        addsd     %xmm2, %xmm0
-        xorpd     %xmm6, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_3.0.2:
-        addl      $261884, %eax
-        cmpl      $261888, %eax
-        jb        .L_2TAG_PACKET_4.0.2
-        movd      %xmm7, %ecx
-        psrlq     $32, %xmm7
-        movd      %xmm7, %edx
-        andl      $2147483647, %edx
-        movl      $1072693248, %eax
-        subl      %edx, %eax
-        orl       %ecx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_5.0.2
-        movsd     (%rsp), %xmm2
-        movd      %xmm2, %edx
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $2147483647, %ecx
-        subl      $1, %edx
-        sbbl      $2146435072, %ecx
-        cmpl      $0, %ecx
-        jge       .L_2TAG_PACKET_6.0.2
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_5.0.2:
-        pextrw    $1, %xmm7, %edx
-        shrl      $15, %edx
-        negl      %edx
-        movd      %edx, %xmm7
-        pshufd    $0, %xmm7, %xmm7
-        movsd     PI(%rip), %xmm2
-        movsd     8+PI(%rip), %xmm0
-        andpd     %xmm7, %xmm2
-        andpd     %xmm7, %xmm0
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        movsd     PI_BY_2(%rip), %xmm2
-        movsd     8+PI_BY_2(%rip), %xmm0
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm6, %xmm6
-        addsd     %xmm6, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_7.0.2:
-        movq      %xmm0, 8(%rsp)
-..B1.3:
-        movq      8(%rsp), %xmm0
-.L_2TAG_PACKET_8.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_acos.4:
-        ret       
-..___tag_value_acos.5:
-END(acos)
-# -- End  acos
-	.section .rodata, "a"
-	.align 16
-	.align 16
-ABSVALMASK:
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	0
-	.type	ABSVALMASK,@object
-	.size	ABSVALMASK,16
-	.align 16
-T_table:
-	.long	2642784509
-	.long	1072689083
-	.long	1514442531
-	.long	1072688953
-	.long	333108933
-	.long	1072688821
-	.long	3392112024
-	.long	1072688686
-	.long	2099852862
-	.long	1072688550
-	.long	749609004
-	.long	1072688412
-	.long	3634632596
-	.long	1072688271
-	.long	2163248461
-	.long	1072688129
-	.long	628657846
-	.long	1072687985
-	.long	3324036511
-	.long	1072687838
-	.long	1657632815
-	.long	1072687690
-	.long	4217538760
-	.long	1072687539
-	.long	2411951597
-	.long	1072687387
-	.long	533944872
-	.long	1072687233
-	.long	2876566508
-	.long	1072687076
-	.long	847936891
-	.long	1072686918
-	.long	3036019913
-	.long	1072686757
-	.long	848884575
-	.long	1072686595
-	.long	2874443326
-	.long	1072686430
-	.long	520713666
-	.long	1072686264
-	.long	2375556481
-	.long	1072686095
-	.long	4141904948
-	.long	1072685924
-	.long	1522666382
-	.long	1072685752
-	.long	3105624104
-	.long	1072685577
-	.long	298666327
-	.long	1072685401
-	.long	1689524500
-	.long	1072685222
-	.long	2981002200
-	.long	1072685041
-	.long	4170844284
-	.long	1072684858
-	.long	961802263
-	.long	1072684674
-	.long	1941503454
-	.long	1072684487
-	.long	2812647170
-	.long	1072684298
-	.long	3572873869
-	.long	1072684107
-	.long	4219797823
-	.long	1072683914
-	.long	456039788
-	.long	1072683720
-	.long	869096151
-	.long	1072683523
-	.long	1161535119
-	.long	1072683324
-	.long	1330865866
-	.long	1072683123
-	.long	1374571204
-	.long	1072682920
-	.long	1290107538
-	.long	1072682715
-	.long	1074904836
-	.long	1072682508
-	.long	726366587
-	.long	1072682299
-	.long	241869763
-	.long	1072682088
-	.long	3913732079
-	.long	1072681874
-	.long	3149342765
-	.long	1072681659
-	.long	2240966306
-	.long	1072681442
-	.long	1185873216
-	.long	1072681223
-	.long	4276274591
-	.long	1072681001
-	.long	2919452883
-	.long	1072680778
-	.long	1407565635
-	.long	1072680553
-	.long	4032743551
-	.long	1072680325
-	.long	2202188565
-	.long	1072680096
-	.long	207977577
-	.long	1072679865
-	.long	2342160518
-	.long	1072679631
-	.long	11858423
-	.long	1072679396
-	.long	1804034453
-	.long	1072679158
-	.long	3420722787
-	.long	1072678918
-	.long	563930456
-	.long	1072678677
-	.long	1820539192
-	.long	1072678433
-	.long	2892501606
-	.long	1072678187
-	.long	3776710320
-	.long	1072677939
-	.long	175063337
-	.long	1072677690
-	.long	674333171
-	.long	1072677438
-	.long	976363026
-	.long	1072677184
-	.long	1077935934
-	.long	1072676928
-	.long	1921075490
-	.long	1072676540
-	.long	881493302
-	.long	1072676016
-	.long	3275752439
-	.long	1072675483
-	.long	486855588
-	.long	1072674943
-	.long	1077229111
-	.long	1072674394
-	.long	723950308
-	.long	1072673837
-	.long	3693582199
-	.long	1072673271
-	.long	1367335316
-	.long	1072672698
-	.long	2305837020
-	.long	1072672116
-	.long	2184358641
-	.long	1072671526
-	.long	972682840
-	.long	1072670928
-	.long	2935101762
-	.long	1072670321
-	.long	3745513263
-	.long	1072669706
-	.long	3372320886
-	.long	1072669083
-	.long	1783464620
-	.long	1072668452
-	.long	3241386215
-	.long	1072667812
-	.long	3418125284
-	.long	1072667164
-	.long	2280219148
-	.long	1072666508
-	.long	4088700758
-	.long	1072665843
-	.long	219227400
-	.long	1072665171
-	.long	3521816918
-	.long	1072664489
-	.long	1076205279
-	.long	1072663800
-	.long	1436484616
-	.long	1072663102
-	.long	271362610
-	.long	1072662396
-	.long	1838996688
-	.long	1072661681
-	.long	1807122518
-	.long	1072660958
-	.long	137953542
-	.long	1072660227
-	.long	1088178584
-	.long	1072659487
-	.long	324057537
-	.long	1072658739
-	.long	2101288076
-	.long	1072657982
-	.long	2085133974
-	.long	1072657217
-	.long	235324451
-	.long	1072656444
-	.long	806051592
-	.long	1072655662
-	.long	3756033140
-	.long	1072654871
-	.long	453542543
-	.long	1072654073
-	.long	3741177327
-	.long	1072653265
-	.long	691216109
-	.long	1072652450
-	.long	4145223372
-	.long	1072651625
-	.long	1174439091
-	.long	1072650793
-	.long	324416139
-	.long	1072649952
-	.long	1550246310
-	.long	1072649102
-	.long	511524674
-	.long	1072648244
-	.long	1457248482
-	.long	1072647377
-	.long	45944955
-	.long	1072646502
-	.long	525537397
-	.long	1072645618
-	.long	2848440188
-	.long	1072644725
-	.long	2671555633
-	.long	1072643824
-	.long	4241172637
-	.long	1072642914
-	.long	3213094278
-	.long	1072641996
-	.long	3832503688
-	.long	1072641069
-	.long	1754091534
-	.long	1072640134
-	.long	1221921804
-	.long	1072639190
-	.long	2184526489
-	.long	1072638237
-	.long	294902089
-	.long	1072637276
-	.long	4090375270
-	.long	1072636305
-	.long	632860906
-	.long	1072635327
-	.long	2753498702
-	.long	1072634339
-	.long	1808009252
-	.long	1072633343
-	.long	2036428672
-	.long	1072632338
-	.long	3383235626
-	.long	1072631324
-	.long	1497347484
-	.long	1072630302
-	.long	617018317
-	.long	1072629271
-	.long	684933058
-	.long	1072628231
-	.long	1643170798
-	.long	1072627182
-	.long	3011066360
-	.long	1072625592
-	.long	957158713
-	.long	1072623442
-	.long	1390907941
-	.long	1072621256
-	.long	3819155270
-	.long	1072619034
-	.long	3443571196
-	.long	1072616777
-	.long	4045412458
-	.long	1072614484
-	.long	805503923
-	.long	1072612156
-	.long	1778922015
-	.long	1072609791
-	.long	2125033665
-	.long	1072607390
-	.long	1287203863
-	.long	1072604953
-	.long	2992629568
-	.long	1072602479
-	.long	2367267127
-	.long	1072599969
-	.long	3115526047
-	.long	1072597422
-	.long	340219539
-	.long	1072594839
-	.long	2017215719
-	.long	1072592218
-	.long	3225443424
-	.long	1072589560
-	.long	3326565673
-	.long	1072586865
-	.long	1669811211
-	.long	1072584133
-	.long	1886735022
-	.long	1072581363
-	.long	3301071171
-	.long	1072578555
-	.long	928514283
-	.long	1072575710
-	.long	2656364059
-	.long	1072572826
-	.long	3473490507
-	.long	1072569904
-	.long	2649965606
-	.long	1072566944
-	.long	3736819052
-	.long	1072563945
-	.long	1680885175
-	.long	1072560908
-	.long	4413771
-	.long	1072557832
-	.long	2214869753
-	.long	1072554716
-	.long	3214725184
-	.long	1072551561
-	.long	2186079903
-	.long	1072548367
-	.long	2590372131
-	.long	1072545133
-	.long	3578146079
-	.long	1072541859
-	.long	4283712755
-	.long	1072538545
-	.long	3824834510
-	.long	1072535191
-	.long	1302400298
-	.long	1072531797
-	.long	95058636
-	.long	1072528362
-	.long	3563906063
-	.long	1072524885
-	.long	2167230730
-	.long	1072521368
-	.long	3524918334
-	.long	1072517809
-	.long	2353304918
-	.long	1072514209
-	.long	1939625839
-	.long	1072510567
-	.long	1256714581
-	.long	1072506883
-	.long	3552525848
-	.long	1072503156
-	.long	3464809522
-	.long	1072499387
-	.long	4200542593
-	.long	1072495575
-	.long	355609124
-	.long	1072491721
-	.long	3684139099
-	.long	1072487822
-	.long	148355918
-	.long	1072483881
-	.long	1457689242
-	.long	1072479895
-	.long	2118591596
-	.long	1072475865
-	.long	908848089
-	.long	1072471791
-	.long	877032689
-	.long	1072467672
-	.long	752012304
-	.long	1072463508
-	.long	3532301749
-	.long	1072459298
-	.long	3600563221
-	.long	1072455043
-	.long	3902857084
-	.long	1072450742
-	.long	3063101036
-	.long	1072446395
-	.long	3972344374
-	.long	1072442001
-	.long	903183549
-	.long	1072437561
-	.long	983892938
-	.long	1072433073
-	.long	2722858568
-	.long	1072428537
-	.long	302790515
-	.long	1072423954
-	.long	759811057
-	.long	1072419322
-	.long	2507809922
-	.long	1072414641
-	.long	2388408813
-	.long	1072407528
-	.long	2084492942
-	.long	1072397870
-	.long	2435703301
-	.long	1072388010
-	.long	1935433360
-	.long	1072377945
-	.long	2742047290
-	.long	1072367671
-	.long	2053284205
-	.long	1072357185
-	.long	657783367
-	.long	1072346483
-	.long	2893664841
-	.long	1072335560
-	.long	3718906405
-	.long	1072324413
-	.long	1547896303
-	.long	1072313038
-	.long	2494058440
-	.long	1072301429
-	.long	3133238742
-	.long	1072289582
-	.long	3327000086
-	.long	1072277492
-	.long	1860667274
-	.long	1072265154
-	.long	665340747
-	.long	1072252562
-	.long	443347841
-	.long	1072239710
-	.long	581282618
-	.long	1072226592
-	.long	3349780465
-	.long	1072213201
-	.long	914217606
-	.long	1072199532
-	.long	989797661
-	.long	1072185576
-	.long	945436416
-	.long	1072171326
-	.long	549291300
-	.long	1072156774
-	.long	1814636389
-	.long	1072141911
-	.long	239092858
-	.long	1072126729
-	.long	1794680724
-	.long	1072111217
-	.long	1241534678
-	.long	1072095366
-	.long	3366566214
-	.long	1072079164
-	.long	1244090828
-	.long	1072062601
-	.long	1708448120
-	.long	1072045663
-	.long	3544260650
-	.long	1072028337
-	.long	1402741403
-	.long	1072010610
-	.long	2551936888
-	.long	1071992465
-	.long	617669739
-	.long	1071973887
-	.long	794002186
-	.long	1071954857
-	.long	2021237693
-	.long	1071935356
-	.long	540450384
-	.long	1071915364
-	.long	1920555537
-	.long	1071894857
-	.long	2879585206
-	.long	1071873811
-	.long	3000237455
-	.long	1071852199
-	.long	3352974346
-	.long	1071829991
-	.long	569629937
-	.long	1071807155
-	.long	2077237208
-	.long	1071783653
-	.long	2284891805
-	.long	1071759446
-	.long	1226651784
-	.long	1071734489
-	.long	1102047405
-	.long	1071708731
-	.long	2009896384
-	.long	1071682115
-	.long	927419082
-	.long	1071654577
-	.long	85010366
-	.long	1071607413
-	.long	696431025
-	.long	1071548180
-	.long	2611410541
-	.long	1071486585
-	.long	2612593658
-	.long	1071422396
-	.long	3548155306
-	.long	1071355336
-	.long	3887997484
-	.long	1071285073
-	.long	244854763
-	.long	1071211202
-	.long	4214445648
-	.long	1071133216
-	.long	2303966727
-	.long	1071050478
-	.long	3991040013
-	.long	1070962152
-	.long	3126952278
-	.long	1070867118
-	.long	1817448378
-	.long	1070763804
-	.long	1793814864
-	.long	1070649884
-	.long	3507224072
-	.long	1070447193
-	.long	4027609105
-	.long	1070148772
-	.long	577507993
-	.long	1069779414
-	.long	2310232419
-	.long	1068931829
-	.type	T_table,@object
-	.size	T_table,2048
-	.align 16
-Tbl_addr:
-	.long	3822952792
-	.long	1021639372
-	.long	182792448
-	.long	1068507836
-	.long	2264213271
-	.long	1019558908
-	.long	649052928
-	.long	1068524253
-	.long	1797139609
-	.long	1022295143
-	.long	1243095296
-	.long	1068540671
-	.long	1415938756
-	.long	1021439537
-	.long	2033294592
-	.long	1068557090
-	.long	2356809978
-	.long	1021777916
-	.long	3088063744
-	.long	1068573510
-	.long	2669055318
-	.long	1022124482
-	.long	180888576
-	.long	1068589932
-	.long	3566445325
-	.long	1021358712
-	.long	1970196992
-	.long	1068606354
-	.long	896980323
-	.long	1021319659
-	.long	4229555456
-	.long	1068622777
-	.long	436049712
-	.long	1021319758
-	.long	2732572160
-	.long	1068639202
-	.long	583123209
-	.long	1020797960
-	.long	1842831872
-	.long	1068655628
-	.long	1370449804
-	.long	1021429270
-	.long	1628994560
-	.long	1068672055
-	.long	2411391464
-	.long	1021057980
-	.long	2159763712
-	.long	1068688483
-	.long	1208692749
-	.long	1021943903
-	.long	3503886336
-	.long	1068704912
-	.long	538793309
-	.long	1019744063
-	.long	1435187200
-	.long	1068721343
-	.long	4085087612
-	.long	1020608419
-	.long	317469952
-	.long	1068737775
-	.long	144386942
-	.long	1021440732
-	.long	219617280
-	.long	1068754208
-	.long	2940088361
-	.long	1019981122
-	.long	1210558208
-	.long	1068770642
-	.long	2176850347
-	.long	1018373705
-	.long	3359268352
-	.long	1068787077
-	.long	2395611454
-	.long	1021889042
-	.long	2439803648
-	.long	1068803514
-	.long	1650705253
-	.long	1020227966
-	.long	2816203520
-	.long	1068819952
-	.long	3702166386
-	.long	1019379914
-	.long	262620672
-	.long	1068836392
-	.long	1855649370
-	.long	1020453124
-	.long	3438159616
-	.long	1068852832
-	.long	923063860
-	.long	1019273834
-	.long	3822105856
-	.long	1068869274
-	.long	4289947947
-	.long	1019434249
-	.long	1483729920
-	.long	1068885718
-	.long	787455814
-	.long	1020738379
-	.long	787321088
-	.long	1068902163
-	.long	3321653337
-	.long	1021842569
-	.long	1802253312
-	.long	1068918609
-	.long	2653633526
-	.long	1021821525
-	.long	302985984
-	.long	1068935057
-	.long	161272028
-	.long	1021655149
-	.long	653966080
-	.long	1068951506
-	.long	2566098667
-	.long	1020066219
-	.long	2924727296
-	.long	1068967956
-	.long	3646493722
-	.long	1014292285
-	.long	2889890304
-	.long	1068984408
-	.long	1081009196
-	.long	1022189620
-	.long	619098112
-	.long	1069000862
-	.long	4011643355
-	.long	1021773297
-	.long	477017600
-	.long	1069017317
-	.long	4030305534
-	.long	1021292252
-	.long	2533403904
-	.long	1069033773
-	.long	2645187591
-	.long	1019527099
-	.long	2563102208
-	.long	1069050231
-	.long	3857293792
-	.long	1022311697
-	.long	635982336
-	.long	1069066691
-	.long	3625936637
-	.long	1017511744
-	.long	1116940800
-	.long	1069083152
-	.long	3653872993
-	.long	1022016631
-	.long	4075964160
-	.long	1069099614
-	.long	2468900271
-	.long	1021769532
-	.long	993165568
-	.long	1069116079
-	.long	1358104224
-	.long	1021199776
-	.long	528586752
-	.long	1069132545
-	.long	2200950332
-	.long	1022024872
-	.long	2752395776
-	.long	1069149012
-	.long	3197072454
-	.long	1017751319
-	.long	3439855616
-	.long	1069165481
-	.long	1651081806
-	.long	1020809338
-	.long	2661257728
-	.long	1069181952
-	.long	539032752
-	.long	1021728805
-	.long	486957312
-	.long	1069198425
-	.long	3136045149
-	.long	1016888671
-	.long	1282340352
-	.long	1069214899
-	.long	2593963259
-	.long	1018956103
-	.long	822921728
-	.long	1069231375
-	.long	2146032737
-	.long	1022306465
-	.long	3474216192
-	.long	1069247852
-	.long	3976811625
-	.long	1021350207
-	.long	716902656
-	.long	1069264332
-	.long	718267222
-	.long	1018624727
-	.long	1211594496
-	.long	1069280813
-	.long	1485641389
-	.long	1018447451
-	.long	734070272
-	.long	1069297296
-	.long	354455128
-	.long	1021341291
-	.long	3650110720
-	.long	1069313780
-	.long	682185947
-	.long	1021651853
-	.long	1440663040
-	.long	1069330267
-	.long	3558574550
-	.long	1021615110
-	.long	2766612224
-	.long	1069346755
-	.long	874607978
-	.long	1017746872
-	.long	3404011008
-	.long	1069363245
-	.long	4154988502
-	.long	1021439906
-	.long	3423949056
-	.long	1069379737
-	.long	2263202309
-	.long	1021479615
-	.long	2897587712
-	.long	1069396231
-	.long	2562065031
-	.long	1022090363
-	.long	1896159232
-	.long	1069412727
-	.long	3836237663
-	.long	1019867288
-	.long	490968576
-	.long	1069429225
-	.long	3322056743
-	.long	1006752762
-	.long	3048360192
-	.long	1069445724
-	.long	1152314833
-	.long	1013122252
-	.long	1049850624
-	.long	1069462226
-	.long	3601590727
-	.long	1022214610
-	.long	3156899584
-	.long	1069478729
-	.long	1855169970
-	.long	1019487271
-	.long	851173376
-	.long	1069495235
-	.long	312649594
-	.long	1020868604
-	.long	2794281728
-	.long	1069511742
-	.long	1093490181
-	.long	1020777577
-	.long	468042496
-	.long	1069528252
-	.long	1152540679
-	.long	1021403732
-	.long	2534219264
-	.long	1069544763
-	.long	2292126035
-	.long	1021872430
-	.long	1376146432
-	.long	1069558527
-	.long	3293753641
-	.long	1020500454
-	.long	4175442432
-	.long	1069575044
-	.long	3626347564
-	.long	1021610969
-	.long	3523113472
-	.long	1069591566
-	.long	339956500
-	.long	1021119039
-	.long	4003350528
-	.long	1069608092
-	.long	3429333082
-	.long	1022813542
-	.long	1611067392
-	.long	1069624623
-	.long	2298017544
-	.long	1021977587
-	.long	931782144
-	.long	1069641158
-	.long	2164684743
-	.long	1021250988
-	.long	2256725504
-	.long	1069657697
-	.long	1138762335
-	.long	1021443776
-	.long	1582853120
-	.long	1069674241
-	.long	1084010382
-	.long	1022994693
-	.long	3497758720
-	.long	1069690789
-	.long	406366244
-	.long	1022713586
-	.long	3999816960
-	.long	1069707342
-	.long	1488723042
-	.long	1023381290
-	.long	3383096064
-	.long	1069723900
-	.long	2541558953
-	.long	1019137887
-	.long	1942403584
-	.long	1069740463
-	.long	1879620343
-	.long	1022653642
-	.long	4268263680
-	.long	1069757030
-	.long	3039077047
-	.long	1022252545
-	.long	2067062272
-	.long	1069773603
-	.long	4190670677
-	.long	1020725863
-	.long	4225828096
-	.long	1069790180
-	.long	1998567321
-	.long	1022014385
-	.long	2452507136
-	.long	1069806763
-	.long	1511628873
-	.long	1021900300
-	.long	1340746240
-	.long	1069823351
-	.long	788367341
-	.long	1022726208
-	.long	1190035456
-	.long	1069839944
-	.long	3856337230
-	.long	1021834118
-	.long	2300688384
-	.long	1069856542
-	.long	3211396579
-	.long	1022621365
-	.long	678886400
-	.long	1069873146
-	.long	4001011887
-	.long	1022042646
-	.long	921594112
-	.long	1069889755
-	.long	557811968
-	.long	1023065533
-	.long	3331668992
-	.long	1069906369
-	.long	1877060679
-	.long	1022419742
-	.long	3917875200
-	.long	1069922989
-	.long	1181055171
-	.long	1022752712
-	.long	2984829696
-	.long	1069939615
-	.long	4294526932
-	.long	1021499988
-	.long	838049024
-	.long	1069956247
-	.long	3658081878
-	.long	1022957952
-	.long	2078928384
-	.long	1069972884
-	.long	820353701
-	.long	1019391107
-	.long	2719854336
-	.long	1069989527
-	.long	1644022489
-	.long	1023378240
-	.long	3069117696
-	.long	1070006176
-	.long	2771393702
-	.long	1019319954
-	.long	3435962368
-	.long	1070022831
-	.long	3876394145
-	.long	1023024433
-	.long	4130595328
-	.long	1070039492
-	.long	1630447748
-	.long	1021465882
-	.long	1169236224
-	.long	1070056160
-	.long	2828355997
-	.long	1020458120
-	.long	3453997312
-	.long	1070072833
-	.long	164091641
-	.long	1020388279
-	.long	2708127744
-	.long	1070089513
-	.long	3036550223
-	.long	1023328684
-	.long	3540797696
-	.long	1070106199
-	.long	3710949463
-	.long	1022568805
-	.long	1972276736
-	.long	1070122892
-	.long	3885277950
-	.long	1019761674
-	.long	2613815552
-	.long	1070139591
-	.long	2764165077
-	.long	1022921023
-	.long	1487791616
-	.long	1070156297
-	.long	1330644769
-	.long	1023162679
-	.long	3207593472
-	.long	1070173009
-	.long	3911007221
-	.long	1022993496
-	.long	3797764608
-	.long	1070189728
-	.long	979712598
-	.long	1022554580
-	.long	3578920448
-	.long	1070206454
-	.long	2825738223
-	.long	1020223708
-	.long	2872795648
-	.long	1070223187
-	.long	392451124
-	.long	1022666279
-	.long	2002258432
-	.long	1070239927
-	.long	3730407632
-	.long	1023148291
-	.long	1291326464
-	.long	1070256674
-	.long	3723802980
-	.long	1022514089
-	.long	1065180928
-	.long	1070273428
-	.long	2635617463
-	.long	1022654470
-	.long	1650181632
-	.long	1070290189
-	.long	2061982883
-	.long	1022853411
-	.long	3373882880
-	.long	1070306957
-	.long	319732785
-	.long	1022017175
-	.long	2270081280
-	.long	1070323733
-	.long	2237757411
-	.long	1023064087
-	.long	2963732736
-	.long	1070340516
-	.long	468839165
-	.long	1023293774
-	.long	1491099904
-	.long	1070357307
-	.long	1502657946
-	.long	1021533479
-	.long	2479636480
-	.long	1070374105
-	.long	482913562
-	.long	1021986286
-	.long	1968133632
-	.long	1070390911
-	.long	3281474337
-	.long	1022646400
-	.long	291639040
-	.long	1070407725
-	.long	2453320259
-	.long	1022812423
-	.long	2081472512
-	.long	1070424546
-	.long	2939989570
-	.long	1023091888
-	.long	3380340480
-	.long	1070441375
-	.long	2850707499
-	.long	1021921109
-	.long	232287488
-	.long	1070458213
-	.long	3674625342
-	.long	1020725130
-	.long	1567614208
-	.long	1070475058
-	.long	9347334
-	.long	1022024009
-	.long	3433091072
-	.long	1070491911
-	.long	282524999
-	.long	1021433523
-	.long	1876877312
-	.long	1070508773
-	.long	3470449440
-	.long	1019309721
-	.long	1538472192
-	.long	1070525643
-	.long	2089486825
-	.long	1019698916
-	.long	2763830784
-	.long	1070542521
-	.long	443498115
-	.long	1020505194
-	.long	1605381632
-	.long	1070559408
-	.long	3018871601
-	.long	1022869913
-	.long	2706946048
-	.long	1070576303
-	.long	3936260892
-	.long	1023175875
-	.long	2123887360
-	.long	1070593207
-	.long	2994220655
-	.long	1022825948
-	.long	104015104
-	.long	1070603108
-	.long	335054493
-	.long	1023441853
-	.long	2904568832
-	.long	1070615800
-	.long	1451215633
-	.long	1023853857
-	.long	3456197120
-	.long	1070632739
-	.long	436334733
-	.long	1024026432
-	.long	252452352
-	.long	1070649697
-	.long	34596167
-	.long	1024031396
-	.long	3328018432
-	.long	1070666672
-	.long	2644547073
-	.long	1024296758
-	.long	1255829248
-	.long	1070683667
-	.long	552832586
-	.long	1023763122
-	.long	4097058560
-	.long	1070700680
-	.long	1955640623
-	.long	1021394654
-	.long	451770112
-	.long	1070717714
-	.long	3428903777
-	.long	1022941142
-	.long	408920832
-	.long	1070734767
-	.long	165503263
-	.long	1023894958
-	.long	1186960640
-	.long	1070751840
-	.long	435826450
-	.long	1024026134
-	.long	19078656
-	.long	1070768934
-	.long	1834169749
-	.long	1022899284
-	.long	2743490304
-	.long	1070786048
-	.long	494581074
-	.long	1018818479
-	.long	2328961024
-	.long	1070803184
-	.long	2987908834
-	.long	1022581110
-	.long	350011392
-	.long	1070820342
-	.long	240771184
-	.long	1024143083
-	.long	2692326912
-	.long	1070837521
-	.long	666056837
-	.long	1022394776
-	.long	2373274368
-	.long	1070854723
-	.long	2484337770
-	.long	1024228156
-	.long	1017131520
-	.long	1070871948
-	.long	3285648279
-	.long	1024025789
-	.long	265558272
-	.long	1070889196
-	.long	392241896
-	.long	1024252809
-	.long	1778008064
-	.long	1070906467
-	.long	1536107943
-	.long	1023949300
-	.long	2937184768
-	.long	1070923762
-	.long	3541062251
-	.long	1019448646
-	.long	1144442880
-	.long	1070941082
-	.long	3691683781
-	.long	1022123948
-	.long	2410165504
-	.long	1070958426
-	.long	1804181960
-	.long	1023945221
-	.long	4174350848
-	.long	1070975795
-	.long	2016094861
-	.long	1021716585
-	.long	3897012480
-	.long	1070993190
-	.long	175294410
-	.long	1023703404
-	.long	3353623040
-	.long	1071010611
-	.long	167973242
-	.long	1023240839
-	.long	45671168
-	.long	1071028059
-	.long	2166856113
-	.long	1021565413
-	.long	86063872
-	.long	1071045533
-	.long	2676254727
-	.long	1023985299
-	.long	1019772672
-	.long	1071063034
-	.long	989043593
-	.long	1021549587
-	.long	414297344
-	.long	1071080563
-	.long	3960972046
-	.long	1024307251
-	.long	155173120
-	.long	1071098120
-	.long	1830919291
-	.long	1021592251
-	.long	2151562240
-	.long	1071115705
-	.long	405408666
-	.long	1023423128
-	.long	4041854720
-	.long	1071133319
-	.long	2043497827
-	.long	1024411503
-	.long	3489224192
-	.long	1071150963
-	.long	3072215864
-	.long	1022698635
-	.long	2477196288
-	.long	1071168637
-	.long	1812195139
-	.long	1022689192
-	.long	3015298816
-	.long	1071186341
-	.long	764841969
-	.long	1021027331
-	.long	2844731136
-	.long	1071204076
-	.long	2878117321
-	.long	1019116513
-	.long	4028950528
-	.long	1071221842
-	.long	698911452
-	.long	1023265602
-	.long	69441536
-	.long	1071239641
-	.long	3253467847
-	.long	1020795075
-	.long	1676209920
-	.long	1071257471
-	.long	4272431167
-	.long	1022873982
-	.long	2408752384
-	.long	1071275334
-	.long	648519100
-	.long	1024385717
-	.long	151623680
-	.long	1071293231
-	.long	345257017
-	.long	1019561408
-	.long	1410154240
-	.long	1071311161
-	.long	197863993
-	.long	1023224207
-	.long	4131351552
-	.long	1071329125
-	.long	2620801789
-	.long	1024411169
-	.long	1999664384
-	.long	1071347125
-	.long	3952692616
-	.long	1024168086
-	.long	1617668864
-	.long	1071365160
-	.long	3019889809
-	.long	1021907692
-	.long	1032074240
-	.long	1071383231
-	.long	59469899
-	.long	1023656194
-	.long	2619492096
-	.long	1071401338
-	.long	1417526820
-	.long	1021457783
-	.long	202429440
-	.long	1071419483
-	.long	2927667935
-	.long	1019175447
-	.long	525044224
-	.long	1071437665
-	.long	38166811
-	.long	1023981879
-	.long	1779258880
-	.long	1071455885
-	.long	481252500
-	.long	1023310234
-	.long	2195673600
-	.long	1071474144
-	.long	3962395981
-	.long	1021339088
-	.long	44573696
-	.long	1071492443
-	.long	3936281395
-	.long	1023014829
-	.long	2226905344
-	.long	1071510781
-	.long	1515320476
-	.long	1024320623
-	.long	2800512512
-	.long	1071529160
-	.long	1225403697
-	.long	1021081846
-	.long	161113600
-	.long	1071547581
-	.long	3064809733
-	.long	1024173917
-	.long	1338410240
-	.long	1071566043
-	.long	2027604973
-	.long	1024362526
-	.long	522433280
-	.long	1071584548
-	.long	2055171723
-	.long	1023858825
-	.long	539595776
-	.long	1071603096
-	.long	3868820135
-	.long	1022936424
-	.long	4264017664
-	.long	1071621687
-	.long	3228065145
-	.long	1023479578
-	.long	1733924096
-	.long	1071640324
-	.long	3511934475
-	.long	1022496355
-	.long	108880384
-	.long	1071651839
-	.long	615880967
-	.long	1023519706
-	.long	3517856512
-	.long	1071661202
-	.long	3113108559
-	.long	1025190289
-	.long	4043153152
-	.long	1071670589
-	.long	1571836218
-	.long	1023106116
-	.long	3251299072
-	.long	1071680000
-	.long	3444076102
-	.long	1022187841
-	.long	2736921600
-	.long	1071689435
-	.long	272771483
-	.long	1025095280
-	.long	3897698560
-	.long	1071703633
-	.long	2075390188
-	.long	1022489022
-	.long	3209485056
-	.long	1071722652
-	.long	1438094065
-	.long	1021844944
-	.long	3781432064
-	.long	1071741774
-	.long	1675017145
-	.long	1024143828
-	.long	2684184064
-	.long	1071761003
-	.long	2259963753
-	.long	1024731393
-	.long	1840489728
-	.long	1071780342
-	.long	3372883597
-	.long	1023431408
-	.long	3764087808
-	.long	1071799794
-	.long	3307523102
-	.long	1024485788
-	.long	3006232320
-	.long	1071819364
-	.long	3088971966
-	.long	1025213251
-	.long	3374881280
-	.long	1071839055
-	.long	834437749
-	.long	1025236452
-	.long	797284864
-	.long	1071858872
-	.long	3122663941
-	.long	1025320473
-	.long	545765120
-	.long	1071878818
-	.long	826539625
-	.long	1022450955
-	.long	107562240
-	.long	1071898898
-	.long	339584600
-	.long	1022481255
-	.long	2123649024
-	.long	1071919116
-	.long	3912959833
-	.long	1024321009
-	.long	1562385664
-	.long	1071939478
-	.long	2846067230
-	.long	1023343981
-	.long	2963085824
-	.long	1071959988
-	.long	954548627
-	.long	1021475211
-	.long	3325550592
-	.long	1071980652
-	.long	3459651155
-	.long	1025305573
-	.long	775752448
-	.long	1072001476
-	.long	3582746667
-	.long	1023859460
-	.long	3238590720
-	.long	1072022464
-	.long	634636162
-	.long	1024472353
-	.long	2758801920
-	.long	1072043624
-	.long	3078216319
-	.long	1025304516
-	.long	1370319104
-	.long	1072064962
-	.long	2570569078
-	.long	1025099442
-	.long	2615805184
-	.long	1072086484
-	.long	3729933412
-	.long	1024605112
-	.long	3077336576
-	.long	1072108198
-	.long	1948916066
-	.long	1024781603
-	.long	1099528192
-	.long	1072130112
-	.long	3139143157
-	.long	1023729360
-	.long	1231903232
-	.long	1072152233
-	.long	1349513477
-	.long	1024737515
-	.long	1507504128
-	.long	1072174570
-	.long	3484516322
-	.long	1024000959
-	.long	2214659840
-	.long	1072197132
-	.long	2563820917
-	.long	1025225535
-	.long	1804739840
-	.long	1072219929
-	.long	760038746
-	.long	1024482855
-	.long	1413746688
-	.long	1072242971
-	.long	3401734714
-	.long	1025129838
-	.long	821409536
-	.long	1072266269
-	.long	3729772551
-	.long	1025484796
-	.long	3031825664
-	.long	1072289834
-	.long	122256749
-	.long	1024752594
-	.long	1710784256
-	.long	1072313680
-	.long	1518205483
-	.long	1024724809
-	.long	3025265152
-	.long	1072337819
-	.long	409951989
-	.long	1022835555
-	.long	287769088
-	.long	1072362267
-	.long	800355594
-	.long	1022484850
-	.long	198179840
-	.long	1072387038
-	.long	3502926213
-	.long	1024209373
-	.long	1909130496
-	.long	1072412149
-	.long	3064694319
-	.long	1025380823
-	.long	1941732096
-	.long	1072437619
-	.long	4112930390
-	.long	1024294679
-	.long	3492010496
-	.long	1072463467
-	.long	2684918107
-	.long	1023220233
-	.long	81959680
-	.long	1072489716
-	.long	220021366
-	.long	1020635131
-	.long	2297837056
-	.long	1072516387
-	.long	4027683826
-	.long	1021041185
-	.long	270404096
-	.long	1072543508
-	.long	2012766065
-	.long	1021780753
-	.long	3667376896
-	.long	1072571105
-	.long	2727981522
-	.long	1023009874
-	.long	330400256
-	.long	1072599212
-	.long	2940017003
-	.long	1025393439
-	.long	1119293952
-	.long	1072627861
-	.long	1608550416
-	.long	1022675612
-	.long	3536155904
-	.long	1072657091
-	.long	349665778
-	.long	1025156751
-	.long	3078046720
-	.long	1072686946
-	.long	2016159996
-	.long	1022193169
-	.long	455228416
-	.long	1072705361
-	.long	1908539328
-	.long	1026126332
-	.long	1871505664
-	.long	1072720988
-	.long	2784700894
-	.long	1025922277
-	.long	1630994432
-	.long	1072737010
-	.long	361107678
-	.long	1022887244
-	.long	2084558336
-	.long	1072753462
-	.type	Tbl_addr,@object
-	.size	Tbl_addr,3840
-	.space 768, 0x00 	# pad
-	.align 16
-cv:
-	.long	0
-	.long	0
-	.long	1431655765
-	.long	3217380693
-	.long	858993459
-	.long	3216192307
-	.long	3067833783
-	.long	3215383405
-	.type	cv,@object
-	.size	cv,32
-	.align 16
-PI_BY_2:
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.type	PI_BY_2,@object
-	.size	PI_BY_2,16
-	.align 16
-NEG_PI:
-	.long	856972295
-	.long	3164710438
-	.long	1413754136
-	.long	3221823995
-	.type	NEG_PI,@object
-	.size	NEG_PI,16
-	.align 16
-cv2:
-	.long	780903145
-	.long	1066854586
-	.long	858993459
-	.long	1068708659
-	.long	3340530119
-	.long	1067392113
-	.long	1431655765
-	.long	1069897045
-	.long	1321528399
-	.long	1066517740
-	.long	3067833783
-	.long	1067899757
-	.long	2021159460
-	.long	1065855096
-	.long	2576980378
-	.long	1066178969
-	.type	cv2,@object
-	.size	cv2,64
-	.align 16
-HALFMASK:
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.type	HALFMASK,@object
-	.size	HALFMASK,16
-	.align 16
-PI:
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	1074340347
-	.type	PI,@object
-	.size	PI,16
-	.align 4
-ONEMASK:
-	.long	0
-	.long	1072693248
-	.type	ONEMASK,@object
-	.size	ONEMASK,8
-	.align 4
-TMASK:
-	.long	0
-	.long	4294950912
-	.type	TMASK,@object
-	.size	TMASK,8
-	.align 4
-ONE_BY_2:
-	.long	0
-	.long	1071644672
-	.type	ONE_BY_2,@object
-	.size	ONE_BY_2,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_acos.1-.
-	.4byte ..___tag_value_acos.5-..___tag_value_acos.1
-	.2byte 0x0400
-	.4byte ..___tag_value_acos.3-..___tag_value_acos.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_acos.4-..___tag_value_acos.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_asin.S b/libm/x86_64/e_asin.S
deleted file mode 100644
index 4242543..0000000
--- a/libm/x86_64/e_asin.S
+++ /dev/null
@@ -1,2036 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  To compute asin(s), separate schemes are used when s is in different
-//  intervals.
-//
-//  |s| in [2^{-4}, sqrt(3)/2):
-//       Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-//       asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-//       asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-//       For the first degree term, r is evaluated as
-//                R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-//       (sqrt(1-t^2) read from table)
-//  The main source of error is still R (may still be affected by up to 3 ulps
-//  of rounding error). The table size must be sufficiently large, to minimize
-//  this effect.
-//
-//  |s| in [sqrt(3)/2, 255/256):
-//       Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-//       asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-//       asin(r) evaluated as polynomial (same as above)
-//       The first degree term is evaluated as
-//                        r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-//  |s|<2^{-4}: evaluate as 13-degree polynomial
-//
-//  |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
-//         use 17-degree polynomial, get error term
-//         Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
-//                 ( Q(1+eps)=sqrt(1-s^2) )
-//
-// Special cases:
-//  asin(NaN) = quiet NaN, and raise invalid exception
-//  asin(INF) = QNaN and raise invalid exception
-//  asin(x) = QNaN and raise invalid exception, for |x|>1.0
-//  asin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  asin
-ENTRY(asin)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_asin.1:
-        subq      $24, %rsp
-..___tag_value_asin.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        stmxcsr   16(%rsp)
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        jne       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        movsd     ABSVALMASK(%rip), %xmm4
-        movsd     ONEMASK(%rip), %xmm3
-        xorpd     %xmm5, %xmm5
-        movsd     TMASK(%rip), %xmm2
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movq      %xmm0, %xmm1
-        psrlq     $44, %xmm0
-        movd      %xmm0, %edx
-        movq      %xmm1, %xmm7
-        movl      $8192, %ecx
-        pinsrw    $2, %ecx, %xmm5
-        movq      %xmm1, %xmm0
-        movl      $524287, %eax
-        andl      %edx, %eax
-        subl      $260864, %eax
-        cmpl      $955, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        mulsd     %xmm1, %xmm1
-        andl      $65535, %edx
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        andpd     %xmm7, %xmm2
-        andl      $-4, %edx
-        subl      $64256, %edx
-        lea       T_table(%rip), %r8
-        movsd     (%r8,%rdx,2), %xmm1
-        orpd      %xmm5, %xmm2
-        lea       Tbl_addr(%rip), %r8
-        movapd    (%r8,%rdx,4), %xmm4
-        movq      %xmm7, %xmm6
-        addsd     %xmm2, %xmm7
-        subsd     %xmm2, %xmm0
-        mulsd     %xmm7, %xmm0
-        mulsd     %xmm1, %xmm6
-        mulsd     %xmm2, %xmm3
-        movq      %xmm6, %xmm1
-        addsd     %xmm3, %xmm6
-        divsd     %xmm6, %xmm0
-        movsd     16+cv(%rip), %xmm7
-        movsd     cv(%rip), %xmm5
-        subsd     %xmm3, %xmm1
-        andpd     SIGNMASK(%rip), %xmm2
-        movq      %xmm1, %xmm3
-        mulsd     %xmm1, %xmm1
-        movsd     8+cv(%rip), %xmm6
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm1, %xmm7
-        mulsd     %xmm3, %xmm5
-        xorpd     %xmm2, %xmm4
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm7, %xmm6
-        mulsd     %xmm3, %xmm6
-        addsd     %xmm4, %xmm5
-        pshufd    $238, %xmm4, %xmm4
-        addsd     %xmm5, %xmm6
-        orpd      %xmm2, %xmm4
-        addsd     %xmm6, %xmm0
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_3.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_3.0.2:
-        addsd     %xmm4, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        subl      $955, %eax
-        cmpl      $67, %eax
-        jae       .L_2TAG_PACKET_4.0.2
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        movl      %edx, %eax
-        andpd     ABSVALMASK(%rip), %xmm0
-        andpd     HALFMASK2(%rip), %xmm7
-        movq      %xmm0, %xmm1
-        movsd     ONEMASK(%rip), %xmm4
-        movq      %xmm7, %xmm6
-        subsd     %xmm7, %xmm1
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm6, %xmm0
-        subsd     %xmm7, %xmm4
-        mulsd     %xmm1, %xmm0
-        movq      %xmm3, %xmm7
-        andpd     %xmm3, %xmm2
-        psllq     $2, %xmm3
-        pextrw    $3, %xmm3, %edx
-        orpd      %xmm5, %xmm2
-        subl      $65216, %edx
-        addl      %edx, %edx
-        lea       T_table(%rip), %r8
-        mulsd     (%r8,%rdx,4), %xmm7
-        mulsd     %xmm2, %xmm6
-        movapd    PI_BY_2(%rip), %xmm3
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm2, %xmm2
-        subsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm6
-        subsd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm7
-        movsd     cv(%rip), %xmm5
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm7
-        movsd     16+cv(%rip), %xmm0
-        divsd     %xmm7, %xmm4
-        movsd     8+cv(%rip), %xmm2
-        lea       Tbl_addr(%rip), %r8
-        subpd     (%r8,%rdx,8), %xmm3
-        movq      %xmm6, %xmm1
-        mulsd     %xmm6, %xmm6
-        andl      $524288, %eax
-        shrl      $4, %eax
-        mulsd     %xmm6, %xmm0
-        mulsd     %xmm6, %xmm1
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm6, %xmm1
-        addsd     %xmm2, %xmm0
-        pxor      %xmm6, %xmm6
-        mulsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm5
-        pinsrw    $3, %eax, %xmm6
-        addsd     %xmm5, %xmm0
-        movq      %xmm4, %xmm5
-        pshufd    $238, %xmm3, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm3
-        subsd     %xmm3, %xmm5
-        subsd     %xmm5, %xmm0
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_5.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_5.0.2:
-        xorpd     %xmm6, %xmm0
-        xorpd     %xmm6, %xmm4
-        subsd     %xmm4, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        addl      $15291, %eax
-        cmpl      $14336, %eax
-        jae       .L_2TAG_PACKET_6.0.2
-        unpcklpd  %xmm7, %xmm7
-        movapd    cv2(%rip), %xmm1
-        movapd    %xmm7, %xmm6
-        movapd    16+cv2(%rip), %xmm2
-        movapd    32+cv2(%rip), %xmm4
-        mulpd     %xmm7, %xmm7
-        mulpd     %xmm7, %xmm6
-        mulpd     %xmm7, %xmm1
-        mulpd     %xmm7, %xmm7
-        movq      %xmm6, %xmm3
-        mulsd     %xmm6, %xmm6
-        addpd     %xmm2, %xmm1
-        mulpd     %xmm7, %xmm4
-        mulsd     %xmm3, %xmm6
-        addpd     %xmm4, %xmm1
-        mulpd     %xmm6, %xmm1
-        pshufd    $238, %xmm1, %xmm2
-        addsd     %xmm2, %xmm1
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_7.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_7.0.2:
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        subl      $15358, %eax
-        cmpl      $2, %eax
-        jae       .L_2TAG_PACKET_8.0.2
-        mulsd     %xmm1, %xmm1
-        subsd     %xmm1, %xmm3
-        sqrtsd    %xmm3, %xmm3
-        movl      %edx, %eax
-        andpd     HALFMASK(%rip), %xmm7
-        pshufd    $68, %xmm3, %xmm5
-        andpd     HALFMASK(%rip), %xmm3
-        movq      %xmm7, %xmm1
-        movsd     ONEMASK(%rip), %xmm4
-        movq      %xmm7, %xmm6
-        subsd     %xmm7, %xmm0
-        mulsd     %xmm7, %xmm7
-        addsd     %xmm1, %xmm1
-        mulsd     %xmm0, %xmm1
-        subsd     %xmm7, %xmm4
-        movq      %xmm3, %xmm6
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm0, %xmm0
-        subsd     %xmm1, %xmm4
-        subsd     %xmm5, %xmm6
-        addsd     %xmm5, %xmm5
-        subsd     %xmm3, %xmm4
-        movapd    cv2(%rip), %xmm2
-        pshufd    $238, %xmm5, %xmm3
-        subsd     %xmm0, %xmm4
-        addsd     %xmm6, %xmm5
-        pshufd    $238, %xmm3, %xmm7
-        addsd     %xmm3, %xmm3
-        mulsd     %xmm6, %xmm5
-        addsd     %xmm5, %xmm4
-        pshufd    $238, %xmm7, %xmm6
-        divsd     %xmm3, %xmm4
-        movapd    48+cv2(%rip), %xmm1
-        movapd    16+cv2(%rip), %xmm5
-        movapd    32+cv2(%rip), %xmm0
-        mulpd     %xmm7, %xmm7
-        movq      %xmm6, %xmm3
-        mulpd     %xmm7, %xmm2
-        mulpd     %xmm7, %xmm6
-        shrl      $4, %eax
-        andl      $32768, %eax
-        mulsd     %xmm7, %xmm1
-        mulpd     %xmm7, %xmm7
-        addpd     %xmm2, %xmm5
-        movapd    %xmm6, %xmm2
-        mulsd     %xmm6, %xmm6
-        mulpd     %xmm0, %xmm7
-        movapd    PI_BY_2(%rip), %xmm0
-        mulsd     %xmm6, %xmm2
-        addpd     %xmm5, %xmm7
-        pshufd    $238, %xmm1, %xmm5
-        mulsd     %xmm2, %xmm6
-        mulpd     %xmm2, %xmm7
-        addsd     %xmm5, %xmm1
-        xorpd     %xmm5, %xmm5
-        pshufd    $238, %xmm7, %xmm2
-        mulsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm2, %xmm7
-        movq      %xmm3, %xmm2
-        pinsrw    $3, %eax, %xmm5
-        subsd     %xmm6, %xmm3
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm6
-        addsd     %xmm4, %xmm7
-        subsd     %xmm6, %xmm2
-        subsd     %xmm7, %xmm0
-        subsd     %xmm2, %xmm0
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_9.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_9.0.2:
-        xorpd     %xmm5, %xmm0
-        xorpd     %xmm5, %xmm3
-        subsd     %xmm3, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_8.0.2:
-        addl      $261886, %eax
-        cmpl      $261888, %eax
-        jb        .L_2TAG_PACKET_10.0.2
-        movd      %xmm0, %ecx
-        psrlq     $32, %xmm0
-        movd      %xmm0, %edx
-        andl      $2147483647, %edx
-        movl      $1072693248, %eax
-        subl      %edx, %eax
-        orl       %ecx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_11.0.2
-        movsd     (%rsp), %xmm2
-        movd      %xmm2, %edx
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $2147483647, %ecx
-        subl      $1, %edx
-        sbbl      $2146435072, %ecx
-        cmpl      $0, %ecx
-        jge       .L_2TAG_PACKET_10.0.2
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_11.0.2:
-        movsd     ABSVALMASK(%rip), %xmm1
-        movsd     PI_BY_2(%rip), %xmm2
-        movsd     8+PI_BY_2(%rip), %xmm0
-        addsd     %xmm2, %xmm0
-        andnpd    %xmm7, %xmm1
-        orpd      %xmm1, %xmm0
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_13.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_13.0.2:
-        jmp       ..B1.5
-.L_2TAG_PACKET_10.0.2:
-        movsd     (%rsp), %xmm0
-        xorpd     %xmm6, %xmm6
-        movq      %xmm0, %xmm7
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_14.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_14.0.2:
-        pextrw    $3, %xmm0, %edx
-        andl      $32752, %edx
-        subl      $16, %edx
-        cmpl      $32736, %edx
-        jb        .L_2TAG_PACKET_15.0.2
-        addsd     %xmm0, %xmm6
-        orpd      %xmm6, %xmm0
-        mulsd     %xmm0, %xmm7
-.L_2TAG_PACKET_15.0.2:
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        movl      %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_12.0.2:
-        movl      16(%rsp), %eax
-        andl      $-24577, %eax
-        cmpl      16(%rsp), %eax
-        je        .L_2TAG_PACKET_16.0.2
-        stmxcsr   20(%rsp)
-        movl      16(%rsp), %eax
-        andl      $24576, %eax
-        orl       %eax, 20(%rsp)
-        ldmxcsr   20(%rsp)
-.L_2TAG_PACKET_16.0.2:
-        movq      %xmm0, 8(%rsp)
-..B1.3:
-        movq      8(%rsp), %xmm0
-.L_2TAG_PACKET_17.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_asin.4:
-        ret       
-..___tag_value_asin.5:
-END(asin)
-# -- End  asin
-	.section .rodata, "a"
-	.align 16
-	.align 16
-ABSVALMASK:
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	0
-	.type	ABSVALMASK,@object
-	.size	ABSVALMASK,16
-	.align 16
-T_table:
-	.long	2642784509
-	.long	1072689083
-	.long	1514442531
-	.long	1072688953
-	.long	333108933
-	.long	1072688821
-	.long	3392112024
-	.long	1072688686
-	.long	2099852862
-	.long	1072688550
-	.long	749609004
-	.long	1072688412
-	.long	3634632596
-	.long	1072688271
-	.long	2163248461
-	.long	1072688129
-	.long	628657846
-	.long	1072687985
-	.long	3324036511
-	.long	1072687838
-	.long	1657632815
-	.long	1072687690
-	.long	4217538760
-	.long	1072687539
-	.long	2411951597
-	.long	1072687387
-	.long	533944872
-	.long	1072687233
-	.long	2876566508
-	.long	1072687076
-	.long	847936891
-	.long	1072686918
-	.long	3036019913
-	.long	1072686757
-	.long	848884575
-	.long	1072686595
-	.long	2874443326
-	.long	1072686430
-	.long	520713666
-	.long	1072686264
-	.long	2375556481
-	.long	1072686095
-	.long	4141904948
-	.long	1072685924
-	.long	1522666382
-	.long	1072685752
-	.long	3105624104
-	.long	1072685577
-	.long	298666327
-	.long	1072685401
-	.long	1689524500
-	.long	1072685222
-	.long	2981002200
-	.long	1072685041
-	.long	4170844284
-	.long	1072684858
-	.long	961802263
-	.long	1072684674
-	.long	1941503454
-	.long	1072684487
-	.long	2812647170
-	.long	1072684298
-	.long	3572873869
-	.long	1072684107
-	.long	4219797823
-	.long	1072683914
-	.long	456039788
-	.long	1072683720
-	.long	869096151
-	.long	1072683523
-	.long	1161535119
-	.long	1072683324
-	.long	1330865866
-	.long	1072683123
-	.long	1374571204
-	.long	1072682920
-	.long	1290107538
-	.long	1072682715
-	.long	1074904836
-	.long	1072682508
-	.long	726366587
-	.long	1072682299
-	.long	241869763
-	.long	1072682088
-	.long	3913732079
-	.long	1072681874
-	.long	3149342765
-	.long	1072681659
-	.long	2240966306
-	.long	1072681442
-	.long	1185873216
-	.long	1072681223
-	.long	4276274591
-	.long	1072681001
-	.long	2919452883
-	.long	1072680778
-	.long	1407565635
-	.long	1072680553
-	.long	4032743551
-	.long	1072680325
-	.long	2202188565
-	.long	1072680096
-	.long	207977577
-	.long	1072679865
-	.long	2342160518
-	.long	1072679631
-	.long	11858423
-	.long	1072679396
-	.long	1804034453
-	.long	1072679158
-	.long	3420722787
-	.long	1072678918
-	.long	563930456
-	.long	1072678677
-	.long	1820539192
-	.long	1072678433
-	.long	2892501606
-	.long	1072678187
-	.long	3776710320
-	.long	1072677939
-	.long	175063337
-	.long	1072677690
-	.long	674333171
-	.long	1072677438
-	.long	976363026
-	.long	1072677184
-	.long	1077935934
-	.long	1072676928
-	.long	1921075490
-	.long	1072676540
-	.long	881493302
-	.long	1072676016
-	.long	3275752439
-	.long	1072675483
-	.long	486855588
-	.long	1072674943
-	.long	1077229111
-	.long	1072674394
-	.long	723950308
-	.long	1072673837
-	.long	3693582199
-	.long	1072673271
-	.long	1367335316
-	.long	1072672698
-	.long	2305837020
-	.long	1072672116
-	.long	2184358641
-	.long	1072671526
-	.long	972682840
-	.long	1072670928
-	.long	2935101762
-	.long	1072670321
-	.long	3745513263
-	.long	1072669706
-	.long	3372320886
-	.long	1072669083
-	.long	1783464620
-	.long	1072668452
-	.long	3241386215
-	.long	1072667812
-	.long	3418125284
-	.long	1072667164
-	.long	2280219148
-	.long	1072666508
-	.long	4088700758
-	.long	1072665843
-	.long	219227400
-	.long	1072665171
-	.long	3521816918
-	.long	1072664489
-	.long	1076205279
-	.long	1072663800
-	.long	1436484616
-	.long	1072663102
-	.long	271362610
-	.long	1072662396
-	.long	1838996688
-	.long	1072661681
-	.long	1807122518
-	.long	1072660958
-	.long	137953542
-	.long	1072660227
-	.long	1088178584
-	.long	1072659487
-	.long	324057537
-	.long	1072658739
-	.long	2101288076
-	.long	1072657982
-	.long	2085133974
-	.long	1072657217
-	.long	235324451
-	.long	1072656444
-	.long	806051592
-	.long	1072655662
-	.long	3756033140
-	.long	1072654871
-	.long	453542543
-	.long	1072654073
-	.long	3741177327
-	.long	1072653265
-	.long	691216109
-	.long	1072652450
-	.long	4145223372
-	.long	1072651625
-	.long	1174439091
-	.long	1072650793
-	.long	324416139
-	.long	1072649952
-	.long	1550246310
-	.long	1072649102
-	.long	511524674
-	.long	1072648244
-	.long	1457248482
-	.long	1072647377
-	.long	45944955
-	.long	1072646502
-	.long	525537397
-	.long	1072645618
-	.long	2848440188
-	.long	1072644725
-	.long	2671555633
-	.long	1072643824
-	.long	4241172637
-	.long	1072642914
-	.long	3213094278
-	.long	1072641996
-	.long	3832503688
-	.long	1072641069
-	.long	1754091534
-	.long	1072640134
-	.long	1221921804
-	.long	1072639190
-	.long	2184526489
-	.long	1072638237
-	.long	294902089
-	.long	1072637276
-	.long	4090375270
-	.long	1072636305
-	.long	632860906
-	.long	1072635327
-	.long	2753498702
-	.long	1072634339
-	.long	1808009252
-	.long	1072633343
-	.long	2036428672
-	.long	1072632338
-	.long	3383235626
-	.long	1072631324
-	.long	1497347484
-	.long	1072630302
-	.long	617018317
-	.long	1072629271
-	.long	684933058
-	.long	1072628231
-	.long	1643170798
-	.long	1072627182
-	.long	3011066360
-	.long	1072625592
-	.long	957158713
-	.long	1072623442
-	.long	1390907941
-	.long	1072621256
-	.long	3819155270
-	.long	1072619034
-	.long	3443571196
-	.long	1072616777
-	.long	4045412458
-	.long	1072614484
-	.long	805503923
-	.long	1072612156
-	.long	1778922015
-	.long	1072609791
-	.long	2125033665
-	.long	1072607390
-	.long	1287203863
-	.long	1072604953
-	.long	2992629568
-	.long	1072602479
-	.long	2367267127
-	.long	1072599969
-	.long	3115526047
-	.long	1072597422
-	.long	340219539
-	.long	1072594839
-	.long	2017215719
-	.long	1072592218
-	.long	3225443424
-	.long	1072589560
-	.long	3326565673
-	.long	1072586865
-	.long	1669811211
-	.long	1072584133
-	.long	1886735022
-	.long	1072581363
-	.long	3301071171
-	.long	1072578555
-	.long	928514283
-	.long	1072575710
-	.long	2656364059
-	.long	1072572826
-	.long	3473490507
-	.long	1072569904
-	.long	2649965606
-	.long	1072566944
-	.long	3736819052
-	.long	1072563945
-	.long	1680885175
-	.long	1072560908
-	.long	4413771
-	.long	1072557832
-	.long	2214869753
-	.long	1072554716
-	.long	3214725184
-	.long	1072551561
-	.long	2186079903
-	.long	1072548367
-	.long	2590372131
-	.long	1072545133
-	.long	3578146079
-	.long	1072541859
-	.long	4283712755
-	.long	1072538545
-	.long	3824834510
-	.long	1072535191
-	.long	1302400298
-	.long	1072531797
-	.long	95058636
-	.long	1072528362
-	.long	3563906063
-	.long	1072524885
-	.long	2167230730
-	.long	1072521368
-	.long	3524918334
-	.long	1072517809
-	.long	2353304918
-	.long	1072514209
-	.long	1939625839
-	.long	1072510567
-	.long	1256714581
-	.long	1072506883
-	.long	3552525848
-	.long	1072503156
-	.long	3464809522
-	.long	1072499387
-	.long	4200542593
-	.long	1072495575
-	.long	355609124
-	.long	1072491721
-	.long	3684139099
-	.long	1072487822
-	.long	148355918
-	.long	1072483881
-	.long	1457689242
-	.long	1072479895
-	.long	2118591596
-	.long	1072475865
-	.long	908848089
-	.long	1072471791
-	.long	877032689
-	.long	1072467672
-	.long	752012304
-	.long	1072463508
-	.long	3532301749
-	.long	1072459298
-	.long	3600563221
-	.long	1072455043
-	.long	3902857084
-	.long	1072450742
-	.long	3063101036
-	.long	1072446395
-	.long	3972344374
-	.long	1072442001
-	.long	903183549
-	.long	1072437561
-	.long	983892938
-	.long	1072433073
-	.long	2722858568
-	.long	1072428537
-	.long	302790515
-	.long	1072423954
-	.long	759811057
-	.long	1072419322
-	.long	2507809922
-	.long	1072414641
-	.long	2388408813
-	.long	1072407528
-	.long	2084492942
-	.long	1072397870
-	.long	2435703301
-	.long	1072388010
-	.long	1935433360
-	.long	1072377945
-	.long	2742047290
-	.long	1072367671
-	.long	2053284205
-	.long	1072357185
-	.long	657783367
-	.long	1072346483
-	.long	2893664841
-	.long	1072335560
-	.long	3718906405
-	.long	1072324413
-	.long	1547896303
-	.long	1072313038
-	.long	2494058440
-	.long	1072301429
-	.long	3133238742
-	.long	1072289582
-	.long	3327000086
-	.long	1072277492
-	.long	1860667274
-	.long	1072265154
-	.long	665340747
-	.long	1072252562
-	.long	443347841
-	.long	1072239710
-	.long	581282618
-	.long	1072226592
-	.long	3349780465
-	.long	1072213201
-	.long	914217606
-	.long	1072199532
-	.long	989797661
-	.long	1072185576
-	.long	945436416
-	.long	1072171326
-	.long	549291300
-	.long	1072156774
-	.long	1814636389
-	.long	1072141911
-	.long	239092858
-	.long	1072126729
-	.long	1794680724
-	.long	1072111217
-	.long	1241534678
-	.long	1072095366
-	.long	3366566214
-	.long	1072079164
-	.long	1244090828
-	.long	1072062601
-	.long	1708448120
-	.long	1072045663
-	.long	3544260650
-	.long	1072028337
-	.long	1402741403
-	.long	1072010610
-	.long	2551936888
-	.long	1071992465
-	.long	617669739
-	.long	1071973887
-	.long	794002186
-	.long	1071954857
-	.long	2021237693
-	.long	1071935356
-	.long	540450384
-	.long	1071915364
-	.long	1920555537
-	.long	1071894857
-	.long	2879585206
-	.long	1071873811
-	.long	3000237455
-	.long	1071852199
-	.long	3352974346
-	.long	1071829991
-	.long	569629937
-	.long	1071807155
-	.long	2077237208
-	.long	1071783653
-	.long	2284891805
-	.long	1071759446
-	.long	1226651784
-	.long	1071734489
-	.long	1102047405
-	.long	1071708731
-	.long	2009896384
-	.long	1071682115
-	.long	927419082
-	.long	1071654577
-	.long	85010366
-	.long	1071607413
-	.long	696431025
-	.long	1071548180
-	.long	2611410541
-	.long	1071486585
-	.long	2612593658
-	.long	1071422396
-	.long	3548155306
-	.long	1071355336
-	.long	3887997484
-	.long	1071285073
-	.long	244854763
-	.long	1071211202
-	.long	4214445648
-	.long	1071133216
-	.long	2303966727
-	.long	1071050478
-	.long	3991040013
-	.long	1070962152
-	.long	3126952278
-	.long	1070867118
-	.long	1817448378
-	.long	1070763804
-	.long	1793814864
-	.long	1070649884
-	.long	3507224072
-	.long	1070447193
-	.long	4027609105
-	.long	1070148772
-	.long	577507993
-	.long	1069779414
-	.long	2310232419
-	.long	1068931829
-	.type	T_table,@object
-	.size	T_table,2048
-	.align 16
-Tbl_addr:
-	.long	3822952792
-	.long	1021639372
-	.long	182792448
-	.long	1068507836
-	.long	2264213271
-	.long	1019558908
-	.long	649052928
-	.long	1068524253
-	.long	1797139609
-	.long	1022295143
-	.long	1243095296
-	.long	1068540671
-	.long	1415938756
-	.long	1021439537
-	.long	2033294592
-	.long	1068557090
-	.long	2356809978
-	.long	1021777916
-	.long	3088063744
-	.long	1068573510
-	.long	2669055318
-	.long	1022124482
-	.long	180888576
-	.long	1068589932
-	.long	3566445325
-	.long	1021358712
-	.long	1970196992
-	.long	1068606354
-	.long	896980323
-	.long	1021319659
-	.long	4229555456
-	.long	1068622777
-	.long	436049712
-	.long	1021319758
-	.long	2732572160
-	.long	1068639202
-	.long	583123209
-	.long	1020797960
-	.long	1842831872
-	.long	1068655628
-	.long	1370449804
-	.long	1021429270
-	.long	1628994560
-	.long	1068672055
-	.long	2411391464
-	.long	1021057980
-	.long	2159763712
-	.long	1068688483
-	.long	1208692749
-	.long	1021943903
-	.long	3503886336
-	.long	1068704912
-	.long	538793309
-	.long	1019744063
-	.long	1435187200
-	.long	1068721343
-	.long	4085087612
-	.long	1020608419
-	.long	317469952
-	.long	1068737775
-	.long	144386942
-	.long	1021440732
-	.long	219617280
-	.long	1068754208
-	.long	2940088361
-	.long	1019981122
-	.long	1210558208
-	.long	1068770642
-	.long	2176850347
-	.long	1018373705
-	.long	3359268352
-	.long	1068787077
-	.long	2395611454
-	.long	1021889042
-	.long	2439803648
-	.long	1068803514
-	.long	1650705253
-	.long	1020227966
-	.long	2816203520
-	.long	1068819952
-	.long	3702166386
-	.long	1019379914
-	.long	262620672
-	.long	1068836392
-	.long	1855649370
-	.long	1020453124
-	.long	3438159616
-	.long	1068852832
-	.long	923063860
-	.long	1019273834
-	.long	3822105856
-	.long	1068869274
-	.long	4289947947
-	.long	1019434249
-	.long	1483729920
-	.long	1068885718
-	.long	787455814
-	.long	1020738379
-	.long	787321088
-	.long	1068902163
-	.long	3321653337
-	.long	1021842569
-	.long	1802253312
-	.long	1068918609
-	.long	2653633526
-	.long	1021821525
-	.long	302985984
-	.long	1068935057
-	.long	161272028
-	.long	1021655149
-	.long	653966080
-	.long	1068951506
-	.long	2566098667
-	.long	1020066219
-	.long	2924727296
-	.long	1068967956
-	.long	3646493722
-	.long	1014292285
-	.long	2889890304
-	.long	1068984408
-	.long	1081009196
-	.long	1022189620
-	.long	619098112
-	.long	1069000862
-	.long	4011643355
-	.long	1021773297
-	.long	477017600
-	.long	1069017317
-	.long	4030305534
-	.long	1021292252
-	.long	2533403904
-	.long	1069033773
-	.long	2645187591
-	.long	1019527099
-	.long	2563102208
-	.long	1069050231
-	.long	3857293792
-	.long	1022311697
-	.long	635982336
-	.long	1069066691
-	.long	3625936637
-	.long	1017511744
-	.long	1116940800
-	.long	1069083152
-	.long	3653872993
-	.long	1022016631
-	.long	4075964160
-	.long	1069099614
-	.long	2468900271
-	.long	1021769532
-	.long	993165568
-	.long	1069116079
-	.long	1358104224
-	.long	1021199776
-	.long	528586752
-	.long	1069132545
-	.long	2200950332
-	.long	1022024872
-	.long	2752395776
-	.long	1069149012
-	.long	3197072454
-	.long	1017751319
-	.long	3439855616
-	.long	1069165481
-	.long	1651081806
-	.long	1020809338
-	.long	2661257728
-	.long	1069181952
-	.long	539032752
-	.long	1021728805
-	.long	486957312
-	.long	1069198425
-	.long	3136045149
-	.long	1016888671
-	.long	1282340352
-	.long	1069214899
-	.long	2593963259
-	.long	1018956103
-	.long	822921728
-	.long	1069231375
-	.long	2146032737
-	.long	1022306465
-	.long	3474216192
-	.long	1069247852
-	.long	3976811625
-	.long	1021350207
-	.long	716902656
-	.long	1069264332
-	.long	718267222
-	.long	1018624727
-	.long	1211594496
-	.long	1069280813
-	.long	1485641389
-	.long	1018447451
-	.long	734070272
-	.long	1069297296
-	.long	354455128
-	.long	1021341291
-	.long	3650110720
-	.long	1069313780
-	.long	682185947
-	.long	1021651853
-	.long	1440663040
-	.long	1069330267
-	.long	3558574550
-	.long	1021615110
-	.long	2766612224
-	.long	1069346755
-	.long	874607978
-	.long	1017746872
-	.long	3404011008
-	.long	1069363245
-	.long	4154988502
-	.long	1021439906
-	.long	3423949056
-	.long	1069379737
-	.long	2263202309
-	.long	1021479615
-	.long	2897587712
-	.long	1069396231
-	.long	2562065031
-	.long	1022090363
-	.long	1896159232
-	.long	1069412727
-	.long	3836237663
-	.long	1019867288
-	.long	490968576
-	.long	1069429225
-	.long	3322056743
-	.long	1006752762
-	.long	3048360192
-	.long	1069445724
-	.long	1152314833
-	.long	1013122252
-	.long	1049850624
-	.long	1069462226
-	.long	3601590727
-	.long	1022214610
-	.long	3156899584
-	.long	1069478729
-	.long	1855169970
-	.long	1019487271
-	.long	851173376
-	.long	1069495235
-	.long	312649594
-	.long	1020868604
-	.long	2794281728
-	.long	1069511742
-	.long	1093490181
-	.long	1020777577
-	.long	468042496
-	.long	1069528252
-	.long	1152540679
-	.long	1021403732
-	.long	2534219264
-	.long	1069544763
-	.long	2292126035
-	.long	1021872430
-	.long	1376146432
-	.long	1069558527
-	.long	3293753641
-	.long	1020500454
-	.long	4175442432
-	.long	1069575044
-	.long	3626347564
-	.long	1021610969
-	.long	3523113472
-	.long	1069591566
-	.long	339956500
-	.long	1021119039
-	.long	4003350528
-	.long	1069608092
-	.long	3429333082
-	.long	1022813542
-	.long	1611067392
-	.long	1069624623
-	.long	2298017544
-	.long	1021977587
-	.long	931782144
-	.long	1069641158
-	.long	2164684743
-	.long	1021250988
-	.long	2256725504
-	.long	1069657697
-	.long	1138762335
-	.long	1021443776
-	.long	1582853120
-	.long	1069674241
-	.long	1084010382
-	.long	1022994693
-	.long	3497758720
-	.long	1069690789
-	.long	406366244
-	.long	1022713586
-	.long	3999816960
-	.long	1069707342
-	.long	1488723042
-	.long	1023381290
-	.long	3383096064
-	.long	1069723900
-	.long	2541558953
-	.long	1019137887
-	.long	1942403584
-	.long	1069740463
-	.long	1879620343
-	.long	1022653642
-	.long	4268263680
-	.long	1069757030
-	.long	3039077047
-	.long	1022252545
-	.long	2067062272
-	.long	1069773603
-	.long	4190670677
-	.long	1020725863
-	.long	4225828096
-	.long	1069790180
-	.long	1998567321
-	.long	1022014385
-	.long	2452507136
-	.long	1069806763
-	.long	1511628873
-	.long	1021900300
-	.long	1340746240
-	.long	1069823351
-	.long	788367341
-	.long	1022726208
-	.long	1190035456
-	.long	1069839944
-	.long	3856337230
-	.long	1021834118
-	.long	2300688384
-	.long	1069856542
-	.long	3211396579
-	.long	1022621365
-	.long	678886400
-	.long	1069873146
-	.long	4001011887
-	.long	1022042646
-	.long	921594112
-	.long	1069889755
-	.long	557811968
-	.long	1023065533
-	.long	3331668992
-	.long	1069906369
-	.long	1877060679
-	.long	1022419742
-	.long	3917875200
-	.long	1069922989
-	.long	1181055171
-	.long	1022752712
-	.long	2984829696
-	.long	1069939615
-	.long	4294526932
-	.long	1021499988
-	.long	838049024
-	.long	1069956247
-	.long	3658081878
-	.long	1022957952
-	.long	2078928384
-	.long	1069972884
-	.long	820353701
-	.long	1019391107
-	.long	2719854336
-	.long	1069989527
-	.long	1644022489
-	.long	1023378240
-	.long	3069117696
-	.long	1070006176
-	.long	2771393702
-	.long	1019319954
-	.long	3435962368
-	.long	1070022831
-	.long	3876394145
-	.long	1023024433
-	.long	4130595328
-	.long	1070039492
-	.long	1630447748
-	.long	1021465882
-	.long	1169236224
-	.long	1070056160
-	.long	2828355997
-	.long	1020458120
-	.long	3453997312
-	.long	1070072833
-	.long	164091641
-	.long	1020388279
-	.long	2708127744
-	.long	1070089513
-	.long	3036550223
-	.long	1023328684
-	.long	3540797696
-	.long	1070106199
-	.long	3710949463
-	.long	1022568805
-	.long	1972276736
-	.long	1070122892
-	.long	3885277950
-	.long	1019761674
-	.long	2613815552
-	.long	1070139591
-	.long	2764165077
-	.long	1022921023
-	.long	1487791616
-	.long	1070156297
-	.long	1330644769
-	.long	1023162679
-	.long	3207593472
-	.long	1070173009
-	.long	3911007221
-	.long	1022993496
-	.long	3797764608
-	.long	1070189728
-	.long	979712598
-	.long	1022554580
-	.long	3578920448
-	.long	1070206454
-	.long	2825738223
-	.long	1020223708
-	.long	2872795648
-	.long	1070223187
-	.long	392451124
-	.long	1022666279
-	.long	2002258432
-	.long	1070239927
-	.long	3730407632
-	.long	1023148291
-	.long	1291326464
-	.long	1070256674
-	.long	3723802980
-	.long	1022514089
-	.long	1065180928
-	.long	1070273428
-	.long	2635617463
-	.long	1022654470
-	.long	1650181632
-	.long	1070290189
-	.long	2061982883
-	.long	1022853411
-	.long	3373882880
-	.long	1070306957
-	.long	319732785
-	.long	1022017175
-	.long	2270081280
-	.long	1070323733
-	.long	2237757411
-	.long	1023064087
-	.long	2963732736
-	.long	1070340516
-	.long	468839165
-	.long	1023293774
-	.long	1491099904
-	.long	1070357307
-	.long	1502657946
-	.long	1021533479
-	.long	2479636480
-	.long	1070374105
-	.long	482913562
-	.long	1021986286
-	.long	1968133632
-	.long	1070390911
-	.long	3281474337
-	.long	1022646400
-	.long	291639040
-	.long	1070407725
-	.long	2453320259
-	.long	1022812423
-	.long	2081472512
-	.long	1070424546
-	.long	2939989570
-	.long	1023091888
-	.long	3380340480
-	.long	1070441375
-	.long	2850707499
-	.long	1021921109
-	.long	232287488
-	.long	1070458213
-	.long	3674625342
-	.long	1020725130
-	.long	1567614208
-	.long	1070475058
-	.long	9347334
-	.long	1022024009
-	.long	3433091072
-	.long	1070491911
-	.long	282524999
-	.long	1021433523
-	.long	1876877312
-	.long	1070508773
-	.long	3470449440
-	.long	1019309721
-	.long	1538472192
-	.long	1070525643
-	.long	2089486825
-	.long	1019698916
-	.long	2763830784
-	.long	1070542521
-	.long	443498115
-	.long	1020505194
-	.long	1605381632
-	.long	1070559408
-	.long	3018871601
-	.long	1022869913
-	.long	2706946048
-	.long	1070576303
-	.long	3936260892
-	.long	1023175875
-	.long	2123887360
-	.long	1070593207
-	.long	2994220655
-	.long	1022825948
-	.long	104015104
-	.long	1070603108
-	.long	335054493
-	.long	1023441853
-	.long	2904568832
-	.long	1070615800
-	.long	1451215633
-	.long	1023853857
-	.long	3456197120
-	.long	1070632739
-	.long	436334733
-	.long	1024026432
-	.long	252452352
-	.long	1070649697
-	.long	34596167
-	.long	1024031396
-	.long	3328018432
-	.long	1070666672
-	.long	2644547073
-	.long	1024296758
-	.long	1255829248
-	.long	1070683667
-	.long	552832586
-	.long	1023763122
-	.long	4097058560
-	.long	1070700680
-	.long	1955640623
-	.long	1021394654
-	.long	451770112
-	.long	1070717714
-	.long	3428903777
-	.long	1022941142
-	.long	408920832
-	.long	1070734767
-	.long	165503263
-	.long	1023894958
-	.long	1186960640
-	.long	1070751840
-	.long	435826450
-	.long	1024026134
-	.long	19078656
-	.long	1070768934
-	.long	1834169749
-	.long	1022899284
-	.long	2743490304
-	.long	1070786048
-	.long	494581074
-	.long	1018818479
-	.long	2328961024
-	.long	1070803184
-	.long	2987908834
-	.long	1022581110
-	.long	350011392
-	.long	1070820342
-	.long	240771184
-	.long	1024143083
-	.long	2692326912
-	.long	1070837521
-	.long	666056837
-	.long	1022394776
-	.long	2373274368
-	.long	1070854723
-	.long	2484337770
-	.long	1024228156
-	.long	1017131520
-	.long	1070871948
-	.long	3285648279
-	.long	1024025789
-	.long	265558272
-	.long	1070889196
-	.long	392241896
-	.long	1024252809
-	.long	1778008064
-	.long	1070906467
-	.long	1536107943
-	.long	1023949300
-	.long	2937184768
-	.long	1070923762
-	.long	3541062251
-	.long	1019448646
-	.long	1144442880
-	.long	1070941082
-	.long	3691683781
-	.long	1022123948
-	.long	2410165504
-	.long	1070958426
-	.long	1804181960
-	.long	1023945221
-	.long	4174350848
-	.long	1070975795
-	.long	2016094861
-	.long	1021716585
-	.long	3897012480
-	.long	1070993190
-	.long	175294410
-	.long	1023703404
-	.long	3353623040
-	.long	1071010611
-	.long	167973242
-	.long	1023240839
-	.long	45671168
-	.long	1071028059
-	.long	2166856113
-	.long	1021565413
-	.long	86063872
-	.long	1071045533
-	.long	2676254727
-	.long	1023985299
-	.long	1019772672
-	.long	1071063034
-	.long	989043593
-	.long	1021549587
-	.long	414297344
-	.long	1071080563
-	.long	3960972046
-	.long	1024307251
-	.long	155173120
-	.long	1071098120
-	.long	1830919291
-	.long	1021592251
-	.long	2151562240
-	.long	1071115705
-	.long	405408666
-	.long	1023423128
-	.long	4041854720
-	.long	1071133319
-	.long	2043497827
-	.long	1024411503
-	.long	3489224192
-	.long	1071150963
-	.long	3072215864
-	.long	1022698635
-	.long	2477196288
-	.long	1071168637
-	.long	1812195139
-	.long	1022689192
-	.long	3015298816
-	.long	1071186341
-	.long	764841969
-	.long	1021027331
-	.long	2844731136
-	.long	1071204076
-	.long	2878117321
-	.long	1019116513
-	.long	4028950528
-	.long	1071221842
-	.long	698911452
-	.long	1023265602
-	.long	69441536
-	.long	1071239641
-	.long	3253467847
-	.long	1020795075
-	.long	1676209920
-	.long	1071257471
-	.long	4272431167
-	.long	1022873982
-	.long	2408752384
-	.long	1071275334
-	.long	648519100
-	.long	1024385717
-	.long	151623680
-	.long	1071293231
-	.long	345257017
-	.long	1019561408
-	.long	1410154240
-	.long	1071311161
-	.long	197863993
-	.long	1023224207
-	.long	4131351552
-	.long	1071329125
-	.long	2620801789
-	.long	1024411169
-	.long	1999664384
-	.long	1071347125
-	.long	3952692616
-	.long	1024168086
-	.long	1617668864
-	.long	1071365160
-	.long	3019889809
-	.long	1021907692
-	.long	1032074240
-	.long	1071383231
-	.long	59469899
-	.long	1023656194
-	.long	2619492096
-	.long	1071401338
-	.long	1417526820
-	.long	1021457783
-	.long	202429440
-	.long	1071419483
-	.long	2927667935
-	.long	1019175447
-	.long	525044224
-	.long	1071437665
-	.long	38166811
-	.long	1023981879
-	.long	1779258880
-	.long	1071455885
-	.long	481252500
-	.long	1023310234
-	.long	2195673600
-	.long	1071474144
-	.long	3962395981
-	.long	1021339088
-	.long	44573696
-	.long	1071492443
-	.long	3936281395
-	.long	1023014829
-	.long	2226905344
-	.long	1071510781
-	.long	1515320476
-	.long	1024320623
-	.long	2800512512
-	.long	1071529160
-	.long	1225403697
-	.long	1021081846
-	.long	161113600
-	.long	1071547581
-	.long	3064809733
-	.long	1024173917
-	.long	1338410240
-	.long	1071566043
-	.long	2027604973
-	.long	1024362526
-	.long	522433280
-	.long	1071584548
-	.long	2055171723
-	.long	1023858825
-	.long	539595776
-	.long	1071603096
-	.long	3868820135
-	.long	1022936424
-	.long	4264017664
-	.long	1071621687
-	.long	3228065145
-	.long	1023479578
-	.long	1733924096
-	.long	1071640324
-	.long	3511934475
-	.long	1022496355
-	.long	108880384
-	.long	1071651839
-	.long	615880967
-	.long	1023519706
-	.long	3517856512
-	.long	1071661202
-	.long	3113108559
-	.long	1025190289
-	.long	4043153152
-	.long	1071670589
-	.long	1571836218
-	.long	1023106116
-	.long	3251299072
-	.long	1071680000
-	.long	3444076102
-	.long	1022187841
-	.long	2736921600
-	.long	1071689435
-	.long	272771483
-	.long	1025095280
-	.long	3897698560
-	.long	1071703633
-	.long	2075390188
-	.long	1022489022
-	.long	3209485056
-	.long	1071722652
-	.long	1438094065
-	.long	1021844944
-	.long	3781432064
-	.long	1071741774
-	.long	1675017145
-	.long	1024143828
-	.long	2684184064
-	.long	1071761003
-	.long	2259963753
-	.long	1024731393
-	.long	1840489728
-	.long	1071780342
-	.long	3372883597
-	.long	1023431408
-	.long	3764087808
-	.long	1071799794
-	.long	3307523102
-	.long	1024485788
-	.long	3006232320
-	.long	1071819364
-	.long	3088971966
-	.long	1025213251
-	.long	3374881280
-	.long	1071839055
-	.long	834437749
-	.long	1025236452
-	.long	797284864
-	.long	1071858872
-	.long	3122663941
-	.long	1025320473
-	.long	545765120
-	.long	1071878818
-	.long	826539625
-	.long	1022450955
-	.long	107562240
-	.long	1071898898
-	.long	339584600
-	.long	1022481255
-	.long	2123649024
-	.long	1071919116
-	.long	3912959833
-	.long	1024321009
-	.long	1562385664
-	.long	1071939478
-	.long	2846067230
-	.long	1023343981
-	.long	2963085824
-	.long	1071959988
-	.long	954548627
-	.long	1021475211
-	.long	3325550592
-	.long	1071980652
-	.long	3459651155
-	.long	1025305573
-	.long	775752448
-	.long	1072001476
-	.long	3582746667
-	.long	1023859460
-	.long	3238590720
-	.long	1072022464
-	.long	634636162
-	.long	1024472353
-	.long	2758801920
-	.long	1072043624
-	.long	3078216319
-	.long	1025304516
-	.long	1370319104
-	.long	1072064962
-	.long	2570569078
-	.long	1025099442
-	.long	2615805184
-	.long	1072086484
-	.long	3729933412
-	.long	1024605112
-	.long	3077336576
-	.long	1072108198
-	.long	1948916066
-	.long	1024781603
-	.long	1099528192
-	.long	1072130112
-	.long	3139143157
-	.long	1023729360
-	.long	1231903232
-	.long	1072152233
-	.long	1349513477
-	.long	1024737515
-	.long	1507504128
-	.long	1072174570
-	.long	3484516322
-	.long	1024000959
-	.long	2214659840
-	.long	1072197132
-	.long	2563820917
-	.long	1025225535
-	.long	1804739840
-	.long	1072219929
-	.long	760038746
-	.long	1024482855
-	.long	1413746688
-	.long	1072242971
-	.long	3401734714
-	.long	1025129838
-	.long	821409536
-	.long	1072266269
-	.long	3729772551
-	.long	1025484796
-	.long	3031825664
-	.long	1072289834
-	.long	122256749
-	.long	1024752594
-	.long	1710784256
-	.long	1072313680
-	.long	1518205483
-	.long	1024724809
-	.long	3025265152
-	.long	1072337819
-	.long	409951989
-	.long	1022835555
-	.long	287769088
-	.long	1072362267
-	.long	800355594
-	.long	1022484850
-	.long	198179840
-	.long	1072387038
-	.long	3502926213
-	.long	1024209373
-	.long	1909130496
-	.long	1072412149
-	.long	3064694319
-	.long	1025380823
-	.long	1941732096
-	.long	1072437619
-	.long	4112930390
-	.long	1024294679
-	.long	3492010496
-	.long	1072463467
-	.long	2684918107
-	.long	1023220233
-	.long	81959680
-	.long	1072489716
-	.long	220021366
-	.long	1020635131
-	.long	2297837056
-	.long	1072516387
-	.long	4027683826
-	.long	1021041185
-	.long	270404096
-	.long	1072543508
-	.long	2012766065
-	.long	1021780753
-	.long	3667376896
-	.long	1072571105
-	.long	2727981522
-	.long	1023009874
-	.long	330400256
-	.long	1072599212
-	.long	2940017003
-	.long	1025393439
-	.long	1119293952
-	.long	1072627861
-	.long	1608550416
-	.long	1022675612
-	.long	3536155904
-	.long	1072657091
-	.long	349665778
-	.long	1025156751
-	.long	3078046720
-	.long	1072686946
-	.long	2016159996
-	.long	1022193169
-	.long	455228416
-	.long	1072705361
-	.long	1908539328
-	.long	1026126332
-	.long	1871505664
-	.long	1072720988
-	.long	2784700894
-	.long	1025922277
-	.long	1630994432
-	.long	1072737010
-	.long	361107678
-	.long	1022887244
-	.long	2084558336
-	.long	1072753462
-	.type	Tbl_addr,@object
-	.size	Tbl_addr,3840
-	.space 768, 0x00 	# pad
-	.align 16
-SIGNMASK:
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.type	SIGNMASK,@object
-	.size	SIGNMASK,16
-	.align 16
-HALFMASK2:
-	.long	0
-	.long	2147483584
-	.long	0
-	.long	0
-	.type	HALFMASK2,@object
-	.size	HALFMASK2,16
-	.align 16
-PI_BY_2:
-	.long	856972295
-	.long	1016178214
-	.long	1413754136
-	.long	1073291771
-	.type	PI_BY_2,@object
-	.size	PI_BY_2,16
-	.align 16
-cv2:
-	.long	780903145
-	.long	1066854586
-	.long	858993459
-	.long	1068708659
-	.long	3340530119
-	.long	1067392113
-	.long	1431655765
-	.long	1069897045
-	.long	1321528399
-	.long	1066517740
-	.long	3067833783
-	.long	1067899757
-	.long	2021159460
-	.long	1065855096
-	.long	2576980378
-	.long	1066178969
-	.type	cv2,@object
-	.size	cv2,64
-	.align 16
-HALFMASK:
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.type	HALFMASK,@object
-	.size	HALFMASK,16
-	.align 4
-ONEMASK:
-	.long	0
-	.long	1072693248
-	.type	ONEMASK,@object
-	.size	ONEMASK,8
-	.align 4
-TMASK:
-	.long	0
-	.long	4294950912
-	.type	TMASK,@object
-	.size	TMASK,8
-	.align 4
-cv:
-	.long	1431655765
-	.long	1069897045
-	.long	858993459
-	.long	1068708659
-	.long	3067833783
-	.long	1067899757
-	.type	cv,@object
-	.size	cv,24
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_asin.1-.
-	.4byte ..___tag_value_asin.5-..___tag_value_asin.1
-	.2byte 0x0400
-	.4byte ..___tag_value_asin.3-..___tag_value_asin.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_asin.4-..___tag_value_asin.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_atan2.S b/libm/x86_64/e_atan2.S
deleted file mode 100644
index f0ba43c..0000000
--- a/libm/x86_64/e_atan2.S
+++ /dev/null
@@ -1,1242 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//
-//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
-//   as follows.
-//                   /  sign(Y) atan(|Y/X|)                if X > 0
-//       atan2(Y,X) =
-//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
-//
-//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
-//   where PI and sgn can be determined by the four possible combinations of
-//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
-//   for atan(|Y/X|).
-//
-//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
-//   if X > 0, and sign(Y)*pi otherwise.
-//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
-//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
-//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
-//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
-//   calculated using the polynomial in 4 above.
-//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
-//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
-//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
-//
-//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
-//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
-//
-//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
-//   163 possible values. These values are calculated beforehand and stored
-//   in a table. The polynomial is the one used in 4.
-//
-// Special cases:
-//  atan2(+-0, +0) = +-0
-//  atan2(+-0, -0) = +-pi
-//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
-//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
-//  atan2(+-y, +INF) = +-0, for finite y > 0
-//  atan2(+-y, -INF) = +-pi, for finite y > 0
-//  atan2(+-INF, x) = +-pi/2, for finite x
-//  atan2(+-INF, +INF) = +-pi/4
-//  atan2(+-INF, -INF) = +-3*pi/4
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  atan2
-ENTRY(atan2)
-# parameter 1: %xmm0
-# parameter 2: %xmm1
-..B1.1:
-..___tag_value_atan2.1:
-        subq      $24, %rsp
-..___tag_value_atan2.3:
-        movsd     %xmm0, (%rsp)
-        movsd     %xmm1, 8(%rsp)
-..B1.2:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        subl      $14448, %eax
-        cmpl      $3840, %eax
-        ja        .L_2TAG_PACKET_0.0.2
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        subl      $14448, %eax
-        cmpl      $3840, %eax
-        ja        .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        unpcklpd  %xmm1, %xmm0
-        xorpd     %xmm5, %xmm5
-        xorpd     %xmm3, %xmm3
-        movl      $2048, %eax
-        pinsrw    $3, %eax, %xmm5
-        paddw     %xmm1, %xmm5
-        psrlq     $29, %xmm5
-        rcpss     %xmm5, %xmm3
-        xorpd     %xmm4, %xmm4
-        movl      $14336, %ecx
-        pinsrw    $3, %ecx, %xmm4
-        psllq     $29, %xmm3
-        paddw     %xmm4, %xmm3
-        mulsd     %xmm0, %xmm3
-        xorpd     %xmm2, %xmm2
-        xorpd     %xmm6, %xmm6
-        xorpd     %xmm7, %xmm7
-        movl      $32768, %eax
-        pinsrw    $2, %eax, %xmm6
-        movl      $32767, %ecx
-        pinsrw    $3, %ecx, %xmm7
-        paddd     %xmm6, %xmm3
-        andpd     %xmm7, %xmm3
-        movq      %xmm3, %xmm5
-        pextrw    $3, %xmm3, %eax
-        movl      $16448, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        minsd     %xmm2, %xmm3
-        movmskpd  %xmm0, %edx
-        psllq     $1, %xmm0
-        psrlq     $1, %xmm0
-        cmpsd     $2, %xmm2, %xmm5
-        psllq     $1, %xmm1
-        psrlq     $1, %xmm1
-        movq      %xmm1, %xmm6
-        movq      %xmm1, %xmm7
-        movq      %xmm0, %xmm2
-        movl      $0, %ecx
-        pinsrw    $0, %ecx, %xmm6
-        subsd     %xmm6, %xmm7
-        movq      %xmm0, %xmm4
-        mulsd     %xmm3, %xmm6
-        mulsd     %xmm3, %xmm4
-        mulsd     %xmm3, %xmm7
-        andpd     %xmm5, %xmm0
-        subsd     %xmm6, %xmm0
-        andpd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm4
-        subsd     %xmm7, %xmm0
-        andl      $32752, %eax
-        subl      $16286, %eax
-        cmpl      $1121, %eax
-        ja        .L_2TAG_PACKET_3.0.2
-        divsd     %xmm4, %xmm0
-        pextrw    $3, %xmm3, %ecx
-        movsd     a2(%rip), %xmm2
-        movsd     b2(%rip), %xmm3
-        pextrw    $0, %xmm5, %eax
-        addl      %edx, %edx
-        lea       P_TBL(%rip), %r8
-        movapd    (%r8,%rdx,8), %xmm6
-        lea       SGN_TBL(%rip), %r8
-        movapd    (%r8,%rdx,8), %xmm1
-        subl      $16286, %ecx
-        notl      %eax
-        andl      $1, %eax
-        addl      %eax, %ecx
-        addl      %ecx, %ecx
-        lea       ATAN_TBL(%rip), %r8
-        movapd    (%r8,%rcx,8), %xmm5
-        xorpd     %xmm1, %xmm5
-        addpd     %xmm6, %xmm5
-        movq      %xmm5, %xmm6
-        unpckhpd  %xmm5, %xmm5
-        xorpd     %xmm0, %xmm1
-        movq      %xmm1, %xmm4
-        mulsd     %xmm0, %xmm0
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm3
-        addsd     %xmm6, %xmm1
-        subsd     %xmm1, %xmm6
-        addsd     %xmm4, %xmm6
-        addsd     8+a2(%rip), %xmm2
-        mulsd     %xmm0, %xmm3
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm2, %xmm0
-        addsd     8+b2(%rip), %xmm3
-        mulsd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm0
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_3.0.2:
-        addl      $942, %eax
-        cmpl      $942, %eax
-        ja        .L_2TAG_PACKET_4.0.2
-        xorpd     %xmm4, %xmm4
-        movl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm4
-        divsd     %xmm1, %xmm4
-        addl      %edx, %edx
-        lea       SGN_TBL(%rip), %r8
-        movapd    (%r8,%rdx,8), %xmm6
-        unpcklpd  %xmm3, %xmm3
-        xorpd     %xmm6, %xmm0
-        xorpd     %xmm6, %xmm2
-        xorpd     %xmm6, %xmm3
-        lea       P_TBL2(%rip), %r8
-        movapd    (%r8,%rdx,8), %xmm7
-        movsd     a2(%rip), %xmm1
-        movsd     b2(%rip), %xmm5
-        lea       SELECT_B(%rip), %r8
-        andpd     (%r8,%rdx,8), %xmm3
-        mulsd     %xmm4, %xmm2
-        mulsd     %xmm4, %xmm0
-        movq      %xmm2, %xmm6
-        mulsd     %xmm2, %xmm2
-        mulsd     %xmm2, %xmm1
-        addsd     %xmm2, %xmm5
-        mulsd     %xmm2, %xmm6
-        addsd     8+a2(%rip), %xmm1
-        mulsd     %xmm2, %xmm5
-        addsd     %xmm0, %xmm7
-        addpd     %xmm3, %xmm7
-        mulsd     %xmm6, %xmm1
-        addsd     8+b2(%rip), %xmm5
-        mulsd     %xmm1, %xmm5
-        addsd     %xmm7, %xmm5
-        pshufd    $238, %xmm7, %xmm0
-        addsd     %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        movsd     8(%rsp), %xmm1
-        movsd     (%rsp), %xmm0
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      %eax, %ecx
-        jg        .L_2TAG_PACKET_5.0.2
-        pextrw    $3, %xmm1, %ecx
-        cmpl      $32767, %ecx
-        jg        .L_2TAG_PACKET_6.0.2
-        divsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        andpd     SGNMASK(%rip), %xmm0
-        movsd     pi_table(%rip), %xmm2
-        xorpd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_5.0.2:
-        andpd     SGNMASK(%rip), %xmm0
-        movsd     pi2_table(%rip), %xmm2
-        xorpd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-.L_2TAG_PACKET_1.0.2:
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_7.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_8.0.2
-        movsd     POW55(%rip), %xmm3
-        movl      $1024, %edx
-        movsd     INVEXPMASK(%rip), %xmm4
-        xorpd     %xmm6, %xmm6
-        movsd     EXPMASK(%rip), %xmm7
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_10.0.2:
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_12.0.2:
-        addl      %ecx, %edx
-        subl      %eax, %edx
-        cmpl      $2048, %edx
-        ja        .L_2TAG_PACKET_4.0.2
-        addl      $15344, %edx
-        pinsrw    $3, %edx, %xmm6
-        andpd     %xmm4, %xmm0
-        andpd     %xmm4, %xmm1
-        orpd      %xmm6, %xmm0
-        orpd      %xmm7, %xmm1
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_9.0.2:
-        subl      $880, %edx
-        mulsd     %xmm3, %xmm0
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_13.0.2
-        jmp       .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_11.0.2:
-        addl      $880, %edx
-        mulsd     %xmm3, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_14.0.2
-        jmp       .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_7.0.2:
-        movd      %xmm0, %edx
-        movq      %xmm0, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        andl      $1048575, %ecx
-        orl       %edx, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_15.0.2
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        cmpl      $32752, %eax
-        jae       .L_2TAG_PACKET_16.0.2
-        movapd    pi2_table(%rip), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_15.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_16.0.2:
-        movd      %xmm1, %eax
-        movq      %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        movl      $-2147483648, %edx
-        andl      %ecx, %edx
-        andl      $1048575, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_17.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_18.0.2
-        movapd    pi4_table(%rip), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_17.0.2:
-        movq      %xmm1, %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_18.0.2:
-        movapd    pi4_table(%rip), %xmm5
-        movapd    pi2_table(%rip), %xmm6
-        addpd     %xmm6, %xmm5
-        pshufd    $238, %xmm5, %xmm6
-        addpd     %xmm6, %xmm5
-        orpd      %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_8.0.2:
-        movd      %xmm1, %eax
-        movq      %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        movl      $-2147483648, %edx
-        andl      %ecx, %edx
-        andl      $1048575, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        jne       .L_2TAG_PACKET_17.0.2
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_19.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_19.0.2:
-        movapd    pi_table(%rip), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_13.0.2:
-        pextrw    $3, %xmm1, %edx
-        andl      $32768, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_20.0.2
-        movapd    pi_table(%rip), %xmm5
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        comisd    %xmm0, %xmm1
-        orpd      %xmm5, %xmm0
-        je        .L_2TAG_PACKET_21.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_20.0.2:
-        comisd    %xmm0, %xmm1
-        je        .L_2TAG_PACKET_21.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_14.0.2:
-        movapd    pi2_table(%rip), %xmm5
-        psrlq     $63, %xmm0
-        psllq     $63, %xmm0
-        pshufd    $238, %xmm5, %xmm4
-        addsd     %xmm4, %xmm5
-        orpd      %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_21.0.2:
-        movq      %xmm0, 16(%rsp)
-..B1.3:
-        movq      16(%rsp), %xmm0
-.L_2TAG_PACKET_22.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_atan2.4:
-        ret       
-..___tag_value_atan2.5:
-END(atan2)
-# -- End  atan2
-	.section .rodata, "a"
-	.align 16
-	.align 16
-a2:
-	.long	2006262985
-	.long	1069310863
-	.long	2358449471
-	.long	3217342131
-	.type	a2,@object
-	.size	a2,16
-	.align 16
-b2:
-	.long	3845454352
-	.long	1069952297
-	.long	2829679149
-	.long	1073771565
-	.type	b2,@object
-	.size	b2,16
-	.align 16
-P_TBL:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	3221823995
-	.long	856972295
-	.long	3164710438
-	.type	P_TBL,@object
-	.size	P_TBL,64
-	.align 16
-SGN_TBL:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.type	SGN_TBL,@object
-	.size	SGN_TBL,64
-	.align 16
-ATAN_TBL:
-	.long	3390881280
-	.long	1067318733
-	.long	1411116779
-	.long	1018950063
-	.long	2985987840
-	.long	1067384211
-	.long	2088903695
-	.long	1018086027
-	.long	3148445184
-	.long	1067449685
-	.long	2044163806
-	.long	1017271335
-	.long	3667629184
-	.long	1067515494
-	.long	2353092775
-	.long	1019967309
-	.long	1546568832
-	.long	1067580954
-	.long	611991315
-	.long	1017602584
-	.long	3815996800
-	.long	1067646404
-	.long	466038598
-	.long	1019686426
-	.long	4050241920
-	.long	1067711845
-	.long	3265026328
-	.long	1019626952
-	.long	120454912
-	.long	1067777277
-	.long	1542207696
-	.long	1020155608
-	.long	2784639744
-	.long	1067842697
-	.long	3883834623
-	.long	1018602870
-	.long	1328010624
-	.long	1067908107
-	.long	1791097456
-	.long	1019053126
-	.long	2217794048
-	.long	1067973505
-	.long	551619938
-	.long	1018494194
-	.long	3333520000
-	.long	1068038891
-	.long	2390331823
-	.long	1019033022
-	.long	2557052032
-	.long	1068104265
-	.long	2423976108
-	.long	1019728674
-	.long	2067649536
-	.long	1068169626
-	.long	3757397745
-	.long	1018672362
-	.long	4047094784
-	.long	1068234973
-	.long	481613184
-	.long	1019275104
-	.long	2089853184
-	.long	1068300307
-	.long	1733914374
-	.long	1020124677
-	.long	2678003840
-	.long	1068365626
-	.long	1373600282
-	.long	1013935474
-	.long	3706496128
-	.long	1068430930
-	.long	1000610902
-	.long	1019673285
-	.long	3073179008
-	.long	1068496219
-	.long	1497143008
-	.long	1019900342
-	.long	2803716736
-	.long	1068562846
-	.long	1476677416
-	.long	1019444094
-	.long	3204984128
-	.long	1068628077
-	.long	1192335905
-	.long	1018748628
-	.long	831146624
-	.long	1068693273
-	.long	2733586224
-	.long	1018823295
-	.long	243029376
-	.long	1068758431
-	.long	950106081
-	.long	1019046675
-	.long	1735561920
-	.long	1068823549
-	.long	3546440856
-	.long	1020104712
-	.long	1339217792
-	.long	1068888626
-	.long	3028812387
-	.long	1019818321
-	.long	3706342144
-	.long	1068953659
-	.long	3814564029
-	.long	1017763871
-	.long	637726976
-	.long	1069018648
-	.long	3584007699
-	.long	1017976868
-	.long	1148779264
-	.long	1069083589
-	.long	2282532133
-	.long	1019483954
-	.long	1406131392
-	.long	1069148481
-	.long	1547359113
-	.long	1019786342
-	.long	1908875904
-	.long	1069213322
-	.long	1315508410
-	.long	1020009473
-	.long	3194947520
-	.long	1069278110
-	.long	3845393201
-	.long	1015803761
-	.long	1547487744
-	.long	1069342844
-	.long	3863107865
-	.long	1019810104
-	.long	1881061952
-	.long	1069407521
-	.long	4288343548
-	.long	1019687581
-	.long	563086336
-	.long	1069472140
-	.long	2582230241
-	.long	1020099350
-	.long	2594975552
-	.long	1069536698
-	.long	2306443764
-	.long	1019667244
-	.long	3438545024
-	.long	1069606573
-	.long	957455549
-	.long	1015587735
-	.long	4211357472
-	.long	1069670906
-	.long	2611778754
-	.long	1017877214
-	.long	3002835424
-	.long	1069735101
-	.long	235580458
-	.long	1020211685
-	.long	3905315424
-	.long	1069799150
-	.long	3630647617
-	.long	1018736849
-	.long	2849656576
-	.long	1069863047
-	.long	2412165062
-	.long	1019693004
-	.long	507429472
-	.long	1069926785
-	.long	1397750723
-	.long	1018412717
-	.long	2307470272
-	.long	1069990356
-	.long	1796470904
-	.long	1019796181
-	.long	1271814912
-	.long	1070053755
-	.long	189761565
-	.long	1016149115
-	.long	3800538144
-	.long	1070116974
-	.long	2524871582
-	.long	1018263353
-	.long	3916203552
-	.long	1070180008
-	.long	127848658
-	.long	1017672664
-	.long	457192032
-	.long	1070242851
-	.long	4020400938
-	.long	1019823010
-	.long	1385324704
-	.long	1070305495
-	.long	564511179
-	.long	1016079094
-	.long	2322869856
-	.long	1070367935
-	.long	2347103319
-	.long	1018927760
-	.long	3743438624
-	.long	1070430165
-	.long	877973862
-	.long	1019638162
-	.long	2392255552
-	.long	1070492180
-	.long	2432782267
-	.long	1018872629
-	.long	4180443328
-	.long	1070553973
-	.long	3102990015
-	.long	1020093101
-	.long	2547540832
-	.long	1070636485
-	.long	3877738253
-	.long	1017300424
-	.long	2735468912
-	.long	1070697461
-	.long	2446470256
-	.long	1019235378
-	.long	542633792
-	.long	1070757943
-	.long	583606328
-	.long	1018624131
-	.long	923265984
-	.long	1070817911
-	.long	1793926708
-	.long	1019714161
-	.long	918728448
-	.long	1070877348
-	.long	3726463586
-	.long	1019433296
-	.long	2572275008
-	.long	1070936237
-	.long	1845354238
-	.long	1019459238
-	.long	50974688
-	.long	1070994564
-	.long	983808064
-	.long	1016685418
-	.long	1105518320
-	.long	1071052313
-	.long	2357496692
-	.long	1015139882
-	.long	1264825328
-	.long	1071109472
-	.long	2244129354
-	.long	1019046344
-	.long	961157920
-	.long	1071166029
-	.long	3124185339
-	.long	1018541776
-	.long	1162701584
-	.long	1071221973
-	.long	1279780948
-	.long	1019268918
-	.long	3284935664
-	.long	1071277294
-	.long	2670033472
-	.long	1019833744
-	.long	497441888
-	.long	1071331985
-	.long	1032737410
-	.long	1019795212
-	.long	3377383904
-	.long	1071386036
-	.long	2356897182
-	.long	1020205553
-	.long	1126962000
-	.long	1071439443
-	.long	3723724586
-	.long	1015212418
-	.long	90291008
-	.long	1071492199
-	.long	4178672431
-	.long	1020186971
-	.long	190059536
-	.long	1071595741
-	.long	1763589807
-	.long	1019162163
-	.long	2497392840
-	.long	1071670654
-	.long	3036997041
-	.long	1020204325
-	.long	2616971944
-	.long	1071719773
-	.long	300151069
-	.long	1017041957
-	.long	2883518128
-	.long	1071767563
-	.long	2203981414
-	.long	1019190108
-	.long	1496354352
-	.long	1071814030
-	.long	332287966
-	.long	1016846435
-	.long	483276728
-	.long	1071859184
-	.long	653845024
-	.long	1018830914
-	.long	3097401072
-	.long	1071903039
-	.long	1514746408
-	.long	1019278972
-	.long	2737217248
-	.long	1071945615
-	.long	1358845067
-	.long	1017268275
-	.long	2072577560
-	.long	1071986933
-	.long	3041024735
-	.long	1019929672
-	.long	2266405656
-	.long	1072027017
-	.long	1271261130
-	.long	1012925070
-	.long	958652544
-	.long	1072065894
-	.long	2158017058
-	.long	1019955372
-	.long	3312993840
-	.long	1072103591
-	.long	765809169
-	.long	1019114443
-	.long	3177001304
-	.long	1072140139
-	.long	144180084
-	.long	1019822186
-	.long	3071642184
-	.long	1072175568
-	.long	4004602424
-	.long	1019420740
-	.long	4283953648
-	.long	1072209909
-	.long	1511950430
-	.long	1020176966
-	.long	1413754136
-	.long	1072243195
-	.long	856972295
-	.long	1015129638
-	.long	4073202944
-	.long	1072306725
-	.long	4068194804
-	.long	1019714860
-	.long	946117760
-	.long	1072366415
-	.long	694980733
-	.long	1020150135
-	.long	3980632032
-	.long	1072422512
-	.long	1313251280
-	.long	1019948709
-	.long	1468297112
-	.long	1072475260
-	.long	330111143
-	.long	1019809198
-	.long	3478063816
-	.long	1072524887
-	.long	2930067044
-	.long	1017784081
-	.long	1153979856
-	.long	1072571613
-	.long	2225786102
-	.long	1017634481
-	.long	2089828808
-	.long	1072615641
-	.long	474621367
-	.long	1017043414
-	.long	3531732632
-	.long	1072657163
-	.long	2276396220
-	.long	1018757240
-	.long	775214612
-	.long	1072694803
-	.long	3209744818
-	.long	1019963015
-	.long	662307284
-	.long	1072713319
-	.long	1381696763
-	.long	1019763781
-	.long	1192776652
-	.long	1072730830
-	.long	3017932994
-	.long	1015179769
-	.long	744202396
-	.long	1072747407
-	.long	2073854034
-	.long	1019512292
-	.long	8337908
-	.long	1072763115
-	.long	16004448
-	.long	1019599514
-	.long	3589868768
-	.long	1072778013
-	.long	1374369804
-	.long	1018019237
-	.long	121647320
-	.long	1072792159
-	.long	128481634
-	.long	1018115438
-	.long	2464923204
-	.long	1072805601
-	.long	1787331214
-	.long	1016798022
-	.long	4093304372
-	.long	1072830562
-	.long	3306868969
-	.long	1019384078
-	.long	1436891684
-	.long	1072853231
-	.long	676347266
-	.long	1017302183
-	.long	1104571840
-	.long	1072873890
-	.long	2870400285
-	.long	1019938149
-	.long	2037009832
-	.long	1072892781
-	.long	2956702105
-	.long	1016472908
-	.long	3139037960
-	.long	1072910111
-	.long	916057147
-	.long	1018364335
-	.long	1826698064
-	.long	1072926058
-	.long	2171961098
-	.long	1019669816
-	.long	1353941060
-	.long	1072940774
-	.long	1722928782
-	.long	1019926215
-	.long	1803191644
-	.long	1072954391
-	.long	1547878639
-	.long	1020259262
-	.long	1092591296
-	.long	1072967024
-	.long	3070107923
-	.long	1018320401
-	.long	2205372832
-	.long	1072978772
-	.long	787328196
-	.long	1014621351
-	.long	1291577100
-	.long	1072989723
-	.long	2964757301
-	.long	1020242528
-	.long	4234512804
-	.long	1072999952
-	.long	3136030038
-	.long	1017522144
-	.long	3248069132
-	.long	1073009528
-	.long	1506192355
-	.long	1018050472
-	.long	3932628500
-	.long	1073018509
-	.long	1045823554
-	.long	1019946655
-	.long	4195697848
-	.long	1073026948
-	.long	233443322
-	.long	1018917447
-	.long	2501811452
-	.long	1073034892
-	.long	901427976
-	.long	1017333852
-	.long	866379428
-	.long	1073049455
-	.long	2437443742
-	.long	1019678792
-	.long	1376865888
-	.long	1073062480
-	.long	3365790232
-	.long	1014547152
-	.long	3290094268
-	.long	1073074195
-	.long	3898947415
-	.long	1018683566
-	.long	354764884
-	.long	1073084787
-	.long	3854322404
-	.long	1019662058
-	.long	3332975496
-	.long	1073094406
-	.long	3171701655
-	.long	1017830922
-	.long	1141460088
-	.long	1073103181
-	.long	3946082701
-	.long	1020032019
-	.long	745761284
-	.long	1073111216
-	.long	1347210591
-	.long	1019106121
-	.long	1673304508
-	.long	1073118600
-	.long	1760606642
-	.long	1017324577
-	.long	983388240
-	.long	1073125409
-	.long	3740651204
-	.long	1019514104
-	.long	3895509100
-	.long	1073131706
-	.long	2409629983
-	.long	1020069322
-	.long	2128523668
-	.long	1073137548
-	.long	3045605368
-	.long	1018579174
-	.long	2075485692
-	.long	1073142981
-	.long	3720571789
-	.long	1017557436
-	.long	121855976
-	.long	1073148047
-	.long	2391744767
-	.long	1020160645
-	.long	4181733780
-	.long	1073152780
-	.long	995028816
-	.long	1019681295
-	.long	2887813280
-	.long	1073157214
-	.long	218733247
-	.long	1020003509
-	.long	2862180896
-	.long	1073161375
-	.long	2043806490
-	.long	1018602288
-	.long	3909375184
-	.long	1073168973
-	.long	1559903412
-	.long	1020103444
-	.long	3533966292
-	.long	1073175738
-	.long	734884149
-	.long	1018462962
-	.long	3815044608
-	.long	1073181799
-	.long	3630523428
-	.long	1017250093
-	.long	739639376
-	.long	1073187261
-	.long	4167476661
-	.long	1020008277
-	.long	1068309648
-	.long	1073192207
-	.long	2110061437
-	.long	1019295858
-	.long	2350566352
-	.long	1073196707
-	.long	582596516
-	.long	1018568821
-	.long	2529520024
-	.long	1073200819
-	.long	745552787
-	.long	1019053165
-	.long	1841667508
-	.long	1073204591
-	.long	3982568700
-	.long	1016503327
-	.long	2242261080
-	.long	1073208063
-	.long	3433582258
-	.long	1016196763
-	.long	715134328
-	.long	1073211270
-	.long	355901358
-	.long	1020087916
-	.long	2700735876
-	.long	1073214240
-	.long	3640957736
-	.long	1019780205
-	.long	141607580
-	.long	1073217000
-	.long	2488245051
-	.long	1020262395
-	.long	287934404
-	.long	1073219570
-	.long	2392691085
-	.long	1019883292
-	.long	2363373988
-	.long	1073221969
-	.long	4194561737
-	.long	1019237447
-	.long	3829340424
-	.long	1073224214
-	.long	429455526
-	.long	1019490975
-	.long	1988805928
-	.long	1073226320
-	.long	3029848706
-	.long	1018104889
-	.long	1647572320
-	.long	1073230161
-	.long	10289938
-	.long	1017394880
-	.long	3988000624
-	.long	1073233576
-	.long	1957559169
-	.long	1019434816
-	.long	4263843944
-	.long	1073236633
-	.long	204710264
-	.long	1019908761
-	.long	663197724
-	.long	1073239386
-	.long	1921757578
-	.long	1019778948
-	.long	3560800700
-	.long	1073241876
-	.long	3994348896
-	.long	1019230192
-	.long	2441785656
-	.long	1073244141
-	.long	871468611
-	.long	1014800505
-	.long	3277400272
-	.long	1073246209
-	.long	4092218139
-	.long	1020040842
-	.long	3951990120
-	.long	1073248105
-	.long	4276546478
-	.long	1019763677
-	.long	2737338540
-	.long	1073249850
-	.long	252776012
-	.long	1018794951
-	.long	1511361316
-	.long	1073251461
-	.long	3119653999
-	.long	1018514803
-	.long	3969162516
-	.long	1073252952
-	.long	1037069016
-	.long	1016792900
-	.long	413985240
-	.long	1073254338
-	.long	4110171432
-	.long	1020001345
-	.long	3681283576
-	.long	1073255627
-	.long	1463092818
-	.long	1020260354
-	.long	3146455488
-	.long	1073256831
-	.long	1031209123
-	.long	1016554799
-	.long	95214512
-	.long	1073257958
-	.long	1373808632
-	.long	1019493031
-	.long	4250240828
-	.long	1073259013
-	.long	3891047882
-	.long	1020108730
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.type	ATAN_TBL,@object
-	.size	ATAN_TBL,2624
-	.align 16
-P_TBL2:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	856972295
-	.long	1017226790
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	3164710438
-	.long	1413754136
-	.long	3221823995
-	.type	P_TBL2,@object
-	.size	P_TBL2,64
-	.align 16
-SELECT_B:
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	4294967295
-	.long	0
-	.long	0
-	.type	SELECT_B,@object
-	.size	SELECT_B,64
-	.align 16
-SGNMASK:
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.type	SGNMASK,@object
-	.size	SGNMASK,16
-	.align 16
-pi_table:
-	.long	1413754136
-	.long	1074340347
-	.long	856972295
-	.long	1017226790
-	.type	pi_table,@object
-	.size	pi_table,16
-	.align 16
-pi2_table:
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.type	pi2_table,@object
-	.size	pi2_table,16
-	.align 16
-pi4_table:
-	.long	1413754136
-	.long	1072243195
-	.long	856972295
-	.long	1015129638
-	.type	pi4_table,@object
-	.size	pi4_table,16
-	.align 4
-POW55:
-	.long	0
-	.long	1130364928
-	.type	POW55,@object
-	.size	POW55,8
-	.align 4
-INVEXPMASK:
-	.long	4294967295
-	.long	2148532223
-	.type	INVEXPMASK,@object
-	.size	INVEXPMASK,8
-	.align 4
-EXPMASK:
-	.long	0
-	.long	1072693248
-	.type	EXPMASK,@object
-	.size	EXPMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_atan2.1-.
-	.4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
-	.2byte 0x0400
-	.4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_cosh.S b/libm/x86_64/e_cosh.S
deleted file mode 100644
index 97cb389..0000000
--- a/libm/x86_64/e_cosh.S
+++ /dev/null
@@ -1,1372 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  cosh(x)=(exp(x)+exp(-x))/2
-//
-//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//          L2EH+L2EL (upper 26, lower 53 bits)
-//
-//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-//                              f=0.b1 b2 ... b7, k integer
-//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-//                       for |x| in [1/8,3*2^8)
-//  e^{-|x|}=2^{-k-f}*2^{-r}
-//
-//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
-//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
-//
-//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
-//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
-//
-//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
-//  the result is checked for overflow.
-//
-//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
-//  (error bound for polynomial expansion is below 0.501 ulp)
-//
-// Special cases:
-//  cosh(NaN) = quiet NaN, and raise invalid exception
-//  cosh(INF) = that INF
-//  cosh(0)=1
-//  for finite argument, only cosh(0)=1 is exact
-//  For IEEE double
-//  cosh(x) overflows
-//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-
-# -- Begin  cosh
-ENTRY(cosh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cosh.1:
-        pushq     %rsi
-..___tag_value_cosh.3:
-..B1.2:
-        movsd     HALFMASK(%rip), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     L2E(%rip), %xmm1
-        movsd     8+L2E(%rip), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     Shifter(%rip), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        andl      $32767, %ecx
-        subl      $16320, %ecx
-        cmpl      $200, %ecx
-        jae       .L_2TAG_PACKET_0.0.2
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        movq      %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        xorpd     %xmm5, %xmm5
-        subsd     %xmm6, %xmm3
-        movapd    cv(%rip), %xmm4
-        addsd     %xmm1, %xmm2
-        movapd    16+cv(%rip), %xmm6
-        subsd     %xmm3, %xmm7
-        movl      $32704, %edx
-        pinsrw    $3, %edx, %xmm5
-        movapd    32+cv(%rip), %xmm1
-        addsd     %xmm7, %xmm2
-        movl      $127, %edx
-        andl      %eax, %edx
-        addl      %edx, %edx
-        shrl      $3, %eax
-        andl      $65520, %eax
-        addl      $16352, %eax
-        xorpd     %xmm0, %xmm0
-        cmpl      $184, %ecx
-        jae       .L_2TAG_PACKET_1.0.2
-        pshufd    $68, %xmm5, %xmm5
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        psubw     %xmm0, %xmm5
-        lea       T2f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm0
-        lea       T2_neg_f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm5
-        pshufd    $68, %xmm2, %xmm3
-        movapd    48+cv(%rip), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        mulpd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulpd     64+cv(%rip), %xmm2
-        mulpd     %xmm3, %xmm1
-        mulpd     %xmm3, %xmm7
-        mulpd     %xmm3, %xmm4
-        mulpd     %xmm3, %xmm1
-        addpd     %xmm7, %xmm6
-        movq      %xmm0, %xmm7
-        addpd     %xmm1, %xmm4
-        shufpd    $0, %xmm5, %xmm7
-        addpd     %xmm5, %xmm0
-        mulpd     %xmm7, %xmm2
-        addpd     %xmm6, %xmm4
-        subsd     %xmm0, %xmm7
-        mulpd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm5, %xmm7
-        addpd     %xmm2, %xmm4
-        addsd     %xmm6, %xmm7
-        pshufd    $238, %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        addl      $16320, %ecx
-        cmpl      $16320, %ecx
-        ja        .L_2TAG_PACKET_2.0.2
-        cmpl      $15952, %ecx
-        jae       .L_2TAG_PACKET_3.0.2
-        addsd     %xmm2, %xmm6
-        movq      ONEMASK(%rip), %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_1.0.2:
-        subl      $16352, %eax
-        movl      %eax, %ecx
-        andl      $32752, %eax
-        shrl      $1, %eax
-        andl      $65520, %eax
-        subl      %eax, %ecx
-        addl      $16352, %eax
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        lea       T2f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm0
-        pshufd    $68, %xmm2, %xmm3
-        movsd     48+cv(%rip), %xmm7
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     64+cv(%rip), %xmm2
-        mulsd     %xmm3, %xmm1
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm3, %xmm4
-        addl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm5
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm6, %xmm4
-        mulsd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm6, %xmm4
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm5, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_4.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_3.0.2:
-        movapd    pv(%rip), %xmm1
-        mulpd     %xmm5, %xmm5
-        movapd    16+pv(%rip), %xmm2
-        xorpd     %xmm3, %xmm3
-        movq      %xmm5, %xmm0
-        mulpd     %xmm5, %xmm1
-        movsd     ONEMASK(%rip), %xmm6
-        mulpd     %xmm5, %xmm5
-        movl      $16352, %eax
-        pinsrw    $3, %eax, %xmm3
-        addpd     %xmm2, %xmm1
-        mulpd     %xmm5, %xmm1
-        pshufd    $238, %xmm1, %xmm2
-        mulsd     %xmm1, %xmm5
-        mulsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm2
-        addsd     %xmm2, %xmm0
-        addsd     %xmm6, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        mulsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        mulsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        movq      %xmm0, (%rsp)
-..B1.3:
-        movq      (%rsp), %xmm0
-.L_2TAG_PACKET_6.0.2:
-..B1.5:
-        popq      %rcx
-..___tag_value_cosh.4:
-        ret       
-..___tag_value_cosh.5:
-END(cosh)
-# -- End  cosh
-	.section .rodata, "a"
-	.align 16
-	.align 16
-L2E:
-	.long	1610612736
-	.long	1080497479
-	.long	4166901572
-	.long	1053077003
-	.type	L2E,@object
-	.size	L2E,16
-	.align 16
-Shifter:
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.type	Shifter,@object
-	.size	Shifter,16
-	.align 16
-cv:
-	.long	3607404736
-	.long	1044146952
-	.long	3607404736
-	.long	3191630600
-	.long	4277811695
-	.long	1063661122
-	.long	4277811695
-	.long	3211144770
-	.long	2140175755
-	.long	1033864261
-	.long	2140175755
-	.long	1033864261
-	.long	4289495988
-	.long	1054113747
-	.long	4289495988
-	.long	1054113747
-	.long	4277811695
-	.long	1064709698
-	.long	4277811695
-	.long	3212193346
-	.type	cv,@object
-	.size	cv,80
-	.align 16
-T2f:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	3706687593
-	.long	1073526560
-	.long	3521726940
-	.long	1014301643
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.type	T2f,@object
-	.size	T2f,2048
-	.align 16
-T2_neg_f:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.type	T2_neg_f,@object
-	.size	T2_neg_f,2048
-	.align 16
-pv:
-	.long	3078135644
-	.long	1049787983
-	.long	381774870
-	.long	1062650220
-	.long	436314137
-	.long	1056571808
-	.long	1431655765
-	.long	1067799893
-	.type	pv,@object
-	.size	pv,32
-	.align 4
-HALFMASK:
-	.long	4160749568
-	.long	2147483647
-	.type	HALFMASK,@object
-	.size	HALFMASK,8
-	.align 4
-ONEMASK:
-	.long	0
-	.long	1072693248
-	.type	ONEMASK,@object
-	.size	ONEMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_cosh.1-.
-	.4byte ..___tag_value_cosh.5-..___tag_value_cosh.1
-	.2byte 0x0400
-	.4byte ..___tag_value_cosh.3-..___tag_value_cosh.1
-	.2byte 0x100e
-	.byte 0x04
-	.4byte ..___tag_value_cosh.4-..___tag_value_cosh.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_hypot.S b/libm/x86_64/e_hypot.S
deleted file mode 100644
index e46669f..0000000
--- a/libm/x86_64/e_hypot.S
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// X87 version:
-// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
-//
-// SSE version:
-// Swap x, y if |x|<|y|
-// For x=2^k*x, get y=y*2^(-k)
-// Get S ~ sqrt(x^2+y^2)  (leading 1 + leading 25 mantissa bits)
-//
-// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
-//                               + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
-//
-// Result is 2^k*(S + Se),  where Se = S*e
-//        S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
-//
-// Return 2^k*(S+Se)
-//
-// For |y/x|<2^(-64), return x
-//
-// For cases where maximum biased exponent is either greater than 7fdh or
-// below 32, take a special path to check for special cases (0, NaN, Inf),
-// possible overflow, and more accurate computation for denormal results
-//
-// Special cases:
-//  hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
-//  hypot(x,+-0) is equivalent to fabs(x)
-//  hypot(x,y) = y if (x==NaN or x==INF) and y==INF
-//  hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
-//  hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  hypot
-ENTRY(hypot)
-# parameter 1: %xmm0
-# parameter 2: %xmm1
-..B1.1:
-..___tag_value_hypot.1:
-..___tag_value_hypot.3:
-..B1.2:
-        subq      $64, %rsp
-        movapd    static_const_table(%rip), %xmm3
-        movsd     %xmm0, 48(%rsp)
-        movsd     %xmm1, 56(%rsp)
-        andpd     %xmm3, %xmm0
-        andpd     %xmm3, %xmm1
-        pextrw    $3, %xmm0, %eax
-        pextrw    $3, %xmm1, %edx
-        cmpl      $24528, %eax
-        ja        .L_2TAG_PACKET_0.0.1
-        cmpl      $24528, %edx
-        ja        .L_2TAG_PACKET_0.0.1
-.L_2TAG_PACKET_1.0.1:
-        fldl      48(%rsp)
-        fldl      56(%rsp)
-        fxch      %st(1)
-        fmul      %st(0), %st
-        fxch      %st(1)
-        nop       
-        fmul      %st(0), %st
-        faddp     %st, %st(1)
-        fsqrt     
-        jmp       .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_0.0.1:
-        cmpl      $32752, %eax
-        movl      %eax, %ecx
-        jae       .L_2TAG_PACKET_3.0.1
-        subl      %edx, %ecx
-        cmpl      $32752, %edx
-        jae       .L_2TAG_PACKET_3.0.1
-        addl      $928, %ecx
-        addl      %edx, %eax
-        cmpl      $1856, %ecx
-        ja        .L_2TAG_PACKET_4.0.1
-        cmpl      $49056, %eax
-        jb        .L_2TAG_PACKET_1.0.1
-        fldl      48(%rsp)
-        fldl      56(%rsp)
-        fxch      %st(1)
-        fmul      %st(0), %st
-        fxch      %st(1)
-        nop       
-        fmul      %st(0), %st
-        faddp     %st, %st(1)
-        fsqrt     
-.L_2TAG_PACKET_5.0.1:
-        fstl      (%rsp)
-        fstpt     16(%rsp)
-        xorl      %eax, %eax
-        movw      24(%rsp), %ax
-        cmpl      $17407, %eax
-        jae       .L_2TAG_PACKET_6.0.1
-        fldl      (%rsp)
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_4.0.1:
-        movsd     %xmm0, 32(%rsp)
-        movsd     %xmm1, 40(%rsp)
-        fldl      32(%rsp)
-        faddl     40(%rsp)
-        jmp       .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_6.0.1:
-        fldl      (%rsp)
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_3.0.1:
-        shufpd    $0, %xmm1, %xmm0
-        movdqa    %xmm0, %xmm2
-        movdqa    16+static_const_table(%rip), %xmm3
-        movsd     %xmm0, 32(%rsp)
-        movsd     %xmm1, 40(%rsp)
-        cmppd     $3, %xmm0, %xmm2
-        cmppd     $0, %xmm0, %xmm3
-        movmskpd  %xmm2, %edx
-        movmskpd  %xmm3, %rax
-        testl     %edx, %edx
-        je        .L_2TAG_PACKET_8.0.1
-        fldl      32(%rsp)
-        fmull     40(%rsp)
-        testq     $1, %rax
-        jne       .L_2TAG_PACKET_9.0.1
-        testq     $2, %rax
-        jne       .L_2TAG_PACKET_10.0.1
-        jmp       .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_8.0.1:
-        fldl      32(%rsp)
-        faddl     40(%rsp)
-        jmp       .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_9.0.1:
-        fstpl     40(%rsp)
-        fldl      32(%rsp)
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_10.0.1:
-        fstpl     32(%rsp)
-        fldl      40(%rsp)
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_2.0.1:
-.L_2TAG_PACKET_7.0.1:
-        fstpl     16(%rsp)
-        movq      16(%rsp), %xmm0
-        addq      $64, %rsp
-        ret       
-..B1.3:
-..___tag_value_hypot.4:
-END(hypot)
-# -- End  hypot
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	4294967295
-	.long	2147483647
-	.long	4294967295
-	.long	2147483647
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	2146435072
-	.type	static_const_table,@object
-	.size	static_const_table,32
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x00000014
-	.4byte 0x0000001c
-	.4byte ..___tag_value_hypot.1-.
-	.4byte ..___tag_value_hypot.4-..___tag_value_hypot.1
-	.2byte 0x0400
-	.4byte ..___tag_value_hypot.3-..___tag_value_hypot.1
-	.2byte 0x100e
-# End
diff --git a/libm/x86_64/e_log10.S b/libm/x86_64/e_log10.S
deleted file mode 100644
index 86f86ce..0000000
--- a/libm/x86_64/e_log10.S
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//    Let x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpss instruction (B0)
-//    B = int((B0*LH*2^7+0.5))/2^7
-//    LH is a short approximation for log10(e)
-//
-//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
-//
-//    Result:  k*log10(2) - log(B) + p(r)
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//  log10(0) = -INF with divide-by-zero exception raised                                           
-//  log10(1) = +0
-//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
-//  log10(+INF) = +INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  log10
-ENTRY(log10)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_log10.1:
-        subq      $24, %rsp
-..___tag_value_log10.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movl      $1054736384, %ecx
-        movd      %ecx, %xmm7
-        xorpd     %xmm3, %xmm3
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm3
-        movq      %xmm0, %xmm1
-        movl      $32768, %edx
-        movd      %edx, %xmm4
-        movapd    HIGHSIGMASK(%rip), %xmm5
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $16352, %ecx
-        psrlq     $27, %xmm0
-        movq      LOG10_E(%rip), %xmm2
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $78, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        mulss     %xmm7, %xmm0
-        orpd      %xmm3, %xmm1
-        lea       L_tbl(%rip), %r11
-        andpd     %xmm1, %xmm5
-        paddd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm6, %xmm0
-        andl      $32752, %eax
-        subl      %ecx, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        mulsd     %xmm0, %xmm1
-        movq      log2(%rip), %xmm6
-        movapd    coeff(%rip), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    -1504(%r11,%rdx), %xmm0
-        movapd    16+coeff(%rip), %xmm4
-        addsd     %xmm5, %xmm1
-        movapd    32+coeff(%rip), %xmm2
-        mulsd     %xmm7, %xmm6
-        pshufd    $68, %xmm1, %xmm5
-        mulsd     8+log2(%rip), %xmm7
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm4
-        movq      8+LOG10_E(%rip), %xmm6
-        mulpd     %xmm5, %xmm5
-        addpd     %xmm2, %xmm4
-        mulpd     %xmm5, %xmm3
-        pshufd    $228, %xmm0, %xmm2
-        addsd     %xmm1, %xmm0
-        mulsd     %xmm1, %xmm4
-        subsd     %xmm0, %xmm2
-        mulsd     %xmm1, %xmm6
-        addsd     %xmm2, %xmm1
-        pshufd    $238, %xmm0, %xmm2
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm2, %xmm7
-        addsd     %xmm6, %xmm1
-        addpd     %xmm3, %xmm4
-        addsd     %xmm7, %xmm1
-        mulpd     %xmm5, %xmm4
-        addsd     %xmm4, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        movq      (%rsp), %xmm0
-        movq      (%rsp), %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        cmpl      $16, %eax
-        jb        .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_4.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_5.0.2:
-        ja        .L_2TAG_PACKET_4.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_4.0.2
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_3.0.2:
-        xorpd     %xmm1, %xmm1
-        addsd     %xmm0, %xmm1
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_7.0.2
-        xorpd     %xmm1, %xmm1
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movq      %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psrlq     $27, %xmm0
-        movq      LOG10_E(%rip), %xmm2
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $78, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_5.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        movl      $9, 16(%rsp)
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $8, 16(%rsp)
-.L_2TAG_PACKET_8.0.2:
-        movq      %xmm0, 8(%rsp)
-..B1.3:
-        movq      8(%rsp), %xmm0
-.L_2TAG_PACKET_9.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_log10.4:
-        ret       
-..___tag_value_log10.5:
-END(log10)
-# -- End  log10
-	.section .rodata, "a"
-	.align 16
-	.align 16
-HIGHSIGMASK:
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	4294959104
-	.type	HIGHSIGMASK,@object
-	.size	HIGHSIGMASK,16
-	.align 16
-LOG10_E:
-	.long	0
-	.long	1071366144
-	.long	3207479560
-	.long	1062894188
-	.type	LOG10_E,@object
-	.size	LOG10_E,16
-	.align 16
-L_tbl:
-	.long	1352628224
-	.long	1070810131
-	.long	521319256
-	.long	1025503025
-	.long	2150839296
-	.long	1070801944
-	.long	3329350096
-	.long	3170190015
-	.long	1360613376
-	.long	1070793794
-	.long	2024059075
-	.long	1024991594
-	.long	1875350528
-	.long	1070785680
-	.long	2163882141
-	.long	3163564137
-	.long	2312126464
-	.long	1070777602
-	.long	1975711076
-	.long	1023674196
-	.long	1306336256
-	.long	1070769560
-	.long	3524899523
-	.long	3170508164
-	.long	1806334976
-	.long	1070761553
-	.long	4254777025
-	.long	1025238739
-	.long	2483193856
-	.long	1070753581
-	.long	3800671317
-	.long	3172916830
-	.long	2025350144
-	.long	1070745644
-	.long	1731514745
-	.long	1025501083
-	.long	3433285632
-	.long	1070737741
-	.long	2551857336
-	.long	3169662186
-	.long	1134317568
-	.long	1070729873
-	.long	3426297655
-	.long	3172637891
-	.long	2457152512
-	.long	1070722038
-	.long	63549415
-	.long	1025415416
-	.long	1861803008
-	.long	1070714237
-	.long	1910171636
-	.long	1023977580
-	.long	2414140416
-	.long	1070706469
-	.long	4002514337
-	.long	3170841618
-	.long	2900726784
-	.long	1070698734
-	.long	3268064083
-	.long	1022459609
-	.long	2123517952
-	.long	1070691032
-	.long	1767031218
-	.long	1022448156
-	.long	3194569728
-	.long	1070683362
-	.long	3402332618
-	.long	3171671160
-	.long	650882048
-	.long	1070675725
-	.long	4146023905
-	.long	3171023038
-	.long	1928988672
-	.long	1070668119
-	.long	1438617867
-	.long	1016360491
-	.long	1594908672
-	.long	1070660545
-	.long	971389377
-	.long	1024763979
-	.long	2818746368
-	.long	1070653002
-	.long	3555925341
-	.long	3172434821
-	.long	194584576
-	.long	1070645491
-	.long	943919215
-	.long	3172950063
-	.long	1215096832
-	.long	1070638010
-	.long	2283358588
-	.long	1022335098
-	.long	501519360
-	.long	1070630560
-	.long	480904295
-	.long	1024437959
-	.long	1278266368
-	.long	1070623140
-	.long	2755806066
-	.long	3172342012
-	.long	2487812096
-	.long	1070615750
-	.long	2489653202
-	.long	3172481099
-	.long	3085451264
-	.long	1070608390
-	.long	3759184951
-	.long	3172574892
-	.long	2039090176
-	.long	1070601060
-	.long	1361176676
-	.long	3172355319
-	.long	953057280
-	.long	1070591423
-	.long	1176587546
-	.long	3166422018
-	.long	3370524672
-	.long	1070576879
-	.long	3669570051
-	.long	1025376630
-	.long	749742080
-	.long	1070562394
-	.long	707700964
-	.long	3170814058
-	.long	4008353792
-	.long	1070547965
-	.long	3247327652
-	.long	1022431400
-	.long	2612455424
-	.long	1070533594
-	.long	2453457344
-	.long	3172322969
-	.long	3230920704
-	.long	1070519279
-	.long	1296781801
-	.long	1025115335
-	.long	3965253632
-	.long	1070505020
-	.long	373075289
-	.long	1017938528
-	.long	2593157120
-	.long	1070476669
-	.long	1068054086
-	.long	1021616576
-	.long	925962240
-	.long	1070448537
-	.long	850121213
-	.long	1023928989
-	.long	1732556800
-	.long	1070420620
-	.long	1305206740
-	.long	3172665570
-	.long	3815630848
-	.long	1070392915
-	.long	192642943
-	.long	3172699907
-	.long	2001758208
-	.long	1070365420
-	.long	2820786683
-	.long	1024704867
-	.long	16746496
-	.long	1070338131
-	.long	1399573110
-	.long	3171372773
-	.long	1886492672
-	.long	1070311044
-	.long	3621428075
-	.long	3172974358
-	.long	3338196992
-	.long	1070284157
-	.long	3793882035
-	.long	1025124701
-	.long	381769728
-	.long	1070257468
-	.long	3877933342
-	.long	3170195490
-	.long	2186491904
-	.long	1070230972
-	.long	1838687089
-	.long	1017927292
-	.long	1008330752
-	.long	1070204668
-	.long	2228321664
-	.long	1025352196
-	.long	2247065600
-	.long	1070178552
-	.long	1413900906
-	.long	3170902532
-	.long	2964070400
-	.long	1070152622
-	.long	3590454629
-	.long	1025016844
-	.long	465154048
-	.long	1070126876
-	.long	2079688550
-	.long	3172268183
-	.long	883615744
-	.long	1070101310
-	.long	989244452
-	.long	3171900485
-	.long	1993768960
-	.long	1070075922
-	.long	1124327841
-	.long	3172964992
-	.long	1794471936
-	.long	1070050710
-	.long	1140575046
-	.long	1022673726
-	.long	2797932544
-	.long	1070025671
-	.long	1894836933
-	.long	3172544059
-	.long	3433797632
-	.long	1070000803
-	.long	3221831166
-	.long	3171921685
-	.long	2338371584
-	.long	1069976104
-	.long	3732461053
-	.long	3164513518
-	.long	2644013056
-	.long	1069951571
-	.long	2519460462
-	.long	3172548740
-	.long	3383814144
-	.long	1069927202
-	.long	2290997657
-	.long	1025499649
-	.long	3781380096
-	.long	1069902995
-	.long	380479405
-	.long	1025184136
-	.long	3245785088
-	.long	1069878948
-	.long	1096398261
-	.long	3169885192
-	.long	1366712320
-	.long	1069855059
-	.long	2218343715
-	.long	3170281628
-	.long	2204717056
-	.long	1069831325
-	.long	2668334011
-	.long	1025264524
-	.long	1401772032
-	.long	1069807745
-	.long	4103993159
-	.long	1022925721
-	.long	3356721152
-	.long	1069784316
-	.long	3573790772
-	.long	3172186527
-	.long	4041148416
-	.long	1069761037
-	.long	4027691910
-	.long	3171276990
-	.long	3880151040
-	.long	1069737906
-	.long	4087118786
-	.long	3172710734
-	.long	3453364224
-	.long	1069714921
-	.long	99014299
-	.long	3172003077
-	.long	3491092480
-	.long	1069692080
-	.long	3801836701
-	.long	3172989287
-	.long	575580160
-	.long	1069669382
-	.long	1920406012
-	.long	3170874125
-	.long	22282240
-	.long	1069646824
-	.long	964193370
-	.long	1019363159
-	.long	2991429632
-	.long	1069624404
-	.long	3372589890
-	.long	1023425053
-	.long	2189645824
-	.long	1069602122
-	.long	2610503872
-	.long	1023652442
-	.long	3341467648
-	.long	1069579975
-	.long	1190292004
-	.long	1022425665
-	.long	3711293440
-	.long	1069557962
-	.long	1104795356
-	.long	1023625829
-	.long	1380401152
-	.long	1069524644
-	.long	1156998217
-	.long	1025100499
-	.long	765710336
-	.long	1069481144
-	.long	1736649113
-	.long	1024999439
-	.long	849412096
-	.long	1069437902
-	.long	2618178330
-	.long	3170853629
-	.long	1433104384
-	.long	1069394915
-	.long	43477267
-	.long	3170378811
-	.long	2548596736
-	.long	1069352180
-	.long	3967367063
-	.long	1025246584
-	.long	157577216
-	.long	1069309695
-	.long	100402533
-	.long	3172825502
-	.long	3326238720
-	.long	1069267455
-	.long	1176892909
-	.long	1025464099
-	.long	4155494400
-	.long	1069225459
-	.long	3713707617
-	.long	3172630046
-	.long	3545804800
-	.long	1069183704
-	.long	857007315
-	.long	1024965777
-	.long	2602520576
-	.long	1069142187
-	.long	2588758347
-	.long	1022463131
-	.long	2631196672
-	.long	1069100905
-	.long	2118424235
-	.long	1022490989
-	.long	838135808
-	.long	1069059856
-	.long	4117002727
-	.long	1024874520
-	.long	3210903552
-	.long	1069019036
-	.long	650070125
-	.long	3172012966
-	.long	3039211520
-	.long	1068978444
-	.long	438055812
-	.long	1017743757
-	.long	2385633280
-	.long	1068938077
-	.long	3011990369
-	.long	3171312044
-	.long	3491618816
-	.long	1068897932
-	.long	712813818
-	.long	3172720400
-	.long	183644160
-	.long	1068858008
-	.long	4287006742
-	.long	1022379728
-	.long	3639214080
-	.long	1068818300
-	.long	353762279
-	.long	3172980009
-	.long	3728416768
-	.long	1068778808
-	.long	1851367730
-	.long	1025486574
-	.long	3370094592
-	.long	1068739529
-	.long	4046594913
-	.long	3172567047
-	.long	1348407296
-	.long	1068700461
-	.long	143189675
-	.long	1025397632
-	.long	899403776
-	.long	1068661601
-	.long	3753687842
-	.long	3170772772
-	.long	1117708288
-	.long	1068622947
-	.long	1857340812
-	.long	3170782678
-	.long	1248276480
-	.long	1068584497
-	.long	1289858203
-	.long	1025222289
-	.long	683237376
-	.long	1068546249
-	.long	2356679608
-	.long	3171629170
-	.long	3253764096
-	.long	1068508200
-	.long	3267136556
-	.long	1018554987
-	.long	94478336
-	.long	1068441756
-	.long	1927868814
-	.long	3169378180
-	.long	3233144832
-	.long	1068366445
-	.long	2682188854
-	.long	1023964004
-	.long	2940297216
-	.long	1068291522
-	.long	275301289
-	.long	1023944679
-	.long	3677708288
-	.long	1068216982
-	.long	302658771
-	.long	1024465567
-	.long	1576968192
-	.long	1068142822
-	.long	3672035940
-	.long	3172254610
-	.long	1614069760
-	.long	1068069037
-	.long	480052905
-	.long	3172692062
-	.long	424435712
-	.long	1067995624
-	.long	2207869657
-	.long	3170965436
-	.long	3477782528
-	.long	1067922578
-	.long	2980661858
-	.long	3164990018
-	.long	3598401536
-	.long	1067849897
-	.long	1974393034
-	.long	3171357083
-	.long	2435235840
-	.long	1067777577
-	.long	1385289011
-	.long	1024615823
-	.long	1867333632
-	.long	1067705614
-	.long	3442236633
-	.long	1025334384
-	.long	3999301632
-	.long	1067634004
-	.long	3506472073
-	.long	1025132546
-	.long	2566971392
-	.long	1067562745
-	.long	1425757592
-	.long	3172358463
-	.long	112943104
-	.long	1067491833
-	.long	1693407156
-	.long	3172426603
-	.long	3079929856
-	.long	1067392159
-	.long	3999942455
-	.long	1018549369
-	.long	2443837440
-	.long	1067251701
-	.long	974534460
-	.long	1023963412
-	.long	359366656
-	.long	1067111917
-	.long	2204915018
-	.long	1013514416
-	.long	3564519424
-	.long	1066972799
-	.long	3977441659
-	.long	3170879860
-	.long	2011086848
-	.long	1066834343
-	.long	590145514
-	.long	1025390011
-	.long	3216982016
-	.long	1066696541
-	.long	3629120110
-	.long	1024330313
-	.long	2194128896
-	.long	1066559388
-	.long	2367098512
-	.long	3172260338
-	.long	2916220928
-	.long	1066422877
-	.long	2262431886
-	.long	1021229446
-	.long	2263941120
-	.long	1066172214
-	.long	3118507287
-	.long	1021484970
-	.long	3076292608
-	.long	1065901726
-	.long	1411737803
-	.long	3172957147
-	.long	1186136064
-	.long	1065632488
-	.long	3109349337
-	.long	1025397383
-	.long	3085303808
-	.long	1065364487
-	.long	584715031
-	.long	3172596519
-	.long	1821048832
-	.long	1064842211
-	.long	2182246895
-	.long	3172536214
-	.long	697368576
-	.long	1064311094
-	.long	3157561765
-	.long	3172716357
-	.long	894042112
-	.long	1063260131
-	.long	3237958154
-	.long	3172587292
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.type	L_tbl,@object
-	.size	L_tbl,2064
-	.align 16
-log2:
-	.long	1352628224
-	.long	1066615827
-	.long	521319256
-	.long	1021308721
-	.type	log2,@object
-	.size	log2,16
-	.align 16
-coeff:
-	.long	3248877870
-	.long	1077250164
-	.long	1691676429
-	.long	3221787401
-	.long	945132465
-	.long	3223701783
-	.long	3700831335
-	.long	1073506818
-	.long	2141010593
-	.long	1075227551
-	.long	3698831637
-	.long	3220339442
-	.type	coeff,@object
-	.size	coeff,48
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_log10.1-.
-	.4byte ..___tag_value_log10.5-..___tag_value_log10.1
-	.2byte 0x0400
-	.4byte ..___tag_value_log10.3-..___tag_value_log10.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_log10.4-..___tag_value_log10.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_sinh.S b/libm/x86_64/e_sinh.S
deleted file mode 100644
index d5f7b16..0000000
--- a/libm/x86_64/e_sinh.S
+++ /dev/null
@@ -1,1430 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//  sinh(x)=(exp(x)-exp(-x))/2
-//
-//  Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-//  log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//          L2EH+L2EL (upper 26, lower 53 bits)
-//
-//  Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-//                              f=0.b1 b2 ... b7, k integer
-//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-//  Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-//                       for |x| in [23/64,3*2^7)
-//  e^{-|x|}=2^{-k-f}*2^{-r}
-//
-//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
-//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
-//
-//  For |x| in [1/8, 3*2^7), sinh(x) is formed as
-//      RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
-//
-//  For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
-//  the result is checked for overflow.
-//
-//  For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
-//  To reduce rounding errors, the p3*x^3 term is computed as
-//     (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
-//  where x=xh+xl, (xh are the leading 17 bits of x), and
-//     (p3*xh^3)_high=RN(x+p3*xh^3)-x
-//  (error bound for polynomial expansion is below 0.51 ulp)
-//
-// Special cases:
-//  sinh(NaN) = quiet NaN, and raise invalid exception
-//  sinh(+/-INF) = +/-INF
-//  sinh(x) = x for subnormals
-//  for finite argument, only sinh(0)=0 is exact
-//  For IEEE double
-//    sinh(x) overflows  for x > 
-//    710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  sinh
-ENTRY(sinh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_sinh.1:
-        pushq     %rsi
-..___tag_value_sinh.3:
-..B1.2:
-        movsd     HALFMASK(%rip), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     L2E(%rip), %xmm1
-        movsd     8+L2E(%rip), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     Shifter(%rip), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        movl      $32768, %edx
-        andl      %ecx, %edx
-        andl      $32767, %ecx
-        subl      $16343, %ecx
-        cmpl      $177, %ecx
-        jae       .L_2TAG_PACKET_0.0.2
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        shll      $3, %edx
-        orl       %edx, %eax
-        movq      %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        xorpd     %xmm5, %xmm5
-        subsd     %xmm6, %xmm3
-        movapd    cv(%rip), %xmm4
-        addsd     %xmm1, %xmm2
-        movapd    16+cv(%rip), %xmm6
-        subsd     %xmm3, %xmm7
-        movl      $32704, %edx
-        pinsrw    $3, %edx, %xmm5
-        movapd    32+cv(%rip), %xmm1
-        addsd     %xmm7, %xmm2
-        movl      $127, %edx
-        andl      %eax, %edx
-        addl      %edx, %edx
-        shrl      $3, %eax
-        andl      $65520, %eax
-        addl      $16352, %eax
-        xorpd     %xmm0, %xmm0
-        cmpl      $161, %ecx
-        jae       .L_2TAG_PACKET_1.0.2
-        pshufd    $68, %xmm5, %xmm5
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        psubw     %xmm0, %xmm5
-        lea       T2f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm0
-        lea       T2_neg_f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm5
-        pshufd    $68, %xmm2, %xmm3
-        movapd    48+cv(%rip), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        mulpd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulpd     64+cv(%rip), %xmm2
-        mulpd     %xmm3, %xmm1
-        mulpd     %xmm3, %xmm7
-        mulpd     %xmm3, %xmm4
-        mulpd     %xmm3, %xmm1
-        addpd     %xmm7, %xmm6
-        movq      %xmm0, %xmm7
-        addpd     %xmm1, %xmm4
-        shufpd    $0, %xmm5, %xmm7
-        subpd     %xmm5, %xmm0
-        mulpd     %xmm7, %xmm2
-        addpd     %xmm6, %xmm4
-        subsd     %xmm0, %xmm7
-        mulpd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        subsd     %xmm5, %xmm7
-        addpd     %xmm2, %xmm4
-        addsd     %xmm6, %xmm7
-        pshufd    $238, %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_1.0.2:
-        subl      $16352, %eax
-        movl      %eax, %ecx
-        andl      $32752, %eax
-        shrl      $1, %eax
-        andl      $65520, %eax
-        subl      %eax, %ecx
-        addl      $16352, %eax
-        pinsrw    $3, %eax, %xmm0
-        pshufd    $68, %xmm0, %xmm0
-        lea       T2f(%rip), %r8
-        mulpd     (%r8,%rdx,8), %xmm0
-        pshufd    $68, %xmm2, %xmm3
-        movsd     48+cv(%rip), %xmm7
-        mulsd     %xmm3, %xmm3
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     64+cv(%rip), %xmm2
-        mulsd     %xmm3, %xmm1
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm3, %xmm4
-        addl      $16368, %ecx
-        pinsrw    $3, %ecx, %xmm5
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm6, %xmm4
-        mulsd     %xmm2, %xmm4
-        pshufd    $238, %xmm0, %xmm6
-        addsd     %xmm6, %xmm4
-        addsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm5, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        movl      $127, %edx
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_2.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        addl      $16343, %ecx
-        cmpl      $16343, %ecx
-        ja        .L_2TAG_PACKET_3.0.2
-        cmpl      $15856, %ecx
-        jb        .L_2TAG_PACKET_4.0.2
-        movapd    pv(%rip), %xmm1
-        pshufd    $68, %xmm0, %xmm6
-        mulpd     %xmm5, %xmm5
-        movapd    16+pv(%rip), %xmm2
-        pshufd    $68, %xmm0, %xmm7
-        movapd    32+pv(%rip), %xmm3
-        pshufd    $68, %xmm0, %xmm4
-        andpd     MASK3(%rip), %xmm6
-        mulpd     %xmm5, %xmm1
-        mulsd     %xmm5, %xmm2
-        subpd     %xmm6, %xmm4
-        mulpd     %xmm5, %xmm7
-        addpd     %xmm3, %xmm1
-        pshufd    $68, %xmm6, %xmm3
-        mulpd     %xmm5, %xmm5
-        mulsd     %xmm7, %xmm2
-        mulpd     %xmm7, %xmm1
-        pshufd    $68, %xmm0, %xmm7
-        mulsd     %xmm6, %xmm6
-        addsd     %xmm7, %xmm7
-        mulsd     %xmm4, %xmm4
-        mulpd     %xmm5, %xmm1
-        addsd     %xmm0, %xmm7
-        mulsd     %xmm3, %xmm6
-        mulsd     %xmm3, %xmm7
-        pshufd    $238, %xmm1, %xmm3
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm2, %xmm3
-        pshufd    $238, %xmm2, %xmm2
-        addsd     %xmm4, %xmm7
-        movq      %xmm0, %xmm4
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm5, %xmm7
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm2, %xmm7
-        subsd     %xmm0, %xmm4
-        addsd     %xmm7, %xmm1
-        addsd     %xmm4, %xmm6
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        cmpl      $16, %ecx
-        jae       .L_2TAG_PACKET_5.0.2
-        movq      %xmm0, %xmm1
-        mulsd     %xmm1, %xmm1
-        jmp       ..B1.5
-.L_2TAG_PACKET_5.0.2:
-        xorpd     %xmm2, %xmm2
-        movl      $17392, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        xorpd     %xmm3, %xmm3
-        movl      $15344, %edx
-        pinsrw    $3, %edx, %xmm3
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm0
-        mulsd     %xmm3, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_3.0.2:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        orl       %edx, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm1
-        andnpd    %xmm0, %xmm1
-        mulsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        movq      %xmm0, (%rsp)
-..B1.3:
-        movq      (%rsp), %xmm0
-.L_2TAG_PACKET_7.0.2:
-..B1.5:
-        popq      %rcx
-..___tag_value_sinh.4:
-        ret       
-..___tag_value_sinh.5:
-END(sinh)
-# -- End  sinh
-	.section .rodata, "a"
-	.align 16
-	.align 16
-L2E:
-	.long	1610612736
-	.long	1080497479
-	.long	4166901572
-	.long	1053077003
-	.type	L2E,@object
-	.size	L2E,16
-	.align 16
-Shifter:
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.type	Shifter,@object
-	.size	Shifter,16
-	.align 16
-cv:
-	.long	3607404736
-	.long	1044146952
-	.long	3607404736
-	.long	3191630600
-	.long	4277811695
-	.long	1063661122
-	.long	4277811695
-	.long	3211144770
-	.long	2140175755
-	.long	1033864261
-	.long	2140175755
-	.long	1033864261
-	.long	4289495988
-	.long	1054113747
-	.long	4289495988
-	.long	1054113747
-	.long	4277811695
-	.long	1064709698
-	.long	4277811695
-	.long	1064709698
-	.type	cv,@object
-	.size	cv,80
-	.align 16
-T2f:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	3706687593
-	.long	1073526560
-	.long	3521726940
-	.long	1014301643
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.type	T2f,@object
-	.size	T2f,2048
-	.align 16
-T2_neg_f:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.type	T2_neg_f,@object
-	.size	T2_neg_f,2048
-	.align 16
-pv:
-	.long	329805064
-	.long	1038488134
-	.long	2773927730
-	.long	1053236707
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1069897045
-	.long	1744127201
-	.long	1046144581
-	.long	436314137
-	.long	1059717536
-	.type	pv,@object
-	.size	pv,48
-	.align 16
-MASK3:
-	.long	0
-	.long	4294967280
-	.long	0
-	.long	4294967280
-	.type	MASK3,@object
-	.size	MASK3,16
-	.align 8
-HALFMASK:
-	.long	4160749568
-	.long	2147483647
-	.type	HALFMASK,@object
-	.size	HALFMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_sinh.1-.
-	.4byte ..___tag_value_sinh.5-..___tag_value_sinh.1
-	.2byte 0x0400
-	.4byte ..___tag_value_sinh.3-..___tag_value_sinh.1
-	.2byte 0x100e
-	.byte 0x04
-	.4byte ..___tag_value_sinh.4-..___tag_value_sinh.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/s_atan.S b/libm/x86_64/s_atan.S
deleted file mode 100644
index d0e5d72..0000000
--- a/libm/x86_64/s_atan.S
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// This implementation uses the main path for |x| in [2^{-5},2^65).
-// For |x| in [2^{-64},2^{-5}), a secondary path is used.
-// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
-// We use the following definition of B and X` so that the formula
-// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
-//
-// X = (-1)^s * 2^k * 1. x1 x2 ... x52
-//
-// Define X`  = 0 if k >= 5; and X`  = |X| otherwise
-// Define One = 0 if k >= 5; and One = 1 otherwise
-// Define B  = 0 if k <= -6; B =  2^k * 1.x1 x2 x3 x4 1  if -5 <= k <= 4
-// Define B  =  2^5 * 1.0 0 ... 0   if  k >= 5
-//
-// Tau is 0 if k <= -6;
-// Tau is atan( B )  if -5 <= k <= 4
-// Tau is pi/2 if k >= 5
-//
-// Special cases:
-//  atan(NaN) = quiet NaN
-//  atan(+/-INF) = +/-Pi/2
-//  atan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  atan
-ENTRY(atan)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_atan.1:
-        pushq     %rsi
-..___tag_value_atan.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        movq      $0xffff000000000000, %r8
-        movd      %r8, %xmm3
-        movq      ONEMASK(%rip), %xmm5
-        movq      $0x800000000000, %r9
-        movd      %r9, %xmm4
-        pextrw    $3, %xmm0, %edx
-        andpd     %xmm0, %xmm3
-        pshufd    $68, %xmm0, %xmm1
-        orpd      %xmm4, %xmm3
-        movl      %edx, %eax
-        andl      $32767, %edx
-        subl      $16288, %edx
-        cmpl      $159, %edx
-        ja        .L_2TAG_PACKET_0.0.1
-        mulsd     %xmm3, %xmm1
-        subsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm1
-        divsd     %xmm1, %xmm0
-        addl      $1, %edx
-        movq      a2(%rip), %xmm2
-        movq      b2(%rip), %xmm4
-        andl      $32768, %eax
-        xorpd     %xmm7, %xmm7
-        pinsrw    $3, %eax, %xmm7
-        addl      %edx, %edx
-        lea       atan_tbl(%rip), %r8
-        movq      (%r8,%rdx,8), %xmm6
-        movq      8(%r8,%rdx,8), %xmm5
-        xorpd     %xmm7, %xmm5
-        xorpd     %xmm7, %xmm6
-        movq      8+a2(%rip), %xmm7
-        movddup   %xmm0, %xmm1
-        mulsd     %xmm0, %xmm0
-        movddup   %xmm1, %xmm3
-        addsd     %xmm6, %xmm1
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm4
-        subsd     %xmm1, %xmm6
-        mulsd     %xmm0, %xmm4
-        addsd     %xmm7, %xmm2
-        mulsd     %xmm3, %xmm0
-        addsd     %xmm3, %xmm6
-        mulsd     %xmm2, %xmm0
-        addsd     8+b2(%rip), %xmm4
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm6, %xmm0
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_0.0.1:
-        addl      $944, %edx
-        cmpl      $1103, %edx
-        ja        .L_2TAG_PACKET_2.0.1
-        movq      a2(%rip), %xmm4
-        movq      b2(%rip), %xmm7
-        movq      (%rsp), %xmm0
-        mulsd     %xmm1, %xmm1
-        movq      8+a2(%rip), %xmm2
-        movq      8+b2(%rip), %xmm5
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm1, %xmm7
-        movq      %xmm1, %xmm6
-        mulsd     %xmm0, %xmm1
-        addsd     %xmm4, %xmm2
-        mulsd     %xmm6, %xmm7
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm7, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_2.0.1:
-        addl      $15344, %edx
-        cmpl      $16368, %edx
-        ja        .L_2TAG_PACKET_3.0.1
-        movq      (%rsp), %xmm0
-        movq      (%rsp), %xmm1
-        cmpl      $16, %edx
-        jae       .L_2TAG_PACKET_1.0.1
-        mulsd     %xmm0, %xmm1
-        jmp       .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_3.0.1:
-        cmpl      $17392, %edx
-        jae       .L_2TAG_PACKET_4.0.1
-        movq      $0xbff0000000000000, %r8
-        movd      %r8, %xmm1
-        divsd     %xmm0, %xmm1
-        movq      a2(%rip), %xmm2
-        movq      b2(%rip), %xmm4
-        andl      $32768, %eax
-        xorpd     %xmm7, %xmm7
-        pinsrw    $3, %eax, %xmm7
-        addl      %edx, %edx
-        movq      pi_table(%rip), %xmm6
-        movq      8+pi_table(%rip), %xmm5
-        xorpd     %xmm7, %xmm5
-        xorpd     %xmm7, %xmm6
-        movq      8+a2(%rip), %xmm7
-        movddup   %xmm1, %xmm0
-        mulsd     %xmm1, %xmm1
-        movddup   %xmm0, %xmm3
-        addsd     %xmm6, %xmm0
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm1, %xmm4
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm7, %xmm2
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm3, %xmm6
-        mulsd     %xmm2, %xmm1
-        addsd     8+b2(%rip), %xmm4
-        addsd     %xmm5, %xmm6
-        mulsd     %xmm4, %xmm1
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_4.0.1:
-        movq      (%rsp), %xmm4
-        movq      SGNMASK(%rip), %xmm0
-        movq      pi_table(%rip), %xmm2
-        movq      8+pi_table(%rip), %xmm3
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        andl      $2147483647, %edx
-        cmpl      $2146435072, %edx
-        jae       .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_6.0.1:
-        andnpd    %xmm4, %xmm0
-        orpd      %xmm0, %xmm2
-        orpd      %xmm3, %xmm0
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_5.0.1:
-        subl      $2146435072, %edx
-        orl       %edx, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_6.0.1
-        movq      %xmm4, %xmm0
-        addsd     %xmm0, %xmm0
-.L_2TAG_PACKET_1.0.1:
-..B1.3:
-        popq      %rcx
-..___tag_value_atan.4:
-        ret       
-..___tag_value_atan.5:
-END(atan)
-# -- End  atan
-	.section .rodata, "a"
-	.align 4
-	.align 4
-ONEMASK:
-	.long	0
-	.long	1072693248
-	.type	ONEMASK,@object
-	.size	ONEMASK,8
-	.align 4
-a2:
-	.long	2006262985
-	.long	1069310863
-	.long	2358449471
-	.long	3217342131
-	.type	a2,@object
-	.size	a2,16
-	.align 4
-b2:
-	.long	3845454352
-	.long	1069952297
-	.long	2829679149
-	.long	1073771565
-	.type	b2,@object
-	.size	b2,16
-	.align 4
-atan_tbl:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3819695742
-	.long	1067482761
-	.long	2398680355
-	.long	3155462074
-	.long	2998791009
-	.long	1067548225
-	.long	3868465248
-	.long	3157182472
-	.long	3339424991
-	.long	1067613680
-	.long	3296670360
-	.long	1010752543
-	.long	2710002256
-	.long	1067679126
-	.long	3403896007
-	.long	1010910768
-	.long	3275701428
-	.long	1067744562
-	.long	119959933
-	.long	1011482843
-	.long	2908636881
-	.long	1067809988
-	.long	2464489612
-	.long	1011545526
-	.long	3777889398
-	.long	1067875403
-	.long	3262682165
-	.long	1009703919
-	.long	3759667419
-	.long	1067940807
-	.long	1838130851
-	.long	3157373556
-	.long	732369940
-	.long	1068006200
-	.long	1203428313
-	.long	1010055371
-	.long	1166616461
-	.long	1068071580
-	.long	2901274051
-	.long	3158549977
-	.long	2945472892
-	.long	1068136947
-	.long	3726120658
-	.long	1009762715
-	.long	3954480976
-	.long	1068202301
-	.long	1289173457
-	.long	1009429861
-	.long	2081752829
-	.long	1068267642
-	.long	1836909874
-	.long	1006212095
-	.long	3807999788
-	.long	1068332968
-	.long	2172459940
-	.long	3156162078
-	.long	2731789884
-	.long	1068398280
-	.long	3450718392
-	.long	3159216547
-	.long	1044477961
-	.long	1068463577
-	.long	2230553229
-	.long	1011424339
-	.long	1486930287
-	.long	1068530218
-	.long	2861547474
-	.long	1012041376
-	.long	2293016881
-	.long	1068595466
-	.long	136843272
-	.long	1012684797
-	.long	201518157
-	.long	1068660680
-	.long	63231984
-	.long	1012427198
-	.long	4054234584
-	.long	1068725856
-	.long	3927006960
-	.long	1011878955
-	.long	1246477213
-	.long	1068790995
-	.long	1494265652
-	.long	3155219350
-	.long	678186699
-	.long	1068856093
-	.long	1264361424
-	.long	3159256693
-	.long	2690594995
-	.long	1068921148
-	.long	3906996379
-	.long	1009288267
-	.long	3362611517
-	.long	1068986159
-	.long	1650970041
-	.long	3158331771
-	.long	3102162111
-	.long	1069051124
-	.long	365917035
-	.long	3160264153
-	.long	2352611067
-	.long	1069116041
-	.long	4008970190
-	.long	3159478182
-	.long	1594134794
-	.long	1069180908
-	.long	466690178
-	.long	1012526501
-	.long	1345079306
-	.long	1069245723
-	.long	2268273568
-	.long	3160164092
-	.long	2163300970
-	.long	1069310484
-	.long	2750834800
-	.long	3158113482
-	.long	352522716
-	.long	1069375190
-	.long	1750411372
-	.long	1011790845
-	.long	848541647
-	.long	1069439838
-	.long	2164207573
-	.long	1011698350
-	.long	40647312
-	.long	1069504427
-	.long	2949165434
-	.long	3159107267
-	.long	2216766270
-	.long	1069574357
-	.long	2197920765
-	.long	3161055954
-	.long	1090914384
-	.long	1069638757
-	.long	2330454674
-	.long	1013365998
-	.long	387601244
-	.long	1069703022
-	.long	3185681168
-	.long	1013434071
-	.long	3991640484
-	.long	1069767144
-	.long	1313211590
-	.long	3161087959
-	.long	3322489502
-	.long	1069831118
-	.long	3013977995
-	.long	1013053011
-	.long	3121698570
-	.long	1069894936
-	.long	4069015667
-	.long	1013023362
-	.long	4289964660
-	.long	1069958591
-	.long	1736191156
-	.long	3158266731
-	.long	3903312386
-	.long	1070022077
-	.long	1833592413
-	.long	3159731471
-	.long	3818449864
-	.long	1070085387
-	.long	851036429
-	.long	3159730451
-	.long	2097480306
-	.long	1070148515
-	.long	3506390884
-	.long	3160462302
-	.long	1611694502
-	.long	1070211454
-	.long	2785735540
-	.long	3160465144
-	.long	1464694796
-	.long	1070274198
-	.long	4229277299
-	.long	3159907000
-	.long	1299612775
-	.long	1070336741
-	.long	4116653788
-	.long	3160427739
-	.long	1310544789
-	.long	1070399077
-	.long	1064430331
-	.long	1013218202
-	.long	2253168030
-	.long	1070461200
-	.long	1405044609
-	.long	3157623179
-	.long	1159567373
-	.long	1070523105
-	.long	2353445521
-	.long	3159992176
-	.long	1359373750
-	.long	1070605818
-	.long	1748171336
-	.long	3161879263
-	.long	908341706
-	.long	1070667034
-	.long	3372710815
-	.long	3161775245
-	.long	1743027350
-	.long	1070727765
-	.long	687089934
-	.long	3160507171
-	.long	2055355646
-	.long	1070787992
-	.long	2392855242
-	.long	1013682469
-	.long	690426164
-	.long	1070847697
-	.long	1103926666
-	.long	1014052810
-	.long	1483247847
-	.long	1070906862
-	.long	2082645847
-	.long	3161345479
-	.long	392040270
-	.long	1070965472
-	.long	2407720023
-	.long	1014053754
-	.long	2673846014
-	.long	1071023511
-	.long	1293605532
-	.long	3158464385
-	.long	1384215810
-	.long	1071080967
-	.long	2446095872
-	.long	3159216407
-	.long	3101660631
-	.long	1071137826
-	.long	698040758
-	.long	1014855328
-	.long	2094057058
-	.long	1071194078
-	.long	2282048339
-	.long	1014040385
-	.long	1712750594
-	.long	1071249712
-	.long	1204372378
-	.long	3162276464
-	.long	1411515787
-	.long	1071304719
-	.long	949080808
-	.long	1015006403
-	.long	931538085
-	.long	1071359091
-	.long	3027127039
-	.long	1014307233
-	.long	179139065
-	.long	1071412821
-	.long	4285547492
-	.long	3161934731
-	.long	3387721259
-	.long	1071465902
-	.long	373225773
-	.long	1013486625
-	.long	2132236852
-	.long	1071544299
-	.long	3250533429
-	.long	1014031677
-	.long	1942070284
-	.long	1071645596
-	.long	1237964179
-	.long	3163239113
-	.long	1532707802
-	.long	1071695380
-	.long	330645583
-	.long	1012495610
-	.long	2294184979
-	.long	1071743834
-	.long	3959472897
-	.long	1015833116
-	.long	3805060714
-	.long	1071790961
-	.long	2671256142
-	.long	1013727772
-	.long	2215037898
-	.long	1071836770
-	.long	2683359117
-	.long	1015831902
-	.long	483661594
-	.long	1071881273
-	.long	836288326
-	.long	3162648643
-	.long	1534679894
-	.long	1071924486
-	.long	373258696
-	.long	3162470096
-	.long	1538714628
-	.long	1071966430
-	.long	3199433068
-	.long	1015325501
-	.long	527642555
-	.long	1072007128
-	.long	3636832592
-	.long	3161843145
-	.long	291339150
-	.long	1072046605
-	.long	890169537
-	.long	3160586117
-	.long	2450210201
-	.long	1072084888
-	.long	1636353294
-	.long	3163193400
-	.long	2411367951
-	.long	1072122007
-	.long	374899873
-	.long	1011331750
-	.long	681549971
-	.long	1072157992
-	.long	506411689
-	.long	1015373954
-	.long	1466745541
-	.long	1072192873
-	.long	2143860931
-	.long	1013364334
-	.long	2845622366
-	.long	1072226682
-	.long	2869178209
-	.long	3162423682
-	.long	2838871438
-	.long	1072275456
-	.long	3742223599
-	.long	1014338577
-	.long	4200275274
-	.long	1072337034
-	.long	1566539915
-	.long	3161839550
-	.long	3034733530
-	.long	1072394897
-	.long	652621408
-	.long	3162261964
-	.long	3207412993
-	.long	1072449290
-	.long	3206124665
-	.long	1014408733
-	.long	624461478
-	.long	1072500450
-	.long	932437485
-	.long	1015204343
-	.long	767665908
-	.long	1072548600
-	.long	1037911952
-	.long	3163527627
-	.long	1110773639
-	.long	1072593952
-	.long	2371517912
-	.long	3160465741
-	.long	1940828530
-	.long	1072636704
-	.long	2731408428
-	.long	3162895795
-	.long	1911329388
-	.long	1072677041
-	.long	1773089615
-	.long	3159569267
-	.long	1764715788
-	.long	1072704191
-	.long	691346949
-	.long	3164069946
-	.long	3332979233
-	.long	1072722195
-	.long	3550733983
-	.long	1014770628
-	.long	1321870254
-	.long	1072739231
-	.long	1415315820
-	.long	1016224052
-	.long	3657429030
-	.long	1072755365
-	.long	3910539033
-	.long	1015966402
-	.long	4197624557
-	.long	1072770661
-	.long	2333399254
-	.long	3164546480
-	.long	1512059493
-	.long	1072785177
-	.long	2701510318
-	.long	1016178092
-	.long	453379037
-	.long	1072798965
-	.long	4046344253
-	.long	3162814364
-	.long	1942345162
-	.long	1072818388
-	.long	621134147
-	.long	1016335195
-	.long	4210176273
-	.long	1072842164
-	.long	2701013387
-	.long	3164326619
-	.long	4185644010
-	.long	1072863795
-	.long	4163699341
-	.long	1016203112
-	.long	679688788
-	.long	1072883543
-	.long	4147276762
-	.long	1014066750
-	.long	29432865
-	.long	1072901630
-	.long	970415797
-	.long	1016902063
-	.long	4070721092
-	.long	1072918247
-	.long	2539004411
-	.long	3163736096
-	.long	2252468843
-	.long	1072933561
-	.long	3424082887
-	.long	3163407177
-	.long	2929724825
-	.long	1072947712
-	.long	3661482235
-	.long	3163846989
-	.long	1377513368
-	.long	1072960824
-	.long	3987926680
-	.long	1013647908
-	.long	1031632908
-	.long	1072973003
-	.long	3672217151
-	.long	1016614619
-	.long	2516508130
-	.long	1072984342
-	.long	545855020
-	.long	3162728930
-	.long	3792452178
-	.long	1072994923
-	.long	3420119467
-	.long	1016471430
-	.long	3147791459
-	.long	1073004818
-	.long	1342204979
-	.long	1013937254
-	.long	999189752
-	.long	1073014090
-	.long	1006335472
-	.long	3162850919
-	.long	711011011
-	.long	1073022794
-	.long	4633488
-	.long	3162966895
-	.long	15640363
-	.long	1073030980
-	.long	1686389560
-	.long	3164376226
-	.long	1218463589
-	.long	1073042382
-	.long	1526837110
-	.long	3163533985
-	.long	2538470555
-	.long	1073056144
-	.long	2273304406
-	.long	3163784996
-	.long	1229720947
-	.long	1073068489
-	.long	2971628206
-	.long	3162356540
-	.long	3115427016
-	.long	1073079621
-	.long	4215132957
-	.long	3164282762
-	.long	4030612557
-	.long	1073089709
-	.long	1913251691
-	.long	3163671292
-	.long	2728521257
-	.long	1073098892
-	.long	2861089500
-	.long	1015454459
-	.long	1118696283
-	.long	1073107285
-	.long	1628948053
-	.long	1016179658
-	.long	2682711255
-	.long	1073114984
-	.long	2906306266
-	.long	1014142643
-	.long	2073898081
-	.long	1073122072
-	.long	1322740454
-	.long	3164497217
-	.long	1403700297
-	.long	1073128618
-	.long	416137895
-	.long	3162781466
-	.long	2502685617
-	.long	1073134681
-	.long	3242008732
-	.long	1014593495
-	.long	1531926851
-	.long	1073140313
-	.long	1362708094
-	.long	1016517604
-	.long	3572814411
-	.long	1073145557
-	.long	3709790527
-	.long	1012646874
-	.long	1695536111
-	.long	1073150453
-	.long	3980346340
-	.long	1016705136
-	.long	2363057203
-	.long	1073155033
-	.long	2551194792
-	.long	1012569695
-	.long	2873365682
-	.long	1073159327
-	.long	3181154748
-	.long	1017041450
-	.long	1053384691
-	.long	1073165288
-	.long	3074536879
-	.long	1016965660
-	.long	3270542712
-	.long	1073172451
-	.long	2535319415
-	.long	3163051778
-	.long	1353631484
-	.long	1073178850
-	.long	1173833755
-	.long	1015534537
-	.long	3511218460
-	.long	1073184599
-	.long	1243608109
-	.long	3161592122
-	.long	4121259284
-	.long	1073189793
-	.long	398584912
-	.long	3163829923
-	.long	1193862106
-	.long	1073194509
-	.long	1873745539
-	.long	3163802819
-	.long	3861949790
-	.long	1073198808
-	.long	3841261147
-	.long	1015587248
-	.long	1486904578
-	.long	1073202745
-	.long	1634726776
-	.long	3163847886
-	.long	2879153715
-	.long	1073206362
-	.long	200456242
-	.long	3164138657
-	.long	385353253
-	.long	1073209698
-	.long	1186355517
-	.long	1014887155
-	.long	1125865839
-	.long	1073212783
-	.long	203561262
-	.long	3161244927
-	.long	1221361475
-	.long	1073215645
-	.long	3382476563
-	.long	1014936138
-	.long	2077323573
-	.long	1073218307
-	.long	1005121005
-	.long	3164430752
-	.long	215611373
-	.long	1073220790
-	.long	353198764
-	.long	3164485137
-	.long	2347419265
-	.long	1073223110
-	.long	1103143360
-	.long	1016542137
-	.long	1379112765
-	.long	1073225284
-	.long	381583533
-	.long	3162870833
-	.long	3891198463
-	.long	1073228298
-	.long	1771275754
-	.long	1014654681
-	.long	3395914051
-	.long	1073231917
-	.long	2350900914
-	.long	3164013978
-	.long	2799919478
-	.long	1073235146
-	.long	2893950164
-	.long	3163260901
-	.long	1138673476
-	.long	1073238045
-	.long	2622204785
-	.long	3164174388
-	.long	3408855940
-	.long	1073240661
-	.long	2800881650
-	.long	1016008624
-	.long	2044858738
-	.long	1073243035
-	.long	604544785
-	.long	1017022901
-	.long	2578795176
-	.long	1073245198
-	.long	2557332925
-	.long	1016135165
-	.long	4196285314
-	.long	1073247177
-	.long	2032365307
-	.long	1016194735
-	.long	224877747
-	.long	1073248996
-	.long	497926916
-	.long	1016947111
-	.long	3271386490
-	.long	1073250671
-	.long	2689994846
-	.long	1016631513
-	.long	813635989
-	.long	1073252221
-	.long	747035277
-	.long	3164530136
-	.long	369829519
-	.long	1073253658
-	.long	2182033858
-	.long	3163190340
-	.long	1187679052
-	.long	1073254994
-	.long	673954443
-	.long	1016149821
-	.long	4232586098
-	.long	1073256239
-	.long	497775200
-	.long	3162179015
-	.long	426690558
-	.long	1073257404
-	.long	3063343247
-	.long	1016865578
-	.long	1624065902
-	.long	1073258494
-	.long	1354224996
-	.long	3163503778
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.type	atan_tbl,@object
-	.size	atan_tbl,2592
-	.align 4
-pi_table:
-	.long	1413754136
-	.long	1073291771
-	.long	856972295
-	.long	1016178214
-	.type	pi_table,@object
-	.size	pi_table,16
-	.align 4
-SGNMASK:
-	.long	4294967295
-	.long	2147483647
-	.type	SGNMASK,@object
-	.size	SGNMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_atan.1-.
-	.4byte ..___tag_value_atan.5-..___tag_value_atan.1
-	.2byte 0x0400
-	.4byte ..___tag_value_atan.3-..___tag_value_atan.1
-	.2byte 0x100e
-	.byte 0x04
-	.4byte ..___tag_value_atan.4-..___tag_value_atan.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/s_cbrt.S b/libm/x86_64/s_cbrt.S
deleted file mode 100644
index 6b00f56..0000000
--- a/libm/x86_64/s_cbrt.S
+++ /dev/null
@@ -1,754 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//   Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
-//   Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
-//   where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
-//   cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
-//   (T stores the high 53 bits, D stores the low order bits)
-//   Result=2^k*T+(2^k*T*r)*P+2^k*D
-//   where P=p1+p2*r+..+p8*r^7
-//
-// Special cases:
-//  cbrt(NaN) = quiet NaN, and raise invalid exception
-//  cbrt(INF) = that INF
-//  cbrt(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  cbrt
-ENTRY(cbrt)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cbrt.1:
-        subq      $24, %rsp
-..___tag_value_cbrt.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        movq      %xmm0, %xmm7
-        movl      $524032, %edx
-        movsd     EXP_MSK3(%rip), %xmm5
-        movsd     EXP_MSK2(%rip), %xmm3
-        psrlq     $44, %xmm7
-        pextrw    $0, %xmm7, %ecx
-        movd      %xmm7, %eax
-        movsd     EXP_MASK(%rip), %xmm1
-        movsd     SIG_MASK(%rip), %xmm2
-        andl      $248, %ecx
-        lea       rcp_table(%rip), %r8
-        movsd     (%rcx,%r8), %xmm4
-        movq      %rax, %r9
-        andl      %eax, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_0.0.1
-        cmpl      $524032, %edx
-        je        .L_2TAG_PACKET_1.0.1
-        shrl      $8, %edx
-        shrq      $8, %r9
-        andpd     %xmm0, %xmm2
-        andpd     %xmm5, %xmm0
-        orpd      %xmm2, %xmm3
-        orpd      %xmm0, %xmm1
-        movapd    coeff_table(%rip), %xmm5
-        movl      $5462, %eax
-        movapd    16+coeff_table(%rip), %xmm6
-        mull      %edx
-        movq      %r9, %rdx
-        andq      $2047, %r9
-        shrl      $14, %eax
-        andl      $2048, %edx
-        subq      %rax, %r9
-        subq      %rax, %r9
-        subq      %rax, %r9
-        shlq      $8, %r9
-        addl      $682, %eax
-        orl       %edx, %eax
-        movd      %eax, %xmm7
-        addq      %r9, %rcx
-        psllq     $52, %xmm7
-.L_2TAG_PACKET_2.0.1:
-        movapd    32+coeff_table(%rip), %xmm2
-        movapd    48+coeff_table(%rip), %xmm0
-        subsd     %xmm3, %xmm1
-        movq      %xmm7, %xmm3
-        lea       cbrt_table(%rip), %r8
-        mulsd     (%rcx,%r8), %xmm7
-        mulsd     %xmm4, %xmm1
-        lea       D_table(%rip), %r8
-        mulsd     (%rcx,%r8), %xmm3
-        movapd    %xmm1, %xmm4
-        unpcklpd  %xmm1, %xmm1
-        mulpd     %xmm1, %xmm5
-        mulpd     %xmm1, %xmm6
-        mulpd     %xmm1, %xmm1
-        addpd     %xmm5, %xmm2
-        addpd     %xmm6, %xmm0
-        mulpd     %xmm1, %xmm2
-        mulpd     %xmm1, %xmm1
-        mulsd     %xmm7, %xmm4
-        addpd     %xmm2, %xmm0
-        mulsd     %xmm0, %xmm1
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm3, %xmm0
-        addsd     %xmm7, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_0.0.1:
-        mulsd     SCALE63(%rip), %xmm0
-        movq      %xmm0, %xmm7
-        movl      $524032, %edx
-        psrlq     $44, %xmm7
-        pextrw    $0, %xmm7, %ecx
-        movd      %xmm7, %eax
-        andl      $248, %ecx
-        lea       rcp_table(%rip), %r8
-        movsd     (%rcx,%r8), %xmm4
-        movq      %rax, %r9
-        andl      %eax, %edx
-        shrl      $8, %edx
-        shrq      $8, %r9
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_3.0.1
-        andpd     %xmm0, %xmm2
-        andpd     %xmm5, %xmm0
-        orpd      %xmm2, %xmm3
-        orpd      %xmm0, %xmm1
-        movapd    coeff_table(%rip), %xmm5
-        movl      $5462, %eax
-        movapd    16+coeff_table(%rip), %xmm6
-        mull      %edx
-        movq      %r9, %rdx
-        andq      $2047, %r9
-        shrl      $14, %eax
-        andl      $2048, %edx
-        subq      %rax, %r9
-        subq      %rax, %r9
-        subq      %rax, %r9
-        shlq      $8, %r9
-        addl      $661, %eax
-        orl       %edx, %eax
-        movd      %eax, %xmm7
-        addq      %r9, %rcx
-        psllq     $52, %xmm7
-        jmp       .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_3.0.1:
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_4.0.1
-        xorpd     %xmm0, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_4.0.1:
-        movsd     ZERON(%rip), %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_1.0.1:
-        movl      4(%rsp), %eax
-        movl      (%rsp), %edx
-        movl      %eax, %ecx
-        andl      $2147483647, %ecx
-        cmpl      $2146435072, %ecx
-        ja        .L_2TAG_PACKET_5.0.1
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_5.0.1
-        cmpl      $2146435072, %eax
-        jne       .L_2TAG_PACKET_6.0.1
-        movsd     INF(%rip), %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_6.0.1:
-        movsd     NEG_INF(%rip), %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_5.0.1:
-        movsd     (%rsp), %xmm0
-        addsd     %xmm0, %xmm0
-        movq      %xmm0, 8(%rsp)
-.L_2TAG_PACKET_7.0.1:
-..B1.4:
-        addq      $24, %rsp
-..___tag_value_cbrt.4:
-        ret       
-..___tag_value_cbrt.5:
-END(cbrt)
-# -- End  cbrt
-	.section .rodata, "a"
-	.align 16
-	.align 16
-coeff_table:
-	.long	1553778919
-	.long	3213899486
-	.long	3534952507
-	.long	3215266280
-	.long	1646371399
-	.long	3214412045
-	.long	477218588
-	.long	3216798151
-	.long	3582521621
-	.long	1066628362
-	.long	1007461464
-	.long	1068473053
-	.long	889629714
-	.long	1067378449
-	.long	1431655765
-	.long	1070945621
-	.type	coeff_table,@object
-	.size	coeff_table,64
-	.align 4
-EXP_MSK3:
-	.long	4294967295
-	.long	1048575
-	.type	EXP_MSK3,@object
-	.size	EXP_MSK3,8
-	.align 4
-EXP_MSK2:
-	.long	0
-	.long	3220193280
-	.type	EXP_MSK2,@object
-	.size	EXP_MSK2,8
-	.align 4
-EXP_MASK:
-	.long	0
-	.long	3220176896
-	.type	EXP_MASK,@object
-	.size	EXP_MASK,8
-	.align 4
-SIG_MASK:
-	.long	0
-	.long	1032192
-	.type	SIG_MASK,@object
-	.size	SIG_MASK,8
-	.align 4
-rcp_table:
-	.long	528611360
-	.long	3220144632
-	.long	2884679527
-	.long	3220082993
-	.long	1991868891
-	.long	3220024928
-	.long	2298714891
-	.long	3219970134
-	.long	58835168
-	.long	3219918343
-	.long	3035110223
-	.long	3219869313
-	.long	1617585086
-	.long	3219822831
-	.long	2500867033
-	.long	3219778702
-	.long	4241943008
-	.long	3219736752
-	.long	258732970
-	.long	3219696825
-	.long	404232216
-	.long	3219658776
-	.long	2172167368
-	.long	3219622476
-	.long	1544257904
-	.long	3219587808
-	.long	377579543
-	.long	3219554664
-	.long	1616385542
-	.long	3219522945
-	.long	813783277
-	.long	3219492562
-	.long	3940743189
-	.long	3219463431
-	.long	2689777499
-	.long	3219435478
-	.long	1700977147
-	.long	3219408632
-	.long	3169102082
-	.long	3219382828
-	.long	327235604
-	.long	3219358008
-	.long	1244336319
-	.long	3219334115
-	.long	1300311200
-	.long	3219311099
-	.long	3095471925
-	.long	3219288912
-	.long	2166487928
-	.long	3219267511
-	.long	2913108253
-	.long	3219246854
-	.long	293672978
-	.long	3219226904
-	.long	288737297
-	.long	3219207624
-	.long	1810275472
-	.long	3219188981
-	.long	174592167
-	.long	3219170945
-	.long	3539053052
-	.long	3219153485
-	.long	2164392968
-	.long	3219136576
-	.type	rcp_table,@object
-	.size	rcp_table,256
-	.align 4
-cbrt_table:
-	.long	572345495
-	.long	1072698681
-	.long	1998204467
-	.long	1072709382
-	.long	3861501553
-	.long	1072719872
-	.long	2268192434
-	.long	1072730162
-	.long	2981979308
-	.long	1072740260
-	.long	270859143
-	.long	1072750176
-	.long	2958651392
-	.long	1072759916
-	.long	313113243
-	.long	1072769490
-	.long	919449400
-	.long	1072778903
-	.long	2809328903
-	.long	1072788162
-	.long	2222981587
-	.long	1072797274
-	.long	2352530781
-	.long	1072806244
-	.long	594152517
-	.long	1072815078
-	.long	1555767199
-	.long	1072823780
-	.long	4282421314
-	.long	1072832355
-	.long	2355578597
-	.long	1072840809
-	.long	1162590619
-	.long	1072849145
-	.long	797864051
-	.long	1072857367
-	.long	431273680
-	.long	1072865479
-	.long	2669831148
-	.long	1072873484
-	.long	733477752
-	.long	1072881387
-	.long	4280220604
-	.long	1072889189
-	.long	801961634
-	.long	1072896896
-	.long	2915370760
-	.long	1072904508
-	.long	1159613482
-	.long	1072912030
-	.long	2689944798
-	.long	1072919463
-	.long	1248687822
-	.long	1072926811
-	.long	2967951030
-	.long	1072934075
-	.long	630170432
-	.long	1072941259
-	.long	3760898254
-	.long	1072948363
-	.long	0
-	.long	1072955392
-	.long	2370273294
-	.long	1072962345
-	.long	1261754802
-	.long	1072972640
-	.long	546334065
-	.long	1072986123
-	.long	1054893830
-	.long	1072999340
-	.long	1571187597
-	.long	1073012304
-	.long	1107975175
-	.long	1073025027
-	.long	3606909377
-	.long	1073037519
-	.long	1113616747
-	.long	1073049792
-	.long	4154744632
-	.long	1073061853
-	.long	3358931423
-	.long	1073073713
-	.long	4060702372
-	.long	1073085379
-	.long	747576176
-	.long	1073096860
-	.long	3023138255
-	.long	1073108161
-	.long	1419988548
-	.long	1073119291
-	.long	1914185305
-	.long	1073130255
-	.long	294389948
-	.long	1073141060
-	.long	3761802570
-	.long	1073151710
-	.long	978281566
-	.long	1073162213
-	.long	823148820
-	.long	1073172572
-	.long	2420954441
-	.long	1073182792
-	.long	3815449908
-	.long	1073192878
-	.long	2046058587
-	.long	1073202835
-	.long	1807524753
-	.long	1073212666
-	.long	2628681401
-	.long	1073222375
-	.long	3225667357
-	.long	1073231966
-	.long	1555307421
-	.long	1073241443
-	.long	3454043099
-	.long	1073250808
-	.long	1208137896
-	.long	1073260066
-	.long	3659916772
-	.long	1073269218
-	.long	1886261264
-	.long	1073278269
-	.long	3593647839
-	.long	1073287220
-	.long	3086012205
-	.long	1073296075
-	.long	2769796922
-	.long	1073304836
-	.long	888716057
-	.long	1073317807
-	.long	2201465623
-	.long	1073334794
-	.long	164369365
-	.long	1073351447
-	.long	3462666733
-	.long	1073367780
-	.long	2773905457
-	.long	1073383810
-	.long	1342879088
-	.long	1073399550
-	.long	2543933975
-	.long	1073415012
-	.long	1684477781
-	.long	1073430209
-	.long	3532178543
-	.long	1073445151
-	.long	1147747300
-	.long	1073459850
-	.long	1928031793
-	.long	1073474314
-	.long	2079717015
-	.long	1073488553
-	.long	4016765315
-	.long	1073502575
-	.long	3670431139
-	.long	1073516389
-	.long	3549227225
-	.long	1073530002
-	.long	11637607
-	.long	1073543422
-	.long	588220169
-	.long	1073556654
-	.long	2635407503
-	.long	1073569705
-	.long	2042029317
-	.long	1073582582
-	.long	1925128962
-	.long	1073595290
-	.long	4136375664
-	.long	1073607834
-	.long	759964600
-	.long	1073620221
-	.long	4257606771
-	.long	1073632453
-	.long	297278907
-	.long	1073644538
-	.long	3655053093
-	.long	1073656477
-	.long	2442253172
-	.long	1073668277
-	.long	1111876799
-	.long	1073679941
-	.long	3330973139
-	.long	1073691472
-	.long	3438879452
-	.long	1073702875
-	.long	3671565478
-	.long	1073714153
-	.long	1317849547
-	.long	1073725310
-	.long	1642364115
-	.long	1073736348
-	.type	cbrt_table,@object
-	.size	cbrt_table,768
-	.align 4
-D_table:
-	.long	4050900474
-	.long	1014427190
-	.long	1157977860
-	.long	1016444461
-	.long	1374568199
-	.long	1017271387
-	.long	2809163288
-	.long	1016882676
-	.long	3742377377
-	.long	1013168191
-	.long	3101606597
-	.long	1017541672
-	.long	65224358
-	.long	1017217597
-	.long	2691591250
-	.long	1017266643
-	.long	4020758549
-	.long	1017689313
-	.long	1316310992
-	.long	1018030788
-	.long	1031537856
-	.long	1014090882
-	.long	3261395239
-	.long	1016413641
-	.long	886424999
-	.long	1016313335
-	.long	3114776834
-	.long	1014195875
-	.long	1681120620
-	.long	1017825416
-	.long	1329600273
-	.long	1016625740
-	.long	465474623
-	.long	1017097119
-	.long	4251633980
-	.long	1017169077
-	.long	1986990133
-	.long	1017710645
-	.long	752958613
-	.long	1017159641
-	.long	2216216792
-	.long	1018020163
-	.long	4282860129
-	.long	1015924861
-	.long	1557627859
-	.long	1016039538
-	.long	3889219754
-	.long	1018086237
-	.long	3684996408
-	.long	1017353275
-	.long	723532103
-	.long	1017717141
-	.long	2951149676
-	.long	1012528470
-	.long	831890937
-	.long	1017830553
-	.long	1031212645
-	.long	1017387331
-	.long	2741737450
-	.long	1017604974
-	.long	2863311531
-	.long	1003776682
-	.long	4276736099
-	.long	1013153088
-	.long	4111778382
-	.long	1015673686
-	.long	1728065769
-	.long	1016413986
-	.long	2708718031
-	.long	1018078833
-	.long	1069335005
-	.long	1015291224
-	.long	700037144
-	.long	1016482032
-	.long	2904566452
-	.long	1017226861
-	.long	4074156649
-	.long	1017622651
-	.long	25019565
-	.long	1015245366
-	.long	3601952608
-	.long	1015771755
-	.long	3267129373
-	.long	1017904664
-	.long	503203103
-	.long	1014921629
-	.long	2122011730
-	.long	1018027866
-	.long	3927295461
-	.long	1014189456
-	.long	2790625147
-	.long	1016024251
-	.long	1330460186
-	.long	1016940346
-	.long	4033568463
-	.long	1015538390
-	.long	3695818227
-	.long	1017509621
-	.long	257573361
-	.long	1017208868
-	.long	3227697852
-	.long	1017337964
-	.long	234118548
-	.long	1017169577
-	.long	4009025803
-	.long	1017278524
-	.long	1948343394
-	.long	1017749310
-	.long	678398162
-	.long	1018144239
-	.long	3083864863
-	.long	1016669086
-	.long	2415453452
-	.long	1017890370
-	.long	175467344
-	.long	1017330033
-	.long	3197359580
-	.long	1010339928
-	.long	2071276951
-	.long	1015941358
-	.long	268372543
-	.long	1016737773
-	.long	938132959
-	.long	1017389108
-	.long	1816750559
-	.long	1017337448
-	.long	4119203749
-	.long	1017152174
-	.long	2578653878
-	.long	1013108497
-	.long	2470331096
-	.long	1014678606
-	.long	123855735
-	.long	1016553320
-	.long	1265650889
-	.long	1014782687
-	.long	3414398172
-	.long	1017182638
-	.long	1040773369
-	.long	1016158401
-	.long	3483628886
-	.long	1016886550
-	.long	4140499405
-	.long	1016191425
-	.long	3893477850
-	.long	1016964495
-	.long	3935319771
-	.long	1009634717
-	.long	2978982660
-	.long	1015027112
-	.long	2452709923
-	.long	1017990229
-	.long	3190365712
-	.long	1015835149
-	.long	4237588139
-	.long	1015832925
-	.long	2610678389
-	.long	1017962711
-	.long	2127316774
-	.long	1017405770
-	.long	824267502
-	.long	1017959463
-	.long	2165924042
-	.long	1017912225
-	.long	2774007076
-	.long	1013257418
-	.long	4123916326
-	.long	1017582284
-	.long	1976417958
-	.long	1016959909
-	.long	4092806412
-	.long	1017711279
-	.long	119251817
-	.long	1015363631
-	.long	3475418768
-	.long	1017675415
-	.long	1972580503
-	.long	1015470684
-	.long	815541017
-	.long	1017517969
-	.long	2429917451
-	.long	1017397776
-	.long	4062888482
-	.long	1016749897
-	.long	68284153
-	.long	1017925678
-	.long	2207779246
-	.long	1016320298
-	.long	1183466520
-	.long	1017408657
-	.long	143326427
-	.long	1017060403
-	.type	D_table,@object
-	.size	D_table,768
-	.align 4
-SCALE63:
-	.long	0
-	.long	1138753536
-	.type	SCALE63,@object
-	.size	SCALE63,8
-	.align 4
-ZERON:
-	.long	0
-	.long	2147483648
-	.type	ZERON,@object
-	.size	ZERON,8
-	.align 4
-INF:
-	.long	0
-	.long	2146435072
-	.type	INF,@object
-	.size	INF,8
-	.align 4
-NEG_INF:
-	.long	0
-	.long	4293918720
-	.type	NEG_INF,@object
-	.size	NEG_INF,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_cbrt.1-.
-	.4byte ..___tag_value_cbrt.5-..___tag_value_cbrt.1
-	.2byte 0x0400
-	.4byte ..___tag_value_cbrt.3-..___tag_value_cbrt.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_cbrt.4-..___tag_value_cbrt.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/s_cos.S b/libm/x86_64/s_cos.S
deleted file mode 100644
index 3d9e402..0000000
--- a/libm/x86_64/s_cos.S
+++ /dev/null
@@ -1,1275 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//     1. RANGE REDUCTION
-//
-//     We perform an initial range reduction from X to r with
-//
-//          X =~= N * pi/32 + r
-//
-//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
-//     where |N| <= 932560. Beyond this, the range reduction is
-//     insufficiently accurate. For extremely small inputs, 
-//     denormalization can occur internally, impacting performance.
-//     This means that the main path is actually only taken for
-//     2^-252 <= |X| < 90112.
-//
-//     To avoid branches, we perform the range reduction to full
-//     accuracy each time.
-//
-//          X - N * (P_1 + P_2 + P_3)
-//
-//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
-//     is exact) and P_3 is a 53-bit number. Together, these
-//     approximate pi well enough for all cases in the restricted
-//     range.
-//
-//     The main reduction sequence is:
-//
-//             y = 32/pi * x
-//             N = integer(y)
-//     (computed by adding and subtracting off SHIFTER)
-//
-//             m_1 = N * P_1
-//             m_2 = N * P_2
-//             r_1 = x - m_1
-//             r = r_1 - m_2
-//     (this r can be used for most of the calculation)
-//
-//             c_1 = r_1 - r
-//             m_3 = N * P_3
-//             c_2 = c_1 - m_2
-//             c = c_2 - m_3
-//
-//     2. MAIN ALGORITHM
-//
-//     The algorithm uses a table lookup based on B = M * pi / 32
-//     where M = N mod 64. The stored values are:
-//       sigma             closest power of 2 to cos(B)
-//       C_hl              53-bit cos(B) - sigma
-//       S_hi + S_lo       2 * 53-bit sin(B)
-//
-//     The computation is organized as follows:
-//
-//          sin(B + r + c) = [sin(B) + sigma * r] +
-//                           r * (cos(B) - sigma) +
-//                           sin(B) * [cos(r + c) - 1] +
-//                           cos(B) * [sin(r + c) - r]
-//
-//     which is approximately:
-//
-//          [S_hi + sigma * r] +
-//          C_hl * r +
-//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
-//          (C_hl + sigma) * [(sin(r) - r) + c]
-//
-//     and this is what is actually computed. We separate this sum
-//     into four parts:
-//
-//          hi + med + pols + corr
-//
-//     where
-//
-//          hi       = S_hi + sigma r
-//          med      = C_hl * r
-//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-//     3. POLYNOMIAL
-//
-//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-//     (sin(r) - r) can be rearranged freely, since it is quite
-//     small, so we exploit parallelism to the fullest.
-//
-//          psc4       =   SC_4 * r_1
-//          msc4       =   psc4 * r
-//          r2         =   r * r
-//          msc2       =   SC_2 * r2
-//          r4         =   r2 * r2
-//          psc3       =   SC_3 + msc4
-//          psc1       =   SC_1 + msc2
-//          msc3       =   r4 * psc3
-//          sincospols =   psc1 + msc3
-//          pols       =   sincospols *
-//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-//     4. CORRECTION TERM
-//
-//     This is where the "c" component of the range reduction is
-//     taken into account; recall that just "r" is used for most of
-//     the calculation.
-//
-//          -c   = m_3 - c_2
-//          -d   = S_hi * r - (C_hl + sigma)
-//          corr = -c * -d + S_lo
-//
-//     5. COMPENSATED SUMMATIONS
-//
-//     The two successive compensated summations add up the high
-//     and medium parts, leaving just the low parts to add up at
-//     the end.
-//
-//          rs        =  sigma * r
-//          res_int   =  S_hi + rs
-//          k_0       =  S_hi - res_int
-//          k_2       =  k_0 + rs
-//          med       =  C_hl * r
-//          res_hi    =  res_int + med
-//          k_1       =  res_int - res_hi
-//          k_3       =  k_1 + med
-//
-//     6. FINAL SUMMATION
-//
-//     We now add up all the small parts:
-//
-//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-//     Now the overall result is just:
-//
-//          res_hi + res_lo
-//
-//     7. SMALL ARGUMENTS
-//
-//     Inputs with |X| < 2^-252 are treated specially as
-//     1 - |x|.
-//
-// Special cases:
-//  cos(NaN) = quiet NaN, and raise invalid exception
-//  cos(INF) = NaN and raise invalid exception
-//  cos(0) = 1
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  cos
-ENTRY(cos)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cos.1:
-        pushq     %rbx
-..___tag_value_cos.3:
-        subq      $16, %rsp
-..___tag_value_cos.5:
-        movsd     %xmm0, 8(%rsp)
-..B1.2:
-        movl      12(%rsp), %eax
-        movq      PI32INV(%rip), %xmm1
-        andl      $2147418112, %eax
-        subl      $808452096, %eax
-        cmpl      $281346048, %eax
-        ja        .L_2TAG_PACKET_0.0.1
-        mulsd     %xmm0, %xmm1
-        movapd    ONEHALF(%rip), %xmm5
-        movq      SIGN_MASK(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %edx
-        cvtsi2sd  %edx, %xmm1
-        movapd    P_2(%rip), %xmm2
-        movq      P_1(%rip), %xmm3
-        mulsd     %xmm1, %xmm3
-        unpcklpd  %xmm1, %xmm1
-        addq      $1865232, %rdx
-        movq      %xmm0, %xmm4
-        andq      $63, %rdx
-        movapd    SC_4(%rip), %xmm5
-        lea       Ctable(%rip), %rax
-        shlq      $5, %rdx
-        addq      %rdx, %rax
-        mulpd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm0
-        mulsd     P_3(%rip), %xmm1
-        subsd     %xmm3, %xmm4
-        movq      8(%rax), %xmm7
-        unpcklpd  %xmm0, %xmm0
-        movq      %xmm4, %xmm3
-        subsd     %xmm2, %xmm4
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm2, %xmm0
-        movapd    SC_2(%rip), %xmm6
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm2, %xmm3
-        movapd    (%rax), %xmm2
-        subsd     %xmm3, %xmm1
-        movq      24(%rax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     SC_3(%rip), %xmm5
-        mulsd     (%rax), %xmm4
-        addpd     SC_1(%rip), %xmm6
-        mulpd     %xmm0, %xmm5
-        movq      %xmm3, %xmm0
-        addsd     8(%rax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movq      %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movq      8(%rax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%rax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm5, %xmm0
-        addsd     %xmm7, %xmm3
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm0
-        unpckhpd  %xmm6, %xmm6
-        addsd     %xmm6, %xmm0
-        addsd     %xmm4, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_0.0.1:
-        jg        .L_2TAG_PACKET_1.0.1
-        pextrw    $3, %xmm0, %eax
-        andw      $32767, %ax
-        pinsrw    $3, %eax, %xmm0
-        movq      ONE(%rip), %xmm1
-        subsd     %xmm0, %xmm1
-        movq      %xmm1, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_1.0.1:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_2.0.1
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        subl      $16224, %ecx
-        shrl      $7, %ecx
-        andl      $65532, %ecx
-        lea       PI_INV_TABLE(%rip), %r11
-        addq      %r11, %rcx
-        movd      %xmm0, %rax
-        movl      20(%rcx), %r10d
-        movl      24(%rcx), %r8d
-        movl      %eax, %edx
-        shrq      $21, %rax
-        orl       $-2147483648, %eax
-        shrl      $11, %eax
-        movl      %r10d, %r9d
-        imulq     %rdx, %r10
-        imulq     %rax, %r9
-        imulq     %rax, %r8
-        movl      16(%rcx), %esi
-        movl      12(%rcx), %edi
-        movl      %r10d, %r11d
-        shrq      $32, %r10
-        addq      %r10, %r9
-        addq      %r8, %r11
-        movl      %r11d, %r8d
-        shrq      $32, %r11
-        addq      %r11, %r9
-        movl      %esi, %r10d
-        imulq     %rdx, %rsi
-        imulq     %rax, %r10
-        movl      %edi, %r11d
-        imulq     %rdx, %rdi
-        movl      %esi, %ebx
-        shrq      $32, %rsi
-        addq      %rbx, %r9
-        movl      %r9d, %ebx
-        shrq      $32, %r9
-        addq      %rsi, %r10
-        addq      %r9, %r10
-        shlq      $32, %rbx
-        orq       %rbx, %r8
-        imulq     %rax, %r11
-        movl      8(%rcx), %r9d
-        movl      4(%rcx), %esi
-        movl      %edi, %ebx
-        shrq      $32, %rdi
-        addq      %rbx, %r10
-        movl      %r10d, %ebx
-        shrq      $32, %r10
-        addq      %rdi, %r11
-        addq      %r10, %r11
-        movq      %r9, %rdi
-        imulq     %rdx, %r9
-        imulq     %rax, %rdi
-        movl      %r9d, %r10d
-        shrq      $32, %r9
-        addq      %r10, %r11
-        movl      %r11d, %r10d
-        shrq      $32, %r11
-        addq      %r9, %rdi
-        addq      %r11, %rdi
-        movq      %rsi, %r9
-        imulq     %rdx, %rsi
-        imulq     %rax, %r9
-        shlq      $32, %r10
-        orq       %rbx, %r10
-        movl      (%rcx), %eax
-        movl      %esi, %r11d
-        shrq      $32, %rsi
-        addq      %r11, %rdi
-        movl      %edi, %r11d
-        shrq      $32, %rdi
-        addq      %rsi, %r9
-        addq      %rdi, %r9
-        imulq     %rax, %rdx
-        pextrw    $3, %xmm0, %ebx
-        lea       PI_INV_TABLE(%rip), %rdi
-        subq      %rdi, %rcx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      $19, %ecx
-        movl      $32768, %esi
-        andl      %ebx, %esi
-        shrl      $4, %ebx
-        andl      $2047, %ebx
-        subl      $1023, %ebx
-        subl      %ebx, %ecx
-        addq      %rdx, %r9
-        movl      %ecx, %edx
-        addl      $32, %edx
-        cmpl      $1, %ecx
-        jl        .L_2TAG_PACKET_3.0.1
-        negl      %ecx
-        addl      $29, %ecx
-        shll      %cl, %r9d
-        movl      %r9d, %edi
-        andl      $536870911, %r9d
-        testl     $268435456, %r9d
-        jne       .L_2TAG_PACKET_4.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-.L_2TAG_PACKET_5.0.1:
-.L_2TAG_PACKET_6.0.1:
-        cmpq      $0, %r9
-        je        .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_8.0.1:
-        bsr       %r9, %r11
-        movl      $29, %ecx
-        subl      %r11d, %ecx
-        jle       .L_2TAG_PACKET_9.0.1
-        shlq      %cl, %r9
-        movq      %r10, %rax
-        shlq      %cl, %r10
-        addl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shrq      %cl, %rax
-        shrq      %cl, %r8
-        orq       %rax, %r9
-        orq       %r8, %r10
-.L_2TAG_PACKET_10.0.1:
-        cvtsi2sdq %r9, %xmm0
-        shrq      $1, %r10
-        cvtsi2sdq %r10, %xmm3
-        xorpd     %xmm4, %xmm4
-        shll      $4, %edx
-        negl      %edx
-        addl      $16368, %edx
-        orl       %esi, %edx
-        xorl      %ebx, %edx
-        pinsrw    $3, %edx, %xmm4
-        movq      PI_4(%rip), %xmm2
-        movq      8+PI_4(%rip), %xmm6
-        xorpd     %xmm5, %xmm5
-        subl      $1008, %edx
-        pinsrw    $3, %edx, %xmm5
-        mulsd     %xmm4, %xmm0
-        shll      $16, %esi
-        sarl      $31, %esi
-        mulsd     %xmm5, %xmm3
-        movq      %xmm0, %xmm1
-        mulsd     %xmm2, %xmm0
-        shrl      $29, %edi
-        addsd     %xmm3, %xmm1
-        mulsd     %xmm2, %xmm3
-        addl      %esi, %edi
-        xorl      %esi, %edi
-        mulsd     %xmm1, %xmm6
-        movl      %edi, %eax
-        addsd     %xmm3, %xmm6
-        movq      %xmm0, %xmm2
-        addsd     %xmm6, %xmm0
-        subsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm6
-.L_2TAG_PACKET_11.0.1:
-        movq      PI32INV(%rip), %xmm1
-        mulsd     %xmm0, %xmm1
-        movq      ONEHALF(%rip), %xmm5
-        movq      SIGN_MASK(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %rdx
-        cvtsi2sdq %rdx, %xmm1
-        movq      P_1(%rip), %xmm3
-        movapd    P_2(%rip), %xmm2
-        mulsd     %xmm1, %xmm3
-        unpcklpd  %xmm1, %xmm1
-        shll      $3, %eax
-        addl      $1865232, %edx
-        movq      %xmm0, %xmm4
-        addl      %eax, %edx
-        andl      $63, %edx
-        movapd    SC_4(%rip), %xmm5
-        lea       Ctable(%rip), %rax
-        shll      $5, %edx
-        addq      %rdx, %rax
-        mulpd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm0
-        mulsd     P_3(%rip), %xmm1
-        subsd     %xmm3, %xmm4
-        movq      8(%rax), %xmm7
-        unpcklpd  %xmm0, %xmm0
-        movq      %xmm4, %xmm3
-        subsd     %xmm2, %xmm4
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm2, %xmm0
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm2, %xmm3
-        movapd    (%rax), %xmm2
-        subsd     %xmm3, %xmm1
-        movq      24(%rax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        subsd     %xmm6, %xmm1
-        movapd    SC_2(%rip), %xmm6
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     SC_3(%rip), %xmm5
-        mulsd     (%rax), %xmm4
-        addpd     SC_1(%rip), %xmm6
-        mulpd     %xmm0, %xmm5
-        movq      %xmm3, %xmm0
-        addsd     8(%rax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movq      %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movq      8(%rax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%rax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm0, %xmm5
-        addsd     %xmm7, %xmm3
-        addsd     %xmm5, %xmm1
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        unpckhpd  %xmm6, %xmm6
-        movq      %xmm4, %xmm0
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_7.0.1:
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        movq      $0, %r8
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_8.0.1
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_8.0.1
-        xorpd     %xmm0, %xmm0
-        xorpd     %xmm6, %xmm6
-        jmp       .L_2TAG_PACKET_11.0.1
-.L_2TAG_PACKET_9.0.1:
-        je        .L_2TAG_PACKET_10.0.1
-        negl      %ecx
-        shrq      %cl, %r10
-        movq      %r9, %rax
-        shrq      %cl, %r9
-        subl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shlq      %cl, %rax
-        orq       %rax, %r10
-        jmp       .L_2TAG_PACKET_10.0.1
-.L_2TAG_PACKET_3.0.1:
-        negl      %ecx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      %cl, %r9
-        movq      %r9, %rdi
-        testl     $-2147483648, %r9d
-        jne       .L_2TAG_PACKET_12.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shrq      $3, %rdi
-        jmp       .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_4.0.1:
-        shrl      %cl, %r9d
-        movl      $536870912, %ebx
-        shrl      %cl, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      $32, %rbx
-        addl      $536870912, %edi
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        jmp       .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_12.0.1:
-        shrl      %cl, %r9d
-        movq      $0x100000000, %rbx
-        shrq      %cl, %rbx
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        shrq      $3, %rdi
-        addl      $536870912, %edi
-        jmp       .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_2.0.1:
-        movsd     8(%rsp), %xmm0
-        mulsd     NEG_ZERO(%rip), %xmm0
-        movq      %xmm0, (%rsp)
-.L_2TAG_PACKET_13.0.1:
-..B1.4:
-        addq      $16, %rsp
-..___tag_value_cos.6:
-        popq      %rbx
-..___tag_value_cos.8:
-        ret       
-..___tag_value_cos.9:
-END(cos)
-# -- End  cos
-	.section .rodata, "a"
-	.align 16
-	.align 16
-ONEHALF:
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.type	ONEHALF,@object
-	.size	ONEHALF,16
-	.align 16
-P_2:
-	.long	442499072
-	.long	1032893537
-	.long	442499072
-	.long	1032893537
-	.type	P_2,@object
-	.size	P_2,16
-	.align 16
-SC_4:
-	.long	2773927732
-	.long	1053236707
-	.long	436314138
-	.long	1056571808
-	.type	SC_4,@object
-	.size	SC_4,16
-	.align 16
-Ctable:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	1072693248
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	1072693248
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	1071644672
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	1071644672
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	1070596096
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	1070596096
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	1069547520
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	3217031168
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	3218079744
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	3218079744
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	3219128320
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	3219128320
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	3220176896
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	3220176896
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	3219128320
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	3219128320
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	3218079744
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	3218079744
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	3217031168
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	1069547520
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	1070596096
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	1070596096
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	1071644672
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	1071644672
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	1072693248
-	.type	Ctable,@object
-	.size	Ctable,2048
-	.align 16
-SC_2:
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1067799893
-	.type	SC_2,@object
-	.size	SC_2,16
-	.align 16
-SC_3:
-	.long	436314138
-	.long	3207201184
-	.long	381774871
-	.long	3210133868
-	.type	SC_3,@object
-	.size	SC_3,16
-	.align 16
-SC_1:
-	.long	1431655765
-	.long	3217380693
-	.long	0
-	.long	3219128320
-	.type	SC_1,@object
-	.size	SC_1,16
-	.align 16
-PI_INV_TABLE:
-	.long	0
-	.long	0
-	.long	2734261102
-	.long	1313084713
-	.long	4230436817
-	.long	4113882560
-	.long	3680671129
-	.long	1011060801
-	.long	4266746795
-	.long	3736847713
-	.long	3072618042
-	.long	1112396512
-	.long	105459434
-	.long	164729372
-	.long	4263373596
-	.long	2972297022
-	.long	3900847605
-	.long	784024708
-	.long	3919343654
-	.long	3026157121
-	.long	965858873
-	.long	2203269620
-	.long	2625920907
-	.long	3187222587
-	.long	536385535
-	.long	3724908559
-	.long	4012839307
-	.long	1510632735
-	.long	1832287951
-	.long	667617719
-	.long	1330003814
-	.long	2657085997
-	.long	1965537991
-	.long	3957715323
-	.long	1023883767
-	.long	2320667370
-	.long	1811636145
-	.long	529358088
-	.long	1443049542
-	.long	4235946923
-	.long	4040145953
-	.type	PI_INV_TABLE,@object
-	.size	PI_INV_TABLE,164
-	.space 12, 0x00 	# pad
-	.align 16
-PI_4:
-	.long	1073741824
-	.long	1072243195
-	.long	407279769
-	.long	1046758445
-	.type	PI_4,@object
-	.size	PI_4,16
-	.align 8
-PI32INV:
-	.long	1841940611
-	.long	1076125488
-	.type	PI32INV,@object
-	.size	PI32INV,8
-	.align 8
-SIGN_MASK:
-	.long	0
-	.long	2147483648
-	.type	SIGN_MASK,@object
-	.size	SIGN_MASK,8
-	.align 8
-P_1:
-	.long	1413480448
-	.long	1069097467
-	.type	P_1,@object
-	.size	P_1,8
-	.align 8
-P_3:
-	.long	771977331
-	.long	996350346
-	.type	P_3,@object
-	.size	P_3,8
-	.align 8
-ONE:
-	.long	0
-	.long	1072693248
-	.type	ONE,@object
-	.size	ONE,8
-	.align 8
-NEG_ZERO:
-	.long	0
-	.long	2147483648
-	.type	NEG_ZERO,@object
-	.size	NEG_ZERO,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000002c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_cos.1-.
-	.4byte ..___tag_value_cos.9-..___tag_value_cos.1
-	.2byte 0x0400
-	.4byte ..___tag_value_cos.3-..___tag_value_cos.1
-	.4byte 0x0283100e
-	.byte 0x04
-	.4byte ..___tag_value_cos.5-..___tag_value_cos.3
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_cos.6-..___tag_value_cos.5
-	.4byte 0x04c3100e
-	.4byte ..___tag_value_cos.8-..___tag_value_cos.6
-	.2byte 0x080e
-# End
diff --git a/libm/x86_64/s_expm1.S b/libm/x86_64/s_expm1.S
deleted file mode 100644
index 4b22f5a..0000000
--- a/libm/x86_64/s_expm1.S
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// Description:
-//  Let K = 64 (table size).
-//
-//  Four sub-domains:
-//    1. |x| < 1/(2*K)
-//      expm1(x) ~ P(x)
-//    2. 1/(2*K) <= |x| <= 56*log(2)
-//       x       x/log(2)    n
-//      e - 1 = 2         = 2 * T[j] * (1 + P(y)) - 1
-//    3. 56*log(2) < x < MAX_LOG
-//       x       x   x/log(2)    n
-//      e - 1 ~ e = 2         = 2 * T[j] * (1 + P(y))
-//    4. x < -56*log(2)
-//       x            x
-//      e - 1 = -1 + e ~ -1
-//    where
-//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
-//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
-//                  j/K
-//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-//       P(y) is a minimax polynomial approximation of exp(x)-1
-//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-//    In case 3, to avoid problems with arithmetic overflow and underflow,
-//              n                        n1  n2
-//    value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-//    and BIAS is a value of exponent bias.
-//
-// Special cases:
-//  expm1(NaN) is NaN
-//  expm1(+INF) is +INF
-//  expm1(-INF) is -1
-//  expm1(x) is x for subnormals
-//  for finite argument, only expm1(0)=0 is exact.
-//  For IEEE double
-//    if x > 709.782712893383973096 then expm1(x) overflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  expm1
-ENTRY(expm1)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_expm1.1:
-        subq      $56, %rsp
-..___tag_value_expm1.3:
-        movsd     %xmm0, 32(%rsp)
-..B1.2:
-        unpcklpd  %xmm0, %xmm0
-        movapd    cv(%rip), %xmm1
-        movapd    Shifter(%rip), %xmm6
-        movapd    16+cv(%rip), %xmm2
-        movapd    32+cv(%rip), %xmm3
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        movl      $16527, %edx
-        subl      %eax, %edx
-        subl      $16304, %eax
-        orl       %eax, %edx
-        cmpl      $-2147483648, %edx
-        jae       .L_2TAG_PACKET_0.0.2
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm6, %xmm1
-        movapd    %xmm1, %xmm7
-        subpd     %xmm6, %xmm1
-        mulpd     %xmm1, %xmm2
-        movapd    48+cv(%rip), %xmm4
-        mulpd     %xmm1, %xmm3
-        movapd    64+cv(%rip), %xmm5
-        subpd     %xmm2, %xmm0
-        movd      %xmm7, %eax
-        movl      %eax, %ecx
-        andl      $63, %ecx
-        shll      $4, %ecx
-        sarl      $6, %eax
-        movl      %eax, %edx
-        subpd     %xmm3, %xmm0
-        lea       Tbl_addr(%rip), %r11
-        movapd    (%rcx,%r11), %xmm2
-        movq      80+cv(%rip), %xmm3
-        mulpd     %xmm0, %xmm4
-        movapd    %xmm0, %xmm1
-        mulpd     %xmm0, %xmm0
-        mulsd     %xmm0, %xmm3
-        addpd     %xmm4, %xmm5
-        mulsd     %xmm0, %xmm0
-        movq      %xmm2, %xmm4
-        unpckhpd  %xmm2, %xmm2
-        movdqa    mmask(%rip), %xmm6
-        pand      %xmm6, %xmm7
-        movdqa    bias(%rip), %xmm6
-        paddq     %xmm6, %xmm7
-        psllq     $46, %xmm7
-        mulsd     %xmm0, %xmm3
-        mulpd     %xmm5, %xmm0
-        addl      $894, %edx
-        cmpl      $1916, %edx
-        ja        .L_2TAG_PACKET_1.0.2
-        addsd     %xmm3, %xmm0
-        xorpd     %xmm3, %xmm3
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm3
-        orpd      %xmm7, %xmm2
-        mulsd     %xmm4, %xmm7
-        movq      %xmm3, %xmm6
-        addsd     %xmm1, %xmm3
-        pextrw    $3, %xmm2, %edx
-        pshufd    $238, %xmm0, %xmm5
-        psrlq     $38, %xmm3
-        psllq     $38, %xmm3
-        movq      %xmm2, %xmm4
-        subsd     %xmm3, %xmm6
-        addsd     %xmm5, %xmm0
-        addsd     %xmm6, %xmm1
-        addsd     %xmm7, %xmm4
-        mulsd     %xmm3, %xmm7
-        mulsd     %xmm2, %xmm3
-        xorpd     %xmm5, %xmm5
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm5
-        addsd     %xmm1, %xmm0
-        movl      $17184, %ecx
-        subl      %edx, %ecx
-        subl      $16256, %edx
-        orl       %edx, %ecx
-        jl        .L_2TAG_PACKET_2.0.2
-        mulsd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm3
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-.L_2TAG_PACKET_3.0.2:
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        cmpl      $0, %edx
-        jl        .L_2TAG_PACKET_4.0.2
-        mulsd     %xmm4, %xmm0
-        subsd     %xmm5, %xmm7
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_4.0.2:
-        mulsd     %xmm4, %xmm0
-        addsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        subsd     %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_1.0.2:
-        movl      36(%rsp), %ecx
-        addsd     %xmm0, %xmm1
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        cmpl      $0, %ecx
-        jl        .L_2TAG_PACKET_5.0.2
-        fstcw     (%rsp)
-        movw      (%rsp), %dx
-        orw       $768, %dx
-        movw      %dx, 4(%rsp)
-        fldcw     4(%rsp)
-        movl      %eax, %edx
-        sarl      $1, %eax
-        subl      %eax, %edx
-        movdqa    emask(%rip), %xmm6
-        pandn     %xmm2, %xmm6
-        addl      $1023, %eax
-        movd      %eax, %xmm3
-        psllq     $52, %xmm3
-        orpd      %xmm3, %xmm6
-        mulsd     %xmm3, %xmm4
-        movsd     %xmm0, 16(%rsp)
-        fldl      16(%rsp)
-        movsd     %xmm6, 24(%rsp)
-        fldl      24(%rsp)
-        movsd     %xmm4, 16(%rsp)
-        fldl      16(%rsp)
-        addl      $1023, %edx
-        movd      %edx, %xmm4
-        psllq     $52, %xmm4
-        faddp     %st, %st(1)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        movsd     %xmm4, 24(%rsp)
-        fldl      24(%rsp)
-        fmulp     %st, %st(1)
-        fstpl     16(%rsp)
-        movsd     16(%rsp), %xmm0
-        fldcw     (%rsp)
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        jmp       ..B1.5
-        cmpl      $-2147483648, %ecx
-        jb        .L_2TAG_PACKET_6.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        movl      $41, 8(%rsp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_8.0.2:
-        cmpl      $2146435072, %eax
-        jae       .L_2TAG_PACKET_9.0.2
-        movsd     XMAX(%rip), %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $41, 8(%rsp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_9.0.2:
-        movl      36(%rsp), %eax
-        movl      32(%rsp), %edx
-        movl      %eax, %ecx
-        andl      $2147483647, %eax
-        cmpl      $2146435072, %eax
-        ja        .L_2TAG_PACKET_10.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_10.0.2
-        cmpl      $0, %ecx
-        jl        .L_2TAG_PACKET_11.0.2
-        movq      INF(%rip), %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_11.0.2:
-        jmp       .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_10.0.2:
-        movsd     32(%rsp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_12.0.2:
-        addl      $16304, %eax
-        cmpl      $15504, %eax
-        jb        .L_2TAG_PACKET_13.0.2
-        movapd    cvl(%rip), %xmm2
-        pshufd    $68, %xmm0, %xmm1
-        movapd    16+cvl(%rip), %xmm3
-        movapd    32+cvl(%rip), %xmm4
-        movq      48+cvl(%rip), %xmm5
-        mulsd     %xmm1, %xmm1
-        xorpd     %xmm6, %xmm6
-        movl      $16352, %eax
-        pinsrw    $3, %eax, %xmm6
-        mulpd     %xmm0, %xmm2
-        xorpd     %xmm7, %xmm7
-        movl      $16368, %edx
-        pinsrw    $3, %edx, %xmm7
-        addpd     %xmm3, %xmm2
-        mulsd     %xmm1, %xmm5
-        pshufd    $228, %xmm1, %xmm3
-        mulpd     %xmm1, %xmm1
-        mulsd     %xmm0, %xmm6
-        mulpd     %xmm0, %xmm2
-        addpd     %xmm4, %xmm2
-        movq      %xmm7, %xmm4
-        addsd     %xmm6, %xmm7
-        mulpd     %xmm3, %xmm1
-        psrlq     $27, %xmm7
-        psllq     $27, %xmm7
-        movq      HIGHMASK(%rip), %xmm3
-        subsd     %xmm7, %xmm4
-        mulpd     %xmm1, %xmm2
-        addsd     %xmm4, %xmm6
-        pshufd    $238, %xmm2, %xmm1
-        addsd     %xmm2, %xmm6
-        andpd     %xmm0, %xmm3
-        movq      %xmm0, %xmm4
-        addsd     %xmm6, %xmm1
-        subsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm1
-        mulsd     %xmm7, %xmm3
-        mulsd     %xmm7, %xmm0
-        mulsd     %xmm1, %xmm4
-        addsd     %xmm4, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_13.0.2:
-        cmpl      $16, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        movq      %xmm0, %xmm2
-        movd      %xmm0, %eax
-        psrlq     $31, %xmm2
-        movd      %xmm2, %ecx
-        orl       %ecx, %eax
-        je        .L_2TAG_PACKET_3.0.2
-        movl      $16, %edx
-        xorpd     %xmm1, %xmm1
-        pinsrw    $3, %edx, %xmm1
-        mulsd     %xmm1, %xmm1
-        movl      $42, 8(%rsp)
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_0.0.2:
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_12.0.2
-        movl      36(%rsp), %eax
-        cmpl      $1083179008, %eax
-        jge       .L_2TAG_PACKET_8.0.2
-        cmpl      $-1048576, %eax
-        jae       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_5.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_7.0.2:
-        movq      %xmm0, 40(%rsp)
-..B1.3:
-        movq      40(%rsp), %xmm0
-.L_2TAG_PACKET_14.0.2:
-..B1.5:
-        addq      $56, %rsp
-..___tag_value_expm1.4:
-        ret       
-..___tag_value_expm1.5:
-END(expm1)
-# -- End  expm1
-	.section .rodata, "a"
-	.align 16
-	.align 16
-cv:
-	.long	1697350398
-	.long	1079448903
-	.long	1697350398
-	.long	1079448903
-	.long	4277796864
-	.long	1065758274
-	.long	4277796864
-	.long	1065758274
-	.long	3164486458
-	.long	1025308570
-	.long	3164486458
-	.long	1025308570
-	.long	1963358694
-	.long	1065423121
-	.long	1431655765
-	.long	1069897045
-	.long	1431655765
-	.long	1067799893
-	.long	0
-	.long	1071644672
-	.long	381774871
-	.long	1062650220
-	.long	381774871
-	.long	1062650220
-	.type	cv,@object
-	.size	cv,96
-	.align 16
-Shifter:
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	1127743488
-	.type	Shifter,@object
-	.size	Shifter,16
-	.align 16
-Tbl_addr:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1000070955
-	.long	1042145304
-	.long	1040187392
-	.long	11418
-	.long	988267849
-	.long	1039500660
-	.long	3539992576
-	.long	22960
-	.long	36755401
-	.long	1042114290
-	.long	402653184
-	.long	34629
-	.long	3634769483
-	.long	1042178627
-	.long	1820327936
-	.long	46424
-	.long	2155991225
-	.long	1041560680
-	.long	847249408
-	.long	58348
-	.long	2766913307
-	.long	1039293264
-	.long	3489660928
-	.long	70401
-	.long	3651174602
-	.long	1040488175
-	.long	2927624192
-	.long	82586
-	.long	3073892131
-	.long	1042240606
-	.long	1006632960
-	.long	94904
-	.long	1328391742
-	.long	1042019037
-	.long	3942645760
-	.long	107355
-	.long	2650893825
-	.long	1041903210
-	.long	822083584
-	.long	119943
-	.long	2397289153
-	.long	1041802037
-	.long	2281701376
-	.long	132667
-	.long	430997175
-	.long	1042110606
-	.long	1845493760
-	.long	145530
-	.long	1230936525
-	.long	1041801015
-	.long	1702887424
-	.long	158533
-	.long	740675935
-	.long	1040178913
-	.long	4110417920
-	.long	171677
-	.long	3489810261
-	.long	1041825986
-	.long	2793406464
-	.long	184965
-	.long	2532600530
-	.long	1040767882
-	.long	167772160
-	.long	198398
-	.long	3542557060
-	.long	1041827263
-	.long	2986344448
-	.long	211976
-	.long	1401563777
-	.long	1041061093
-	.long	922746880
-	.long	225703
-	.long	3129406026
-	.long	1041852413
-	.long	880803840
-	.long	239579
-	.long	900993572
-	.long	1039283234
-	.long	1275068416
-	.long	253606
-	.long	2115029358
-	.long	1042140042
-	.long	562036736
-	.long	267786
-	.long	1086643152
-	.long	1041785419
-	.long	1610612736
-	.long	282120
-	.long	82864366
-	.long	1041256244
-	.long	3045064704
-	.long	296610
-	.long	2392968152
-	.long	1040913683
-	.long	3573547008
-	.long	311258
-	.long	2905856183
-	.long	1040002214
-	.long	1988100096
-	.long	326066
-	.long	3742008261
-	.long	1040011137
-	.long	1451229184
-	.long	341035
-	.long	863393794
-	.long	1040880621
-	.long	914358272
-	.long	356167
-	.long	1446136837
-	.long	1041372426
-	.long	3707764736
-	.long	371463
-	.long	927855201
-	.long	1040617636
-	.long	360710144
-	.long	386927
-	.long	1492679939
-	.long	1041050306
-	.long	2952790016
-	.long	402558
-	.long	608827001
-	.long	1041582217
-	.long	2181038080
-	.long	418360
-	.long	606260204
-	.long	1042271987
-	.long	1711276032
-	.long	434334
-	.long	3163044019
-	.long	1041843851
-	.long	1006632960
-	.long	450482
-	.long	4148747325
-	.long	1041962972
-	.long	3900702720
-	.long	466805
-	.long	802924201
-	.long	1041275378
-	.long	1442840576
-	.long	483307
-	.long	3052749833
-	.long	1041940577
-	.long	1937768448
-	.long	499988
-	.long	2216116399
-	.long	1041486744
-	.long	914358272
-	.long	516851
-	.long	2729697836
-	.long	1041445764
-	.long	2566914048
-	.long	533897
-	.long	540608356
-	.long	1041310907
-	.long	2600468480
-	.long	551129
-	.long	2916344493
-	.long	1040535661
-	.long	1107296256
-	.long	568549
-	.long	731391814
-	.long	1039497014
-	.long	2566914048
-	.long	586158
-	.long	1024722704
-	.long	1041461625
-	.long	2961178624
-	.long	603959
-	.long	3806831748
-	.long	1041732499
-	.long	2675965952
-	.long	621954
-	.long	238953304
-	.long	1040316488
-	.long	2189426688
-	.long	640145
-	.long	749123235
-	.long	1041725785
-	.long	2063597568
-	.long	658534
-	.long	1168187977
-	.long	1041175214
-	.long	2986344448
-	.long	677123
-	.long	3506096399
-	.long	1042186095
-	.long	1426063360
-	.long	695915
-	.long	1470221620
-	.long	1041675499
-	.long	2566914048
-	.long	714911
-	.long	3182425146
-	.long	1041483134
-	.long	3087007744
-	.long	734114
-	.long	3131698208
-	.long	1042208657
-	.long	4068474880
-	.long	753526
-	.long	2300504125
-	.long	1041428596
-	.long	2415919104
-	.long	773150
-	.long	2290297931
-	.long	1037388400
-	.long	3716153344
-	.long	792987
-	.long	3532148223
-	.long	1041626194
-	.long	771751936
-	.long	813041
-	.long	1161884404
-	.long	1042015258
-	.long	3699376128
-	.long	833312
-	.long	876383176
-	.long	1037968878
-	.long	1241513984
-	.long	853805
-	.long	3379986796
-	.long	1042213153
-	.long	3699376128
-	.long	874520
-	.long	1545797737
-	.long	1041681569
-	.long	58720256
-	.long	895462
-	.long	2925146801
-	.long	1042212567
-	.long	855638016
-	.long	916631
-	.long	1316627971
-	.long	1038516204
-	.long	3883925504
-	.long	938030
-	.long	3267869137
-	.long	1040337004
-	.long	2726297600
-	.long	959663
-	.long	3720868999
-	.long	1041782409
-	.long	3992977408
-	.long	981531
-	.long	433316142
-	.long	1041994064
-	.long	1526726656
-	.long	1003638
-	.long	781232103
-	.long	1040093400
-	.long	2172649472
-	.long	1025985
-	.type	Tbl_addr,@object
-	.size	Tbl_addr,1024
-	.align 16
-mmask:
-	.long	4294967232
-	.long	0
-	.long	4294967232
-	.long	0
-	.type	mmask,@object
-	.size	mmask,16
-	.align 16
-bias:
-	.long	65472
-	.long	0
-	.long	65472
-	.long	0
-	.type	bias,@object
-	.size	bias,16
-	.align 16
-emask:
-	.long	0
-	.long	4293918720
-	.long	0
-	.long	4293918720
-	.type	emask,@object
-	.size	emask,16
-	.align 16
-cvl:
-	.long	2773927732
-	.long	1053236707
-	.long	381774871
-	.long	1062650220
-	.long	379653899
-	.long	1056571845
-	.long	286331153
-	.long	1065423121
-	.long	436314138
-	.long	1059717536
-	.long	1431655765
-	.long	1067799893
-	.long	1431655765
-	.long	1069897045
-	.long	0
-	.long	1071644672
-	.type	cvl,@object
-	.size	cvl,64
-	.align 8
-XMAX:
-	.long	4294967295
-	.long	2146435071
-	.type	XMAX,@object
-	.size	XMAX,8
-	.align 8
-INF:
-	.long	0
-	.long	2146435072
-	.type	INF,@object
-	.size	INF,8
-	.align 8
-HIGHMASK:
-	.long	4227858432
-	.long	4294967295
-	.type	HIGHMASK,@object
-	.size	HIGHMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_expm1.1-.
-	.4byte ..___tag_value_expm1.5-..___tag_value_expm1.1
-	.2byte 0x0400
-	.4byte ..___tag_value_expm1.3-..___tag_value_expm1.1
-	.2byte 0x400e
-	.byte 0x04
-	.4byte ..___tag_value_expm1.4-..___tag_value_expm1.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/s_log1p.S b/libm/x86_64/s_log1p.S
deleted file mode 100644
index 27fab74..0000000
--- a/libm/x86_64/s_log1p.S
+++ /dev/null
@@ -1,829 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//    Let x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpps instruction (B0)
-//    B = int((B0*2^7+0.5))/2^7
-//
-//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-//    Result:  k*log(2) - log(B) + p(r)
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//   log1p(NaN) = quiet NaN, and raise invalid exception
-//   log1p(+INF) = that INF
-//   log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
-//   log1p(-1) = -INF, and raises divide-by-zero exception
-//   log1p(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  log1p
-ENTRY(log1p)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_log1p.1:
-        subq      $24, %rsp
-..___tag_value_log1p.3:
-        movsd     %xmm0, 8(%rsp)
-..B1.2:
-        movq      $0x3ff0000000000000, %rax
-        movd      %rax, %xmm2
-        xorpd     %xmm3, %xmm3
-        movl      $32768, %ecx
-        movd      %rcx, %xmm4
-        movq      $0xffffe00000000000, %r8
-        movd      %r8, %xmm5
-        movddup   %xmm0, %xmm7
-        pshufd    $68, %xmm2, %xmm6
-        pextrw    $3, %xmm0, %ecx
-        addsd     %xmm2, %xmm0
-        movq      %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        subsd     %xmm0, %xmm6
-        orpd      %xmm2, %xmm0
-        psrlq     $27, %xmm0
-        lea       L_tbl(%rip), %r11
-        psrld     $2, %xmm0
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        addsd     %xmm6, %xmm7
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        andl      $32752, %ecx
-        cmpl      $16256, %ecx
-        jb        .L_2TAG_PACKET_1.0.2
-        andl      $32752, %eax
-        movl      $32720, %ecx
-        subl      %eax, %ecx
-        pinsrw    $3, %ecx, %xmm3
-.L_2TAG_PACKET_2.0.2:
-        mulsd     %xmm3, %xmm7
-        paddd     %xmm4, %xmm0
-        movq      $0x3800000000000000, %rcx
-        movd      %rcx, %xmm4
-        orpd      %xmm2, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm1, %xmm5
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm1
-        paddd     %xmm4, %xmm0
-        mulsd     %xmm0, %xmm5
-        movl      $16352, %ecx
-        subl      %ecx, %eax
-        cvtsi2sd  %eax, %xmm4
-        mulsd     %xmm0, %xmm7
-        mulsd     %xmm0, %xmm1
-        movq      log2(%rip), %xmm6
-        movapd    coeff(%rip), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    (%r11,%rdx), %xmm0
-        movapd    16+coeff(%rip), %xmm2
-        addsd     %xmm5, %xmm1
-        movq      %xmm1, %xmm5
-        addsd     %xmm7, %xmm1
-        subsd     %xmm1, %xmm5
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm4, %xmm6
-        mulsd     8+log2(%rip), %xmm4
-        mulsd     %xmm1, %xmm3
-        movddup   %xmm1, %xmm5
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm2
-        mulpd     %xmm5, %xmm5
-        movddup   %xmm0, %xmm6
-        addsd     %xmm1, %xmm0
-        addpd     32+coeff(%rip), %xmm2
-        mulpd     %xmm5, %xmm3
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm2
-        addsd     %xmm7, %xmm4
-        mulsd     %xmm1, %xmm7
-        addsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm6
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm6, %xmm4
-        subsd     %xmm7, %xmm1
-        addpd     %xmm3, %xmm2
-        addsd     %xmm4, %xmm1
-        mulpd     %xmm5, %xmm2
-        addsd     %xmm2, %xmm1
-        pshufd    $238, %xmm2, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        movq      8(%rsp), %xmm0
-        movq      8(%rsp), %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        ja        .L_2TAG_PACKET_5.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_5.0.2
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        movl      $141, (%rsp)
-        mulsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_4.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $140, (%rsp)
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_1.0.2:
-        movq      8(%rsp), %xmm0
-        cmpl      $15504, %ecx
-        jb        .L_2TAG_PACKET_9.0.2
-        movapd    coeff2(%rip), %xmm1
-        pshufd    $68, %xmm0, %xmm0
-        movapd    16+coeff2(%rip), %xmm2
-        pshufd    $68, %xmm0, %xmm4
-        movapd    32+coeff2(%rip), %xmm3
-        mulpd     %xmm0, %xmm1
-        xorpd     %xmm6, %xmm6
-        mulpd     %xmm4, %xmm4
-        addpd     %xmm2, %xmm1
-        pshufd    $68, %xmm4, %xmm5
-        mulpd     %xmm0, %xmm4
-        movl      $49120, %eax
-        pinsrw    $3, %eax, %xmm6
-        mulpd     %xmm0, %xmm1
-        mulsd     %xmm4, %xmm4
-        addpd     %xmm3, %xmm1
-        mulsd     %xmm6, %xmm5
-        mulpd     %xmm4, %xmm1
-        pshufd    $238, %xmm1, %xmm7
-        addsd     %xmm7, %xmm1
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_9.0.2:
-        cmpl      $16, %ecx
-        jb        .L_2TAG_PACKET_10.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_10.0.2:
-        movq      %xmm0, %xmm1
-        mulsd     %xmm1, %xmm1
-        jmp       ..B1.5
-.L_2TAG_PACKET_8.0.2:
-        movq      %xmm0, 16(%rsp)
-..B1.3:
-        movq      16(%rsp), %xmm0
-.L_2TAG_PACKET_11.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_log1p.4:
-        ret       
-..___tag_value_log1p.5:
-END(log1p)
-# -- End  log1p
-	.section .rodata, "a"
-	.align 16
-	.align 16
-L_tbl:
-	.long	4277811200
-	.long	1072049730
-	.long	2479318832
-	.long	1026487127
-	.long	2854492160
-	.long	1072033410
-	.long	215631550
-	.long	1025638968
-	.long	1547061248
-	.long	1072017216
-	.long	2886781435
-	.long	1026423395
-	.long	649825280
-	.long	1072001146
-	.long	4281533405
-	.long	1024038923
-	.long	646346752
-	.long	1071985198
-	.long	1562735921
-	.long	1023790276
-	.long	2203734016
-	.long	1071969370
-	.long	1838397691
-	.long	3173936209
-	.long	1872169984
-	.long	1071953661
-	.long	3981202460
-	.long	1022325013
-	.long	669557760
-	.long	1071938069
-	.long	4182597802
-	.long	3173174122
-	.long	4076413952
-	.long	1071922591
-	.long	1209029111
-	.long	3170736207
-	.long	556125184
-	.long	1071907228
-	.long	821086028
-	.long	3173437049
-	.long	204914688
-	.long	1071891976
-	.long	2097025986
-	.long	3171071798
-	.long	387545088
-	.long	1071876834
-	.long	3142936996
-	.long	3173092218
-	.long	2912783360
-	.long	1071861800
-	.long	2502420140
-	.long	1024505919
-	.long	1144260608
-	.long	1071846874
-	.long	3315658140
-	.long	3173469843
-	.long	1471209472
-	.long	1071832053
-	.long	129621009
-	.long	3172443877
-	.long	1829683200
-	.long	1071817336
-	.long	3885467693
-	.long	1025535275
-	.long	288676864
-	.long	1071802722
-	.long	86139472
-	.long	3171639793
-	.long	3636378624
-	.long	1071788208
-	.long	1850238587
-	.long	1024654342
-	.long	1606817792
-	.long	1071773795
-	.long	3388899795
-	.long	3173675586
-	.long	1236164608
-	.long	1071759480
-	.long	3983599207
-	.long	1020046558
-	.long	1089616896
-	.long	1071745262
-	.long	4171974224
-	.long	1024773198
-	.long	4143093760
-	.long	1071731139
-	.long	2727587401
-	.long	3173965207
-	.long	600267776
-	.long	1071717112
-	.long	3147685042
-	.long	3173353031
-	.long	2249313280
-	.long	1071703177
-	.long	125835074
-	.long	1025255832
-	.long	3805303808
-	.long	1071689334
-	.long	2289991207
-	.long	1025460331
-	.long	87278592
-	.long	1071675583
-	.long	1106114045
-	.long	1025933602
-	.long	3195405312
-	.long	1071661920
-	.long	3885316576
-	.long	3171206239
-	.long	3853649920
-	.long	1071648346
-	.long	2977069852
-	.long	3171236771
-	.long	2944026624
-	.long	1071625048
-	.long	1008093493
-	.long	1023444474
-	.long	3993180160
-	.long	1071598247
-	.long	1862355595
-	.long	1024642533
-	.long	1454641152
-	.long	1071571617
-	.long	1514603089
-	.long	1026500596
-	.long	3286085632
-	.long	1071545154
-	.long	1400028424
-	.long	3173279056
-	.long	438773760
-	.long	1071518858
-	.long	120727864
-	.long	3172148914
-	.long	1212979200
-	.long	1071492725
-	.long	1625055594
-	.long	3172901933
-	.long	1189017600
-	.long	1071466754
-	.long	3920062376
-	.long	1025727407
-	.long	403064832
-	.long	1071440943
-	.long	1053271728
-	.long	3171391427
-	.long	3343210496
-	.long	1071415289
-	.long	3243395502
-	.long	3173627613
-	.long	1765777408
-	.long	1071389792
-	.long	2145968512
-	.long	1026354304
-	.long	461430784
-	.long	1071364449
-	.long	4094322285
-	.long	1026021467
-	.long	71706624
-	.long	1071339258
-	.long	763632021
-	.long	1024496933
-	.long	1380503552
-	.long	1071314217
-	.long	1383547992
-	.long	3173088453
-	.long	1015732224
-	.long	1071289325
-	.long	3198646877
-	.long	1025390322
-	.long	35977216
-	.long	1071264580
-	.long	2141026805
-	.long	1025754693
-	.long	3927306240
-	.long	1071239979
-	.long	282116272
-	.long	3173394334
-	.long	1125341184
-	.long	1071215523
-	.long	2768427504
-	.long	3172279059
-	.long	1666971648
-	.long	1071191208
-	.long	786837629
-	.long	3172427445
-	.long	2827694080
-	.long	1071167033
-	.long	3857122416
-	.long	3173014241
-	.long	2003683328
-	.long	1071142997
-	.long	859010954
-	.long	1026545007
-	.long	1004017664
-	.long	1071119098
-	.long	3356644970
-	.long	3173458064
-	.long	1753020416
-	.long	1071095334
-	.long	788338552
-	.long	1026157693
-	.long	1992718336
-	.long	1071071704
-	.long	1239179443
-	.long	1026394889
-	.long	3870234624
-	.long	1071048206
-	.long	2082614663
-	.long	1024926053
-	.long	1050437632
-	.long	1071024840
-	.long	660007840
-	.long	1025548499
-	.long	188395520
-	.long	1071001603
-	.long	3878792704
-	.long	3173889571
-	.long	3747176448
-	.long	1070978493
-	.long	144991708
-	.long	3171552042
-	.long	1405669376
-	.long	1070955511
-	.long	3999088879
-	.long	1025486317
-	.long	121151488
-	.long	1070932654
-	.long	2170865497
-	.long	1026473584
-	.long	2652319744
-	.long	1070909920
-	.long	453695652
-	.long	3173916809
-	.long	3262236672
-	.long	1070887309
-	.long	157800053
-	.long	3173984206
-	.long	601221120
-	.long	1070864820
-	.long	3968917661
-	.long	1023992886
-	.long	1999843328
-	.long	1070842450
-	.long	3053895004
-	.long	1024998228
-	.long	1992167424
-	.long	1070820199
-	.long	2968614856
-	.long	1024552653
-	.long	3788726272
-	.long	1070798065
-	.long	3542170808
-	.long	3173573242
-	.long	2094829568
-	.long	1070776048
-	.long	1246758132
-	.long	1026202874
-	.long	288675840
-	.long	1070754146
-	.long	3747328950
-	.long	1026331585
-	.long	1829681152
-	.long	1070732357
-	.long	3125197546
-	.long	1024100318
-	.long	1666869248
-	.long	1070710681
-	.long	1363656119
-	.long	1026336493
-	.long	3417110528
-	.long	1070689116
-	.long	4154791553
-	.long	1026267853
-	.long	2183653376
-	.long	1070667662
-	.long	1671819292
-	.long	3173785870
-	.long	1734434816
-	.long	1070646317
-	.long	373091049
-	.long	1025972363
-	.long	1615681536
-	.long	1070625080
-	.long	384650897
-	.long	1022926043
-	.long	1445382144
-	.long	1070603950
-	.long	344320330
-	.long	3172397196
-	.long	1823715328
-	.long	1070569756
-	.long	3389841200
-	.long	1025231852
-	.long	3839688704
-	.long	1070527917
-	.long	1706790417
-	.long	3167363349
-	.long	4293332992
-	.long	1070486286
-	.long	1614935088
-	.long	1019351591
-	.long	2966720512
-	.long	1070444861
-	.long	4145393717
-	.long	3173711658
-	.long	4066729984
-	.long	1070403639
-	.long	1974925028
-	.long	3171437182
-	.long	3337621504
-	.long	1070362619
-	.long	3314953170
-	.long	3169971314
-	.long	943448064
-	.long	1070321799
-	.long	1498682038
-	.long	3173862340
-	.long	1465634816
-	.long	1070281176
-	.long	1319952810
-	.long	3171693965
-	.long	1015734272
-	.long	1070240749
-	.long	1347821929
-	.long	3173544515
-	.long	118001664
-	.long	1070200516
-	.long	1751482746
-	.long	1026134093
-	.long	3707174912
-	.long	1070160474
-	.long	1486946159
-	.long	1023930920
-	.long	3946381312
-	.long	1070120623
-	.long	2867408081
-	.long	3171368276
-	.long	1699848192
-	.long	1070080961
-	.long	2590187139
-	.long	1025379803
-	.long	2235846656
-	.long	1070041485
-	.long	1888568069
-	.long	3172754960
-	.long	2339729408
-	.long	1070002194
-	.long	3852214753
-	.long	3173323149
-	.long	3196850176
-	.long	1069963086
-	.long	742141560
-	.long	1025101707
-	.long	1800683520
-	.long	1069924160
-	.long	3949500444
-	.long	3172102179
-	.long	3835801600
-	.long	1069885413
-	.long	3848895943
-	.long	1025913832
-	.long	2201202688
-	.long	1069846845
-	.long	1425913464
-	.long	1025868665
-	.long	2778279936
-	.long	1069808453
-	.long	2120889677
-	.long	3173831128
-	.long	2954203136
-	.long	1069770236
-	.long	592147081
-	.long	1019621288
-	.long	210141184
-	.long	1069732193
-	.long	3414275233
-	.long	1023647084
-	.long	709476352
-	.long	1069694321
-	.long	2413027164
-	.long	1024462115
-	.long	2116284416
-	.long	1069656619
-	.long	1144559924
-	.long	1026336654
-	.long	2183651328
-	.long	1069619086
-	.long	3459057650
-	.long	1025634168
-	.long	3047047168
-	.long	1069581720
-	.long	1879674924
-	.long	3173508573
-	.long	970711040
-	.long	1069541521
-	.long	1335954173
-	.long	3173332182
-	.long	2198478848
-	.long	1069467449
-	.long	2951103968
-	.long	3173892200
-	.long	1669611520
-	.long	1069393703
-	.long	531044147
-	.long	1025149248
-	.long	29114368
-	.long	1069320280
-	.long	3327831251
-	.long	1025918673
-	.long	2376949760
-	.long	1069247176
-	.long	737634533
-	.long	3172176000
-	.long	1085390848
-	.long	1069174390
-	.long	3108243400
-	.long	3171828406
-	.long	1566130176
-	.long	1069101918
-	.long	985483226
-	.long	1025708380
-	.long	792780800
-	.long	1069029758
-	.long	4184866295
-	.long	1024426204
-	.long	183156736
-	.long	1068957907
-	.long	2845699378
-	.long	1022107277
-	.long	1301782528
-	.long	1068886362
-	.long	1012735262
-	.long	3173804294
-	.long	1562411008
-	.long	1068815121
-	.long	2197086703
-	.long	3170187813
-	.long	2815549440
-	.long	1068744181
-	.long	2782613207
-	.long	1026345054
-	.long	2756124672
-	.long	1068673540
-	.long	2929486205
-	.long	3173037800
-	.long	3511050240
-	.long	1068603195
-	.long	1443733147
-	.long	3173331549
-	.long	3047047168
-	.long	1068533144
-	.long	1879674924
-	.long	3172459997
-	.long	3221667840
-	.long	1068427825
-	.long	1338588027
-	.long	3171815742
-	.long	3453861888
-	.long	1068288883
-	.long	1205348359
-	.long	3172624626
-	.long	3506110464
-	.long	1068150514
-	.long	893105198
-	.long	1025571866
-	.long	346013696
-	.long	1068012714
-	.long	3495569021
-	.long	3172563349
-	.long	4074029056
-	.long	1067875476
-	.long	3961106338
-	.long	3171065595
-	.long	3559784448
-	.long	1067738798
-	.long	1975385384
-	.long	3173783155
-	.long	797769728
-	.long	1067602675
-	.long	3760305787
-	.long	1026047642
-	.long	2313633792
-	.long	1067467101
-	.long	1559353171
-	.long	1023480256
-	.long	3960766464
-	.long	1067213778
-	.long	1067365107
-	.long	1025865926
-	.long	684261376
-	.long	1066944805
-	.long	844762164
-	.long	3173687482
-	.long	630718464
-	.long	1066676905
-	.long	2458269694
-	.long	1024033081
-	.long	1486061568
-	.long	1066410070
-	.long	115537874
-	.long	3173243995
-	.long	2743664640
-	.long	1065886792
-	.long	3665098304
-	.long	3173471607
-	.long	1971912704
-	.long	1065357333
-	.long	2577214440
-	.long	3171993451
-	.long	1498939392
-	.long	1064306693
-	.long	3409036923
-	.long	1025599151
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.type	L_tbl,@object
-	.size	L_tbl,2064
-	.align 16
-log2:
-	.long	4277811200
-	.long	1067855426
-	.long	2479318832
-	.long	1022292823
-	.type	log2,@object
-	.size	log2,16
-	.align 16
-coeff:
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1030730101
-	.long	3217380702
-	.long	1431655765
-	.long	1070945621
-	.long	2576980378
-	.long	1070176665
-	.long	0
-	.long	3219128320
-	.type	coeff,@object
-	.size	coeff,48
-	.align 16
-coeff2:
-	.long	0
-	.long	3217031168
-	.long	2576980378
-	.long	1070176665
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1431655765
-	.long	3217380693
-	.long	1431655765
-	.long	1070945621
-	.type	coeff2,@object
-	.size	coeff2,48
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_log1p.1-.
-	.4byte ..___tag_value_log1p.5-..___tag_value_log1p.1
-	.2byte 0x0400
-	.4byte ..___tag_value_log1p.3-..___tag_value_log1p.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_log1p.4-..___tag_value_log1p.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/s_sin.S b/libm/x86_64/s_sin.S
deleted file mode 100644
index fb54a2a..0000000
--- a/libm/x86_64/s_sin.S
+++ /dev/null
@@ -1,1300 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-//     1. RANGE REDUCTION
-//
-//     We perform an initial range reduction from X to r with
-//
-//          X =~= N * pi/32 + r
-//
-//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
-//     where |N| <= 932560. Beyond this, the range reduction is
-//     insufficiently accurate. For extremely small inputs, 
-//     denormalization can occur internally, impacting performance.
-//     This means that the main path is actually only taken for
-//     2^-252 <= |X| < 90112.
-//
-//     To avoid branches, we perform the range reduction to full
-//     accuracy each time.
-//
-//          X - N * (P_1 + P_2 + P_3)
-//
-//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
-//     is exact) and P_3 is a 53-bit number. Together, these
-//     approximate pi well enough for all cases in the restricted
-//     range.
-//
-//     The main reduction sequence is:
-//
-//             y = 32/pi * x
-//             N = integer(y)
-//     (computed by adding and subtracting off SHIFTER)
-//
-//             m_1 = N * P_1
-//             m_2 = N * P_2
-//             r_1 = x - m_1
-//             r = r_1 - m_2
-//     (this r can be used for most of the calculation)
-//
-//             c_1 = r_1 - r
-//             m_3 = N * P_3
-//             c_2 = c_1 - m_2
-//             c = c_2 - m_3
-//
-//     2. MAIN ALGORITHM
-//
-//     The algorithm uses a table lookup based on B = M * pi / 32
-//     where M = N mod 64. The stored values are:
-//       sigma             closest power of 2 to cos(B)
-//       C_hl              53-bit cos(B) - sigma
-//       S_hi + S_lo       2 * 53-bit sin(B)
-//
-//     The computation is organized as follows:
-//
-//          sin(B + r + c) = [sin(B) + sigma * r] +
-//                           r * (cos(B) - sigma) +
-//                           sin(B) * [cos(r + c) - 1] +
-//                           cos(B) * [sin(r + c) - r]
-//
-//     which is approximately:
-//
-//          [S_hi + sigma * r] +
-//          C_hl * r +
-//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
-//          (C_hl + sigma) * [(sin(r) - r) + c]
-//
-//     and this is what is actually computed. We separate this sum
-//     into four parts:
-//
-//          hi + med + pols + corr
-//
-//     where
-//
-//          hi       = S_hi + sigma r
-//          med      = C_hl * r
-//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-//     3. POLYNOMIAL
-//
-//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-//     (sin(r) - r) can be rearranged freely, since it is quite
-//     small, so we exploit parallelism to the fullest.
-//
-//          psc4       =   SC_4 * r_1
-//          msc4       =   psc4 * r
-//          r2         =   r * r
-//          msc2       =   SC_2 * r2
-//          r4         =   r2 * r2
-//          psc3       =   SC_3 + msc4
-//          psc1       =   SC_1 + msc2
-//          msc3       =   r4 * psc3
-//          sincospols =   psc1 + msc3
-//          pols       =   sincospols *
-//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-//     4. CORRECTION TERM
-//
-//     This is where the "c" component of the range reduction is
-//     taken into account; recall that just "r" is used for most of
-//     the calculation.
-//
-//          -c   = m_3 - c_2
-//          -d   = S_hi * r - (C_hl + sigma)
-//          corr = -c * -d + S_lo
-//
-//     5. COMPENSATED SUMMATIONS
-//
-//     The two successive compensated summations add up the high
-//     and medium parts, leaving just the low parts to add up at
-//     the end.
-//
-//          rs        =  sigma * r
-//          res_int   =  S_hi + rs
-//          k_0       =  S_hi - res_int
-//          k_2       =  k_0 + rs
-//          med       =  C_hl * r
-//          res_hi    =  res_int + med
-//          k_1       =  res_int - res_hi
-//          k_3       =  k_1 + med
-//
-//     6. FINAL SUMMATION
-//
-//     We now add up all the small parts:
-//
-//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-//     Now the overall result is just:
-//
-//          res_hi + res_lo
-//
-//     7. SMALL ARGUMENTS
-//
-//     If |x| < SNN (SNN meaning the smallest normal number), we
-//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-//     do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-//  sin(NaN) = quiet NaN, and raise invalid exception
-//  sin(INF) = NaN and raise invalid exception
-//  sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  sin
-ENTRY(sin)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_sin.1:
-        pushq     %rbx
-..___tag_value_sin.3:
-        subq      $16, %rsp
-..___tag_value_sin.5:
-        movsd     %xmm0, 8(%rsp)
-..B1.2:
-        movl      12(%rsp), %eax
-        movq      PI32INV(%rip), %xmm1
-        movq      SHIFTER(%rip), %xmm2
-        andl      $2147418112, %eax
-        subl      $808452096, %eax
-        cmpl      $281346048, %eax
-        ja        .L_2TAG_PACKET_0.0.1
-        mulsd     %xmm0, %xmm1
-        movapd    ONEHALF(%rip), %xmm5
-        movq      SIGN_MASK(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %edx
-        cvtsi2sd  %edx, %xmm1
-        movapd    P_2(%rip), %xmm6
-        movq      $0x3fb921fb54400000, %r8
-        movd      %r8, %xmm3
-        movapd    SC_4(%rip), %xmm5
-        pshufd    $68, %xmm0, %xmm4
-        mulsd     %xmm1, %xmm3
-        movddup   %xmm1, %xmm1
-        andl      $63, %edx
-        shll      $5, %edx
-        lea       Ctable(%rip), %rax
-        addq      %rdx, %rax
-        mulpd     %xmm1, %xmm6
-        mulsd     P_3(%rip), %xmm1
-        subsd     %xmm3, %xmm4
-        movq      8(%rax), %xmm7
-        subsd     %xmm3, %xmm0
-        movddup   %xmm4, %xmm3
-        subsd     %xmm6, %xmm4
-        pshufd    $68, %xmm0, %xmm0
-        movapd    (%rax), %xmm2
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm6, %xmm0
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm6, %xmm3
-        movapd    SC_2(%rip), %xmm6
-        subsd     %xmm3, %xmm1
-        movq      24(%rax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     SC_3(%rip), %xmm5
-        mulsd     (%rax), %xmm4
-        addpd     SC_1(%rip), %xmm6
-        mulpd     %xmm0, %xmm5
-        movq      %xmm3, %xmm0
-        addsd     8(%rax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movq      %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movq      8(%rax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%rax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm0, %xmm5
-        addsd     %xmm7, %xmm3
-        addsd     %xmm5, %xmm1
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        unpckhpd  %xmm6, %xmm6
-        movq      %xmm4, %xmm0
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_0.0.1:
-        jg        .L_2TAG_PACKET_1.0.1
-        shrl      $20, %eax
-        cmpw      $3325, %ax
-        jne       .L_2TAG_PACKET_2.0.1
-        mulsd     ALL_ONES(%rip), %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_2.0.1:
-        movq      TWO_POW_55(%rip), %xmm3
-        mulsd     %xmm0, %xmm3
-        subsd     %xmm0, %xmm3
-        mulsd     TWO_POW_M55(%rip), %xmm3
-        jmp       ..B1.4
-.L_2TAG_PACKET_1.0.1:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_3.0.1
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        subl      $16224, %ecx
-        shrl      $7, %ecx
-        andl      $65532, %ecx
-        lea       PI_INV_TABLE(%rip), %r11
-        addq      %r11, %rcx
-        movd      %xmm0, %rax
-        movl      20(%rcx), %r10d
-        movl      24(%rcx), %r8d
-        movl      %eax, %edx
-        shrq      $21, %rax
-        orl       $-2147483648, %eax
-        shrl      $11, %eax
-        movl      %r10d, %r9d
-        imulq     %rdx, %r10
-        imulq     %rax, %r9
-        imulq     %rax, %r8
-        movl      16(%rcx), %esi
-        movl      12(%rcx), %edi
-        movl      %r10d, %r11d
-        shrq      $32, %r10
-        addq      %r10, %r9
-        addq      %r8, %r11
-        movl      %r11d, %r8d
-        shrq      $32, %r11
-        addq      %r11, %r9
-        movl      %esi, %r10d
-        imulq     %rdx, %rsi
-        imulq     %rax, %r10
-        movl      %edi, %r11d
-        imulq     %rdx, %rdi
-        movl      %esi, %ebx
-        shrq      $32, %rsi
-        addq      %rbx, %r9
-        movl      %r9d, %ebx
-        shrq      $32, %r9
-        addq      %rsi, %r10
-        addq      %r9, %r10
-        shlq      $32, %rbx
-        orq       %rbx, %r8
-        imulq     %rax, %r11
-        movl      8(%rcx), %r9d
-        movl      4(%rcx), %esi
-        movl      %edi, %ebx
-        shrq      $32, %rdi
-        addq      %rbx, %r10
-        movl      %r10d, %ebx
-        shrq      $32, %r10
-        addq      %rdi, %r11
-        addq      %r10, %r11
-        movq      %r9, %rdi
-        imulq     %rdx, %r9
-        imulq     %rax, %rdi
-        movl      %r9d, %r10d
-        shrq      $32, %r9
-        addq      %r10, %r11
-        movl      %r11d, %r10d
-        shrq      $32, %r11
-        addq      %r9, %rdi
-        addq      %r11, %rdi
-        movq      %rsi, %r9
-        imulq     %rdx, %rsi
-        imulq     %rax, %r9
-        shlq      $32, %r10
-        orq       %rbx, %r10
-        movl      (%rcx), %eax
-        movl      %esi, %r11d
-        shrq      $32, %rsi
-        addq      %r11, %rdi
-        movl      %edi, %r11d
-        shrq      $32, %rdi
-        addq      %rsi, %r9
-        addq      %rdi, %r9
-        imulq     %rax, %rdx
-        pextrw    $3, %xmm0, %ebx
-        lea       PI_INV_TABLE(%rip), %rdi
-        subq      %rdi, %rcx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      $19, %ecx
-        movl      $32768, %esi
-        andl      %ebx, %esi
-        shrl      $4, %ebx
-        andl      $2047, %ebx
-        subl      $1023, %ebx
-        subl      %ebx, %ecx
-        addq      %rdx, %r9
-        movl      %ecx, %edx
-        addl      $32, %edx
-        cmpl      $1, %ecx
-        jl        .L_2TAG_PACKET_4.0.1
-        negl      %ecx
-        addl      $29, %ecx
-        shll      %cl, %r9d
-        movl      %r9d, %edi
-        andl      $536870911, %r9d
-        testl     $268435456, %r9d
-        jne       .L_2TAG_PACKET_5.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-.L_2TAG_PACKET_6.0.1:
-.L_2TAG_PACKET_7.0.1:
-        cmpq      $0, %r9
-        je        .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_9.0.1:
-        bsr       %r9, %r11
-        movl      $29, %ecx
-        subl      %r11d, %ecx
-        jle       .L_2TAG_PACKET_10.0.1
-        shlq      %cl, %r9
-        movq      %r10, %rax
-        shlq      %cl, %r10
-        addl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shrq      %cl, %rax
-        shrq      %cl, %r8
-        orq       %rax, %r9
-        orq       %r8, %r10
-.L_2TAG_PACKET_11.0.1:
-        cvtsi2sdq %r9, %xmm0
-        shrq      $1, %r10
-        cvtsi2sdq %r10, %xmm3
-        xorpd     %xmm4, %xmm4
-        shll      $4, %edx
-        negl      %edx
-        addl      $16368, %edx
-        orl       %esi, %edx
-        xorl      %ebx, %edx
-        pinsrw    $3, %edx, %xmm4
-        movq      PI_4(%rip), %xmm2
-        movq      8+PI_4(%rip), %xmm6
-        xorpd     %xmm5, %xmm5
-        subl      $1008, %edx
-        pinsrw    $3, %edx, %xmm5
-        mulsd     %xmm4, %xmm0
-        shll      $16, %esi
-        sarl      $31, %esi
-        mulsd     %xmm5, %xmm3
-        movq      %xmm0, %xmm1
-        mulsd     %xmm2, %xmm0
-        shrl      $29, %edi
-        addsd     %xmm3, %xmm1
-        mulsd     %xmm2, %xmm3
-        addl      %esi, %edi
-        xorl      %esi, %edi
-        mulsd     %xmm1, %xmm6
-        movl      %edi, %eax
-        addsd     %xmm3, %xmm6
-        movq      %xmm0, %xmm2
-        addsd     %xmm6, %xmm0
-        subsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm6
-.L_2TAG_PACKET_12.0.1:
-        movq      PI32INV(%rip), %xmm1
-        mulsd     %xmm0, %xmm1
-        movq      ONEHALF(%rip), %xmm5
-        movq      SIGN_MASK(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        cvttsd2si %xmm1, %edx
-        cvtsi2sd  %edx, %xmm1
-        movq      P_1(%rip), %xmm3
-        movapd    P_2(%rip), %xmm2
-        mulsd     %xmm1, %xmm3
-        unpcklpd  %xmm1, %xmm1
-        shll      $3, %eax
-        addl      $1865216, %edx
-        movq      %xmm0, %xmm4
-        addl      %eax, %edx
-        andl      $63, %edx
-        movapd    SC_4(%rip), %xmm5
-        lea       Ctable(%rip), %rax
-        shll      $5, %edx
-        addq      %rdx, %rax
-        mulpd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm0
-        mulsd     P_3(%rip), %xmm1
-        subsd     %xmm3, %xmm4
-        movq      8(%rax), %xmm7
-        unpcklpd  %xmm0, %xmm0
-        movq      %xmm4, %xmm3
-        subsd     %xmm2, %xmm4
-        mulpd     %xmm0, %xmm5
-        subpd     %xmm2, %xmm0
-        mulsd     %xmm4, %xmm7
-        subsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm5
-        mulpd     %xmm0, %xmm0
-        subsd     %xmm2, %xmm3
-        movapd    (%rax), %xmm2
-        subsd     %xmm3, %xmm1
-        movq      24(%rax), %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm7
-        subsd     %xmm6, %xmm1
-        movapd    SC_2(%rip), %xmm6
-        mulsd     %xmm4, %xmm2
-        mulpd     %xmm0, %xmm6
-        mulsd     %xmm4, %xmm3
-        mulpd     %xmm0, %xmm2
-        mulpd     %xmm0, %xmm0
-        addpd     SC_3(%rip), %xmm5
-        mulsd     (%rax), %xmm4
-        addpd     SC_1(%rip), %xmm6
-        mulpd     %xmm0, %xmm5
-        movq      %xmm3, %xmm0
-        addsd     8(%rax), %xmm3
-        mulpd     %xmm7, %xmm1
-        movq      %xmm4, %xmm7
-        addsd     %xmm3, %xmm4
-        addpd     %xmm5, %xmm6
-        movq      8(%rax), %xmm5
-        subsd     %xmm3, %xmm5
-        subsd     %xmm4, %xmm3
-        addsd     16(%rax), %xmm1
-        mulpd     %xmm2, %xmm6
-        addsd     %xmm0, %xmm5
-        addsd     %xmm7, %xmm3
-        addsd     %xmm5, %xmm1
-        addsd     %xmm3, %xmm1
-        addsd     %xmm6, %xmm1
-        unpckhpd  %xmm6, %xmm6
-        movq      %xmm4, %xmm0
-        addsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_8.0.1:
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        movq      $0, %r8
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_9.0.1
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_9.0.1
-        xorpd     %xmm0, %xmm0
-        xorpd     %xmm6, %xmm6
-        jmp       .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_10.0.1:
-        je        .L_2TAG_PACKET_11.0.1
-        negl      %ecx
-        shrq      %cl, %r10
-        movq      %r9, %rax
-        shrq      %cl, %r9
-        subl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shlq      %cl, %rax
-        orq       %rax, %r10
-        jmp       .L_2TAG_PACKET_11.0.1
-.L_2TAG_PACKET_4.0.1:
-        negl      %ecx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      %cl, %r9
-        movq      %r9, %rdi
-        testl     $-2147483648, %r9d
-        jne       .L_2TAG_PACKET_13.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shrq      $3, %rdi
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_5.0.1:
-        shrl      %cl, %r9d
-        movl      $536870912, %ebx
-        shrl      %cl, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      $32, %rbx
-        addl      $536870912, %edi
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        jmp       .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_13.0.1:
-        shrl      %cl, %r9d
-        movq      $0x100000000, %rbx
-        shrq      %cl, %rbx
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        shrq      $3, %rdi
-        addl      $536870912, %edi
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_3.0.1:
-        movq      8(%rsp), %xmm0
-        mulsd     NEG_ZERO(%rip), %xmm0
-        movq      %xmm0, (%rsp)
-.L_2TAG_PACKET_14.0.1:
-..B1.4:
-        addq      $16, %rsp
-..___tag_value_sin.6:
-        popq      %rbx
-..___tag_value_sin.8:
-        ret       
-..___tag_value_sin.9:
-END(sin)
-# -- End  sin
-	.section .rodata, "a"
-	.align 16
-	.align 16
-ONEHALF:
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.type	ONEHALF,@object
-	.size	ONEHALF,16
-	.align 16
-P_2:
-	.long	442499072
-	.long	1032893537
-	.long	442499072
-	.long	1032893537
-	.type	P_2,@object
-	.size	P_2,16
-	.align 16
-SC_4:
-	.long	2773927732
-	.long	1053236707
-	.long	436314138
-	.long	1056571808
-	.type	SC_4,@object
-	.size	SC_4,16
-	.align 16
-Ctable:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	1072693248
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	1072693248
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	1071644672
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	1071644672
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	1070596096
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	1070596096
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	1069547520
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	1072683149
-	.long	1073741824
-	.long	3163061750
-	.long	0
-	.long	3217031168
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	1072652951
-	.long	536870912
-	.long	1014325783
-	.long	0
-	.long	3218079744
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	1072602945
-	.long	3758096384
-	.long	1015505073
-	.long	0
-	.long	3218079744
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	1072533611
-	.long	536870912
-	.long	1014257638
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	1072445618
-	.long	2147483648
-	.long	3161907377
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	1072339814
-	.long	3758096384
-	.long	1010431536
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	1072217216
-	.long	536870912
-	.long	3162686945
-	.long	0
-	.long	3219128320
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	1072079006
-	.long	536870912
-	.long	3163282740
-	.long	0
-	.long	3219128320
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	1071926515
-	.long	536870912
-	.long	1013450602
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	1071761211
-	.long	536870912
-	.long	1015752157
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	1071524701
-	.long	536870912
-	.long	1012796809
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	1071152610
-	.long	3758096384
-	.long	3160878317
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	1070765062
-	.long	2684354560
-	.long	3161838221
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	1070135480
-	.long	3221225472
-	.long	3160567065
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	1069094822
-	.long	3758096384
-	.long	3158189848
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	393047345
-	.long	1064548654
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	3220176896
-	.long	18115067
-	.long	1066642694
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	3220176896
-	.long	2476548698
-	.long	1067846634
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	3220176896
-	.long	2255197647
-	.long	1068727457
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	3220176896
-	.long	1945768569
-	.long	1069431400
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	3220176896
-	.long	1539668340
-	.long	1069912679
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	3220176896
-	.long	1403757309
-	.long	1070403070
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	3220176896
-	.long	2583490354
-	.long	3217719929
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	3219128320
-	.long	2485417816
-	.long	3217109964
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	3219128320
-	.long	2598800519
-	.long	3215750067
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	3219128320
-	.long	2140183630
-	.long	1067272748
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	3219128320
-	.long	1699043957
-	.long	1069418613
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	3219128320
-	.long	1991047213
-	.long	3215237169
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	3218079744
-	.long	240740309
-	.long	1068244255
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	3218079744
-	.long	257503056
-	.long	1067164005
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	3217031168
-	.long	0
-	.long	0
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	257503056
-	.long	3214647653
-	.long	2748392742
-	.long	3220166797
-	.long	1073741824
-	.long	1015578102
-	.long	0
-	.long	1069547520
-	.long	240740309
-	.long	3215727903
-	.long	3489094832
-	.long	3220136599
-	.long	536870912
-	.long	3161809431
-	.long	0
-	.long	1070596096
-	.long	1991047213
-	.long	1067753521
-	.long	1455828442
-	.long	3220086593
-	.long	3758096384
-	.long	3162988721
-	.long	0
-	.long	1070596096
-	.long	1699043957
-	.long	3216902261
-	.long	3476196678
-	.long	3220017259
-	.long	536870912
-	.long	3161741286
-	.long	0
-	.long	1071644672
-	.long	2140183630
-	.long	3214756396
-	.long	4051746225
-	.long	3219929266
-	.long	2147483648
-	.long	1014423729
-	.long	0
-	.long	1071644672
-	.long	2598800519
-	.long	1068266419
-	.long	688824739
-	.long	3219823462
-	.long	3758096384
-	.long	3157915184
-	.long	0
-	.long	1071644672
-	.long	2485417816
-	.long	1069626316
-	.long	1796544321
-	.long	3219700864
-	.long	536870912
-	.long	1015203297
-	.long	0
-	.long	1071644672
-	.long	2583490354
-	.long	1070236281
-	.long	1719614413
-	.long	3219562654
-	.long	536870912
-	.long	1015799092
-	.long	0
-	.long	1071644672
-	.long	1403757309
-	.long	3217886718
-	.long	621354454
-	.long	3219410163
-	.long	536870912
-	.long	3160934250
-	.long	0
-	.long	1072693248
-	.long	1539668340
-	.long	3217396327
-	.long	967731400
-	.long	3219244859
-	.long	536870912
-	.long	3163235805
-	.long	0
-	.long	1072693248
-	.long	1945768569
-	.long	3216915048
-	.long	939980347
-	.long	3219008349
-	.long	536870912
-	.long	3160280457
-	.long	0
-	.long	1072693248
-	.long	2255197647
-	.long	3216211105
-	.long	2796464483
-	.long	3218636258
-	.long	3758096384
-	.long	1013394669
-	.long	0
-	.long	1072693248
-	.long	2476548698
-	.long	3215330282
-	.long	785751814
-	.long	3218248710
-	.long	2684354560
-	.long	1014354573
-	.long	0
-	.long	1072693248
-	.long	18115067
-	.long	3214126342
-	.long	1013556747
-	.long	3217619128
-	.long	3221225472
-	.long	1013083417
-	.long	0
-	.long	1072693248
-	.long	393047345
-	.long	3212032302
-	.long	3156849708
-	.long	3216578470
-	.long	3758096384
-	.long	1010706200
-	.long	0
-	.long	1072693248
-	.type	Ctable,@object
-	.size	Ctable,2048
-	.align 16
-SC_2:
-	.long	286331153
-	.long	1065423121
-	.long	1431655765
-	.long	1067799893
-	.type	SC_2,@object
-	.size	SC_2,16
-	.align 16
-SC_3:
-	.long	436314138
-	.long	3207201184
-	.long	381774871
-	.long	3210133868
-	.type	SC_3,@object
-	.size	SC_3,16
-	.align 16
-SC_1:
-	.long	1431655765
-	.long	3217380693
-	.long	0
-	.long	3219128320
-	.type	SC_1,@object
-	.size	SC_1,16
-	.align 16
-PI_INV_TABLE:
-	.long	0
-	.long	0
-	.long	2734261102
-	.long	1313084713
-	.long	4230436817
-	.long	4113882560
-	.long	3680671129
-	.long	1011060801
-	.long	4266746795
-	.long	3736847713
-	.long	3072618042
-	.long	1112396512
-	.long	105459434
-	.long	164729372
-	.long	4263373596
-	.long	2972297022
-	.long	3900847605
-	.long	784024708
-	.long	3919343654
-	.long	3026157121
-	.long	965858873
-	.long	2203269620
-	.long	2625920907
-	.long	3187222587
-	.long	536385535
-	.long	3724908559
-	.long	4012839307
-	.long	1510632735
-	.long	1832287951
-	.long	667617719
-	.long	1330003814
-	.long	2657085997
-	.long	1965537991
-	.long	3957715323
-	.long	1023883767
-	.long	2320667370
-	.long	1811636145
-	.long	529358088
-	.long	1443049542
-	.long	4235946923
-	.long	4040145953
-	.type	PI_INV_TABLE,@object
-	.size	PI_INV_TABLE,164
-	.space 12, 0x00 	# pad
-	.align 16
-PI_4:
-	.long	1073741824
-	.long	1072243195
-	.long	407279769
-	.long	1046758445
-	.type	PI_4,@object
-	.size	PI_4,16
-	.align 8
-PI32INV:
-	.long	1841940611
-	.long	1076125488
-	.type	PI32INV,@object
-	.size	PI32INV,8
-	.align 8
-SHIFTER:
-	.long	0
-	.long	1127743488
-	.type	SHIFTER,@object
-	.size	SHIFTER,8
-	.align 8
-SIGN_MASK:
-	.long	0
-	.long	2147483648
-	.type	SIGN_MASK,@object
-	.size	SIGN_MASK,8
-	.align 8
-P_3:
-	.long	771977331
-	.long	996350346
-	.type	P_3,@object
-	.size	P_3,8
-	.align 8
-ALL_ONES:
-	.long	4294967295
-	.long	1072693247
-	.type	ALL_ONES,@object
-	.size	ALL_ONES,8
-	.align 8
-TWO_POW_55:
-	.long	0
-	.long	1130364928
-	.type	TWO_POW_55,@object
-	.size	TWO_POW_55,8
-	.align 8
-TWO_POW_M55:
-	.long	0
-	.long	1015021568
-	.type	TWO_POW_M55,@object
-	.size	TWO_POW_M55,8
-	.align 8
-P_1:
-	.long	1413480448
-	.long	1069097467
-	.type	P_1,@object
-	.size	P_1,8
-	.align 8
-NEG_ZERO:
-	.long	0
-	.long	2147483648
-	.type	NEG_ZERO,@object
-	.size	NEG_ZERO,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000002c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_sin.1-.
-	.4byte ..___tag_value_sin.9-..___tag_value_sin.1
-	.2byte 0x0400
-	.4byte ..___tag_value_sin.3-..___tag_value_sin.1
-	.4byte 0x0283100e
-	.byte 0x04
-	.4byte ..___tag_value_sin.5-..___tag_value_sin.3
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_sin.6-..___tag_value_sin.5
-	.4byte 0x04c3100e
-	.4byte ..___tag_value_sin.8-..___tag_value_sin.6
-	.2byte 0x080e
-# End
diff --git a/libm/x86_64/s_tan.S b/libm/x86_64/s_tan.S
deleted file mode 100644
index 4fa12e3..0000000
--- a/libm/x86_64/s_tan.S
+++ /dev/null
@@ -1,2239 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// Polynomials coefficients and other constants.
-//
-// Note that in this algorithm, there is a different polynomial for
-// each breakpoint, so there are 32 sets of polynomial coefficients
-// as well as 32 instances of the other constants.
-//
-// The polynomial coefficients and constants are offset from the start
-// of the main block as follows:
-//
-//   0:  c8 | c0
-//  16:  c9 | c1
-//  32: c10 | c2
-//  48: c11 | c3
-//  64: c12 | c4
-//  80: c13 | c5
-//  96: c14 | c6
-// 112: c15 | c7
-// 128: T_hi
-// 136: T_lo
-// 144: Sigma
-// 152: T_hl
-// 160: Tau
-// 168: Mask
-// 176: (end of block)
-//
-// The total table size is therefore 5632 bytes.
-//
-// Note that c0 and c1 are always zero. We could try storing
-// other constants here, and just loading the low part of the
-// SIMD register in these cases, after ensuring the high part
-// is zero.
-//
-// The higher terms of the polynomial are computed in the *low*
-// part of the SIMD register. This is so we can overlap the
-// multiplication by r^8 and the unpacking of the other part.
-//
-// The constants are:
-// T_hi + T_lo = accurate constant term in power series
-// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
-// Tau = multiplier for the reciprocal, always -1 or 0
-//
-// The basic reconstruction formula using these constants is:
-//
-// High = tau * recip_hi + t_hi
-// Med = (sgn * r + t_hl * r)_hi
-// Low = (sgn * r + t_hl * r)_lo +
-//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
-//
-// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
-//
-// (c0 = c1 = 0, but using them keeps SIMD regularity)
-//
-// We then do a compensated sum High + Med, add the low parts together
-// and then do the final sum.
-//
-// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
-// modulo pi/2
-//
-// Special cases:
-//  tan(NaN) = quiet NaN, and raise invalid exception
-//  tan(INF) = NaN and raise invalid exception
-//  tan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  tan
-ENTRY(tan)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_tan.1:
-        pushq     %rbx
-..___tag_value_tan.3:
-        subq      $16, %rsp
-..___tag_value_tan.5:
-        movsd     %xmm0, 8(%rsp)
-..B1.2:
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        subl      $16314, %eax
-        cmpl      $270, %eax
-        ja        .L_2TAG_PACKET_0.0.1
-        movapd    ONEHALF(%rip), %xmm5
-        movapd    MUL16(%rip), %xmm6
-        unpcklpd  %xmm0, %xmm0
-        movapd    sign_mask(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        movapd    PI32INV(%rip), %xmm1
-        mulpd     %xmm0, %xmm1
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        movapd    %xmm1, %xmm7
-        unpckhpd  %xmm7, %xmm7
-        cvttsd2si %xmm7, %edx
-        cvttpd2dq %xmm1, %xmm1
-        cvtdq2pd  %xmm1, %xmm1
-        mulpd     %xmm6, %xmm1
-        movapd    P_1(%rip), %xmm3
-        movq      QQ_2(%rip), %xmm5
-        addq      $469248, %rdx
-        movapd    P_2(%rip), %xmm4
-        mulpd     %xmm1, %xmm3
-        andq      $31, %rdx
-        mulsd     %xmm1, %xmm5
-        movq      %rdx, %rcx
-        mulpd     %xmm1, %xmm4
-        shlq      $1, %rcx
-        subpd     %xmm3, %xmm0
-        mulpd     P_3(%rip), %xmm1
-        addq      %rcx, %rdx
-        shlq      $2, %rcx
-        addq      %rcx, %rdx
-        addsd     %xmm0, %xmm5
-        movapd    %xmm0, %xmm2
-        subpd     %xmm4, %xmm0
-        movq      ONE(%rip), %xmm6
-        shlq      $4, %rdx
-        lea       Ctable(%rip), %rax
-        andpd     MASK_35(%rip), %xmm5
-        movapd    %xmm0, %xmm3
-        addq      %rdx, %rax
-        subpd     %xmm0, %xmm2
-        unpckhpd  %xmm0, %xmm0
-        divsd     %xmm5, %xmm6
-        subpd     %xmm4, %xmm2
-        movapd    16(%rax), %xmm7
-        subsd     %xmm5, %xmm3
-        mulpd     %xmm0, %xmm7
-        subpd     %xmm1, %xmm2
-        movapd    48(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        movapd    96(%rax), %xmm4
-        mulpd     %xmm0, %xmm4
-        addsd     %xmm3, %xmm2
-        movapd    %xmm0, %xmm3
-        mulpd     %xmm0, %xmm0
-        addpd     (%rax), %xmm7
-        addpd     32(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     80(%rax), %xmm4
-        addpd     %xmm1, %xmm7
-        movapd    112(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm0
-        addpd     %xmm1, %xmm4
-        movapd    64(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm1, %xmm7
-        movapd    %xmm3, %xmm1
-        mulpd     %xmm0, %xmm3
-        mulsd     %xmm0, %xmm0
-        mulpd     144(%rax), %xmm1
-        mulpd     %xmm3, %xmm4
-        movq      %xmm1, %xmm3
-        addpd     %xmm4, %xmm7
-        movq      %xmm1, %xmm4
-        mulsd     %xmm7, %xmm0
-        unpckhpd  %xmm7, %xmm7
-        addsd     %xmm7, %xmm0
-        unpckhpd  %xmm1, %xmm1
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        movq      %xmm2, %xmm4
-        movq      144(%rax), %xmm7
-        unpckhpd  %xmm2, %xmm2
-        addsd     152(%rax), %xmm7
-        mulsd     %xmm2, %xmm7
-        addsd     136(%rax), %xmm7
-        addsd     %xmm1, %xmm7
-        addsd     %xmm7, %xmm0
-        movq      ONE(%rip), %xmm7
-        mulsd     %xmm6, %xmm4
-        movq      168(%rax), %xmm2
-        andpd     %xmm6, %xmm2
-        mulsd     %xmm2, %xmm5
-        mulsd     160(%rax), %xmm6
-        subsd     %xmm5, %xmm7
-        subsd     128(%rax), %xmm2
-        subsd     %xmm4, %xmm7
-        mulsd     %xmm6, %xmm7
-        movq      %xmm3, %xmm4
-        subsd     %xmm2, %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm4
-        addsd     %xmm4, %xmm0
-        subsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_0.0.1:
-        jg        .L_2TAG_PACKET_1.0.1
-        pextrw    $3, %xmm0, %eax
-        movl      %eax, %edx
-        andl      $32752, %eax
-        je        .L_2TAG_PACKET_2.0.1
-        andl      $32767, %edx
-        cmpl      $15904, %edx
-        jb        .L_2TAG_PACKET_3.0.1
-        movq      %xmm0, %xmm2
-        movq      %xmm0, %xmm3
-        movq      Q_11(%rip), %xmm1
-        mulsd     %xmm0, %xmm2
-        mulsd     %xmm2, %xmm3
-        mulsd     %xmm2, %xmm1
-        addsd     Q_9(%rip), %xmm1
-        mulsd     %xmm2, %xmm1
-        addsd     Q_7(%rip), %xmm1
-        mulsd     %xmm2, %xmm1
-        addsd     Q_5(%rip), %xmm1
-        mulsd     %xmm2, %xmm1
-        addsd     Q_3(%rip), %xmm1
-        mulsd     %xmm3, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_3.0.1:
-        movq      TWO_POW_55(%rip), %xmm3
-        mulsd     %xmm0, %xmm3
-        addsd     %xmm3, %xmm0
-        mulsd     TWO_POW_M55(%rip), %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_2.0.1:
-        movq      %xmm0, %xmm1
-        mulsd     %xmm1, %xmm1
-        jmp       ..B1.4
-.L_2TAG_PACKET_1.0.1:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_4.0.1
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        subl      $16224, %ecx
-        shrl      $7, %ecx
-        andl      $65532, %ecx
-        lea       PI_INV_TABLE(%rip), %r11
-        addq      %r11, %rcx
-        movd      %xmm0, %rax
-        movl      20(%rcx), %r10d
-        movl      24(%rcx), %r8d
-        movl      %eax, %edx
-        shrq      $21, %rax
-        orl       $-2147483648, %eax
-        shrl      $11, %eax
-        movl      %r10d, %r9d
-        imulq     %rdx, %r10
-        imulq     %rax, %r9
-        imulq     %rax, %r8
-        movl      16(%rcx), %esi
-        movl      12(%rcx), %edi
-        movl      %r10d, %r11d
-        shrq      $32, %r10
-        addq      %r10, %r9
-        addq      %r8, %r11
-        movl      %r11d, %r8d
-        shrq      $32, %r11
-        addq      %r11, %r9
-        movl      %esi, %r10d
-        imulq     %rdx, %rsi
-        imulq     %rax, %r10
-        movl      %edi, %r11d
-        imulq     %rdx, %rdi
-        movl      %esi, %ebx
-        shrq      $32, %rsi
-        addq      %rbx, %r9
-        movl      %r9d, %ebx
-        shrq      $32, %r9
-        addq      %rsi, %r10
-        addq      %r9, %r10
-        shlq      $32, %rbx
-        orq       %rbx, %r8
-        imulq     %rax, %r11
-        movl      8(%rcx), %r9d
-        movl      4(%rcx), %esi
-        movl      %edi, %ebx
-        shrq      $32, %rdi
-        addq      %rbx, %r10
-        movl      %r10d, %ebx
-        shrq      $32, %r10
-        addq      %rdi, %r11
-        addq      %r10, %r11
-        movq      %r9, %rdi
-        imulq     %rdx, %r9
-        imulq     %rax, %rdi
-        movl      %r9d, %r10d
-        shrq      $32, %r9
-        addq      %r10, %r11
-        movl      %r11d, %r10d
-        shrq      $32, %r11
-        addq      %r9, %rdi
-        addq      %r11, %rdi
-        movq      %rsi, %r9
-        imulq     %rdx, %rsi
-        imulq     %rax, %r9
-        shlq      $32, %r10
-        orq       %rbx, %r10
-        movl      (%rcx), %eax
-        movl      %esi, %r11d
-        shrq      $32, %rsi
-        addq      %r11, %rdi
-        movl      %edi, %r11d
-        shrq      $32, %rdi
-        addq      %rsi, %r9
-        addq      %rdi, %r9
-        imulq     %rax, %rdx
-        pextrw    $3, %xmm0, %ebx
-        lea       PI_INV_TABLE(%rip), %rdi
-        subq      %rdi, %rcx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      %ecx, %ecx
-        addl      $19, %ecx
-        movl      $32768, %esi
-        andl      %ebx, %esi
-        shrl      $4, %ebx
-        andl      $2047, %ebx
-        subl      $1023, %ebx
-        subl      %ebx, %ecx
-        addq      %rdx, %r9
-        movl      %ecx, %edx
-        addl      $32, %edx
-        cmpl      $0, %ecx
-        jl        .L_2TAG_PACKET_5.0.1
-        negl      %ecx
-        addl      $29, %ecx
-        shll      %cl, %r9d
-        movl      %r9d, %edi
-        andl      $1073741823, %r9d
-        testl     $536870912, %r9d
-        jne       .L_2TAG_PACKET_6.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-.L_2TAG_PACKET_7.0.1:
-.L_2TAG_PACKET_8.0.1:
-        cmpq      $0, %r9
-        je        .L_2TAG_PACKET_9.0.1
-.L_2TAG_PACKET_10.0.1:
-        bsr       %r9, %r11
-        movl      $29, %ecx
-        subl      %r11d, %ecx
-        jle       .L_2TAG_PACKET_11.0.1
-        shlq      %cl, %r9
-        movq      %r10, %rax
-        shlq      %cl, %r10
-        addl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shrq      %cl, %rax
-        shrq      %cl, %r8
-        orq       %rax, %r9
-        orq       %r8, %r10
-.L_2TAG_PACKET_12.0.1:
-        cvtsi2sdq %r9, %xmm0
-        shrq      $1, %r10
-        cvtsi2sdq %r10, %xmm3
-        xorpd     %xmm4, %xmm4
-        shll      $4, %edx
-        negl      %edx
-        addl      $16368, %edx
-        orl       %esi, %edx
-        xorl      %ebx, %edx
-        pinsrw    $3, %edx, %xmm4
-        movq      PI_4(%rip), %xmm2
-        movq      8+PI_4(%rip), %xmm7
-        xorpd     %xmm5, %xmm5
-        subl      $1008, %edx
-        pinsrw    $3, %edx, %xmm5
-        mulsd     %xmm4, %xmm0
-        shll      $16, %esi
-        sarl      $31, %esi
-        mulsd     %xmm5, %xmm3
-        movq      %xmm0, %xmm1
-        mulsd     %xmm2, %xmm0
-        shrl      $30, %edi
-        addsd     %xmm3, %xmm1
-        mulsd     %xmm2, %xmm3
-        addl      %esi, %edi
-        xorl      %esi, %edi
-        mulsd     %xmm1, %xmm7
-        movl      %edi, %eax
-        addsd     %xmm3, %xmm7
-        movq      %xmm0, %xmm2
-        addsd     %xmm7, %xmm0
-        subsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm7
-        movapd    PI32INV(%rip), %xmm1
-        movddup   %xmm0, %xmm0
-        movapd    sign_mask(%rip), %xmm4
-        andpd     %xmm0, %xmm4
-        mulpd     %xmm0, %xmm1
-        movddup   %xmm7, %xmm7
-        movapd    ONEHALF(%rip), %xmm5
-        movapd    MUL16(%rip), %xmm6
-        orps      %xmm4, %xmm5
-        addpd     %xmm5, %xmm1
-        movapd    %xmm1, %xmm5
-        unpckhpd  %xmm5, %xmm5
-        cvttsd2si %xmm5, %edx
-        cvttpd2dq %xmm1, %xmm1
-        cvtdq2pd  %xmm1, %xmm1
-        mulpd     %xmm6, %xmm1
-        movapd    P_1(%rip), %xmm3
-        movq      QQ_2(%rip), %xmm5
-        shll      $4, %eax
-        addl      $469248, %edx
-        movapd    P_2(%rip), %xmm4
-        mulpd     %xmm1, %xmm3
-        addl      %eax, %edx
-        andl      $31, %edx
-        mulsd     %xmm1, %xmm5
-        movl      %edx, %ecx
-        mulpd     %xmm1, %xmm4
-        shll      $1, %ecx
-        subpd     %xmm3, %xmm0
-        mulpd     P_3(%rip), %xmm1
-        addl      %ecx, %edx
-        shll      $2, %ecx
-        addl      %ecx, %edx
-        addsd     %xmm0, %xmm5
-        movapd    %xmm0, %xmm2
-        subpd     %xmm4, %xmm0
-        movq      ONE(%rip), %xmm6
-        shll      $4, %edx
-        lea       Ctable(%rip), %rax
-        andpd     MASK_35(%rip), %xmm5
-        movapd    %xmm0, %xmm3
-        addq      %rdx, %rax
-        subpd     %xmm0, %xmm2
-        unpckhpd  %xmm0, %xmm0
-        divsd     %xmm5, %xmm6
-        subpd     %xmm4, %xmm2
-        subsd     %xmm5, %xmm3
-        subpd     %xmm1, %xmm2
-        movapd    48(%rax), %xmm1
-        addpd     %xmm7, %xmm2
-        movapd    16(%rax), %xmm7
-        mulpd     %xmm0, %xmm7
-        movapd    96(%rax), %xmm4
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm4
-        addsd     %xmm3, %xmm2
-        movapd    %xmm0, %xmm3
-        mulpd     %xmm0, %xmm0
-        addpd     (%rax), %xmm7
-        addpd     32(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     80(%rax), %xmm4
-        addpd     %xmm1, %xmm7
-        movapd    112(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        mulpd     %xmm0, %xmm0
-        addpd     %xmm1, %xmm4
-        movapd    64(%rax), %xmm1
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm1, %xmm7
-        movapd    %xmm3, %xmm1
-        mulpd     %xmm0, %xmm3
-        mulsd     %xmm0, %xmm0
-        mulpd     144(%rax), %xmm1
-        mulpd     %xmm3, %xmm4
-        movq      %xmm1, %xmm3
-        addpd     %xmm4, %xmm7
-        movq      %xmm1, %xmm4
-        mulsd     %xmm7, %xmm0
-        unpckhpd  %xmm7, %xmm7
-        addsd     %xmm7, %xmm0
-        unpckhpd  %xmm1, %xmm1
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        movq      %xmm2, %xmm4
-        movq      144(%rax), %xmm7
-        unpckhpd  %xmm2, %xmm2
-        addsd     152(%rax), %xmm7
-        mulsd     %xmm2, %xmm7
-        addsd     136(%rax), %xmm7
-        addsd     %xmm1, %xmm7
-        addsd     %xmm7, %xmm0
-        movq      ONE(%rip), %xmm7
-        mulsd     %xmm6, %xmm4
-        movq      168(%rax), %xmm2
-        andpd     %xmm6, %xmm2
-        mulsd     %xmm2, %xmm5
-        mulsd     160(%rax), %xmm6
-        subsd     %xmm5, %xmm7
-        subsd     128(%rax), %xmm2
-        subsd     %xmm4, %xmm7
-        mulsd     %xmm6, %xmm7
-        movq      %xmm3, %xmm4
-        subsd     %xmm2, %xmm3
-        addsd     %xmm3, %xmm2
-        subsd     %xmm2, %xmm4
-        addsd     %xmm4, %xmm0
-        subsd     %xmm7, %xmm0
-        addsd     %xmm3, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_9.0.1:
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        movq      $0, %r8
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_10.0.1
-        addl      $64, %edx
-        movq      %r10, %r9
-        movq      %r8, %r10
-        cmpq      $0, %r9
-        jne       .L_2TAG_PACKET_10.0.1
-        jmp       .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_11.0.1:
-        je        .L_2TAG_PACKET_12.0.1
-        negl      %ecx
-        shrq      %cl, %r10
-        movq      %r9, %rax
-        shrq      %cl, %r9
-        subl      %ecx, %edx
-        negl      %ecx
-        addl      $64, %ecx
-        shlq      %cl, %rax
-        orq       %rax, %r10
-        jmp       .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_5.0.1:
-        notl      %ecx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      %cl, %r9
-        movq      %r9, %rdi
-        testl     $-2147483648, %r9d
-        jne       .L_2TAG_PACKET_13.0.1
-        shrl      %cl, %r9d
-        movl      $0, %ebx
-        shrq      $2, %rdi
-        jmp       .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_6.0.1:
-        shrl      %cl, %r9d
-        movl      $1073741824, %ebx
-        shrl      %cl, %ebx
-        shlq      $32, %r9
-        orq       %r11, %r9
-        shlq      $32, %rbx
-        addl      $1073741824, %edi
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        jmp       .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_13.0.1:
-        shrl      %cl, %r9d
-        movq      $0x100000000, %rbx
-        shrq      %cl, %rbx
-        movq      $0, %rcx
-        movq      $0, %r11
-        subq      %r8, %rcx
-        sbbq      %r10, %r11
-        sbbq      %r9, %rbx
-        movq      %rcx, %r8
-        movq      %r11, %r10
-        movq      %rbx, %r9
-        movl      $32768, %ebx
-        shrq      $2, %rdi
-        addl      $1073741824, %edi
-        jmp       .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_4.0.1:
-        movq      8(%rsp), %xmm0
-        mulsd     NEG_ZERO(%rip), %xmm0
-        movq      %xmm0, (%rsp)
-.L_2TAG_PACKET_14.0.1:
-..B1.4:
-        addq      $16, %rsp
-..___tag_value_tan.6:
-        popq      %rbx
-..___tag_value_tan.8:
-        ret       
-..___tag_value_tan.9:
-END(tan)
-# -- End  tan
-	.section .rodata, "a"
-	.align 16
-	.align 16
-ONEHALF:
-	.long	0
-	.long	1071644672
-	.long	0
-	.long	1071644672
-	.type	ONEHALF,@object
-	.size	ONEHALF,16
-	.align 16
-MUL16:
-	.long	0
-	.long	1076887552
-	.long	0
-	.long	1072693248
-	.type	MUL16,@object
-	.size	MUL16,16
-	.align 16
-sign_mask:
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	2147483648
-	.type	sign_mask,@object
-	.size	sign_mask,16
-	.align 16
-PI32INV:
-	.long	1841940611
-	.long	1071931184
-	.long	1841940611
-	.long	1076125488
-	.type	PI32INV,@object
-	.size	PI32INV,16
-	.align 16
-P_1:
-	.long	1413758976
-	.long	1069097467
-	.long	1413742592
-	.long	1069097467
-	.type	P_1,@object
-	.size	P_1,16
-	.align 16
-P_2:
-	.long	1734819840
-	.long	3174229945
-	.long	1280049152
-	.long	1028033571
-	.type	P_2,@object
-	.size	P_2,16
-	.align 16
-P_3:
-	.long	923219018
-	.long	984130272
-	.long	57701189
-	.long	988383790
-	.type	P_3,@object
-	.size	P_3,16
-	.align 16
-Ctable:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1066820852
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1441186365
-	.long	1065494243
-	.long	1431655765
-	.long	1070945621
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	236289504
-	.long	1064135997
-	.long	286331153
-	.long	1069617425
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1160476131
-	.long	1062722102
-	.long	463583772
-	.long	1068212666
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1313038235
-	.long	1066745731
-	.long	0
-	.long	0
-	.long	1013878342
-	.long	1067152618
-	.long	0
-	.long	0
-	.long	3663426833
-	.long	1065725283
-	.long	3693284251
-	.long	1069118808
-	.long	650852232
-	.long	1065882376
-	.long	1996245381
-	.long	1071000265
-	.long	2008746170
-	.long	1064664197
-	.long	3055842593
-	.long	1068578846
-	.long	1495406348
-	.long	1064652437
-	.long	2269530157
-	.long	1069711235
-	.long	285563696
-	.long	1063576465
-	.long	1046897440
-	.long	1067705865
-	.long	233429731
-	.long	1063453151
-	.long	522045958
-	.long	1068476590
-	.long	2354785698
-	.long	1069102779
-	.long	1317599141
-	.long	1012432133
-	.long	0
-	.long	1072693248
-	.long	2828230105
-	.long	1065606626
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1512545955
-	.long	1068119047
-	.long	0
-	.long	0
-	.long	1127048698
-	.long	1067909459
-	.long	0
-	.long	0
-	.long	2300200450
-	.long	1067254767
-	.long	3593250296
-	.long	1070233561
-	.long	3009365544
-	.long	1066902117
-	.long	1127373050
-	.long	1071173457
-	.long	3046103305
-	.long	1066371299
-	.long	24583402
-	.long	1069723988
-	.long	4082511758
-	.long	1065914199
-	.long	3223889699
-	.long	1070020367
-	.long	548927984
-	.long	1065415756
-	.long	558065897
-	.long	1068949418
-	.long	680073315
-	.long	1064940726
-	.long	388873200
-	.long	1068944270
-	.long	3763679576
-	.long	1070167541
-	.long	1497360404
-	.long	1009710547
-	.long	0
-	.long	1072693248
-	.long	64931152
-	.long	1067729411
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2467582782
-	.long	1069256389
-	.long	0
-	.long	0
-	.long	162150096
-	.long	1068946420
-	.long	0
-	.long	0
-	.long	3702794237
-	.long	1068579152
-	.long	3631919291
-	.long	1070936926
-	.long	3456821413
-	.long	1068217218
-	.long	2031366438
-	.long	1071495745
-	.long	1596664020
-	.long	1067799281
-	.long	1509038701
-	.long	1070601643
-	.long	583171477
-	.long	1067510148
-	.long	3785344682
-	.long	1070618476
-	.long	2402036048
-	.long	1067075736
-	.long	3233018412
-	.long	1069913186
-	.long	411280568
-	.long	1066710556
-	.long	1065584192
-	.long	1069747896
-	.long	895247324
-	.long	1070819848
-	.long	500078909
-	.long	3161288781
-	.long	0
-	.long	1072693248
-	.long	729983843
-	.long	1068994194
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1458794562
-	.long	1070398550
-	.long	0
-	.long	0
-	.long	2857777489
-	.long	1070137637
-	.long	0
-	.long	0
-	.long	1024359517
-	.long	1069876531
-	.long	2616040238
-	.long	1071582937
-	.long	1609024636
-	.long	1069675088
-	.long	2529240549
-	.long	1071836633
-	.long	1510128600
-	.long	1069440113
-	.long	2251697184
-	.long	1071253687
-	.long	1262761453
-	.long	1069142850
-	.long	1263091857
-	.long	1071190461
-	.long	3043383486
-	.long	1068885191
-	.long	2476932470
-	.long	1070842002
-	.long	3659995028
-	.long	1068669200
-	.long	855891755
-	.long	1070696894
-	.long	2583490354
-	.long	1071284857
-	.long	3062633575
-	.long	1014008623
-	.long	0
-	.long	1072693248
-	.long	2550940471
-	.long	1069938201
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3422807297
-	.long	1071640847
-	.long	0
-	.long	0
-	.long	1151658053
-	.long	1071494715
-	.long	0
-	.long	0
-	.long	929607071
-	.long	1071346340
-	.long	1037049034
-	.long	1072037305
-	.long	2786928657
-	.long	1071215282
-	.long	1447406859
-	.long	1072265209
-	.long	3490952107
-	.long	1071090851
-	.long	3205232916
-	.long	1071968658
-	.long	1297344304
-	.long	1070977120
-	.long	1066110976
-	.long	1071946035
-	.long	3803721480
-	.long	1070871082
-	.long	1496754229
-	.long	1071807201
-	.long	2982550683
-	.long	1070773243
-	.long	4014441989
-	.long	1071736222
-	.long	419968236
-	.long	1071717047
-	.long	3451266538
-	.long	3163444811
-	.long	0
-	.long	1072693248
-	.long	2960267235
-	.long	1070745841
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	724322768
-	.long	1072881308
-	.long	0
-	.long	0
-	.long	643153048
-	.long	1072905816
-	.long	0
-	.long	0
-	.long	4285079458
-	.long	1072928558
-	.long	3912524733
-	.long	1072622983
-	.long	118362272
-	.long	1072952754
-	.long	4107767972
-	.long	1072827408
-	.long	2689502883
-	.long	1072976922
-	.long	946523347
-	.long	1072772766
-	.long	573204189
-	.long	1073001761
-	.long	581531518
-	.long	1072826391
-	.long	1386236526
-	.long	1073026959
-	.long	3718905905
-	.long	1072832823
-	.long	1145558140
-	.long	1073052673
-	.long	513572637
-	.long	1072861969
-	.long	716700048
-	.long	1071997368
-	.long	547126769
-	.long	1015523525
-	.long	0
-	.long	1072693248
-	.long	1097907398
-	.long	1071420120
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3349892442
-	.long	1074290212
-	.long	0
-	.long	0
-	.long	3913197405
-	.long	1074501181
-	.long	0
-	.long	0
-	.long	2494034522
-	.long	1074739170
-	.long	1264738763
-	.long	1073084804
-	.long	1520293906
-	.long	1074899632
-	.long	1958936600
-	.long	1073411493
-	.long	2133649635
-	.long	1075052171
-	.long	4270740730
-	.long	1073574708
-	.long	1728930189
-	.long	1075224844
-	.long	1303998552
-	.long	1073799186
-	.long	618611933
-	.long	1075420255
-	.long	1769828046
-	.long	1073938542
-	.long	2200537986
-	.long	1075641421
-	.long	433361110
-	.long	1074105369
-	.long	719595600
-	.long	1072317184
-	.long	294527206
-	.long	3162140088
-	.long	0
-	.long	1073741824
-	.long	3811788216
-	.long	3218400550
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1704352102
-	.long	1075943001
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1076258036
-	.long	0
-	.long	0
-	.long	2211264291
-	.long	1076659010
-	.long	0
-	.long	1073741824
-	.long	1441186365
-	.long	1077028579
-	.long	1431655765
-	.long	1074091349
-	.long	876943673
-	.long	1077353622
-	.long	2863311531
-	.long	1074440874
-	.long	236289504
-	.long	1077767485
-	.long	286331153
-	.long	1074860305
-	.long	2805473311
-	.long	1078115278
-	.long	95443718
-	.long	1075163227
-	.long	1160476131
-	.long	1078450742
-	.long	463583772
-	.long	1075552698
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	0
-	.long	1073741824
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1330165971
-	.long	3207850745
-	.long	0
-	.long	0
-	.long	217536623
-	.long	1059109098
-	.long	0
-	.long	0
-	.long	3492120849
-	.long	3205151475
-	.long	602185705
-	.long	3215678092
-	.long	760422958
-	.long	1056312597
-	.long	555127889
-	.long	1067545266
-	.long	3139784124
-	.long	3202470837
-	.long	3690544014
-	.long	3213150171
-	.long	95707915
-	.long	1053635428
-	.long	4003114407
-	.long	1064581412
-	.long	2034926231
-	.long	3199711161
-	.long	3759536023
-	.long	3210559989
-	.long	3826928214
-	.long	1050893819
-	.long	3837960785
-	.long	1061790379
-	.long	1526325248
-	.long	3217967566
-	.long	2356426521
-	.long	1025423456
-	.long	0
-	.long	0
-	.long	457728975
-	.long	1071088276
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1398462608
-	.long	3207303968
-	.long	0
-	.long	0
-	.long	26205983
-	.long	1058461213
-	.long	0
-	.long	0
-	.long	56226238
-	.long	3204528612
-	.long	2754706541
-	.long	3215359511
-	.long	2187799823
-	.long	1055634437
-	.long	790323742
-	.long	1067402587
-	.long	1372385848
-	.long	3201651479
-	.long	4097292716
-	.long	3212856302
-	.long	3348210357
-	.long	1052830099
-	.long	2442796466
-	.long	1064337602
-	.long	862608142
-	.long	3198830754
-	.long	170296152
-	.long	3210060867
-	.long	3755571428
-	.long	1049933343
-	.long	3614866008
-	.long	1061361670
-	.long	719978496
-	.long	3217669096
-	.long	1998842465
-	.long	3174703977
-	.long	0
-	.long	0
-	.long	3749156607
-	.long	1071048258
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3120498638
-	.long	3206749304
-	.long	0
-	.long	0
-	.long	2773578114
-	.long	1058009312
-	.long	0
-	.long	0
-	.long	2030783676
-	.long	3203817873
-	.long	2223654598
-	.long	3215071936
-	.long	2976134650
-	.long	1054987244
-	.long	706390066
-	.long	1067217386
-	.long	4258437615
-	.long	3200900378
-	.long	1066252975
-	.long	3212391267
-	.long	815777514
-	.long	1051989462
-	.long	3202745457
-	.long	1064010682
-	.long	2493556375
-	.long	3198004753
-	.long	1046243251
-	.long	3209678971
-	.long	2593078846
-	.long	1049017717
-	.long	2763962276
-	.long	1060970161
-	.long	701480960
-	.long	3217377742
-	.long	3205862232
-	.long	3174660915
-	.long	0
-	.long	0
-	.long	2267016812
-	.long	1071015664
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	2107155798
-	.long	3206166872
-	.long	0
-	.long	0
-	.long	2642992129
-	.long	1057424578
-	.long	0
-	.long	0
-	.long	1936992811
-	.long	3203204426
-	.long	1485063559
-	.long	3214682643
-	.long	1432914553
-	.long	1054319398
-	.long	3996381654
-	.long	1067075828
-	.long	2833029256
-	.long	3200223545
-	.long	2866066872
-	.long	3211982662
-	.long	2432888737
-	.long	1051234178
-	.long	3669764559
-	.long	1063748136
-	.long	2458496952
-	.long	3197170774
-	.long	1948234989
-	.long	3209098147
-	.long	2843698787
-	.long	1048163519
-	.long	3398041407
-	.long	1060559728
-	.long	2829230080
-	.long	3217092115
-	.long	1034046433
-	.long	3174271903
-	.long	0
-	.long	0
-	.long	298675305
-	.long	1070989821
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	437603223
-	.long	3205589761
-	.long	0
-	.long	0
-	.long	759330352
-	.long	1057048511
-	.long	0
-	.long	0
-	.long	3107463368
-	.long	3202507988
-	.long	3144465176
-	.long	3214191500
-	.long	2290961810
-	.long	1053841035
-	.long	1618153340
-	.long	1066971547
-	.long	3836869393
-	.long	3199400272
-	.long	584032116
-	.long	3211469261
-	.long	1245704358
-	.long	1050626462
-	.long	4247487438
-	.long	1063561943
-	.long	1669034927
-	.long	3196274812
-	.long	3844233498
-	.long	3208626322
-	.long	2706958524
-	.long	1047411374
-	.long	3857199098
-	.long	1060281647
-	.long	3593904128
-	.long	3216590719
-	.long	3267547836
-	.long	3172163321
-	.long	0
-	.long	0
-	.long	4076712227
-	.long	1070970214
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3290090340
-	.long	3204793485
-	.long	0
-	.long	0
-	.long	3685760367
-	.long	1056668370
-	.long	0
-	.long	0
-	.long	2655163949
-	.long	3201674917
-	.long	628750575
-	.long	3213566872
-	.long	680140505
-	.long	1053299777
-	.long	2954464709
-	.long	1066900026
-	.long	803201619
-	.long	3198516435
-	.long	1466315631
-	.long	3210837162
-	.long	1611220163
-	.long	1049972438
-	.long	2766187256
-	.long	1063437894
-	.long	1804579484
-	.long	3195331491
-	.long	3695969289
-	.long	3207854418
-	.long	2617238373
-	.long	1046675948
-	.long	3095830084
-	.long	1060095334
-	.long	3789570048
-	.long	3216034914
-	.long	23826559
-	.long	3172048060
-	.long	0
-	.long	0
-	.long	3870939386
-	.long	1070956467
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1571758758
-	.long	3203672535
-	.long	0
-	.long	0
-	.long	113026373
-	.long	1056416381
-	.long	0
-	.long	0
-	.long	1913766298
-	.long	3200523326
-	.long	2507068734
-	.long	3212502004
-	.long	4000648818
-	.long	1053003803
-	.long	2446607349
-	.long	1066858259
-	.long	912662124
-	.long	3197333001
-	.long	1349489537
-	.long	3209765608
-	.long	3412972607
-	.long	1049641401
-	.long	1721283327
-	.long	1063366855
-	.long	1466691883
-	.long	3194116746
-	.long	3852528092
-	.long	3206760861
-	.long	285443293
-	.long	1046158380
-	.long	1758739894
-	.long	1059895449
-	.long	1858781184
-	.long	3214984212
-	.long	3447575948
-	.long	1024675855
-	.long	0
-	.long	0
-	.long	2242038011
-	.long	1070948320
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	737611454
-	.long	1056336527
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3594790527
-	.long	1052911621
-	.long	381774871
-	.long	1066844524
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3303051618
-	.long	1049456050
-	.long	3154187623
-	.long	1063343722
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	528061788
-	.long	1045944910
-	.long	2469719819
-	.long	1059831159
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1431655765
-	.long	1070945621
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1571758758
-	.long	1056188887
-	.long	0
-	.long	0
-	.long	113026373
-	.long	1056416381
-	.long	0
-	.long	0
-	.long	1913766298
-	.long	1053039678
-	.long	2507068734
-	.long	1065018356
-	.long	4000648818
-	.long	1053003803
-	.long	2446607349
-	.long	1066858259
-	.long	912662124
-	.long	1049849353
-	.long	1349489537
-	.long	1062281960
-	.long	3412972607
-	.long	1049641401
-	.long	1721283327
-	.long	1063366855
-	.long	1466691883
-	.long	1046633098
-	.long	3852528092
-	.long	1059277213
-	.long	285443293
-	.long	1046158380
-	.long	1758739894
-	.long	1059895449
-	.long	1858781184
-	.long	1067500564
-	.long	3447575948
-	.long	3172159503
-	.long	0
-	.long	0
-	.long	2242038011
-	.long	1070948320
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3290090340
-	.long	1057309837
-	.long	0
-	.long	0
-	.long	3685760367
-	.long	1056668370
-	.long	0
-	.long	0
-	.long	2655163949
-	.long	1054191269
-	.long	628750575
-	.long	1066083224
-	.long	680140505
-	.long	1053299777
-	.long	2954464709
-	.long	1066900026
-	.long	803201619
-	.long	1051032787
-	.long	1466315631
-	.long	1063353514
-	.long	1611220163
-	.long	1049972438
-	.long	2766187256
-	.long	1063437894
-	.long	1804579484
-	.long	1047847843
-	.long	3695969289
-	.long	1060370770
-	.long	2617238373
-	.long	1046675948
-	.long	3095830084
-	.long	1060095334
-	.long	3789570048
-	.long	1068551266
-	.long	23826559
-	.long	1024564412
-	.long	0
-	.long	0
-	.long	3870939386
-	.long	1070956467
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	437603223
-	.long	1058106113
-	.long	0
-	.long	0
-	.long	759330352
-	.long	1057048511
-	.long	0
-	.long	0
-	.long	3107463368
-	.long	1055024340
-	.long	3144465176
-	.long	1066707852
-	.long	2290961810
-	.long	1053841035
-	.long	1618153340
-	.long	1066971547
-	.long	3836869393
-	.long	1051916624
-	.long	584032116
-	.long	1063985613
-	.long	1245704358
-	.long	1050626462
-	.long	4247487438
-	.long	1063561943
-	.long	1669034927
-	.long	1048791164
-	.long	3844233498
-	.long	1061142674
-	.long	2706958524
-	.long	1047411374
-	.long	3857199098
-	.long	1060281647
-	.long	3593904128
-	.long	1069107071
-	.long	3267547836
-	.long	1024679673
-	.long	0
-	.long	0
-	.long	4076712227
-	.long	1070970214
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	2107155798
-	.long	1058683224
-	.long	0
-	.long	0
-	.long	2642992129
-	.long	1057424578
-	.long	0
-	.long	0
-	.long	1936992811
-	.long	1055720778
-	.long	1485063559
-	.long	1067198995
-	.long	1432914553
-	.long	1054319398
-	.long	3996381654
-	.long	1067075828
-	.long	2833029256
-	.long	1052739897
-	.long	2866066872
-	.long	1064499014
-	.long	2432888737
-	.long	1051234178
-	.long	3669764559
-	.long	1063748136
-	.long	2458496952
-	.long	1049687126
-	.long	1948234989
-	.long	1061614499
-	.long	2843698787
-	.long	1048163519
-	.long	3398041407
-	.long	1060559728
-	.long	2829230080
-	.long	1069608467
-	.long	1034046433
-	.long	1026788255
-	.long	0
-	.long	0
-	.long	298675305
-	.long	1070989821
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	3120498638
-	.long	1059265656
-	.long	0
-	.long	0
-	.long	2773578114
-	.long	1058009312
-	.long	0
-	.long	0
-	.long	2030783676
-	.long	1056334225
-	.long	2223654598
-	.long	1067588288
-	.long	2976134650
-	.long	1054987244
-	.long	706390066
-	.long	1067217386
-	.long	4258437615
-	.long	1053416730
-	.long	1066252975
-	.long	1064907619
-	.long	815777514
-	.long	1051989462
-	.long	3202745457
-	.long	1064010682
-	.long	2493556375
-	.long	1050521105
-	.long	1046243251
-	.long	1062195323
-	.long	2593078846
-	.long	1049017717
-	.long	2763962276
-	.long	1060970161
-	.long	701480960
-	.long	1069894094
-	.long	3205862232
-	.long	1027177267
-	.long	0
-	.long	0
-	.long	2267016812
-	.long	1071015664
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1398462608
-	.long	1059820320
-	.long	0
-	.long	0
-	.long	26205983
-	.long	1058461213
-	.long	0
-	.long	0
-	.long	56226238
-	.long	1057044964
-	.long	2754706541
-	.long	1067875863
-	.long	2187799823
-	.long	1055634437
-	.long	790323742
-	.long	1067402587
-	.long	1372385848
-	.long	1054167831
-	.long	4097292716
-	.long	1065372654
-	.long	3348210357
-	.long	1052830099
-	.long	2442796466
-	.long	1064337602
-	.long	862608142
-	.long	1051347106
-	.long	170296152
-	.long	1062577219
-	.long	3755571428
-	.long	1049933343
-	.long	3614866008
-	.long	1061361670
-	.long	719978496
-	.long	1070185448
-	.long	1998842465
-	.long	1027220329
-	.long	0
-	.long	0
-	.long	3749156607
-	.long	1071048258
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1330165971
-	.long	1060367097
-	.long	0
-	.long	0
-	.long	217536623
-	.long	1059109098
-	.long	0
-	.long	0
-	.long	3492120849
-	.long	1057667827
-	.long	602185705
-	.long	1068194444
-	.long	760422958
-	.long	1056312597
-	.long	555127889
-	.long	1067545266
-	.long	3139784124
-	.long	1054987189
-	.long	3690544014
-	.long	1065666523
-	.long	95707915
-	.long	1053635428
-	.long	4003114407
-	.long	1064581412
-	.long	2034926231
-	.long	1052227513
-	.long	3759536023
-	.long	1063076341
-	.long	3826928214
-	.long	1050893819
-	.long	3837960785
-	.long	1061790379
-	.long	1526325248
-	.long	1070483918
-	.long	2356426521
-	.long	3172907104
-	.long	0
-	.long	0
-	.long	457728975
-	.long	1071088276
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	4294967288
-	.long	1704352102
-	.long	3223426649
-	.long	0
-	.long	0
-	.long	2284589306
-	.long	1076258036
-	.long	0
-	.long	0
-	.long	2211264291
-	.long	3224142658
-	.long	0
-	.long	3221225472
-	.long	1441186365
-	.long	1077028579
-	.long	1431655765
-	.long	1074091349
-	.long	876943673
-	.long	3224837270
-	.long	2863311531
-	.long	3221924522
-	.long	236289504
-	.long	1077767485
-	.long	286331153
-	.long	1074860305
-	.long	2805473311
-	.long	3225598926
-	.long	95443718
-	.long	3222646875
-	.long	1160476131
-	.long	1078450742
-	.long	463583772
-	.long	1075552698
-	.long	0
-	.long	3220176896
-	.long	0
-	.long	0
-	.long	0
-	.long	1073741824
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3349892442
-	.long	3221773860
-	.long	0
-	.long	0
-	.long	3913197405
-	.long	1074501181
-	.long	0
-	.long	0
-	.long	2494034522
-	.long	3222222818
-	.long	1264738763
-	.long	3220568452
-	.long	1520293906
-	.long	1074899632
-	.long	1958936600
-	.long	1073411493
-	.long	2133649635
-	.long	3222535819
-	.long	4270740730
-	.long	3221058356
-	.long	1728930189
-	.long	1075224844
-	.long	1303998552
-	.long	1073799186
-	.long	618611933
-	.long	3222903903
-	.long	1769828046
-	.long	3221422190
-	.long	2200537986
-	.long	1075641421
-	.long	433361110
-	.long	1074105369
-	.long	719595600
-	.long	3219800832
-	.long	294527206
-	.long	1014656440
-	.long	0
-	.long	1073741824
-	.long	3811788216
-	.long	3218400550
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	724322768
-	.long	3220364956
-	.long	0
-	.long	0
-	.long	643153048
-	.long	1072905816
-	.long	0
-	.long	0
-	.long	4285079458
-	.long	3220412206
-	.long	3912524733
-	.long	3220106631
-	.long	118362272
-	.long	1072952754
-	.long	4107767972
-	.long	1072827408
-	.long	2689502883
-	.long	3220460570
-	.long	946523347
-	.long	3220256414
-	.long	573204189
-	.long	1073001761
-	.long	581531518
-	.long	1072826391
-	.long	1386236526
-	.long	3220510607
-	.long	3718905905
-	.long	3220316471
-	.long	1145558140
-	.long	1073052673
-	.long	513572637
-	.long	1072861969
-	.long	716700048
-	.long	3219481016
-	.long	547126769
-	.long	3163007173
-	.long	0
-	.long	1072693248
-	.long	1097907398
-	.long	1071420120
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	3422807297
-	.long	3219124495
-	.long	0
-	.long	0
-	.long	1151658053
-	.long	1071494715
-	.long	0
-	.long	0
-	.long	929607071
-	.long	3218829988
-	.long	1037049034
-	.long	3219520953
-	.long	2786928657
-	.long	1071215282
-	.long	1447406859
-	.long	1072265209
-	.long	3490952107
-	.long	3218574499
-	.long	3205232916
-	.long	3219452306
-	.long	1297344304
-	.long	1070977120
-	.long	1066110976
-	.long	1071946035
-	.long	3803721480
-	.long	3218354730
-	.long	1496754229
-	.long	3219290849
-	.long	2982550683
-	.long	1070773243
-	.long	4014441989
-	.long	1071736222
-	.long	419968236
-	.long	3219200695
-	.long	3451266538
-	.long	1015961163
-	.long	0
-	.long	1072693248
-	.long	2960267235
-	.long	1070745841
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1458794562
-	.long	3217882198
-	.long	0
-	.long	0
-	.long	2857777489
-	.long	1070137637
-	.long	0
-	.long	0
-	.long	1024359517
-	.long	3217360179
-	.long	2616040238
-	.long	3219066585
-	.long	1609024636
-	.long	1069675088
-	.long	2529240549
-	.long	1071836633
-	.long	1510128600
-	.long	3216923761
-	.long	2251697184
-	.long	3218737335
-	.long	1262761453
-	.long	1069142850
-	.long	1263091857
-	.long	1071190461
-	.long	3043383486
-	.long	3216368839
-	.long	2476932470
-	.long	3218325650
-	.long	3659995028
-	.long	1068669200
-	.long	855891755
-	.long	1070696894
-	.long	2583490354
-	.long	3218768505
-	.long	3062633575
-	.long	3161492271
-	.long	0
-	.long	1072693248
-	.long	2550940471
-	.long	1069938201
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	2467582782
-	.long	3216740037
-	.long	0
-	.long	0
-	.long	162150096
-	.long	1068946420
-	.long	0
-	.long	0
-	.long	3702794237
-	.long	3216062800
-	.long	3631919291
-	.long	3218420574
-	.long	3456821413
-	.long	1068217218
-	.long	2031366438
-	.long	1071495745
-	.long	1596664020
-	.long	3215282929
-	.long	1509038701
-	.long	3218085291
-	.long	583171477
-	.long	1067510148
-	.long	3785344682
-	.long	1070618476
-	.long	2402036048
-	.long	3214559384
-	.long	3233018412
-	.long	3217396834
-	.long	411280568
-	.long	1066710556
-	.long	1065584192
-	.long	1069747896
-	.long	895247324
-	.long	3218303496
-	.long	500078909
-	.long	1013805133
-	.long	0
-	.long	1072693248
-	.long	729983843
-	.long	1068994194
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1512545955
-	.long	3215602695
-	.long	0
-	.long	0
-	.long	1127048698
-	.long	1067909459
-	.long	0
-	.long	0
-	.long	2300200450
-	.long	3214738415
-	.long	3593250296
-	.long	3217717209
-	.long	3009365544
-	.long	1066902117
-	.long	1127373050
-	.long	1071173457
-	.long	3046103305
-	.long	3213854947
-	.long	24583402
-	.long	3217207636
-	.long	4082511758
-	.long	1065914199
-	.long	3223889699
-	.long	1070020367
-	.long	548927984
-	.long	3212899404
-	.long	558065897
-	.long	3216433066
-	.long	680073315
-	.long	1064940726
-	.long	388873200
-	.long	1068944270
-	.long	3763679576
-	.long	3217651189
-	.long	1497360404
-	.long	3157194195
-	.long	0
-	.long	1072693248
-	.long	64931152
-	.long	1067729411
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	1313038235
-	.long	3214229379
-	.long	0
-	.long	0
-	.long	1013878342
-	.long	1067152618
-	.long	0
-	.long	0
-	.long	3663426833
-	.long	3213208931
-	.long	3693284251
-	.long	3216602456
-	.long	650852232
-	.long	1065882376
-	.long	1996245381
-	.long	1071000265
-	.long	2008746170
-	.long	3212147845
-	.long	3055842593
-	.long	3216062494
-	.long	1495406348
-	.long	1064652437
-	.long	2269530157
-	.long	1069711235
-	.long	285563696
-	.long	3211060113
-	.long	1046897440
-	.long	3215189513
-	.long	233429731
-	.long	1063453151
-	.long	522045958
-	.long	1068476590
-	.long	2354785698
-	.long	3216586427
-	.long	1317599141
-	.long	3159915781
-	.long	0
-	.long	1072693248
-	.long	2828230105
-	.long	1065606626
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.type	Ctable,@object
-	.size	Ctable,5632
-	.align 16
-MASK_35:
-	.long	4294705152
-	.long	4294967295
-	.long	0
-	.long	0
-	.type	MASK_35,@object
-	.size	MASK_35,16
-	.align 16
-Q_11:
-	.long	3103673719
-	.long	1065509018
-	.type	Q_11,@object
-	.size	Q_11,8
-	.space 8, 0x00 	# pad
-	.align 16
-Q_9:
-	.long	3213130307
-	.long	1066820768
-	.type	Q_9,@object
-	.size	Q_9,8
-	.space 8, 0x00 	# pad
-	.align 16
-Q_7:
-	.long	1388628139
-	.long	1068212666
-	.type	Q_7,@object
-	.size	Q_7,8
-	.space 8, 0x00 	# pad
-	.align 16
-Q_5:
-	.long	285812550
-	.long	1069617425
-	.type	Q_5,@object
-	.size	Q_5,8
-	.space 8, 0x00 	# pad
-	.align 16
-Q_3:
-	.long	1431655954
-	.long	1070945621
-	.type	Q_3,@object
-	.size	Q_3,8
-	.space 8, 0x00 	# pad
-	.align 16
-PI_INV_TABLE:
-	.long	0
-	.long	0
-	.long	2734261102
-	.long	1313084713
-	.long	4230436817
-	.long	4113882560
-	.long	3680671129
-	.long	1011060801
-	.long	4266746795
-	.long	3736847713
-	.long	3072618042
-	.long	1112396512
-	.long	105459434
-	.long	164729372
-	.long	4263373596
-	.long	2972297022
-	.long	3900847605
-	.long	784024708
-	.long	3919343654
-	.long	3026157121
-	.long	965858873
-	.long	2203269620
-	.long	2625920907
-	.long	3187222587
-	.long	536385535
-	.long	3724908559
-	.long	4012839307
-	.long	1510632735
-	.long	1832287951
-	.long	667617719
-	.long	1330003814
-	.long	2657085997
-	.long	1965537991
-	.long	3957715323
-	.long	1023883767
-	.long	2320667370
-	.long	1811636145
-	.long	529358088
-	.long	1443049542
-	.long	4235946923
-	.long	4040145953
-	.type	PI_INV_TABLE,@object
-	.size	PI_INV_TABLE,164
-	.space 12, 0x00 	# pad
-	.align 16
-PI_4:
-	.long	0
-	.long	1072243195
-	.long	1175561766
-	.long	1048908043
-	.type	PI_4,@object
-	.size	PI_4,16
-	.align 8
-QQ_2:
-	.long	1734816687
-	.long	1026746297
-	.type	QQ_2,@object
-	.size	QQ_2,8
-	.align 8
-ONE:
-	.long	0
-	.long	1072693248
-	.type	ONE,@object
-	.size	ONE,8
-	.align 8
-TWO_POW_55:
-	.long	0
-	.long	1130364928
-	.type	TWO_POW_55,@object
-	.size	TWO_POW_55,8
-	.align 8
-TWO_POW_M55:
-	.long	0
-	.long	1015021568
-	.type	TWO_POW_M55,@object
-	.size	TWO_POW_M55,8
-	.align 4
-NEG_ZERO:
-	.long	0
-	.long	2147483648
-	.type	NEG_ZERO,@object
-	.size	NEG_ZERO,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000002c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_tan.1-.
-	.4byte ..___tag_value_tan.9-..___tag_value_tan.1
-	.2byte 0x0400
-	.4byte ..___tag_value_tan.3-..___tag_value_tan.1
-	.4byte 0x0283100e
-	.byte 0x04
-	.4byte ..___tag_value_tan.5-..___tag_value_tan.3
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_tan.6-..___tag_value_tan.5
-	.4byte 0x04c3100e
-	.4byte ..___tag_value_tan.8-..___tag_value_tan.6
-	.2byte 0x080e
-# End
diff --git a/libm/x86_64/s_tanh.S b/libm/x86_64/s_tanh.S
deleted file mode 100644
index a76a5c2..0000000
--- a/libm/x86_64/s_tanh.S
+++ /dev/null
@@ -1,1392 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    * this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-    * this list of conditions and the following disclaimer in the documentation
-    * and/or other materials provided with the distribution.
-
-    * Neither the name of Intel Corporation nor the names of its contributors
-    * may be used to endorse or promote products derived from this software
-    * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-//                     ALGORITHM DESCRIPTION
-//                     ---------------------
-//
-// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-//         L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
-//                             f=0.b1 b2 ... b8, k integer
-// 2^{-f} is approximated as Tn[f]+Dn[f]
-// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
-//
-//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
-//                      for |x| in [23/64,3*2^7)
-// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
-//
-// For |x| in [2^{-4},2^5):
-//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
-//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
-//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
-//  1+T0+D0+p*(T0+D0)=KH+KL, where
-//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
-//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
-//  eps ~ (R*KH-1)+R*KL
-//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
-//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
-//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
-//    The result is formed as
-//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
-//                                                  set at the end
-//
-// For |x| in [2^{-64},2^{-4}):
-//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
-//
-// For |x|<2^{-64}:  x is returned
-//
-// For |x|>=2^32: return +/-1
-//
-// Special cases:
-//  tanh(NaN) = quiet NaN, and raise invalid exception
-//  tanh(INF) = that INF
-//  tanh(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  tanh
-ENTRY(tanh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_tanh.1:
-        pushq     %rsi
-..___tag_value_tanh.3:
-..B1.2:
-        movsd     HALFMASK(%rip), %xmm3
-        xorpd     %xmm4, %xmm4
-        movsd     L2E(%rip), %xmm1
-        movsd     8+L2E(%rip), %xmm2
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm4
-        movsd     Shifter(%rip), %xmm6
-        pextrw    $3, %xmm0, %ecx
-        andpd     %xmm0, %xmm3
-        andnpd    %xmm0, %xmm4
-        pshufd    $68, %xmm4, %xmm5
-        movl      $32768, %edx
-        andl      %ecx, %edx
-        andl      $32767, %ecx
-        subl      $16304, %ecx
-        cmpl      $144, %ecx
-        jae       .L_2TAG_PACKET_0.0.1
-        subsd     %xmm3, %xmm4
-        mulsd     %xmm1, %xmm3
-        mulsd     %xmm5, %xmm2
-        cvtsd2si  %xmm3, %eax
-        movq      %xmm3, %xmm7
-        addsd     %xmm6, %xmm3
-        mulsd     %xmm4, %xmm1
-        movsd     ONEMASK(%rip), %xmm4
-        subsd     %xmm6, %xmm3
-        xorpd     %xmm0, %xmm0
-        addsd     %xmm1, %xmm2
-        subsd     %xmm3, %xmm7
-        movapd    cv(%rip), %xmm6
-        addsd     %xmm7, %xmm2
-        movl      $255, %ecx
-        andl      %eax, %ecx
-        addl      %ecx, %ecx
-        lea       T2_neg_f(%rip), %r8
-        movapd    (%r8,%rcx,8), %xmm5
-        shrl      $4, %eax
-        andl      $65520, %eax
-        subl      $16368, %eax
-        negl      %eax
-        pinsrw    $3, %eax, %xmm0
-        movapd    16+cv(%rip), %xmm1
-        pshufd    $68, %xmm0, %xmm0
-        mulpd     %xmm5, %xmm0
-        movsd     32+cv(%rip), %xmm7
-        pshufd    $68, %xmm2, %xmm2
-        movq      %xmm4, %xmm5
-        addsd     %xmm0, %xmm4
-        mulpd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm7
-        mulpd     %xmm2, %xmm2
-        addpd     %xmm6, %xmm1
-        mulsd     %xmm2, %xmm2
-        movsd     ONEMASK(%rip), %xmm3
-        mulpd     %xmm2, %xmm1
-        pshufd    $78, %xmm1, %xmm6
-        addsd     %xmm6, %xmm1
-        movq      %xmm1, %xmm6
-        addsd     %xmm7, %xmm1
-        mulsd     %xmm0, %xmm1
-        addsd     %xmm4, %xmm1
-        andpd     MASK3(%rip), %xmm4
-        divsd     %xmm1, %xmm5
-        subsd     %xmm4, %xmm3
-        pshufd    $238, %xmm0, %xmm1
-        addsd     %xmm0, %xmm3
-        movq      %xmm4, %xmm2
-        addsd     %xmm1, %xmm3
-        mulsd     %xmm7, %xmm1
-        mulsd     %xmm0, %xmm7
-        addsd     %xmm1, %xmm3
-        addsd     %xmm7, %xmm4
-        movsd     RMASK(%rip), %xmm1
-        mulsd     %xmm0, %xmm6
-        andpd     MASK3(%rip), %xmm4
-        addsd     %xmm6, %xmm3
-        movq      %xmm4, %xmm6
-        subsd     %xmm4, %xmm2
-        addsd     %xmm7, %xmm2
-        movsd     ONEMASK(%rip), %xmm7
-        andpd     %xmm1, %xmm5
-        addsd     %xmm2, %xmm3
-        mulsd     %xmm5, %xmm4
-        xorpd     %xmm2, %xmm2
-        mulsd     %xmm5, %xmm3
-        subsd     TWOMASK(%rip), %xmm6
-        subsd     %xmm7, %xmm4
-        xorl      $32768, %edx
-        pinsrw    $3, %edx, %xmm2
-        addsd     %xmm3, %xmm4
-        mulsd     %xmm5, %xmm6
-        movq      %xmm3, %xmm1
-        mulsd     %xmm4, %xmm3
-        movq      %xmm6, %xmm0
-        mulsd     %xmm4, %xmm6
-        subsd     %xmm3, %xmm1
-        subsd     %xmm6, %xmm1
-        addsd     %xmm1, %xmm0
-        xorpd     %xmm2, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_0.0.1:
-        addl      $960, %ecx
-        cmpl      $1104, %ecx
-        jae       .L_2TAG_PACKET_1.0.1
-        movapd    pv(%rip), %xmm2
-        pshufd    $68, %xmm0, %xmm1
-        movapd    16+pv(%rip), %xmm3
-        mulpd     %xmm1, %xmm1
-        movapd    32+pv(%rip), %xmm4
-        mulpd     %xmm1, %xmm2
-        pshufd    $68, %xmm1, %xmm5
-        addpd     %xmm3, %xmm2
-        mulsd     %xmm5, %xmm5
-        mulpd     %xmm1, %xmm2
-        mulsd     %xmm5, %xmm5
-        addpd     %xmm4, %xmm2
-        mulpd     %xmm5, %xmm2
-        pshufd    $238, %xmm2, %xmm5
-        addsd     %xmm5, %xmm2
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_1.0.1:
-        addl      $15344, %ecx
-        cmpl      $16448, %ecx
-        jae       .L_2TAG_PACKET_2.0.1
-        cmpl      $16, %ecx
-        jb        .L_2TAG_PACKET_3.0.1
-        xorpd     %xmm2, %xmm2
-        movl      $17392, %eax
-        pinsrw    $3, %eax, %xmm2
-        mulsd     %xmm0, %xmm2
-        addsd     %xmm0, %xmm2
-        jmp       ..B1.4
-.L_2TAG_PACKET_3.0.1:
-        movq      %xmm0, %xmm2
-        mulsd     %xmm2, %xmm2
-        jmp       ..B1.4
-.L_2TAG_PACKET_2.0.1:
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_4.0.1
-        xorpd     %xmm2, %xmm2
-        movl      $15344, %ecx
-        pinsrw    $3, %ecx, %xmm2
-        movq      %xmm2, %xmm3
-        mulsd     %xmm2, %xmm2
-        addsd     %xmm3, %xmm2
-.L_2TAG_PACKET_5.0.1:
-        xorpd     %xmm0, %xmm0
-        orl       $16368, %edx
-        pinsrw    $3, %edx, %xmm0
-        jmp       ..B1.4
-.L_2TAG_PACKET_4.0.1:
-        movq      %xmm0, %xmm2
-        movd      %xmm0, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %ecx
-        orl       %eax, %ecx
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_5.0.1
-        addsd     %xmm0, %xmm0
-        movq      %xmm0, (%rsp)
-.L_2TAG_PACKET_6.0.1:
-..B1.4:
-        popq      %rcx
-..___tag_value_tanh.4:
-        ret       
-..___tag_value_tanh.5:
-END(tanh)
-# -- End  tanh
-	.section .rodata, "a"
-	.align 16
-	.align 16
-L2E:
-	.long	1610612736
-	.long	1082594631
-	.long	4166901572
-	.long	1055174155
-	.type	L2E,@object
-	.size	L2E,16
-	.align 16
-Shifter:
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	3275227136
-	.type	Shifter,@object
-	.size	Shifter,16
-	.align 16
-cv:
-	.long	3884607281
-	.long	3168131199
-	.long	3607404735
-	.long	3190582024
-	.long	1874480759
-	.long	1032041131
-	.long	4286760334
-	.long	1053736893
-	.long	4277811695
-	.long	3211144770
-	.long	0
-	.long	0
-	.type	cv,@object
-	.size	cv,48
-	.align 16
-T2_neg_f:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	1797923801
-	.long	1072687577
-	.long	1950547427
-	.long	1013229059
-	.long	730821105
-	.long	1072681922
-	.long	2523232743
-	.long	1012067188
-	.long	915592468
-	.long	1072676282
-	.long	352947894
-	.long	3161024371
-	.long	2174652632
-	.long	1072670657
-	.long	4087714590
-	.long	1014450259
-	.long	35929225
-	.long	1072665048
-	.long	2809788041
-	.long	3159436968
-	.long	2912730644
-	.long	1072659453
-	.long	3490067722
-	.long	3163405074
-	.long	2038973688
-	.long	1072653874
-	.long	892941374
-	.long	1016046459
-	.long	1533953344
-	.long	1072648310
-	.long	769171851
-	.long	1015665633
-	.long	1222472308
-	.long	1072642761
-	.long	1054357470
-	.long	3161021018
-	.long	929806999
-	.long	1072637227
-	.long	3205336643
-	.long	1015259557
-	.long	481706282
-	.long	1072631708
-	.long	1696079173
-	.long	3162710528
-	.long	3999357479
-	.long	1072626203
-	.long	2258941616
-	.long	1015924724
-	.long	2719515920
-	.long	1072620714
-	.long	2760332941
-	.long	1015137933
-	.long	764307441
-	.long	1072615240
-	.long	3021057420
-	.long	3163329523
-	.long	2256325230
-	.long	1072609780
-	.long	580117746
-	.long	1015317295
-	.long	2728693978
-	.long	1072604335
-	.long	396109971
-	.long	3163462691
-	.long	2009970496
-	.long	1072598905
-	.long	2159039665
-	.long	3162572948
-	.long	4224142467
-	.long	1072593489
-	.long	3389820386
-	.long	1015207202
-	.long	610758006
-	.long	1072588089
-	.long	1965209397
-	.long	3161866232
-	.long	3884662774
-	.long	1072582702
-	.long	2158611599
-	.long	1014210185
-	.long	991358482
-	.long	1072577331
-	.long	838715019
-	.long	3163157668
-	.long	351641897
-	.long	1072571974
-	.long	2172261526
-	.long	3163010599
-	.long	1796832535
-	.long	1072566631
-	.long	3176955716
-	.long	3160585513
-	.long	863738719
-	.long	1072561303
-	.long	1326992220
-	.long	3162613197
-	.long	1679558232
-	.long	1072555989
-	.long	2390342287
-	.long	3163333970
-	.long	4076975200
-	.long	1072550689
-	.long	2029000899
-	.long	1015208535
-	.long	3594158869
-	.long	1072545404
-	.long	2456521700
-	.long	3163256561
-	.long	64696965
-	.long	1072540134
-	.long	1768797490
-	.long	1015816960
-	.long	1912561781
-	.long	1072534877
-	.long	3147495102
-	.long	1015678253
-	.long	382305176
-	.long	1072529635
-	.long	2347622376
-	.long	3162578625
-	.long	3898795731
-	.long	1072524406
-	.long	1249994144
-	.long	1011869818
-	.long	3707479175
-	.long	1072519192
-	.long	3613079303
-	.long	1014164738
-	.long	3939148246
-	.long	1072513992
-	.long	3210352148
-	.long	1015274323
-	.long	135105010
-	.long	1072508807
-	.long	1906148728
-	.long	3163375739
-	.long	721996136
-	.long	1072503635
-	.long	563754734
-	.long	1015371318
-	.long	1242007932
-	.long	1072498477
-	.long	1132034716
-	.long	3163339831
-	.long	1532734324
-	.long	1072493333
-	.long	3094216535
-	.long	3163162857
-	.long	1432208378
-	.long	1072488203
-	.long	1401068914
-	.long	3162363963
-	.long	778901109
-	.long	1072483087
-	.long	2248183955
-	.long	3161268751
-	.long	3706687593
-	.long	1072477984
-	.long	3521726940
-	.long	1013253067
-	.long	1464976603
-	.long	1072472896
-	.long	3507292405
-	.long	3161977534
-	.long	2483480501
-	.long	1072467821
-	.long	1216371780
-	.long	1013034172
-	.long	2307442995
-	.long	1072462760
-	.long	3190117721
-	.long	3162404539
-	.long	777507147
-	.long	1072457713
-	.long	4282924205
-	.long	1015187533
-	.long	2029714210
-	.long	1072452679
-	.long	613660079
-	.long	1015099143
-	.long	1610600570
-	.long	1072447659
-	.long	3766732298
-	.long	1015760183
-	.long	3657065772
-	.long	1072442652
-	.long	399025623
-	.long	3162957078
-	.long	3716502172
-	.long	1072437659
-	.long	2303740125
-	.long	1014042725
-	.long	1631695677
-	.long	1072432680
-	.long	2717633076
-	.long	3162344026
-	.long	1540824585
-	.long	1072427714
-	.long	1064017011
-	.long	3163487690
-	.long	3287523847
-	.long	1072422761
-	.long	1625971539
-	.long	3157009955
-	.long	2420883922
-	.long	1072417822
-	.long	2049810052
-	.long	1014119888
-	.long	3080351519
-	.long	1072412896
-	.long	3379126788
-	.long	3157218001
-	.long	815859274
-	.long	1072407984
-	.long	240396590
-	.long	3163487443
-	.long	4062661092
-	.long	1072403084
-	.long	1422616006
-	.long	3163255318
-	.long	4076559943
-	.long	1072398198
-	.long	2119478331
-	.long	3160758351
-	.long	703710506
-	.long	1072393326
-	.long	1384660846
-	.long	1015195891
-	.long	2380618042
-	.long	1072388466
-	.long	3149557219
-	.long	3163320799
-	.long	364333489
-	.long	1072383620
-	.long	3923737744
-	.long	3161421373
-	.long	3092190715
-	.long	1072378786
-	.long	814012168
-	.long	3159523422
-	.long	1822067026
-	.long	1072373966
-	.long	1241994956
-	.long	1015340290
-	.long	697153126
-	.long	1072369159
-	.long	1283515429
-	.long	3163283189
-	.long	3861050111
-	.long	1072364364
-	.long	254893773
-	.long	3162813180
-	.long	2572866477
-	.long	1072359583
-	.long	878562433
-	.long	1015521741
-	.long	977020788
-	.long	1072354815
-	.long	3065100517
-	.long	1015541563
-	.long	3218338682
-	.long	1072350059
-	.long	3404164304
-	.long	3162477108
-	.long	557149882
-	.long	1072345317
-	.long	3672720709
-	.long	1014537265
-	.long	1434058175
-	.long	1072340587
-	.long	251133233
-	.long	1015085769
-	.long	1405169241
-	.long	1072335870
-	.long	2998539689
-	.long	3162830951
-	.long	321958744
-	.long	1072331166
-	.long	3401933767
-	.long	1015794558
-	.long	2331271250
-	.long	1072326474
-	.long	812057446
-	.long	1012207446
-	.long	2990417245
-	.long	1072321795
-	.long	3683467745
-	.long	3163369326
-	.long	2152073944
-	.long	1072317129
-	.long	1486860576
-	.long	3163203456
-	.long	3964284211
-	.long	1072312475
-	.long	2111583915
-	.long	1015427164
-	.long	3985553595
-	.long	1072307834
-	.long	4002146062
-	.long	1015834136
-	.long	2069751141
-	.long	1072303206
-	.long	1562170675
-	.long	3162724681
-	.long	2366108318
-	.long	1072298590
-	.long	2867985102
-	.long	3161762254
-	.long	434316067
-	.long	1072293987
-	.long	2028358766
-	.long	1013458122
-	.long	424392917
-	.long	1072289396
-	.long	2749202995
-	.long	3162838718
-	.long	2191782032
-	.long	1072284817
-	.long	2960257726
-	.long	1013742662
-	.long	1297350157
-	.long	1072280251
-	.long	1308022040
-	.long	3163412558
-	.long	1892288442
-	.long	1072275697
-	.long	2446255666
-	.long	3162600381
-	.long	3833209506
-	.long	1072271155
-	.long	2722920684
-	.long	1013754842
-	.long	2682146384
-	.long	1072266626
-	.long	2082178513
-	.long	3163363419
-	.long	2591453363
-	.long	1072262109
-	.long	2132396182
-	.long	3159074198
-	.long	3418903055
-	.long	1072257604
-	.long	2527457337
-	.long	3160820604
-	.long	727685349
-	.long	1072253112
-	.long	2038246809
-	.long	3162358742
-	.long	2966275557
-	.long	1072248631
-	.long	2176155324
-	.long	3159842759
-	.long	1403662306
-	.long	1072244163
-	.long	2788809599
-	.long	3161671007
-	.long	194117574
-	.long	1072239707
-	.long	777528612
-	.long	3163412089
-	.long	3492293770
-	.long	1072235262
-	.long	2248032210
-	.long	1015386826
-	.long	2568320822
-	.long	1072230830
-	.long	2732824428
-	.long	1014352915
-	.long	1577608921
-	.long	1072226410
-	.long	1875489510
-	.long	3162968394
-	.long	380978316
-	.long	1072222002
-	.long	854188970
-	.long	3160462686
-	.long	3134592888
-	.long	1072217605
-	.long	4232266862
-	.long	1015991134
-	.long	1110089947
-	.long	1072213221
-	.long	1451641639
-	.long	1015474673
-	.long	2759350287
-	.long	1072208848
-	.long	1148526634
-	.long	1015894933
-	.long	3649726105
-	.long	1072204487
-	.long	4085036346
-	.long	1015649474
-	.long	3643909174
-	.long	1072200138
-	.long	3537586109
-	.long	1014354647
-	.long	2604962541
-	.long	1072195801
-	.long	2614425274
-	.long	3163539192
-	.long	396319521
-	.long	1072191476
-	.long	4172420816
-	.long	3159074632
-	.long	1176749997
-	.long	1072187162
-	.long	2738998779
-	.long	3162035844
-	.long	515457527
-	.long	1072182860
-	.long	836709333
-	.long	1015651226
-	.long	2571947539
-	.long	1072178569
-	.long	3558159064
-	.long	3163376669
-	.long	2916157145
-	.long	1072174290
-	.long	219487565
-	.long	1015309367
-	.long	1413356050
-	.long	1072170023
-	.long	1651349291
-	.long	3162668166
-	.long	2224145553
-	.long	1072165767
-	.long	3482522030
-	.long	3161489169
-	.long	919555682
-	.long	1072161523
-	.long	3121969534
-	.long	1012948226
-	.long	1660913392
-	.long	1072157290
-	.long	4218599604
-	.long	1015135707
-	.long	19972402
-	.long	1072153069
-	.long	3507899862
-	.long	1016009292
-	.long	158781403
-	.long	1072148859
-	.long	2221464712
-	.long	3163286453
-	.long	1944781191
-	.long	1072144660
-	.long	3993278767
-	.long	3161724279
-	.long	950803702
-	.long	1072140473
-	.long	1655364926
-	.long	1015237032
-	.long	1339972927
-	.long	1072136297
-	.long	167908909
-	.long	1015572152
-	.long	2980802057
-	.long	1072132132
-	.long	378619896
-	.long	1015773303
-	.long	1447192521
-	.long	1072127979
-	.long	1462857171
-	.long	3162514521
-	.long	903334909
-	.long	1072123837
-	.long	1636462108
-	.long	1015039997
-	.long	1218806132
-	.long	1072119706
-	.long	1818613052
-	.long	3162548441
-	.long	2263535754
-	.long	1072115586
-	.long	752233586
-	.long	3162639008
-	.long	3907805044
-	.long	1072111477
-	.long	2257091225
-	.long	3161550407
-	.long	1727278727
-	.long	1072107380
-	.long	3562710623
-	.long	1011471940
-	.long	4182873220
-	.long	1072103293
-	.long	629542646
-	.long	3161996303
-	.long	2555984613
-	.long	1072099218
-	.long	2652555442
-	.long	3162552692
-	.long	1013258799
-	.long	1072095154
-	.long	1748797611
-	.long	3160129082
-	.long	3721688645
-	.long	1072091100
-	.long	3069276937
-	.long	1015839401
-	.long	1963711167
-	.long	1072087058
-	.long	1744767757
-	.long	3160574294
-	.long	4201977662
-	.long	1072083026
-	.long	748330254
-	.long	1013594357
-	.long	1719614413
-	.long	1072079006
-	.long	330458198
-	.long	3163282740
-	.long	2979960120
-	.long	1072074996
-	.long	2599109725
-	.long	1014498493
-	.long	3561793907
-	.long	1072070997
-	.long	1157054053
-	.long	1011890350
-	.long	3339203574
-	.long	1072067009
-	.long	1483497780
-	.long	3162408754
-	.long	2186617381
-	.long	1072063032
-	.long	2270764084
-	.long	3163272713
-	.long	4273770423
-	.long	1072059065
-	.long	3383180809
-	.long	3163218901
-	.long	885834528
-	.long	1072055110
-	.long	1973258547
-	.long	3162261564
-	.long	488188413
-	.long	1072051165
-	.long	3199821029
-	.long	1015564048
-	.long	2956612997
-	.long	1072047230
-	.long	2118169751
-	.long	3162735553
-	.long	3872257780
-	.long	1072043306
-	.long	1253592103
-	.long	1015958334
-	.long	3111574537
-	.long	1072039393
-	.long	2606161479
-	.long	3162759746
-	.long	551349105
-	.long	1072035491
-	.long	3821916050
-	.long	3162106589
-	.long	363667784
-	.long	1072031599
-	.long	813753950
-	.long	1015785209
-	.long	2425981843
-	.long	1072027717
-	.long	2830390851
-	.long	3163346599
-	.long	2321106615
-	.long	1072023846
-	.long	2171176610
-	.long	1009535771
-	.long	4222122499
-	.long	1072019985
-	.long	1277378074
-	.long	3163256737
-	.long	3712504873
-	.long	1072016135
-	.long	88491949
-	.long	1015427660
-	.long	671025100
-	.long	1072012296
-	.long	3832014351
-	.long	3163022030
-	.long	3566716925
-	.long	1072008466
-	.long	1536826856
-	.long	1014142433
-	.long	3689071823
-	.long	1072004647
-	.long	2321004996
-	.long	3162552716
-	.long	917841882
-	.long	1072000839
-	.long	18715565
-	.long	1015659308
-	.long	3723038930
-	.long	1071997040
-	.long	378465264
-	.long	3162569582
-	.long	3395129871
-	.long	1071993252
-	.long	4025345435
-	.long	3162335388
-	.long	4109806887
-	.long	1071989474
-	.long	422403966
-	.long	1014469229
-	.long	1453150082
-	.long	1071985707
-	.long	498154669
-	.long	3161488062
-	.long	3896463087
-	.long	1071981949
-	.long	1139797873
-	.long	3161233805
-	.long	2731501122
-	.long	1071978202
-	.long	1774031855
-	.long	3162470021
-	.long	2135241198
-	.long	1071974465
-	.long	1236747871
-	.long	1013589147
-	.long	1990012071
-	.long	1071970738
-	.long	3529070563
-	.long	3162813193
-	.long	2178460671
-	.long	1071967021
-	.long	777878098
-	.long	3162842493
-	.long	2583551245
-	.long	1071963314
-	.long	3161094195
-	.long	1015606491
-	.long	3088564500
-	.long	1071959617
-	.long	1762311517
-	.long	1015045673
-	.long	3577096743
-	.long	1071955930
-	.long	2951496418
-	.long	1013793687
-	.long	3933059031
-	.long	1071952253
-	.long	2133366768
-	.long	3161531832
-	.long	4040676318
-	.long	1071948586
-	.long	4090609238
-	.long	1015663458
-	.long	3784486610
-	.long	1071944929
-	.long	1581883040
-	.long	3161698953
-	.long	3049340112
-	.long	1071941282
-	.long	3062915824
-	.long	1013170595
-	.long	1720398391
-	.long	1071937645
-	.long	3980678963
-	.long	3163300080
-	.long	3978100823
-	.long	1071934017
-	.long	3513027190
-	.long	1015845963
-	.long	1118294578
-	.long	1071930400
-	.long	2197495694
-	.long	3159909401
-	.long	1617004845
-	.long	1071926792
-	.long	82804944
-	.long	1010342778
-	.long	1065662932
-	.long	1071923194
-	.long	2533670915
-	.long	1014530238
-	.long	3645941911
-	.long	1071919605
-	.long	3814685081
-	.long	3161573341
-	.long	654919306
-	.long	1071916027
-	.long	3232961757
-	.long	3163047469
-	.long	569847338
-	.long	1071912458
-	.long	472945272
-	.long	3159290729
-	.long	3278348324
-	.long	1071908898
-	.long	3069497416
-	.long	1014750712
-	.long	78413852
-	.long	1071905349
-	.long	4183226867
-	.long	3163017251
-	.long	3743175029
-	.long	1071901808
-	.long	2072812490
-	.long	3162175075
-	.long	1276261410
-	.long	1071898278
-	.long	300981948
-	.long	1014684169
-	.long	1156440435
-	.long	1071894757
-	.long	2351451249
-	.long	1013967056
-	.long	3272845541
-	.long	1071891245
-	.long	928852419
-	.long	3163488248
-	.long	3219942644
-	.long	1071887743
-	.long	3798990616
-	.long	1015368806
-	.long	887463927
-	.long	1071884251
-	.long	3596744163
-	.long	3160794166
-	.long	460407023
-	.long	1071880768
-	.long	4237175092
-	.long	3163138469
-	.long	1829099622
-	.long	1071877294
-	.long	1016661181
-	.long	3163461005
-	.long	589198666
-	.long	1071873830
-	.long	2664346172
-	.long	3163157962
-	.long	926591435
-	.long	1071870375
-	.long	3208833762
-	.long	3162913514
-	.long	2732492859
-	.long	1071866929
-	.long	2691479646
-	.long	3162255684
-	.long	1603444721
-	.long	1071863493
-	.long	1548633640
-	.long	3162201326
-	.long	1726216749
-	.long	1071860066
-	.long	2466808228
-	.long	3161676405
-	.long	2992903935
-	.long	1071856648
-	.long	2218154406
-	.long	1015228193
-	.long	1000925746
-	.long	1071853240
-	.long	1018491672
-	.long	3163309544
-	.long	4232894513
-	.long	1071849840
-	.long	2383938684
-	.long	1014668519
-	.long	3991843581
-	.long	1071846450
-	.long	4092853457
-	.long	1014585763
-	.long	171030293
-	.long	1071843070
-	.long	3526460132
-	.long	1014428778
-	.long	1253935211
-	.long	1071839698
-	.long	1395382931
-	.long	3159702613
-	.long	2839424854
-	.long	1071836335
-	.long	1171596163
-	.long	1013041679
-	.long	526652809
-	.long	1071832982
-	.long	4223459736
-	.long	1015879375
-	.long	2799960843
-	.long	1071829637
-	.long	1423655381
-	.long	1015022151
-	.long	964107055
-	.long	1071826302
-	.long	2800439588
-	.long	3162833221
-	.long	3504003472
-	.long	1071822975
-	.long	3594001060
-	.long	3157330652
-	.long	1724976915
-	.long	1071819658
-	.long	420909223
-	.long	3163117379
-	.long	4112506593
-	.long	1071816349
-	.long	2947355221
-	.long	1014371048
-	.long	1972484976
-	.long	1071813050
-	.long	675290301
-	.long	3161640050
-	.long	3790955393
-	.long	1071809759
-	.long	2352942462
-	.long	3163180090
-	.long	874372905
-	.long	1071806478
-	.long	100263788
-	.long	1015940732
-	.long	1709341917
-	.long	1071803205
-	.long	2571168217
-	.long	1014152499
-	.long	1897844341
-	.long	1071799941
-	.long	1254300460
-	.long	1015275938
-	.long	1337108031
-	.long	1071796686
-	.long	3203724452
-	.long	1014677845
-	.long	4219606026
-	.long	1071793439
-	.long	2434574742
-	.long	1014681548
-	.long	1853186616
-	.long	1071790202
-	.long	3066496371
-	.long	1015656574
-	.long	2725843665
-	.long	1071786973
-	.long	1433917087
-	.long	1014838523
-	.long	2440944790
-	.long	1071783753
-	.long	2492769774
-	.long	1014147454
-	.long	897099801
-	.long	1071780542
-	.long	754756297
-	.long	1015241005
-	.long	2288159958
-	.long	1071777339
-	.long	2169144469
-	.long	1014876021
-	.long	2218315341
-	.long	1071774145
-	.long	2694295388
-	.long	3163288868
-	.long	586995997
-	.long	1071770960
-	.long	41662348
-	.long	3162627992
-	.long	1588871207
-	.long	1071767783
-	.long	143439582
-	.long	3162963416
-	.long	828946858
-	.long	1071764615
-	.long	10642492
-	.long	1015939438
-	.long	2502433899
-	.long	1071761455
-	.long	2148595913
-	.long	1015023991
-	.long	2214878420
-	.long	1071758304
-	.long	892270087
-	.long	3163116422
-	.long	4162030108
-	.long	1071755161
-	.long	2763428480
-	.long	1015529349
-	.long	3949972341
-	.long	1071752027
-	.long	2068408548
-	.long	1014913868
-	.long	1480023343
-	.long	1071748902
-	.long	2247196168
-	.long	1015327453
-	.long	948735466
-	.long	1071745785
-	.long	3516338028
-	.long	3162574883
-	.long	2257959872
-	.long	1071742676
-	.long	3802946148
-	.long	1012964927
-	.long	1014845819
-	.long	1071739576
-	.long	3117910646
-	.long	3161559105
-	.long	1416741826
-	.long	1071736484
-	.long	2196380210
-	.long	1011413563
-	.long	3366293073
-	.long	1071733400
-	.long	3119426314
-	.long	1014120554
-	.long	2471440686
-	.long	1071730325
-	.long	968836267
-	.long	3162214888
-	.long	2930322912
-	.long	1071727258
-	.long	2599499422
-	.long	3162714047
-	.long	351405227
-	.long	1071724200
-	.long	3125337328
-	.long	3159822479
-	.long	3228316108
-	.long	1071721149
-	.long	3010241991
-	.long	3158422804
-	.long	2875075254
-	.long	1071718107
-	.long	4144233330
-	.long	3163333716
-	.long	3490863953
-	.long	1071715073
-	.long	960797498
-	.long	3162948880
-	.long	685187902
-	.long	1071712048
-	.long	378731989
-	.long	1014843115
-	.long	2952712987
-	.long	1071709030
-	.long	3293494651
-	.long	3160120301
-	.long	1608493509
-	.long	1071706021
-	.long	3159622171
-	.long	3162807737
-	.long	852742562
-	.long	1071703020
-	.long	667253586
-	.long	1009793559
-	.long	590962156
-	.long	1071700027
-	.long	3829346666
-	.long	3163275597
-	.long	728909815
-	.long	1071697042
-	.long	383930225
-	.long	1015029468
-	.long	1172597893
-	.long	1071694065
-	.long	114433263
-	.long	1015347593
-	.long	1828292879
-	.long	1071691096
-	.long	1255956747
-	.long	1015588398
-	.long	2602514713
-	.long	1071688135
-	.long	2268929336
-	.long	1014354284
-	.long	3402036099
-	.long	1071685182
-	.long	405889334
-	.long	1015105656
-	.long	4133881824
-	.long	1071682237
-	.long	2148155345
-	.long	3162931299
-	.long	410360776
-	.long	1071679301
-	.long	1269990655
-	.long	1011975870
-	.long	728934454
-	.long	1071676372
-	.long	1413842688
-	.long	1014178612
-	.long	702412510
-	.long	1071673451
-	.long	3803266087
-	.long	3162280415
-	.long	238821257
-	.long	1071670538
-	.long	1469694871
-	.long	3162884987
-	.long	3541402996
-	.long	1071667632
-	.long	2759177317
-	.long	1014854626
-	.long	1928746161
-	.long	1071664735
-	.long	983617676
-	.long	1014285177
-	.long	3899555717
-	.long	1071661845
-	.long	427280750
-	.long	3162546972
-	.long	772914124
-	.long	1071658964
-	.long	4004372762
-	.long	1012230161
-	.long	1048019041
-	.long	1071656090
-	.long	1398474845
-	.long	3160510595
-	.long	339411585
-	.long	1071653224
-	.long	264588982
-	.long	3161636657
-	.long	2851812149
-	.long	1071650365
-	.long	2595802551
-	.long	1015767337
-	.long	4200250559
-	.long	1071647514
-	.long	2808127345
-	.long	3161781938
-	.type	T2_neg_f,@object
-	.size	T2_neg_f,4096
-	.space 512, 0x00 	# pad
-	.align 16
-MASK3:
-	.long	0
-	.long	4294967280
-	.long	0
-	.long	4294967280
-	.type	MASK3,@object
-	.size	MASK3,16
-	.align 16
-RMASK:
-	.long	4294705152
-	.long	4294967295
-	.long	4294705152
-	.long	4294967295
-	.type	RMASK,@object
-	.size	RMASK,16
-	.align 16
-pv:
-	.long	236289503
-	.long	1064135997
-	.long	463583772
-	.long	3215696314
-	.long	1441186365
-	.long	3212977891
-	.long	286331153
-	.long	1069617425
-	.long	2284589306
-	.long	1066820852
-	.long	1431655765
-	.long	3218429269
-	.type	pv,@object
-	.size	pv,48
-	.align 4
-HALFMASK:
-	.long	4160749568
-	.long	2147483647
-	.type	HALFMASK,@object
-	.size	HALFMASK,8
-	.align 4
-ONEMASK:
-	.long	0
-	.long	1072693248
-	.type	ONEMASK,@object
-	.size	ONEMASK,8
-	.align 4
-TWOMASK:
-	.long	0
-	.long	1073741824
-	.type	TWOMASK,@object
-	.size	TWOMASK,8
-	.data
-	.section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_tanh.1-.
-	.4byte ..___tag_value_tanh.5-..___tag_value_tanh.1
-	.2byte 0x0400
-	.4byte ..___tag_value_tanh.3-..___tag_value_tanh.1
-	.2byte 0x100e
-	.byte 0x04
-	.4byte ..___tag_value_tanh.4-..___tag_value_tanh.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/linker/Android.bp b/linker/Android.bp
index d5e7367..83077c6 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -52,6 +52,9 @@
         arm64: {
             srcs: ["arch/arm64/linker_wrapper_begin.S"],
         },
+        riscv64: {
+            srcs: ["arch/riscv64/linker_wrapper_begin.S"],
+        },
         x86_64: {
             srcs: ["arch/x86_64/linker_wrapper_begin.S"],
         },
@@ -115,7 +118,7 @@
 
         "libasync_safe",
 
-        "liblog",
+        "liblog_for_runtime_apex",
     ],
 
     // We need to access Bionic private headers in the linker.
@@ -208,6 +211,13 @@
 }
 
 filegroup {
+    name: "linker_sources_riscv64",
+    srcs: [
+        "arch/riscv64/begin.S",
+    ],
+}
+
+filegroup {
     name: "linker_sources_x86",
     srcs: [
         "arch/x86/begin.S",
@@ -224,10 +234,11 @@
 cc_defaults {
     name: "linker_version_script_overlay",
     arch: {
-        arm:    { version_script: "linker.arm.map"      },
-        arm64:  { version_script: "linker.generic.map"  },
-        x86:    { version_script: "linker.generic.map"  },
-        x86_64: { version_script: "linker.generic.map"  },
+        arm:     { version_script: "linker.arm.map"      },
+        arm64:   { version_script: "linker.generic.map"  },
+        riscv64: { version_script: "linker.generic.map"  },
+        x86:     { version_script: "linker.generic.map"  },
+        x86_64:  { version_script: "linker.generic.map"  },
     },
 }
 
@@ -241,15 +252,50 @@
     arch: {
         arm: {
             srcs: [":linker_sources_arm"],
+
+            // Arm 32 bit does not produce complete exidx unwind information
+            // so keep the .debug_frame which is relatively small and does
+            // include needed unwind information.
+            // See b/242162222 for details.
+            strip: {
+                keep_symbols_and_debug_frame: true,
+            },
         },
         arm64: {
             srcs: [":linker_sources_arm64"],
+
+            // Leave the symbols in the shared library so that stack unwinders can produce
+            // meaningful name resolution.
+            strip: {
+                keep_symbols: true,
+            },
+        },
+        riscv64: {
+            srcs: [":linker_sources_riscv64"],
+
+            // Leave the symbols in the shared library so that stack unwinders can produce
+            // meaningful name resolution.
+            strip: {
+                keep_symbols: true,
+            },
         },
         x86: {
             srcs: [":linker_sources_x86"],
+
+            // Leave the symbols in the shared library so that stack unwinders can produce
+            // meaningful name resolution.
+            strip: {
+                keep_symbols: true,
+            },
         },
         x86_64: {
             srcs: [":linker_sources_x86_64"],
+
+            // Leave the symbols in the shared library so that stack unwinders can produce
+            // meaningful name resolution.
+            strip: {
+                keep_symbols: true,
+            },
         },
     },
 
@@ -275,12 +321,6 @@
 
     static_executable: true,
 
-    // Leave the symbols in the shared library so that stack unwinders can produce
-    // meaningful name resolution.
-    strip: {
-        keep_symbols: true,
-    },
-
     // Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
     // looking up symbols in the linker by mistake.
     prefix_symbols: "__dl_",
@@ -406,6 +446,7 @@
         "-Wl,--exclude-libs=libgcc_stripped.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a",
+        "-Wl,--exclude-libs=libclang_rt.builtins-riscv64-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-i686-android.a",
         "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a",
     ],
@@ -494,7 +535,7 @@
     static_libs: [
         "libasync_safe",
         "libbase",
-        "liblog",
+        "liblog_for_runtime_apex",
     ],
 
     arch: {
diff --git a/linker/NOTICE b/linker/NOTICE
index 8f70d87..d61a193 100644
--- a/linker/NOTICE
+++ b/linker/NOTICE
@@ -334,3 +334,31 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
diff --git a/linker/arch/arm/begin.S b/linker/arch/arm/begin.S
index 80d9fe1..3b673f0 100644
--- a/linker/arch/arm/begin.S
+++ b/linker/arch/arm/begin.S
@@ -35,6 +35,6 @@
   mov r0, sp
   bl __linker_init
 
-  /* linker init returns the _entry address in the main image */
+  // __linker_init returns the address of the entry point in the main image.
   bx r0
 END(_start)
diff --git a/linker/arch/arm64/begin.S b/linker/arch/arm64/begin.S
index a947475..14999cd 100644
--- a/linker/arch/arm64/begin.S
+++ b/linker/arch/arm64/begin.S
@@ -35,6 +35,6 @@
   mov x0, sp
   bl __linker_init
 
-  /* linker init returns the _entry address in the main image */
+  // __linker_init returns the address of the entry point in the main image.
   br x0
 END(_start)
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/linker/arch/riscv64/begin.S
similarity index 83%
copy from libc/arch-arm64/generic/bionic/memcpy.S
copy to linker/arch/riscv64/begin.S
index bc1945c..f7509c6 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/linker/arch/riscv64/begin.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,15 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(_start)
+  // Force unwinds to end in this function.
+  .cfi_undefined ra
 
-NOTE_GNU_PROPERTY()
+  mv a0, sp
+  jal __linker_init
+
+  // __linker_init returns the address of the entry point in the main image.
+  jr a0
+END(_start)
diff --git a/linker/arch/x86/begin.S b/linker/arch/x86/begin.S
index 3812646..81e2740 100644
--- a/linker/arch/x86/begin.S
+++ b/linker/arch/x86/begin.S
@@ -38,6 +38,6 @@
   call __linker_init      // %esp is aligned to 16 before the call.
   addl $16, %esp
 
-  /* linker init returns (%eax) the _entry address in the main image */
+  // __linker_init returns the address of the entry point in the main image.
   jmp *%eax
 END(_start)
diff --git a/linker/arch/x86_64/begin.S b/linker/arch/x86_64/begin.S
index 4722301..baba0db 100644
--- a/linker/arch/x86_64/begin.S
+++ b/linker/arch/x86_64/begin.S
@@ -35,6 +35,6 @@
   mov %rsp, %rdi
   call __linker_init
 
-  /* linker init returns (%rax) the _entry address in the main image */
+  // __linker_init returns the address of the entry point in the main image.
   jmp *%rax
 END(_start)
diff --git a/linker/linker.cpp b/linker/linker.cpp
index c6588d2..6246f8c 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -39,6 +39,7 @@
 #include <sys/vfs.h>
 #include <unistd.h>
 
+#include <iterator>
 #include <new>
 #include <string>
 #include <unordered_map>
@@ -371,7 +372,7 @@
     char* static_tls = reinterpret_cast<char*>(__get_bionic_tcb()) - layout.offset_bionic_tcb();
     return static_tls + tls_mod.static_offset;
   } else if (should_alloc) {
-    const TlsIndex ti { si_tls->module_id, 0 };
+    const TlsIndex ti { si_tls->module_id, static_cast<size_t>(0 - TLS_DTV_OFFSET) };
     return TLS_GET_ADDR(&ti);
   } else {
     TlsDtv* dtv = __get_tcb_dtv(__get_bionic_tcb());
@@ -1189,8 +1190,6 @@
   if ((fs_stat.f_type != TMPFS_MAGIC) && (!ns->is_accessible(realpath))) {
     // TODO(dimitry): workaround for http://b/26394120 - the exempt-list
 
-    // TODO(dimitry) before O release: add a namespace attribute to have this enabled
-    // only for classloader-namespaces
     const soinfo* needed_by = task->is_dt_needed() ? task->get_needed_by() : nullptr;
     if (is_exempt_lib(ns, name, needed_by)) {
       // print warning only if needed by non-system library
@@ -1568,18 +1567,16 @@
     task->set_extinfo(is_dt_needed ? nullptr : extinfo);
     task->set_dt_needed(is_dt_needed);
 
-    LD_LOG(kLogDlopen, "find_libraries(ns=%s): task=%s, is_dt_needed=%d", ns->get_name(),
-           task->get_name(), is_dt_needed);
-
     // Note: start from the namespace that is stored in the LoadTask. This namespace
     // is different from the current namespace when the LoadTask is for a transitive
     // dependency and the lib that created the LoadTask is not found in the
-    // current namespace but in one of the linked namespace.
-    if (!find_library_internal(const_cast<android_namespace_t*>(task->get_start_from()),
-                               task,
-                               &zip_archive_cache,
-                               &load_tasks,
-                               rtld_flags)) {
+    // current namespace but in one of the linked namespaces.
+    android_namespace_t* start_ns = const_cast<android_namespace_t*>(task->get_start_from());
+
+    LD_LOG(kLogDlopen, "find_library_internal(ns=%s@%p): task=%s, is_dt_needed=%d",
+           start_ns->get_name(), start_ns, task->get_name(), is_dt_needed);
+
+    if (!find_library_internal(start_ns, task, &zip_archive_cache, &load_tasks, rtld_flags)) {
       return false;
     }
 
@@ -2488,11 +2485,12 @@
     return false;
   }
 
-  auto sonames = android::base::Split(shared_lib_sonames, ":");
-  std::unordered_set<std::string> sonames_set(sonames.begin(), sonames.end());
+  std::vector<std::string> sonames = android::base::Split(shared_lib_sonames, ":");
+  std::unordered_set<std::string> sonames_set(std::make_move_iterator(sonames.begin()),
+                                              std::make_move_iterator(sonames.end()));
 
   ProtectedDataGuard guard;
-  namespace_from->add_linked_namespace(namespace_to, sonames_set, false);
+  namespace_from->add_linked_namespace(namespace_to, std::move(sonames_set), false);
 
   return true;
 }
diff --git a/linker/linker_debuggerd_android.cpp b/linker/linker_debuggerd_android.cpp
index cba6345..3d64628 100644
--- a/linker/linker_debuggerd_android.cpp
+++ b/linker/linker_debuggerd_android.cpp
@@ -43,6 +43,7 @@
       .scudo_stack_depot = __libc_shared_globals()->scudo_stack_depot,
       .scudo_region_info = __libc_shared_globals()->scudo_region_info,
       .scudo_ring_buffer = __libc_shared_globals()->scudo_ring_buffer,
+      .scudo_ring_buffer_size = __libc_shared_globals()->scudo_ring_buffer_size,
   };
 }
 #endif
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 9e5be34..833157e 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -68,7 +68,8 @@
 
 static void set_bss_vma_name(soinfo* si);
 
-void __libc_init_mte(const void* phdr_start, size_t phdr_count, uintptr_t load_bias);
+void __libc_init_mte(const void* phdr_start, size_t phdr_count, uintptr_t load_bias,
+                     void* stack_top);
 
 // These should be preserved static to avoid emitting
 // RELATIVE relocations for the part of the code running
@@ -202,35 +203,29 @@
   ElfW(Addr) entry_point;
 };
 
-static ExecutableInfo get_executable_info() {
+static ExecutableInfo get_executable_info(const char* arg_path) {
   ExecutableInfo result = {};
+  char const* exe_path = "/proc/self/exe";
 
-  if (is_first_stage_init()) {
-    // /proc fs is not mounted when first stage init starts. Therefore we can't
-    // use /proc/self/exe for init.
-    stat("/init", &result.file_stat);
-
-    // /init may be a symlink, so try to read it as such.
-    char path[PATH_MAX];
-    ssize_t path_len = readlink("/init", path, sizeof(path));
-    if (path_len == -1 || path_len >= static_cast<ssize_t>(sizeof(path))) {
-      result.path = "/init";
-    } else {
-      result.path = std::string(path, path_len);
+  // Stat "/proc/self/exe" instead of executable_path because
+  // the executable could be unlinked by this point and it should
+  // not cause a crash (see http://b/31084669)
+  if (TEMP_FAILURE_RETRY(stat(exe_path, &result.file_stat) == -1)) {
+    // Fallback to argv[0] for the case where /proc isn't available
+    if (TEMP_FAILURE_RETRY(stat(arg_path, &result.file_stat) == -1)) {
+      async_safe_fatal("unable to stat either \"/proc/self/exe\" or \"%s\": %s",
+          arg_path, strerror(errno));
     }
+    exe_path = arg_path;
+  }
+
+  // Path might be a symlink
+  char sym_path[PATH_MAX];
+  ssize_t sym_path_len = readlink(exe_path, sym_path, sizeof(sym_path));
+  if (sym_path_len > 0 && sym_path_len < static_cast<ssize_t>(sizeof(sym_path))) {
+    result.path = std::string(sym_path, sym_path_len);
   } else {
-    // Stat "/proc/self/exe" instead of executable_path because
-    // the executable could be unlinked by this point and it should
-    // not cause a crash (see http://b/31084669)
-    if (TEMP_FAILURE_RETRY(stat("/proc/self/exe", &result.file_stat)) != 0) {
-      async_safe_fatal("unable to stat \"/proc/self/exe\": %s", strerror(errno));
-    }
-    char path[PATH_MAX];
-    ssize_t path_len = readlink("/proc/self/exe", path, sizeof(path));
-    if (path_len == -1 || path_len >= static_cast<ssize_t>(sizeof(path))) {
-      async_safe_fatal("readlink('/proc/self/exe') failed: %s", strerror(errno));
-    }
-    result.path = std::string(path, path_len);
+    result.path = std::string(exe_path, strlen(exe_path));
   }
 
   result.phdr = reinterpret_cast<const ElfW(Phdr)*>(getauxval(AT_PHDR));
@@ -358,7 +353,7 @@
   }
 
   const ExecutableInfo exe_info = exe_to_load ? load_executable(exe_to_load) :
-                                                get_executable_info();
+                                                get_executable_info(args.argv[0]);
 
   INFO("[ Linking executable \"%s\" ]", exe_info.path.c_str());
 
@@ -408,7 +403,7 @@
     }
   }
 
-  __libc_init_mte(somain->phdr, somain->phnum, somain->load_bias);
+  __libc_init_mte(somain->phdr, somain->phnum, somain->load_bias, args.argv);
 #endif
 
   // Register the main executable and the linker upfront to have
diff --git a/linker/linker_namespaces.h b/linker/linker_namespaces.h
index 6817901..671e0b5 100644
--- a/linker/linker_namespaces.h
+++ b/linker/linker_namespaces.h
@@ -41,11 +41,11 @@
 struct android_namespace_link_t {
  public:
   android_namespace_link_t(android_namespace_t* linked_namespace,
-                           const std::unordered_set<std::string>& shared_lib_sonames,
+                           std::unordered_set<std::string> shared_lib_sonames,
                            bool allow_all_shared_libs)
-      : linked_namespace_(linked_namespace), shared_lib_sonames_(shared_lib_sonames),
-        allow_all_shared_libs_(allow_all_shared_libs)
-  {}
+      : linked_namespace_(linked_namespace),
+        shared_lib_sonames_(std::move(shared_lib_sonames)),
+        allow_all_shared_libs_(allow_all_shared_libs) {}
 
   android_namespace_t* linked_namespace() const {
     return linked_namespace_;
@@ -127,10 +127,10 @@
     return linked_namespaces_;
   }
   void add_linked_namespace(android_namespace_t* linked_namespace,
-                            const std::unordered_set<std::string>& shared_lib_sonames,
+                            std::unordered_set<std::string> shared_lib_sonames,
                             bool allow_all_shared_libs) {
-    linked_namespaces_.push_back(
-        android_namespace_link_t(linked_namespace, shared_lib_sonames, allow_all_shared_libs));
+    linked_namespaces_.emplace_back(linked_namespace, std::move(shared_lib_sonames),
+                                    allow_all_shared_libs);
   }
 
   void add_soinfo(soinfo* si) {
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index 60fd776..73cfced 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -51,6 +51,8 @@
   return EM_AARCH64;
 #elif defined(__i386__)
   return EM_386;
+#elif defined(__riscv)
+  return EM_RISCV;
 #elif defined(__x86_64__)
   return EM_X86_64;
 #endif
@@ -173,7 +175,8 @@
   if (did_load_) {
     return true;
   }
-  if (ReserveAddressSpace(address_space) && LoadSegments() && FindPhdr() &&
+  bool reserveSuccess = ReserveAddressSpace(address_space);
+  if (reserveSuccess && LoadSegments() && FindPhdr() &&
       FindGnuPropertySection()) {
     did_load_ = true;
 #if defined(__aarch64__)
@@ -184,6 +187,13 @@
     }
 #endif
   }
+  if (reserveSuccess && !did_load_) {
+    if (load_start_ != nullptr && load_size_ != 0) {
+      if (!mapped_by_caller_) {
+        munmap(load_start_, load_size_);
+      }
+    }
+  }
 
   return did_load_;
 }
@@ -214,6 +224,7 @@
   if (em == EM_386) return "EM_386";
   if (em == EM_AARCH64) return "EM_AARCH64";
   if (em == EM_ARM) return "EM_ARM";
+  if (em == EM_RISCV) return "EM_RISCV";
   if (em == EM_X86_64) return "EM_X86_64";
   return "EM_???";
 }
diff --git a/linker/linker_relocate.cpp b/linker/linker_relocate.cpp
index c7c7bfb..952dade 100644
--- a/linker/linker_relocate.cpp
+++ b/linker/linker_relocate.cpp
@@ -49,7 +49,9 @@
     case R_GENERIC_TLS_DTPMOD:
     case R_GENERIC_TLS_DTPREL:
     case R_GENERIC_TLS_TPREL:
+#if defined(R_GENERIC_TLSDESC)
     case R_GENERIC_TLSDESC:
+#endif
       return true;
     default:
       return false;
@@ -426,7 +428,7 @@
     case R_GENERIC_TLS_DTPREL:
       count_relocation_if<IsGeneral>(kRelocRelative);
       {
-        const ElfW(Addr) result = sym_addr + get_addend_rel();
+        const ElfW(Addr) result = sym_addr + get_addend_rel() - TLS_DTV_OFFSET;
         trace_reloc("RELO TLS_DTPREL %16p <- %16p %s",
                     rel_target, reinterpret_cast<void*>(result), sym_name);
         *static_cast<ElfW(Addr)*>(rel_target) = result;
diff --git a/linker/linker_relocs.h b/linker/linker_relocs.h
index 93d899e..37a7880 100644
--- a/linker/linker_relocs.h
+++ b/linker/linker_relocs.h
@@ -73,6 +73,20 @@
 #define R_GENERIC_TLS_TPREL     R_386_TLS_TPOFF
 #define R_GENERIC_TLSDESC       R_386_TLS_DESC
 
+#elif defined (__riscv)
+
+#define R_GENERIC_JUMP_SLOT     R_RISCV_JUMP_SLOT
+#define R_GENERIC_ABSOLUTE      R_RISCV_64
+#define R_GENERIC_GLOB_DAT      R_RISCV_64
+#define R_GENERIC_RELATIVE      R_RISCV_RELATIVE
+#define R_GENERIC_IRELATIVE     R_RISCV_IRELATIVE
+#define R_GENERIC_COPY          R_RISCV_COPY
+#define R_GENERIC_TLS_DTPMOD    R_RISCV_TLS_DTPMOD64
+#define R_GENERIC_TLS_DTPREL    R_RISCV_TLS_DTPREL64
+#define R_GENERIC_TLS_TPREL     R_RISCV_TLS_TPREL64
+// TODO: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/94
+// #define R_GENERIC_TLSDESC       R_RISCV_TLS_DESC
+
 #elif defined (__x86_64__)
 
 #define R_GENERIC_JUMP_SLOT     R_X86_64_JUMP_SLOT
diff --git a/linker/linker_transparent_hugepage_support.cpp b/linker/linker_transparent_hugepage_support.cpp
index 65ba4cd..0631577 100644
--- a/linker/linker_transparent_hugepage_support.cpp
+++ b/linker/linker_transparent_hugepage_support.cpp
@@ -39,6 +39,6 @@
       return false;
     }
     return enabled.find("[never]") == std::string::npos;
-  };
+  }();
   return transparent_hugepages_supported;
 }
diff --git a/tests/Android.bp b/tests/Android.bp
index a54ffb8..8c6057f 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -105,6 +105,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"],
         },
@@ -128,6 +131,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"],
         },
@@ -151,6 +157,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"],
         },
@@ -174,6 +183,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"],
         },
@@ -197,6 +209,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"],
         },
@@ -220,6 +235,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"],
         },
@@ -243,6 +261,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"],
         },
@@ -266,6 +287,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"],
         },
@@ -289,6 +313,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"],
         },
@@ -331,8 +358,8 @@
 cc_test_library {
     name: "clang_diagnostic_tests",
     cflags: [
-      "-Xclang",
-      "-verify",
+        "-Xclang",
+        "-verify",
     ],
     srcs: ["sys_ioctl_diag_test.cpp"],
 }
@@ -340,6 +367,9 @@
 cc_test_library {
     name: "libBionicStandardTests",
     defaults: ["bionic_tests_defaults"],
+    tidy_disabled_srcs: [
+        "malloc_test.cpp", // timed out with clang-tidy, and too many warnings
+    ],
     srcs: [
         "__aeabi_read_tp_test.cpp",
         "__cxa_atexit_test.cpp",
@@ -393,6 +423,7 @@
         "math_test.cpp",
         "math_force_long_double_test.cpp",
         "membarrier_test.cpp",
+        "memtag_stack_test.cpp",
         "mntent_test.cpp",
         "mte_test.cpp",
         "netdb_test.cpp",
@@ -479,6 +510,7 @@
         "uchar_test.cpp",
         "unistd_nofortify_test.cpp",
         "unistd_test.cpp",
+        "utils.cpp",
         "utmp_test.cpp",
         "wchar_test.cpp",
         "wctype_test.cpp",
@@ -598,18 +630,6 @@
     ],
 }
 
-cc_test_library {
-    name: "libBionicGwpAsanTests",
-    defaults: ["bionic_tests_defaults"],
-    srcs: [
-        "gwp_asan_test.cpp",
-    ],
-    include_dirs: [
-        "bionic/libc",
-    ],
-    static_libs: ["libbase"],
-}
-
 // -----------------------------------------------------------------------------
 // Fortify tests.
 // -----------------------------------------------------------------------------
@@ -641,9 +661,6 @@
     ],
     tidy: false,
     target: {
-        host: {
-            clang_cflags: ["-D__clang__"],
-        },
         musl: {
             // Musl doesn't have fortify
             enabled: false,
@@ -727,7 +744,7 @@
     tidy: false,
     target: {
         host: {
-            clang_cflags: ["-D__clang__"],
+            cflags: ["-D__clang__"],
         },
     },
 }
@@ -762,7 +779,6 @@
     },
 }
 
-
 // -----------------------------------------------------------------------------
 // Library of all tests (excluding the dynamic linker tests).
 // -----------------------------------------------------------------------------
@@ -774,7 +790,6 @@
         "libBionicStandardTests",
         "libBionicElfTlsTests",
         "libBionicFramePointerTests",
-        "libBionicGwpAsanTests",
         "libfortify1-tests-clang",
         "libfortify1-new-tests-clang",
         "libfortify2-tests-clang",
@@ -876,6 +891,7 @@
         "__cxa_thread_atexit_test.cpp",
         "gtest_globals.cpp",
         "gtest_main.cpp",
+        "gwp_asan_test.cpp",
         "thread_local_test.cpp",
     ],
 
@@ -928,6 +944,8 @@
         "heap_tagging_static_disabled_helper",
         "heap_tagging_static_sync_helper",
         "heap_tagging_sync_helper",
+        "stack_tagging_helper",
+        "stack_tagging_static_helper",
         "ld_config_test_helper",
         "ld_config_test_helper_lib1",
         "ld_config_test_helper_lib2",
@@ -1176,6 +1194,8 @@
         "heap_tagging_static_disabled_helper",
         "heap_tagging_static_sync_helper",
         "heap_tagging_sync_helper",
+        "stack_tagging_helper",
+        "stack_tagging_static_helper",
     ],
 }
 
diff --git a/tests/NOTICE b/tests/NOTICE
index 8c3483c..167f90b 100644
--- a/tests/NOTICE
+++ b/tests/NOTICE
@@ -383,6 +383,22 @@
 -------------------------------------------------------------------
 
 Copyright (C) 2022 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2022 The Android Open Source Project
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/tests/__cxa_atexit_test.cpp b/tests/__cxa_atexit_test.cpp
index 6a122d1..9f73261 100644
--- a/tests/__cxa_atexit_test.cpp
+++ b/tests/__cxa_atexit_test.cpp
@@ -26,19 +26,30 @@
  * SUCH DAMAGE.
  */
 
-#include <cxxabi.h>
 #include <gtest/gtest.h>
 
+extern "C" {
+int __cxa_atexit(void (*func)(void*), void* arg, void* dso);
+
+// TODO(b/175635923). __cxa_finalize's return type should actually be "void",
+// but it is declared "int" here instead to be compatible with the declaration
+// in an old version of cxxabi.h, which is included indirectly. The declarations
+// of __cxa_atexit and __cxa_finalize are removed from newer versions of
+// cxxabi.h, so once libc++ is updated, this return type should be changed to
+// "void".
+int __cxa_finalize(void* dso);
+}
+
 TEST(__cxa_atexit, simple) {
   int counter = 0;
 
-  __cxxabiv1::__cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
+  __cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
 
-  __cxxabiv1::__cxa_finalize(&counter);
+  __cxa_finalize(&counter);
   ASSERT_EQ(counter, 1);
 
   // The handler won't be called twice.
-  __cxxabiv1::__cxa_finalize(&counter);
+  __cxa_finalize(&counter);
   ASSERT_EQ(counter, 1);
 }
 
@@ -54,16 +65,16 @@
   };
 
   for (int i = 0; i < 500; ++i) {
-    __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
+    __cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
   }
 
-  __cxxabiv1::__cxa_finalize(&handles[0]);
+  __cxa_finalize(&handles[0]);
 
   for (int i = 500; i < 750; ++i) {
-    __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[1]);
+    __cxa_atexit(append_to_actual, new int{i}, &handles[1]);
   }
 
-  __cxxabiv1::__cxa_finalize(&handles[1]);
+  __cxa_finalize(&handles[1]);
 
   std::vector<int> expected;
   for (int i = 498; i >= 0; i -= 2) expected.push_back(i);
diff --git a/tests/__cxa_demangle_test.cpp b/tests/__cxa_demangle_test.cpp
index 4628a61..d400619 100644
--- a/tests/__cxa_demangle_test.cpp
+++ b/tests/__cxa_demangle_test.cpp
@@ -29,11 +29,9 @@
 #include <cxxabi.h>
 #include <gtest/gtest.h>
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 TEST(__cxa_demangle, cxa_demangle_fuzz_152588929) {
 #if defined(__aarch64__)
-  char* p = __cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
+  char* p = abi::__cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
   ASSERT_STREQ("\x6<-0x1.cecececececececececececececep+11983", p);
   free(p);
 #endif
@@ -41,7 +39,7 @@
 
 TEST(__cxa_demangle, DISABLED_cxa_demangle_fuzz_167977068) {
 #if defined(__aarch64__)
-  char* p = __cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
+  char* p = abi::__cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
   ASSERT_EQ(nullptr, p) << p;
   free(p);
 #endif
diff --git a/tests/clang_fortify_tests.cpp b/tests/clang_fortify_tests.cpp
index 40cb83f..544af43 100644
--- a/tests/clang_fortify_tests.cpp
+++ b/tests/clang_fortify_tests.cpp
@@ -387,6 +387,8 @@
 }
 
 static void testStdlib() {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   char path_buffer[PATH_MAX - 1];
   // expected-warning@+2{{ignoring return value of function}}
   // expected-error@+1{{must be NULL or a pointer to a buffer with >= PATH_MAX bytes}}
@@ -401,6 +403,7 @@
   // expected-warning@+2{{ignoring return value of function}}
   // expected-error@+1{{flipped arguments?}}
   realpath(nullptr, nullptr);
+#pragma clang diagnostic pop
 }
 }  // namespace compilation_tests
 #endif
diff --git a/tests/dl_test.cpp b/tests/dl_test.cpp
index a61586b..2f3e905 100644
--- a/tests/dl_test.cpp
+++ b/tests/dl_test.cpp
@@ -32,9 +32,10 @@
 #include <regex>
 #include <string>
 
-#include "gtest_globals.h"
 #include <android-base/file.h>
+#include <android-base/macros.h>
 #include <android-base/test_utils.h>
+#include "gtest_globals.h"
 #include "utils.h"
 
 extern "C" int main_global_default_serial() {
@@ -84,22 +85,13 @@
 
 #if defined(__BIONIC__)
 #if defined(__LP64__)
-  static constexpr const char* kPathToLinker = "/system/bin/linker64";
+#define LINKER_NAME "linker64"
 #else
-  static constexpr const char* kPathToLinker = "/system/bin/linker";
+#define LINKER_NAME "linker"
 #endif
-
-#if defined (__aarch64__)
-  static constexpr const char* kAlternatePathToLinker = "/system/bin/arm64/linker64";
-#elif defined (__arm__)
-  static constexpr const char* kAlternatePathToLinker = "/system/bin/arm/linker";
-#elif defined (__x86_64__)
-  static constexpr const char* kAlternatePathToLinker = "/system/bin/x86_64/linker64";
-#elif defined (__i386__)
-  static constexpr const char* kAlternatePathToLinker = "/system/bin/x86/linker";
-#else
-#error "Unknown architecture"
-#endif
+static constexpr const char* kPathToLinker = "/system/bin/" LINKER_NAME;
+static constexpr const char* kAlternatePathToLinker = "/system/bin/" ABI_STRING "/" LINKER_NAME;
+#undef LINKER_NAME
 
 const char* PathToLinker() {
   // On the systems with emulated architecture linker would be of different
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index 940e726..939c092 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -33,6 +33,7 @@
 #include <thread>
 
 #include <android-base/file.h>
+#include <android-base/macros.h>
 #include <android-base/scopeguard.h>
 
 #include "gtest_globals.h"
@@ -966,17 +967,7 @@
 #endif
 }
 
-#if defined (__aarch64__)
-#define ALTERNATE_PATH_TO_SYSTEM_LIB "/system/lib64/arm64/"
-#elif defined (__arm__)
-#define ALTERNATE_PATH_TO_SYSTEM_LIB "/system/lib/arm/"
-#elif defined (__i386__)
-#define ALTERNATE_PATH_TO_SYSTEM_LIB "/system/lib/x86/"
-#elif defined (__x86_64__)
-#define ALTERNATE_PATH_TO_SYSTEM_LIB "/system/lib64/x86_64/"
-#else
-#error "Unknown architecture"
-#endif
+#define ALTERNATE_PATH_TO_SYSTEM_LIB "/system/lib64/" ABI_STRING "/"
 #define PATH_TO_LIBC PATH_TO_SYSTEM_LIB "libc.so"
 #define PATH_TO_BOOTSTRAP_LIBC PATH_TO_SYSTEM_LIB "bootstrap/libc.so"
 #define ALTERNATE_PATH_TO_LIBC ALTERNATE_PATH_TO_SYSTEM_LIB "libc.so"
@@ -1655,6 +1646,9 @@
 }
 
 TEST(dlfcn, dlopen_invalid_local_tls) {
+#if defined(__riscv)
+  // This is a test for bad gold behavior, and gold doesn't support riscv64.
+#else
   const std::string libpath = GetPrebuiltElfDir() + "/libtest_invalid-local-tls.so";
 
   void* handle = dlopen(libpath.c_str(), RTLD_NOW);
@@ -1667,6 +1661,7 @@
   std::string expected_dlerror = std::string("dlopen failed: unexpected TLS reference to ") +
                                  referent + " in \"" + libpath + "\"";
   ASSERT_SUBSTR(expected_dlerror.c_str(), dlerror());
+#endif
 }
 
 TEST(dlfcn, dlopen_df_1_global) {
diff --git a/tests/fcntl_test.cpp b/tests/fcntl_test.cpp
index d50a438..862f498 100644
--- a/tests/fcntl_test.cpp
+++ b/tests/fcntl_test.cpp
@@ -23,6 +23,7 @@
 #include <sys/vfs.h>
 
 #include <android-base/file.h>
+#include <android-base/silent_death_test.h>
 #include <android-base/stringprintf.h>
 
 // Glibc v2.19 doesn't include these in fcntl.h so host builds will fail without.
@@ -33,6 +34,8 @@
 #include <linux/magic.h>
 #endif
 
+using fcntl_DeathTest = SilentDeathTest;
+
 TEST(fcntl, fcntl_smoke) {
   int fd = open("/proc/version", O_RDONLY);
   ASSERT_TRUE(fd != -1);
@@ -356,3 +359,7 @@
   ASSERT_EQ(0, close(fd));
 #endif
 }
+
+TEST(fcntl_DeathTest, fcntl_F_SETFD) {
+  EXPECT_DEATH(fcntl(0, F_SETFD, O_NONBLOCK), "non-FD_CLOEXEC");
+}
diff --git a/tests/fenv_test.cpp b/tests/fenv_test.cpp
index c5b5eca..9cf9d98 100644
--- a/tests/fenv_test.cpp
+++ b/tests/fenv_test.cpp
@@ -117,6 +117,21 @@
   ASSERT_EQ(FE_OVERFLOW, fetestexcept(FE_ALL_EXCEPT));
 }
 
+TEST(fenv, fegetenv_fesetenv_rounding_mode) {
+  // Test that fegetenv()/fesetenv() includes the rounding mode.
+  fesetround(FE_DOWNWARD);
+  ASSERT_EQ(FE_DOWNWARD, fegetround());
+
+  fenv_t env;
+  fegetenv(&env);
+
+  fesetround(FE_UPWARD);
+  ASSERT_EQ(FE_UPWARD, fegetround());
+
+  fesetenv(&env);
+  ASSERT_EQ(FE_DOWNWARD, fegetround());
+}
+
 TEST(fenv, feholdexcept_feupdateenv) {
   // Set FE_OVERFLOW only.
   feclearexcept(FE_ALL_EXCEPT);
@@ -187,9 +202,10 @@
 
 TEST(fenv, feenableexcept_fegetexcept) {
 #if !defined(ANDROID_HOST_MUSL)
-#if defined(__aarch64__) || defined(__arm__)
-  // ARM doesn't support this. They used to if you go back far enough, but it was removed in
-  // the Cortex-A8 between r3p1 and r3p2.
+#if defined(__aarch64__) || defined(__arm__) || defined(__riscv)
+  // ARM and RISC-V don't support hardware trapping of floating point
+  // exceptions. ARM used to if you go back far enough, but it was
+  // removed in the Cortex-A8 between r3p1 and r3p2. RISC-V never has.
   ASSERT_EQ(-1, feenableexcept(FE_INVALID));
   ASSERT_EQ(0, fegetexcept());
   ASSERT_EQ(-1, feenableexcept(FE_DIVBYZERO));
@@ -200,8 +216,10 @@
   ASSERT_EQ(0, fegetexcept());
   ASSERT_EQ(-1, feenableexcept(FE_INEXACT));
   ASSERT_EQ(0, fegetexcept());
+#if defined(_FE_DENORMAL)  // riscv64 doesn't support this.
   ASSERT_EQ(-1, feenableexcept(FE_DENORMAL));
   ASSERT_EQ(0, fegetexcept());
+#endif
 #else
   // We can't recover from SIGFPE, so sacrifice a child...
   pid_t pid = fork();
diff --git a/tests/gwp_asan_test.cpp b/tests/gwp_asan_test.cpp
index 23fb8b9..5f5e3dd 100644
--- a/tests/gwp_asan_test.cpp
+++ b/tests/gwp_asan_test.cpp
@@ -28,27 +28,20 @@
 
 #include <gtest/gtest.h>
 #include <stdio.h>
+#include <sys/file.h>
 #include <string>
 
 #if defined(__BIONIC__)
 
+#include "android-base/file.h"
 #include "gwp_asan/options.h"
 #include "platform/bionic/malloc.h"
+#include "sys/system_properties.h"
 #include "utils.h"
 
-void RunGwpAsanTest(const char* test_name) {
-  ExecTestHelper eh;
-  eh.SetEnv({"GWP_ASAN_SAMPLE_RATE=1", "GWP_ASAN_PROCESS_SAMPLING=1", "GWP_ASAN_MAX_ALLOCS=40000",
-             nullptr});
-  std::string filter_arg = "--gtest_filter=";
-  filter_arg += test_name;
-  std::string exec(testing::internal::GetArgvs()[0]);
-  eh.SetArgs({exec.c_str(), "--gtest_also_run_disabled_tests", filter_arg.c_str(), nullptr});
-  eh.Run([&]() { execve(exec.c_str(), eh.GetArgs(), eh.GetEnv()); },
-         /* expected_exit_status */ 0,
-         // |expected_output_regex|, ensure at least one test ran:
-         R"(\[  PASSED  \] [1-9]+0? test)");
-}
+// basename is a mess, use gnu basename explicitly to avoid the need for string
+// mutation.
+extern "C" const char* __gnu_basename(const char* path);
 
 // GWP-ASan tests can run much slower, especially when combined with HWASan.
 // Triple the deadline to avoid flakes (b/238585984).
@@ -67,4 +60,191 @@
   RunGwpAsanTest("malloc.*:-malloc.mallinfo*");
 }
 
+class SyspropRestorer {
+ private:
+  std::vector<std::pair<std::string, std::string>> props_to_restore_;
+  // System properties are global for a device, so the tests that mutate the
+  // GWP-ASan system properties must be run mutually exclusive. Because
+  // bionic-unit-tests is run in an isolated gtest fashion (each test is run in
+  // its own process), we have to use flocks to synchronise between tests.
+  int flock_fd_;
+
+ public:
+  SyspropRestorer() {
+    std::string path = testing::internal::GetArgvs()[0];
+    flock_fd_ = open(path.c_str(), O_RDONLY);
+    EXPECT_NE(flock_fd_, -1) << "failed to open self for a flock";
+    EXPECT_NE(flock(flock_fd_, LOCK_EX), -1) << "failed to flock myself";
+
+    const char* basename = __gnu_basename(path.c_str());
+    std::vector<std::string> props = {
+        std::string("libc.debug.gwp_asan.sample_rate.") + basename,
+        std::string("libc.debug.gwp_asan.process_sampling.") + basename,
+        std::string("libc.debug.gwp_asan.max_allocs.") + basename,
+        "libc.debug.gwp_asan.sample_rate.system_default",
+        "libc.debug.gwp_asan.sample_rate.app_default",
+        "libc.debug.gwp_asan.process_sampling.system_default",
+        "libc.debug.gwp_asan.process_sampling.app_default",
+        "libc.debug.gwp_asan.max_allocs.system_default",
+        "libc.debug.gwp_asan.max_allocs.app_default",
+    };
+
+    size_t base_props_size = props.size();
+    for (size_t i = 0; i < base_props_size; ++i) {
+      props.push_back("persist." + props[i]);
+    }
+
+    std::string reset_log;
+
+    for (const std::string& prop : props) {
+      std::string value = GetSysprop(prop);
+      props_to_restore_.emplace_back(prop, value);
+      if (!value.empty()) {
+        __system_property_set(prop.c_str(), "");
+      }
+    }
+  }
+
+  ~SyspropRestorer() {
+    for (const auto& kv : props_to_restore_) {
+      if (kv.second != GetSysprop(kv.first)) {
+        __system_property_set(kv.first.c_str(), kv.second.c_str());
+      }
+    }
+    close(flock_fd_);
+  }
+
+  static std::string GetSysprop(const std::string& name) {
+    std::string value;
+    const prop_info* pi = __system_property_find(name.c_str());
+    if (pi == nullptr) return value;
+    __system_property_read_callback(
+        pi,
+        [](void* cookie, const char* /* name */, const char* value, uint32_t /* serial */) {
+          std::string* v = static_cast<std::string*>(cookie);
+          *v = value;
+        },
+        &value);
+    return value;
+  }
+};
+
+TEST(gwp_asan_integration, DISABLED_assert_gwp_asan_enabled) {
+  std::string maps;
+  EXPECT_TRUE(android::base::ReadFileToString("/proc/self/maps", &maps));
+  EXPECT_TRUE(maps.find("GWP-ASan") != std::string::npos) << maps;
+
+  volatile int* x = new int;
+  delete x;
+  EXPECT_DEATH({ *x = 7; }, "");
+}
+
+TEST(gwp_asan_integration, DISABLED_assert_gwp_asan_disabled) {
+  std::string maps;
+  EXPECT_TRUE(android::base::ReadFileToString("/proc/self/maps", &maps));
+  EXPECT_TRUE(maps.find("GWP-ASan") == std::string::npos);
+}
+
+TEST(gwp_asan_integration, sysprops_program_specific) {
+  SyspropRestorer restorer;
+
+  std::string path = testing::internal::GetArgvs()[0];
+  const char* basename = __gnu_basename(path.c_str());
+  __system_property_set((std::string("libc.debug.gwp_asan.sample_rate.") + basename).c_str(), "1");
+  __system_property_set((std::string("libc.debug.gwp_asan.process_sampling.") + basename).c_str(),
+                        "1");
+  __system_property_set((std::string("libc.debug.gwp_asan.max_allocs.") + basename).c_str(),
+                        "40000");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_persist_program_specific) {
+  SyspropRestorer restorer;
+
+  std::string path = testing::internal::GetArgvs()[0];
+  const char* basename = __gnu_basename(path.c_str());
+  __system_property_set(
+      (std::string("persist.libc.debug.gwp_asan.sample_rate.") + basename).c_str(), "1");
+  __system_property_set(
+      (std::string("persist.libc.debug.gwp_asan.process_sampling.") + basename).c_str(), "1");
+  __system_property_set((std::string("persist.libc.debug.gwp_asan.max_allocs.") + basename).c_str(),
+                        "40000");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_system) {
+  SyspropRestorer restorer;
+
+  __system_property_set("libc.debug.gwp_asan.sample_rate.system_default", "1");
+  __system_property_set("libc.debug.gwp_asan.process_sampling.system_default", "1");
+  __system_property_set("libc.debug.gwp_asan.max_allocs.system_default", "40000");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_persist_system) {
+  SyspropRestorer restorer;
+
+  __system_property_set("persist.libc.debug.gwp_asan.sample_rate.system_default", "1");
+  __system_property_set("persist.libc.debug.gwp_asan.process_sampling.system_default", "1");
+  __system_property_set("persist.libc.debug.gwp_asan.max_allocs.system_default", "40000");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_non_persist_overrides_persist) {
+  SyspropRestorer restorer;
+
+  __system_property_set("libc.debug.gwp_asan.sample_rate.system_default", "1");
+  __system_property_set("libc.debug.gwp_asan.process_sampling.system_default", "1");
+  __system_property_set("libc.debug.gwp_asan.max_allocs.system_default", "40000");
+
+  __system_property_set("persist.libc.debug.gwp_asan.sample_rate.system_default", "0");
+  __system_property_set("persist.libc.debug.gwp_asan.process_sampling.system_default", "0");
+  __system_property_set("persist.libc.debug.gwp_asan.max_allocs.system_default", "0");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_program_specific_overrides_default) {
+  SyspropRestorer restorer;
+
+  std::string path = testing::internal::GetArgvs()[0];
+  const char* basename = __gnu_basename(path.c_str());
+  __system_property_set(
+      (std::string("persist.libc.debug.gwp_asan.sample_rate.") + basename).c_str(), "1");
+  __system_property_set(
+      (std::string("persist.libc.debug.gwp_asan.process_sampling.") + basename).c_str(), "1");
+  __system_property_set((std::string("persist.libc.debug.gwp_asan.max_allocs.") + basename).c_str(),
+                        "40000");
+
+  __system_property_set("libc.debug.gwp_asan.sample_rate.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.process_sampling.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.max_allocs.system_default", "0");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
+TEST(gwp_asan_integration, sysprops_can_disable) {
+  SyspropRestorer restorer;
+
+  __system_property_set("libc.debug.gwp_asan.sample_rate.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.process_sampling.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.max_allocs.system_default", "0");
+
+  RunSubtestNoEnv("gwp_asan_integration.DISABLED_assert_gwp_asan_disabled");
+}
+
+TEST(gwp_asan_integration, env_overrides_sysprop) {
+  SyspropRestorer restorer;
+
+  __system_property_set("libc.debug.gwp_asan.sample_rate.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.process_sampling.system_default", "0");
+  __system_property_set("libc.debug.gwp_asan.max_allocs.system_default", "0");
+
+  RunGwpAsanTest("gwp_asan_integration.DISABLED_assert_gwp_asan_enabled");
+}
+
 #endif  // defined(__BIONIC__)
diff --git a/tests/headers/posix/Android.bp b/tests/headers/posix/Android.bp
index 4a20d45..0809cdb 100644
--- a/tests/headers/posix/Android.bp
+++ b/tests/headers/posix/Android.bp
@@ -33,8 +33,5 @@
         darwin: {
             enabled: false,
         },
-        musl: {
-            enabled: false,
-        },
     },
 }
diff --git a/tests/headers/posix/fcntl_h.c b/tests/headers/posix/fcntl_h.c
index a55fe89..418add0 100644
--- a/tests/headers/posix/fcntl_h.c
+++ b/tests/headers/posix/fcntl_h.c
@@ -84,7 +84,11 @@
 
   // POSIX: "The <fcntl.h> header shall define the symbolic constants for
   // file modes for use as values of mode_t as described in <sys/stat.h>."
+  // Musl only defines the file mode bits (S_IFUSR, etc.) and not the file
+  // type bits (S_IFMT, etc.).
+#if !defined(ANDROID_HOST_MUSL)
 #include "sys_stat_h_mode_constants.h"
+#endif
 
   MACRO(AT_FDCWD);
 #if !defined(__BIONIC__) // See comment in "faccessat.cpp".
diff --git a/tests/headers/posix/limits_h.c b/tests/headers/posix/limits_h.c
index 143f717..7e92d81 100644
--- a/tests/headers/posix/limits_h.c
+++ b/tests/headers/posix/limits_h.c
@@ -32,15 +32,17 @@
 
 static void limits_h() {
   // These are only defined if they're constants.
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(AIO_LISTIO_MAX);
   MACRO(AIO_MAX);
 #endif
-#if !defined(__BIONIC__)
+#if !defined(__BIONIC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(AIO_PRIO_DELTA_MAX);
 #endif
 #if !defined(__BIONIC__) && !defined(__GLIBC__)
   MACRO(ARG_MAX);
+#endif
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(ATEXIT_MAX);
   MACRO(CHILD_MAX);
 #endif
@@ -50,14 +52,16 @@
   MACRO(HOST_NAME_MAX);
   MACRO(IOV_MAX);
   MACRO(LOGIN_NAME_MAX);
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(MQ_OPEN_MAX);
 #endif
 #if !defined(__BIONIC__)
   MACRO(MQ_PRIO_MAX);
 #endif
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(OPEN_MAX);
+#endif
+#if !defined(__BIONIC__) && !defined(__GLIBC__)
   MACRO(PAGESIZE);
   MACRO(PAGE_SIZE);
 #endif
@@ -66,19 +70,25 @@
 #if !defined(__BIONIC__)
   MACRO(PTHREAD_STACK_MIN);
 #endif
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(PTHREAD_THREADS_MAX);
 #endif
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(RTSIG_MAX);
+#endif
 #if !defined(__BIONIC__) && !defined(__GLIBC__)
   MACRO(SEM_NSEMS_MAX);
 #endif
   MACRO(SEM_VALUE_MAX);
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(SIGQUEUE_MAX);
   MACRO(SS_REPL_MAX);
   MACRO(STREAM_MAX);
+#endif
+#if !defined(__BIONIC__) && !defined(__GLIBC__)
   MACRO(SYMLOOP_MAX);
+#endif
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(TIMER_MAX);
 #endif
 #if !defined(__BIONIC__)
@@ -90,10 +100,14 @@
 
 #if !defined(__BIONIC__) && !defined(__GLIBC__)
   MACRO(FILESIZEBITS);
+#endif
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(LINK_MAX);
 #endif
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(MAX_CANON);
   MACRO(MAX_INPUT);
+#endif
   MACRO(NAME_MAX);
   MACRO(PATH_MAX);
   MACRO(PIPE_BUF);
@@ -104,7 +118,7 @@
   MACRO(POSIX_REC_MIN_XFER_SIZE);
   MACRO(POSIX_REC_XFER_ALIGN);
 #endif
-#if !defined(__BIONIC__) && !defined(__GLIBC__)
+#if !defined(__BIONIC__) && !defined(__GLIBC__) && !defined(ANDROID_HOST_MUSL)
   MACRO(SYMLINK_MAX);
 #endif
 
diff --git a/tests/headers/posix/sys_stat_h.c b/tests/headers/posix/sys_stat_h.c
index b22e34f..a299426 100644
--- a/tests/headers/posix/sys_stat_h.c
+++ b/tests/headers/posix/sys_stat_h.c
@@ -69,7 +69,7 @@
   STRUCT_MEMBER(struct stat, struct timespec, st_mtim);
   STRUCT_MEMBER(struct stat, struct timespec, st_ctim);
 #if defined(__BIONIC__)
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
   STRUCT_MEMBER(struct stat, int, st_blksize);
 #elif defined(__x86_64__)
   STRUCT_MEMBER(struct stat, long, st_blksize);
diff --git a/tests/headers/posix/unistd_h.c b/tests/headers/posix/unistd_h.c
index b713f53..0b2cee5 100644
--- a/tests/headers/posix/unistd_h.c
+++ b/tests/headers/posix/unistd_h.c
@@ -51,8 +51,10 @@
   MACRO(_POSIX_MESSAGE_PASSING);
   MACRO(_POSIX_MONOTONIC_CLOCK);
   MACRO(_POSIX_NO_TRUNC);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_PRIORITIZED_IO);
   MACRO(_POSIX_PRIORITY_SCHEDULING);
+#endif
   MACRO(_POSIX_RAW_SOCKETS);
   MACRO(_POSIX_READER_WRITER_LOCKS);
   MACRO(_POSIX_REALTIME_SIGNALS);
@@ -63,35 +65,51 @@
   MACRO(_POSIX_SHELL);
   MACRO(_POSIX_SPAWN);
   MACRO(_POSIX_SPIN_LOCKS);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_SPORADIC_SERVER);
   MACRO(_POSIX_SYNCHRONIZED_IO);
+#endif
   MACRO(_POSIX_THREAD_ATTR_STACKADDR);
   MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
   MACRO(_POSIX_THREAD_CPUTIME);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_THREAD_PRIO_INHERIT);
   MACRO(_POSIX_THREAD_PRIO_PROTECT);
+#endif
   MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
   MACRO(_POSIX_THREAD_PROCESS_SHARED);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_THREAD_ROBUST_PRIO_INHERIT);
   MACRO(_POSIX_THREAD_ROBUST_PRIO_PROTECT);
+#endif
   MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_THREAD_SPORADIC_SERVER);
+#endif
   MACRO(_POSIX_THREADS);
   MACRO(_POSIX_TIMEOUTS);
   MACRO(_POSIX_TIMERS);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
+#endif
   MACRO(_POSIX2_C_BIND);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_POSIX2_CHAR_TERM);
   MACRO(_POSIX2_LOCALEDEF);
   MACRO(_POSIX2_SW_DEV);
+#endif
 #if 0 // No libc I can find actually has this.
   MACRO(_POSIX2_UPE);
 #endif
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_XOPEN_CRYPT);
+#endif
   MACRO(_XOPEN_ENH_I18N);
+#if !defined(ANDROID_HOST_MUSL)
   MACRO(_XOPEN_REALTIME);
   MACRO(_XOPEN_REALTIME_THREADS);
   MACRO(_XOPEN_SHM);
+#endif
   MACRO(_XOPEN_UNIX);
 #if defined(_XOPEN_UUCP)
 #if _XOPEN_UUCP != -1 && _XOPEN_UUCP != 0 && _XOPEN_UUCP != 200809L
diff --git a/tests/libs/Android.bp b/tests/libs/Android.bp
index 0046ef6..8ae2257 100644
--- a/tests/libs/Android.bp
+++ b/tests/libs/Android.bp
@@ -41,6 +41,9 @@
             enabled: false,
         },
     },
+    strip: {
+        none: true,
+    },
 }
 
 // -----------------------------------------------------------------------------
@@ -1532,12 +1535,6 @@
     host_supported: false,
     defaults: ["bionic_testlib_defaults"],
     srcs: ["relocations.cpp"],
-
-    // Hack to ensure we're using llvm-objcopy because our binutils prebuilt
-    // only supports the old numbers (http://b/141010852).
-    strip: {
-      keep_symbols: true,
-    },
 }
 
 // This is the same encoding as SHT_RELR, but using OS-specific constants.
@@ -1652,6 +1649,37 @@
    },
 }
 
+cc_test {
+   name: "stack_tagging_helper",
+   defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
+   srcs: ["stack_tagging_helper.cpp"],
+   sanitize: {
+     memtag_heap: true,
+     memtag_stack: true,
+     diag: {
+       memtag_heap: true,
+     },
+   },
+   header_libs: ["bionic_libc_platform_headers"],
+   cflags: ["-fexceptions"],
+}
+
+cc_test {
+   name: "stack_tagging_static_helper",
+   defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
+   srcs: ["stack_tagging_helper.cpp"],
+   static_executable: true,
+   sanitize: {
+     memtag_heap: true,
+     memtag_stack: true,
+     diag: {
+       memtag_heap: true,
+     },
+   },
+   header_libs: ["bionic_libc_platform_headers"],
+   cflags: ["-fexceptions"],
+}
+
 cc_genrule {
     name: "libdlext_test_zip_zipaligned",
      out: ["bionic-loader-test-libs/libdlext_test_zip/libdlext_test_zip_zipaligned.zip"],
diff --git a/tests/libs/heap_tagging_helper.cpp b/tests/libs/heap_tagging_helper.cpp
index 16a8c8b..ed5601a 100644
--- a/tests/libs/heap_tagging_helper.cpp
+++ b/tests/libs/heap_tagging_helper.cpp
@@ -49,6 +49,10 @@
   sa.sa_sigaction = action;
   sa.sa_flags = SA_SIGINFO;
   sigaction(SIGSEGV, &sa, nullptr);
+  // suppress HWASan crash in logcat / tombstone.
+  struct sigaction dfl_sa = {};
+  dfl_sa.sa_handler = SIG_DFL;
+  sigaction(SIGABRT, &dfl_sa, nullptr);
 
   std::unique_ptr<int[]> p = std::make_unique<int[]>(4);
   volatile int oob = p[-1];
diff --git a/tests/libs/stack_tagging_helper.cpp b/tests/libs/stack_tagging_helper.cpp
new file mode 100644
index 0000000..d29844d
--- /dev/null
+++ b/tests/libs/stack_tagging_helper.cpp
@@ -0,0 +1,387 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <errno.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <thread>
+
+#include <bionic/malloc.h>
+
+#include "libs_utils.h"
+
+#if defined(__aarch64__)
+
+template <typename T>
+static inline void mte_set_tag(T* p) {
+  __asm__ __volatile__(
+      ".arch_extension memtag\n"
+      "stg %[Ptr], [%[Ptr]]\n"
+      :
+      : [Ptr] "r"(p)
+      : "memory");
+}
+
+template <typename T>
+static inline T* mte_get_tag(T* p) {
+  __asm__ __volatile__(
+      ".arch_extension memtag\n"
+      "ldg %[Ptr], [%[Ptr]]\n"
+      : [Ptr] "+r"(p)
+      :
+      : "memory");
+  return p;
+}
+
+template <typename T>
+static inline T* mte_increment_tag(T* p) {
+  T* res;
+  __asm__ __volatile__(
+      ".arch_extension memtag\n"
+      "addg %[Res], %[Ptr], #0, #1\n"
+      : [Res] "=r"(res)
+      : [Ptr] "r"(p)
+      : "memory");
+  return res;
+}
+
+constexpr size_t kStackAllocationSize = 128 * 1024;
+
+// Prevent optimizations.
+volatile void* sink;
+
+enum struct ChildAction { Exit, Execve, Execl };
+
+// Either execve or _exit, transferring control back to parent.
+__attribute__((no_sanitize("memtag"), optnone, noinline)) void vfork_child2(ChildAction action,
+                                                                            void* fp_parent) {
+  // Make sure that the buffer in the caller has not been optimized out.
+  void* fp = __builtin_frame_address(0);
+  CHECK(reinterpret_cast<uintptr_t>(fp_parent) - reinterpret_cast<uintptr_t>(fp) >=
+        kStackAllocationSize);
+  if (action == ChildAction::Execve) {
+    const char* argv[] = {"/system/bin/true", nullptr};
+    const char* envp[] = {nullptr};
+    execve("/system/bin/true", const_cast<char**>(argv), const_cast<char**>(envp));
+    fprintf(stderr, "execve failed: %m\n");
+    _exit(1);
+  } else if (action == ChildAction::Execl) {
+    execl("/system/bin/true", "/system/bin/true", "unusedA", "unusedB", nullptr);
+    fprintf(stderr, "execl failed: %m\n");
+    _exit(1);
+  } else if (action == ChildAction::Exit) {
+    _exit(0);
+  }
+  CHECK(0);
+}
+
+// Place a tagged buffer on the stack. Do not tag the top half so that the parent does not crash too
+// early even if things go wrong.
+__attribute__((no_sanitize("memtag"), optnone, noinline)) void vfork_child(ChildAction action) {
+  alignas(16) char buf[kStackAllocationSize] __attribute__((uninitialized));
+  sink = &buf;
+
+  for (char* p = buf; p < buf + sizeof(buf) / 2; p += 16) {
+    char* q = mte_increment_tag(p);
+    mte_set_tag(q);
+    CHECK(mte_get_tag(p) == q);
+  }
+  vfork_child2(action, __builtin_frame_address(0));
+}
+
+// Parent. Check that the stack has correct allocation tags.
+__attribute__((no_sanitize("memtag"), optnone, noinline)) void vfork_parent(pid_t pid) {
+  alignas(16) char buf[kStackAllocationSize] __attribute__((uninitialized));
+  fprintf(stderr, "vfork_parent %p\n", &buf);
+  bool success = true;
+  for (char* p = buf; p < buf + sizeof(buf); p += 16) {
+    char* q = mte_get_tag(p);
+    if (p != q) {
+      fprintf(stderr, "tag mismatch at offset %zx: %p != %p\n", p - buf, p, q);
+      success = false;
+      break;
+    }
+  }
+
+  int wstatus;
+  do {
+    int res = waitpid(pid, &wstatus, 0);
+    CHECK(res == pid);
+  } while (!WIFEXITED(wstatus) && !WIFSIGNALED(wstatus));
+
+  CHECK(WIFEXITED(wstatus));
+  CHECK(WEXITSTATUS(wstatus) == 0);
+
+  if (!success) exit(1);
+}
+
+void test_vfork(ChildAction action) {
+  pid_t pid = vfork();
+  if (pid == 0) {
+    vfork_child(action);
+  } else {
+    vfork_parent(pid);
+  }
+}
+
+__attribute__((no_sanitize("memtag"), optnone, noinline)) static void settag_and_longjmp(
+    jmp_buf cont) {
+  alignas(16) char buf[kStackAllocationSize] __attribute__((uninitialized));
+  sink = &buf;
+
+  for (char* p = buf; p < buf + sizeof(buf) / 2; p += 16) {
+    char* q = mte_increment_tag(p);
+    mte_set_tag(q);
+    if (mte_get_tag(p) != q) {
+      fprintf(stderr, "failed to set allocation tags on stack: %p != %p\n", mte_get_tag(p), q);
+      exit(1);
+    }
+  }
+  longjmp(cont, 42);
+}
+
+// Check that the stack has correct allocation tags.
+__attribute__((no_sanitize("memtag"), optnone, noinline)) static void check_stack_tags() {
+  alignas(16) char buf[kStackAllocationSize] __attribute__((uninitialized));
+  for (char* p = buf; p < buf + sizeof(buf); p += 16) {
+    void* q = mte_get_tag(p);
+    if (p != q) {
+      fprintf(stderr, "stack tags mismatch: expected %p, got %p", p, q);
+      exit(1);
+    }
+  }
+}
+
+void check_longjmp_restores_tags() {
+  int value;
+  jmp_buf jb;
+  if ((value = setjmp(jb)) == 0) {
+    settag_and_longjmp(jb);
+    exit(2);  // Unreachable.
+  } else {
+    CHECK(value == 42);
+    check_stack_tags();
+  }
+}
+
+class SigAltStackScoped {
+  stack_t old_ss;
+  void* altstack_start;
+  size_t altstack_size;
+
+ public:
+  SigAltStackScoped(size_t sz) : altstack_size(sz) {
+    altstack_start = mmap(nullptr, altstack_size, PROT_READ | PROT_WRITE | PROT_MTE,
+                          MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+    if (altstack_start == MAP_FAILED) {
+      fprintf(stderr, "sigaltstack mmap failed: %m\n");
+      exit(1);
+    }
+    stack_t ss = {};
+    ss.ss_sp = altstack_start;
+    ss.ss_size = altstack_size;
+    int res = sigaltstack(&ss, &old_ss);
+    CHECK(res == 0);
+  }
+
+  ~SigAltStackScoped() {
+    int res = sigaltstack(&old_ss, nullptr);
+    CHECK(res == 0);
+    munmap(altstack_start, altstack_size);
+  }
+};
+
+class SigActionScoped {
+  int signo;
+  struct sigaction oldsa;
+
+ public:
+  using handler_t = void (*)(int, siginfo_t* siginfo, void*);
+
+  SigActionScoped(int signo, handler_t handler) : signo(signo) {
+    struct sigaction sa = {};
+    sa.sa_sigaction = handler;
+    sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
+    int res = sigaction(signo, &sa, &oldsa);
+    CHECK(res == 0);
+  }
+
+  ~SigActionScoped() {
+    int res = sigaction(signo, &oldsa, nullptr);
+    CHECK(res == 0);
+  }
+};
+
+void test_longjmp() {
+  check_longjmp_restores_tags();
+
+  std::thread t([]() { check_longjmp_restores_tags(); });
+  t.join();
+}
+
+void test_longjmp_sigaltstack() {
+  constexpr size_t kAltStackSize = kStackAllocationSize + PAGE_SIZE * 16;
+  SigAltStackScoped sigAltStackScoped(kAltStackSize);
+  SigActionScoped sigActionScoped(
+      SIGUSR1, [](int, siginfo_t*, void*) { check_longjmp_restores_tags(); });
+  raise(SIGUSR1);
+
+  // same for a secondary thread
+  std::thread t([]() {
+    SigAltStackScoped sigAltStackScoped(kAltStackSize);
+    raise(SIGUSR1);
+  });
+  t.join();
+}
+
+void test_android_mallopt() {
+  bool memtag_stack;
+  CHECK(android_mallopt(M_MEMTAG_STACK_IS_ON, &memtag_stack, sizeof(memtag_stack)));
+  CHECK(memtag_stack);
+}
+
+static uintptr_t GetTag(void* addr) {
+  return reinterpret_cast<uintptr_t>(addr) & (0xFULL << 56);
+}
+
+static uintptr_t GetTag(volatile void* addr) {
+  return GetTag(const_cast<void*>(addr));
+}
+
+static volatile char* throw_frame;
+static volatile char* skip_frame3_frame;
+volatile char *x;
+
+__attribute__((noinline)) void throws() {
+  // Prevent optimization.
+  if (getpid() == 0) return;
+  throw_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+  throw "error";
+}
+
+__attribute__((noinline)) void maybe_throws() {
+  // These are all unique sizes so in case of a failure, we can see which ones
+  // are not untagged from the tag dump.
+  volatile char y[5 * 16]= {};
+  x = y;
+  // Make sure y is tagged.
+  CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+  throws();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame() {
+  volatile char y[6*16] = {};
+  x = y;
+  // Make sure y is not tagged.
+  CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+  maybe_throws();
+}
+
+__attribute__((noinline)) void skip_frame2() {
+  volatile char y[7*16] = {};
+  x = y;
+  // Make sure y is tagged.
+  CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+  skip_frame();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame3() {
+  volatile char y[8*16] = {};
+  x = y;
+  skip_frame3_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+  // Make sure y is not tagged.
+  CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+  skip_frame2();
+}
+
+void test_exception_cleanup() {
+  // This is here for debugging purposes, if something goes wrong we can
+  // verify that this placeholder did not get untagged.
+  volatile char placeholder[16*16] = {};
+  x = placeholder;
+  try {
+    skip_frame3();
+  } catch (const char* e) {
+  }
+  if (throw_frame >= skip_frame3_frame) {
+    fprintf(stderr, "invalid throw frame");
+    exit(1);
+  }
+  for (char* b = const_cast<char*>(throw_frame); b < skip_frame3_frame; ++b) {
+    if (mte_get_tag(b) != b) {
+      fprintf(stderr, "invalid tag at %p", b);
+      exit(1);
+    }
+  }
+}
+
+int main(int argc, char** argv) {
+  if (argc < 2) {
+    printf("nothing to do\n");
+    return 1;
+  }
+
+  if (strcmp(argv[1], "vfork_execve") == 0) {
+    test_vfork(ChildAction::Execve);
+    return 0;
+  }
+
+  if (strcmp(argv[1], "vfork_execl") == 0) {
+    test_vfork(ChildAction::Execl);
+    return 0;
+  }
+
+  if (strcmp(argv[1], "vfork_exit") == 0) {
+    test_vfork(ChildAction::Exit);
+    return 0;
+  }
+
+  if (strcmp(argv[1], "longjmp") == 0) {
+    test_longjmp();
+    return 0;
+  }
+
+  if (strcmp(argv[1], "longjmp_sigaltstack") == 0) {
+    test_longjmp_sigaltstack();
+    return 0;
+  }
+
+  if (strcmp(argv[1], "android_mallopt") == 0) {
+    test_android_mallopt();
+    return 0;
+  }
+
+  if (strcmp(argv[1], "exception_cleanup") == 0) {
+    test_exception_cleanup();
+    return 0;
+  }
+
+  printf("unrecognized command: %s\n", argv[1]);
+  return 1;
+}
+#else
+int main(int, char**) {
+  printf("aarch64 only\n");
+  return 1;
+}
+#endif  // defined(__aarch64__)
diff --git a/tests/malloc_test.cpp b/tests/malloc_test.cpp
index 69f8506..63ad99d 100644
--- a/tests/malloc_test.cpp
+++ b/tests/malloc_test.cpp
@@ -35,6 +35,7 @@
 
 #include <algorithm>
 #include <atomic>
+#include <functional>
 #include <thread>
 #include <vector>
 
@@ -661,13 +662,13 @@
 }
 
 TEST(malloc, mallopt_smoke) {
-#if !defined(ANDROID_HOST_MUSL)
+#if defined(__BIONIC__)
   errno = 0;
   ASSERT_EQ(0, mallopt(-1000, 1));
   // mallopt doesn't set errno.
   ASSERT_EQ(0, errno);
 #else
-  GTEST_SKIP() << "musl doesn't have mallopt";
+  GTEST_SKIP() << "bionic-only test";
 #endif
 }
 
@@ -1383,6 +1384,15 @@
 #endif
 }
 
+TEST(android_mallopt, memtag_stack_is_on) {
+#if defined(__BIONIC__)
+  bool memtag_stack;
+  EXPECT_TRUE(android_mallopt(M_MEMTAG_STACK_IS_ON, &memtag_stack, sizeof(memtag_stack)));
+#else
+  GTEST_SKIP() << "bionic extension";
+#endif
+}
+
 void TestHeapZeroing(int num_iterations, int (*get_alloc_size)(int iteration)) {
   std::vector<void*> allocs;
   constexpr int kMaxBytesToCheckZero = 64;
@@ -1519,3 +1529,157 @@
     }
   }
 }
+
+void VerifyAllocationsAreZero(std::function<void*(size_t)> alloc_func, std::string function_name,
+                              std::vector<size_t>& test_sizes, size_t max_allocations) {
+  // Vector of zero'd data used for comparisons. Make it twice the largest size.
+  std::vector<char> zero(test_sizes.back() * 2, 0);
+
+  SCOPED_TRACE(testing::Message() << function_name << " failed to zero memory");
+
+  for (size_t test_size : test_sizes) {
+    std::vector<void*> ptrs(max_allocations);
+    for (size_t i = 0; i < ptrs.size(); i++) {
+      SCOPED_TRACE(testing::Message() << "size " << test_size << " at iteration " << i);
+      ptrs[i] = alloc_func(test_size);
+      ASSERT_TRUE(ptrs[i] != nullptr);
+      size_t alloc_size = malloc_usable_size(ptrs[i]);
+      ASSERT_LE(alloc_size, zero.size());
+      ASSERT_EQ(0, memcmp(ptrs[i], zero.data(), alloc_size));
+
+      // Set the memory to non-zero to make sure if the pointer
+      // is reused it's still zero.
+      memset(ptrs[i], 0xab, alloc_size);
+    }
+    // Free the pointers.
+    for (size_t i = 0; i < ptrs.size(); i++) {
+      free(ptrs[i]);
+    }
+    for (size_t i = 0; i < ptrs.size(); i++) {
+      SCOPED_TRACE(testing::Message() << "size " << test_size << " at iteration " << i);
+      ptrs[i] = malloc(test_size);
+      ASSERT_TRUE(ptrs[i] != nullptr);
+      size_t alloc_size = malloc_usable_size(ptrs[i]);
+      ASSERT_LE(alloc_size, zero.size());
+      ASSERT_EQ(0, memcmp(ptrs[i], zero.data(), alloc_size));
+    }
+    // Free all of the pointers later to maximize the chance of reusing from
+    // the first loop.
+    for (size_t i = 0; i < ptrs.size(); i++) {
+      free(ptrs[i]);
+    }
+  }
+}
+
+// Verify that small and medium allocations are always zero.
+TEST(malloc, zeroed_allocations_small_medium_sizes) {
+#if !defined(__BIONIC__)
+  GTEST_SKIP() << "Only valid on bionic";
+#endif
+
+  if (IsLowRamDevice()) {
+    GTEST_SKIP() << "Skipped on low memory devices.";
+  }
+
+  constexpr size_t kMaxAllocations = 1024;
+  std::vector<size_t> test_sizes = {16, 48, 128, 1024, 4096, 65536};
+  VerifyAllocationsAreZero([](size_t size) -> void* { return malloc(size); }, "malloc", test_sizes,
+                           kMaxAllocations);
+
+  VerifyAllocationsAreZero([](size_t size) -> void* { return memalign(64, size); }, "memalign",
+                           test_sizes, kMaxAllocations);
+
+  VerifyAllocationsAreZero(
+      [](size_t size) -> void* {
+        void* ptr;
+        if (posix_memalign(&ptr, 64, size) == 0) {
+          return ptr;
+        }
+        return nullptr;
+      },
+      "posix_memalign", test_sizes, kMaxAllocations);
+}
+
+// Verify that large allocations are always zero.
+TEST(malloc, zeroed_allocations_large_sizes) {
+#if !defined(__BIONIC__)
+  GTEST_SKIP() << "Only valid on bionic";
+#endif
+
+  if (IsLowRamDevice()) {
+    GTEST_SKIP() << "Skipped on low memory devices.";
+  }
+
+  constexpr size_t kMaxAllocations = 20;
+  std::vector<size_t> test_sizes = {1000000, 2000000, 3000000, 4000000};
+  VerifyAllocationsAreZero([](size_t size) -> void* { return malloc(size); }, "malloc", test_sizes,
+                           kMaxAllocations);
+
+  VerifyAllocationsAreZero([](size_t size) -> void* { return memalign(64, size); }, "memalign",
+                           test_sizes, kMaxAllocations);
+
+  VerifyAllocationsAreZero(
+      [](size_t size) -> void* {
+        void* ptr;
+        if (posix_memalign(&ptr, 64, size) == 0) {
+          return ptr;
+        }
+        return nullptr;
+      },
+      "posix_memalign", test_sizes, kMaxAllocations);
+}
+
+TEST(malloc, zeroed_allocations_realloc) {
+#if !defined(__BIONIC__)
+  GTEST_SKIP() << "Only valid on bionic";
+#endif
+
+  if (IsLowRamDevice()) {
+    GTEST_SKIP() << "Skipped on low memory devices.";
+  }
+
+  // Vector of zero'd data used for comparisons.
+  constexpr size_t kMaxMemorySize = 131072;
+  std::vector<char> zero(kMaxMemorySize, 0);
+
+  constexpr size_t kMaxAllocations = 1024;
+  std::vector<size_t> test_sizes = {16, 48, 128, 1024, 4096, 65536};
+  // Do a number of allocations and set them to non-zero.
+  for (size_t test_size : test_sizes) {
+    std::vector<void*> ptrs(kMaxAllocations);
+    for (size_t i = 0; i < kMaxAllocations; i++) {
+      ptrs[i] = malloc(test_size);
+      ASSERT_TRUE(ptrs[i] != nullptr);
+
+      // Set the memory to non-zero to make sure if the pointer
+      // is reused it's still zero.
+      memset(ptrs[i], 0xab, malloc_usable_size(ptrs[i]));
+    }
+    // Free the pointers.
+    for (size_t i = 0; i < kMaxAllocations; i++) {
+      free(ptrs[i]);
+    }
+  }
+
+  // Do the reallocs to a larger size and verify the rest of the allocation
+  // is zero.
+  constexpr size_t kInitialSize = 8;
+  for (size_t test_size : test_sizes) {
+    std::vector<void*> ptrs(kMaxAllocations);
+    for (size_t i = 0; i < kMaxAllocations; i++) {
+      ptrs[i] = malloc(kInitialSize);
+      ASSERT_TRUE(ptrs[i] != nullptr);
+      size_t orig_alloc_size = malloc_usable_size(ptrs[i]);
+
+      ptrs[i] = realloc(ptrs[i], test_size);
+      ASSERT_TRUE(ptrs[i] != nullptr);
+      size_t new_alloc_size = malloc_usable_size(ptrs[i]);
+      char* ptr = reinterpret_cast<char*>(ptrs[i]);
+      ASSERT_EQ(0, memcmp(&ptr[orig_alloc_size], zero.data(), new_alloc_size - orig_alloc_size))
+          << "realloc from " << kInitialSize << " to size " << test_size << " at iteration " << i;
+    }
+    for (size_t i = 0; i < kMaxAllocations; i++) {
+      free(ptrs[i]);
+    }
+  }
+}
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index 76b5078..60872f3 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -1053,22 +1053,22 @@
   auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
 
   fesetround(FE_UPWARD); // lrint/lrintf/lrintl obey the rounding mode.
-  ASSERT_EQ(1235, lrint(1234.01));
-  ASSERT_EQ(1235, lrintf(1234.01f));
-  ASSERT_EQ(1235, lrintl(1234.01L));
+  EXPECT_EQ(1235, lrint(1234.01));
+  EXPECT_EQ(1235, lrintf(1234.01f));
+  EXPECT_EQ(1235, lrintl(1234.01L));
   fesetround(FE_TOWARDZERO); // lrint/lrintf/lrintl obey the rounding mode.
-  ASSERT_EQ(1234, lrint(1234.01));
-  ASSERT_EQ(1234, lrintf(1234.01f));
-  ASSERT_EQ(1234, lrintl(1234.01L));
+  EXPECT_EQ(1234, lrint(1234.01));
+  EXPECT_EQ(1234, lrintf(1234.01f));
+  EXPECT_EQ(1234, lrintl(1234.01L));
 
   fesetround(FE_UPWARD); // llrint/llrintf/llrintl obey the rounding mode.
-  ASSERT_EQ(1235L, llrint(1234.01));
-  ASSERT_EQ(1235L, llrintf(1234.01f));
-  ASSERT_EQ(1235L, llrintl(1234.01L));
+  EXPECT_EQ(1235L, llrint(1234.01));
+  EXPECT_EQ(1235L, llrintf(1234.01f));
+  EXPECT_EQ(1235L, llrintl(1234.01L));
   fesetround(FE_TOWARDZERO); // llrint/llrintf/llrintl obey the rounding mode.
-  ASSERT_EQ(1234L, llrint(1234.01));
-  ASSERT_EQ(1234L, llrintf(1234.01f));
-  ASSERT_EQ(1234L, llrintl(1234.01L));
+  EXPECT_EQ(1234L, llrint(1234.01));
+  EXPECT_EQ(1234L, llrintf(1234.01f));
+  EXPECT_EQ(1234L, llrintl(1234.01L));
 }
 
 TEST(MATH_TEST, rint) {
diff --git a/tests/memtag_stack_test.cpp b/tests/memtag_stack_test.cpp
new file mode 100644
index 0000000..97084ec
--- /dev/null
+++ b/tests/memtag_stack_test.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tuple>
+
+#include <gtest/gtest.h>
+
+#if defined(__BIONIC__)
+#include "gtest_globals.h"
+#include "platform/bionic/mte.h"
+#include "utils.h"
+#endif
+
+class MemtagStackTest : public testing::TestWithParam<std::tuple<const char*, bool>> {};
+
+TEST_P(MemtagStackTest, test) {
+#if defined(__BIONIC__) && defined(__aarch64__)
+  if (!mte_supported()) {
+    GTEST_SKIP() << "MTE unsupported";
+  }
+  bool is_static = std::get<1>(GetParam());
+  std::string helper =
+      GetTestlibRoot() + (is_static ? "/stack_tagging_static_helper" : "/stack_tagging_helper");
+  const char* arg = std::get<0>(GetParam());
+  chmod(helper.c_str(), 0755);
+  ExecTestHelper eth;
+  eth.SetArgs({helper.c_str(), arg, nullptr});
+  eth.Run([&]() { execve(helper.c_str(), eth.GetArgs(), eth.GetEnv()); }, 0, "");
+#else
+  GTEST_SKIP() << "bionic/arm64 only";
+#endif
+}
+
+INSTANTIATE_TEST_SUITE_P(
+    , MemtagStackTest,
+    testing::Combine(testing::Values("vfork_execve", "vfork_execl", "vfork_exit", "longjmp",
+                                     "longjmp_sigaltstack", "android_mallopt", "exception_cleanup"),
+                     testing::Bool()),
+    [](const ::testing::TestParamInfo<MemtagStackTest::ParamType>& info) {
+      std::string s = std::get<0>(info.param);
+      if (std::get<1>(info.param)) s += "_static";
+      return s;
+    });
diff --git a/tests/mte_test.cpp b/tests/mte_test.cpp
index ade9532..5eb804f 100644
--- a/tests/mte_test.cpp
+++ b/tests/mte_test.cpp
@@ -32,6 +32,7 @@
       reinterpret_cast<int*>(reinterpret_cast<uintptr_t>(p.get()) + (1ULL << 56));
   {
     ScopedDisableMTE x;
+    // Test that nested ScopedDisableMTE does not reset MTE state.
     { ScopedDisableMTE y; }
 #if defined(__aarch64__)
     volatile int load ATTRIBUTE_UNUSED = *mistagged_p;
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_empty.so b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
new file mode 100755
index 0000000..f3218f7
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..9f15ff9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..32db3b9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
new file mode 100755
index 0000000..5ee9aab
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
new file mode 100755
index 0000000..664d3df
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..3e773c0
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..d3bcd9a
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..956dca8
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..e663dae
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..294f854
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
Binary files differ
diff --git a/tests/setjmp_test.cpp b/tests/setjmp_test.cpp
index 472aa20..2f891ec 100644
--- a/tests/setjmp_test.cpp
+++ b/tests/setjmp_test.cpp
@@ -81,8 +81,10 @@
     sigset64_t ss;
     sigemptyset64(&ss);
     sigaddset64(&ss, SIGUSR1 + offset);
+#if defined(__BIONIC__)
     // TIMER_SIGNAL.
     sigaddset64(&ss, __SIGRTMIN);
+#endif
     sigaddset64(&ss, SIGRTMIN + offset);
     return ss;
   }
@@ -224,13 +226,15 @@
 }
 
 #if defined(__arm__)
-#define __JB_SIGFLAG 0
+#define JB_SIGFLAG_OFFSET 0
 #elif defined(__aarch64__)
-#define __JB_SIGFLAG 0
+#define JB_SIGFLAG_OFFSET 0
 #elif defined(__i386__)
-#define __JB_SIGFLAG 8
+#define JB_SIGFLAG_OFFSET 8
+#elif defined(__riscv)
+#define JB_SIGFLAG_OFFSET 0
 #elif defined(__x86_64)
-#define __JB_SIGFLAG 8
+#define JB_SIGFLAG_OFFSET 8
 #endif
 
 TEST_F(setjmp_DeathTest, setjmp_cookie) {
@@ -238,7 +242,7 @@
   int value = setjmp(jb);
   ASSERT_EQ(0, value);
 
-  long* sigflag = reinterpret_cast<long*>(jb) + __JB_SIGFLAG;
+  long* sigflag = reinterpret_cast<long*>(jb) + JB_SIGFLAG_OFFSET;
 
   // Make sure there's actually a cookie.
   EXPECT_NE(0, *sigflag & ~1);
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 5bda8b3..fa648d2 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -34,6 +34,13 @@
 
 using namespace std::chrono_literals;
 
+#if defined(ANDROID_HOST_MUSL)
+// Musl doesn't export __SIGRTMIN and __SIGRTMAX, #define
+// them here.
+#define __SIGRTMIN 32
+#define __SIGRTMAX 64
+#endif
+
 static int SIGNAL_MIN() {
   return 1; // Signals start at 1 (SIGHUP), not 0.
 }
@@ -816,9 +823,9 @@
 #endif
 
 TEST(signal, sigset_size) {
-  // The setjmp implementations assume that sigset_t can fit in a
-  // long. This is true because ARM and x86 have broken rt signal support,
-  // and AArch64 and x86_64 both have a SIGRTMAX defined as 64.
+  // The setjmp implementations assume that sigset_t can fit in a long.
+  // This is true because the 32-bit ABIs have broken rt signal support,
+  // but the 64-bit ABIs both have a SIGRTMAX defined as 64.
 #if defined(__BIONIC__)
   static_assert(sizeof(sigset_t) <= sizeof(long), "sigset_t doesn't fit in a long");
 #endif
diff --git a/tests/stdio_ext_test.cpp b/tests/stdio_ext_test.cpp
index fce600a..dce1a66 100644
--- a/tests/stdio_ext_test.cpp
+++ b/tests/stdio_ext_test.cpp
@@ -78,6 +78,24 @@
   fclose(fp);
 }
 
+TEST(stdio_ext, __freadahead) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "glibc doesn't have __freadahead";
+#else
+  FILE* fp = tmpfile();
+  ASSERT_NE(EOF, fputs("hello", fp));
+  rewind(fp);
+
+  ASSERT_EQ('h', fgetc(fp));
+  ASSERT_EQ(4u, __freadahead(fp));
+
+  ASSERT_EQ('H', ungetc('H', fp));
+  ASSERT_EQ(5u, __freadahead(fp));
+
+  fclose(fp);
+#endif
+}
+
 TEST(stdio_ext, __fpurge) {
   FILE* fp = tmpfile();
 
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 87031f6..acc7ccd 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -25,6 +25,7 @@
 #include <sys/cdefs.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
+#include <sys/sysinfo.h>
 #include <sys/types.h>
 #include <unistd.h>
 #include <wchar.h>
@@ -364,13 +365,13 @@
 
 TEST_F(STDIO_DEATHTEST, snprintf_n) {
 #if defined(__BIONIC__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wformat"
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat"
   // http://b/14492135 and http://b/31832608.
   char buf[32];
   int i = 1234;
   EXPECT_DEATH(snprintf(buf, sizeof(buf), "a %n b", &i), "%n not allowed on Android");
-#pragma GCC diagnostic pop
+#pragma clang diagnostic pop
 #else
   GTEST_SKIP() << "glibc does allow %n";
 #endif
@@ -489,22 +490,22 @@
 
   // NaN.
 
-  snprintf_fn(buf, sizeof(buf), fmt, nanf(""));
+  snprintf_fn(buf, sizeof(buf), fmt, nan(""));
   EXPECT_STREQ(nan_, buf) << fmt;
   EXPECT_EQ(1, sscanf_fn(buf, fmt, &f));
   EXPECT_TRUE(isnan(f));
 
-  snprintf_fn(buf, sizeof(buf), fmt, -nanf(""));
+  snprintf_fn(buf, sizeof(buf), fmt, -nan(""));
   EXPECT_STREQ(minus_nan, buf) << fmt;
   EXPECT_EQ(1, sscanf_fn(buf, fmt, &f));
   EXPECT_TRUE(isnan(f));
 
-  snprintf_fn(buf, sizeof(buf), fmt_plus, nanf(""));
+  snprintf_fn(buf, sizeof(buf), fmt_plus, nan(""));
   EXPECT_STREQ(plus_nan, buf) << fmt_plus;
   EXPECT_EQ(1, sscanf_fn(buf, fmt, &f));
   EXPECT_TRUE(isnan(f));
 
-  snprintf_fn(buf, sizeof(buf), fmt_plus, -nanf(""));
+  snprintf_fn(buf, sizeof(buf), fmt_plus, -nan(""));
   EXPECT_STREQ(minus_nan, buf) << fmt_plus;
   EXPECT_EQ(1, sscanf_fn(buf, fmt, &f));
   EXPECT_TRUE(isnan(f));
@@ -2938,3 +2939,245 @@
 
   fclose(fp);
 }
+
+#if defined(__LP64__)
+static int64_t GetTotalRamGiB() {
+  struct sysinfo si;
+  sysinfo(&si);
+  return (static_cast<int64_t>(si.totalram) * si.mem_unit) / 1024 / 1024 / 1024;
+}
+#endif
+
+TEST(STDIO_TEST, fread_int_overflow) {
+#if defined(__LP64__)
+  if (GetTotalRamGiB() <= 4) GTEST_SKIP() << "not enough memory";
+
+  const size_t too_big_for_an_int = 0x80000000ULL;
+  std::vector<char> buf(too_big_for_an_int);
+  std::unique_ptr<FILE, decltype(&fclose)> fp{fopen("/dev/zero", "re"), fclose};
+  ASSERT_EQ(too_big_for_an_int, fread(&buf[0], 1, too_big_for_an_int, fp.get()));
+#else
+  GTEST_SKIP() << "32-bit can't allocate 2GiB";
+#endif
+}
+
+TEST(STDIO_TEST, fwrite_int_overflow) {
+#if defined(__LP64__)
+  if (GetTotalRamGiB() <= 4) GTEST_SKIP() << "not enough memory";
+
+  const size_t too_big_for_an_int = 0x80000000ULL;
+  std::vector<char> buf(too_big_for_an_int);
+  std::unique_ptr<FILE, decltype(&fclose)> fp{fopen("/dev/null", "we"), fclose};
+  ASSERT_EQ(too_big_for_an_int, fwrite(&buf[0], 1, too_big_for_an_int, fp.get()));
+#else
+  GTEST_SKIP() << "32-bit can't allocate 2GiB";
+#endif
+}
+
+TEST(STDIO_TEST, snprintf_b) {
+  // Our clang doesn't know about %b/%B yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  char buf[BUFSIZ];
+  EXPECT_EQ(5, snprintf(buf, sizeof(buf), "<%b>", 5));
+  EXPECT_STREQ("<101>", buf);
+  EXPECT_EQ(10, snprintf(buf, sizeof(buf), "<%08b>", 5));
+  EXPECT_STREQ("<00000101>", buf);
+  EXPECT_EQ(34, snprintf(buf, sizeof(buf), "<%b>", 0xaaaaaaaa));
+  EXPECT_STREQ("<10101010101010101010101010101010>", buf);
+  EXPECT_EQ(36, snprintf(buf, sizeof(buf), "<%#b>", 0xaaaaaaaa));
+  EXPECT_STREQ("<0b10101010101010101010101010101010>", buf);
+  EXPECT_EQ(3, snprintf(buf, sizeof(buf), "<%#b>", 0));
+  EXPECT_STREQ("<0>", buf);
+#pragma clang diagnostic pop
+}
+
+TEST(STDIO_TEST, snprintf_B) {
+  // Our clang doesn't know about %b/%B yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  char buf[BUFSIZ];
+  EXPECT_EQ(5, snprintf(buf, sizeof(buf), "<%B>", 5));
+  EXPECT_STREQ("<101>", buf);
+  EXPECT_EQ(10, snprintf(buf, sizeof(buf), "<%08B>", 5));
+  EXPECT_STREQ("<00000101>", buf);
+  EXPECT_EQ(34, snprintf(buf, sizeof(buf), "<%B>", 0xaaaaaaaa));
+  EXPECT_STREQ("<10101010101010101010101010101010>", buf);
+  EXPECT_EQ(36, snprintf(buf, sizeof(buf), "<%#B>", 0xaaaaaaaa));
+  EXPECT_STREQ("<0B10101010101010101010101010101010>", buf);
+  EXPECT_EQ(3, snprintf(buf, sizeof(buf), "<%#B>", 0));
+  EXPECT_STREQ("<0>", buf);
+#pragma clang diagnostic pop
+}
+
+TEST(STDIO_TEST, swprintf_b) {
+  // Our clang doesn't know about %b/%B yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  wchar_t buf[BUFSIZ];
+  EXPECT_EQ(5, swprintf(buf, sizeof(buf), L"<%b>", 5));
+  EXPECT_EQ(std::wstring(L"<101>"), buf);
+  EXPECT_EQ(10, swprintf(buf, sizeof(buf), L"<%08b>", 5));
+  EXPECT_EQ(std::wstring(L"<00000101>"), buf);
+  EXPECT_EQ(34, swprintf(buf, sizeof(buf), L"<%b>", 0xaaaaaaaa));
+  EXPECT_EQ(std::wstring(L"<10101010101010101010101010101010>"), buf);
+  EXPECT_EQ(36, swprintf(buf, sizeof(buf), L"<%#b>", 0xaaaaaaaa));
+  EXPECT_EQ(std::wstring(L"<0b10101010101010101010101010101010>"), buf);
+  EXPECT_EQ(3, swprintf(buf, sizeof(buf), L"<%#b>", 0));
+  EXPECT_EQ(std::wstring(L"<0>"), buf);
+#pragma clang diagnostic pop
+}
+
+TEST(STDIO_TEST, swprintf_B) {
+  // Our clang doesn't know about %b/%B yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  wchar_t buf[BUFSIZ];
+  EXPECT_EQ(5, swprintf(buf, sizeof(buf), L"<%B>", 5));
+  EXPECT_EQ(std::wstring(L"<101>"), buf);
+  EXPECT_EQ(10, swprintf(buf, sizeof(buf), L"<%08B>", 5));
+  EXPECT_EQ(std::wstring(L"<00000101>"), buf);
+  EXPECT_EQ(34, swprintf(buf, sizeof(buf), L"<%B>", 0xaaaaaaaa));
+  EXPECT_EQ(std::wstring(L"<10101010101010101010101010101010>"), buf);
+  EXPECT_EQ(36, swprintf(buf, sizeof(buf), L"<%#B>", 0xaaaaaaaa));
+  EXPECT_EQ(std::wstring(L"<0B10101010101010101010101010101010>"), buf);
+  EXPECT_EQ(3, swprintf(buf, sizeof(buf), L"<%#B>", 0));
+  EXPECT_EQ(std::wstring(L"<0>"), buf);
+#pragma clang diagnostic pop
+}
+
+TEST(STDIO_TEST, scanf_i_decimal) {
+  int i;
+  EXPECT_EQ(1, sscanf("<123789>", "<%i>", &i));
+  EXPECT_EQ(123789, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, sscanf("1234567890abcdefg", "%lli%c", &lli, &ch));
+  EXPECT_EQ(1234567890, lli);
+  EXPECT_EQ('a', ch);
+}
+
+TEST(STDIO_TEST, scanf_i_hex) {
+  int i;
+  EXPECT_EQ(1, sscanf("<0x123abf>", "<%i>", &i));
+  EXPECT_EQ(0x123abf, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, sscanf("0x1234567890abcdefg", "%lli%c", &lli, &ch));
+  EXPECT_EQ(0x1234567890abcdefLL, lli);
+  EXPECT_EQ('g', ch);
+}
+
+TEST(STDIO_TEST, scanf_i_octal) {
+  int i;
+  EXPECT_EQ(1, sscanf("<01234567>", "<%i>", &i));
+  EXPECT_EQ(01234567, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, sscanf("010234567890abcdefg", "%lli%c", &lli, &ch));
+  EXPECT_EQ(010234567, lli);
+  EXPECT_EQ('8', ch);
+}
+
+TEST(STDIO_TEST, scanf_i_binary) {
+  int i;
+  EXPECT_EQ(1, sscanf("<0b101>", "<%i>", &i));
+  EXPECT_EQ(0b101, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, sscanf("0b10234567890abcdefg", "%lli%c", &lli, &ch));
+  EXPECT_EQ(0b10, lli);
+  EXPECT_EQ('2', ch);
+}
+
+TEST(STDIO_TEST, wscanf_i_decimal) {
+  int i;
+  EXPECT_EQ(1, swscanf(L"<123789>", L"<%i>", &i));
+  EXPECT_EQ(123789, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, swscanf(L"1234567890abcdefg", L"%lli%c", &lli, &ch));
+  EXPECT_EQ(1234567890, lli);
+  EXPECT_EQ('a', ch);
+}
+
+TEST(STDIO_TEST, wscanf_i_hex) {
+  int i;
+  EXPECT_EQ(1, swscanf(L"<0x123abf>", L"<%i>", &i));
+  EXPECT_EQ(0x123abf, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, swscanf(L"0x1234567890abcdefg", L"%lli%c", &lli, &ch));
+  EXPECT_EQ(0x1234567890abcdefLL, lli);
+  EXPECT_EQ('g', ch);
+}
+
+TEST(STDIO_TEST, wscanf_i_octal) {
+  int i;
+  EXPECT_EQ(1, swscanf(L"<01234567>", L"<%i>", &i));
+  EXPECT_EQ(01234567, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, swscanf(L"010234567890abcdefg", L"%lli%c", &lli, &ch));
+  EXPECT_EQ(010234567, lli);
+  EXPECT_EQ('8', ch);
+}
+
+TEST(STDIO_TEST, wscanf_i_binary) {
+  int i;
+  EXPECT_EQ(1, swscanf(L"<0b101>", L"<%i>", &i));
+  EXPECT_EQ(0b101, i);
+
+  long long int lli;
+  char ch;
+  EXPECT_EQ(2, swscanf(L"0b10234567890abcdefg", L"%lli%c", &lli, &ch));
+  EXPECT_EQ(0b10, lli);
+  EXPECT_EQ('2', ch);
+}
+
+TEST(STDIO_TEST, scanf_b) {
+  // Our clang doesn't know about %b yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat"
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  int i;
+  char ch;
+  EXPECT_EQ(2, sscanf("<1012>", "<%b%c>", &i, &ch));
+  EXPECT_EQ(0b101, i);
+  EXPECT_EQ('2', ch);
+  EXPECT_EQ(1, sscanf("<00000101>", "<%08b>", &i));
+  EXPECT_EQ(0b00000101, i);
+  EXPECT_EQ(1, sscanf("<0b1010>", "<%b>", &i));
+  EXPECT_EQ(0b1010, i);
+  EXPECT_EQ(2, sscanf("-0b", "%i%c", &i, &ch));
+  EXPECT_EQ(0, i);
+  EXPECT_EQ('b', ch);
+#pragma clang diagnostic pop
+}
+
+TEST(STDIO_TEST, swscanf_b) {
+  // Our clang doesn't know about %b yet.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat"
+#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
+  int i;
+  char ch;
+  EXPECT_EQ(2, swscanf(L"<1012>", L"<%b%c>", &i, &ch));
+  EXPECT_EQ(0b101, i);
+  EXPECT_EQ('2', ch);
+  EXPECT_EQ(1, swscanf(L"<00000101>", L"<%08b>", &i));
+  EXPECT_EQ(0b00000101, i);
+  EXPECT_EQ(1, swscanf(L"<0b1010>", L"<%b>", &i));
+  EXPECT_EQ(0b1010, i);
+  EXPECT_EQ(2, swscanf(L"-0b", L"%i%c", &i, &ch));
+  EXPECT_EQ(0, i);
+  EXPECT_EQ('b', ch);
+#pragma clang diagnostic pop
+}
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index 465e61a..45169e3 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -494,7 +494,10 @@
 TEST(stdlib, system_NULL) {
   // "The system() function shall always return non-zero when command is NULL."
   // http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   ASSERT_NE(0, system(nullptr));
+#pragma clang diagnostic pop
 }
 
 // https://austingroupbugs.net/view.php?id=1440
@@ -843,11 +846,19 @@
   ASSERT_EQ(T(-123), fn("-123", &end_p, 10));
   ASSERT_EQ(T(123), fn("+123", &end_p, 10));
 
+  // If we see "0b" *not* followed by a binary digit, we shouldn't swallow the 'b'.
+  ASSERT_EQ(T(0), fn("0b", &end_p, 2));
+  ASSERT_EQ('b', *end_p);
+
+  // Binary (the "0b" prefix) is case-insensitive.
+  ASSERT_EQ(T(0b101), fn("0b101", &end_p, 0));
+  ASSERT_EQ(T(0b101), fn("0B101", &end_p, 0));
+
   // If we see "0x" *not* followed by a hex digit, we shouldn't swallow the 'x'.
   ASSERT_EQ(T(0), fn("0xy", &end_p, 16));
   ASSERT_EQ('x', *end_p);
 
-  // Hexadecimal (both the 0x and the digits) is case-insensitive.
+  // Hexadecimal (both the "0x" prefix and the digits) is case-insensitive.
   ASSERT_EQ(T(0xab), fn("0xab", &end_p, 0));
   ASSERT_EQ(T(0xab), fn("0Xab", &end_p, 0));
   ASSERT_EQ(T(0xab), fn("0xAB", &end_p, 0));
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 8d3fb68..38957e2 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -136,7 +136,7 @@
   // A real-time signal.
   ASSERT_STREQ("Real-time signal 14", strsignal(SIGRTMIN + 14));
   // One of the signals the C library keeps to itself.
-  ASSERT_STREQ("Unknown signal 32", strsignal(__SIGRTMIN));
+  ASSERT_STREQ("Unknown signal 32", strsignal(32));  // __SIGRTMIN
 
   // Errors.
   ASSERT_STREQ("Unknown signal -1", strsignal(-1)); // Too small.
@@ -1673,3 +1673,15 @@
   ASSERT_EQ(nullptr, memccpy(dst, "hello world", ' ', 4));
   ASSERT_STREQ("hell", dst);
 }
+
+TEST(STRING_TEST, memset_explicit_smoke) {
+#if defined(__BIONIC__)
+  // We can't reliably test that the compiler won't optimize out calls to
+  // memset_explicit(), but we can at least check that it behaves like memset.
+  char buf[32];
+  memset_explicit(buf, 'x', sizeof(buf));
+  ASSERT_TRUE(memcmp(buf, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", sizeof(buf)) == 0);
+#else
+  GTEST_SKIP() << "memset_explicit not available";
+#endif
+}
diff --git a/tests/struct_layout_test.cpp b/tests/struct_layout_test.cpp
index 0123ed9..10c100a 100644
--- a/tests/struct_layout_test.cpp
+++ b/tests/struct_layout_test.cpp
@@ -30,7 +30,7 @@
 #define CHECK_OFFSET(name, field, offset) \
     check_offset(#name, #field, offsetof(name, field), offset);
 #ifdef __LP64__
-  CHECK_SIZE(pthread_internal_t, 776);
+  CHECK_SIZE(pthread_internal_t, 784);
   CHECK_OFFSET(pthread_internal_t, next, 0);
   CHECK_OFFSET(pthread_internal_t, prev, 8);
   CHECK_OFFSET(pthread_internal_t, tid, 16);
@@ -55,6 +55,7 @@
   CHECK_OFFSET(pthread_internal_t, dlerror_buffer, 248);
   CHECK_OFFSET(pthread_internal_t, bionic_tls, 760);
   CHECK_OFFSET(pthread_internal_t, errno_value, 768);
+  CHECK_OFFSET(pthread_internal_t, vfork_child_stack_bottom, 776);
   CHECK_SIZE(bionic_tls, 12200);
   CHECK_OFFSET(bionic_tls, key_data, 0);
   CHECK_OFFSET(bionic_tls, locale, 2080);
@@ -72,7 +73,7 @@
   CHECK_OFFSET(bionic_tls, bionic_systrace_disabled, 12193);
   CHECK_OFFSET(bionic_tls, padding, 12194);
 #else
-  CHECK_SIZE(pthread_internal_t, 668);
+  CHECK_SIZE(pthread_internal_t, 672);
   CHECK_OFFSET(pthread_internal_t, next, 0);
   CHECK_OFFSET(pthread_internal_t, prev, 4);
   CHECK_OFFSET(pthread_internal_t, tid, 8);
@@ -97,6 +98,7 @@
   CHECK_OFFSET(pthread_internal_t, dlerror_buffer, 148);
   CHECK_OFFSET(pthread_internal_t, bionic_tls, 660);
   CHECK_OFFSET(pthread_internal_t, errno_value, 664);
+  CHECK_OFFSET(pthread_internal_t, vfork_child_stack_bottom, 668);
   CHECK_SIZE(bionic_tls, 11080);
   CHECK_OFFSET(bionic_tls, key_data, 0);
   CHECK_OFFSET(bionic_tls, locale, 1040);
diff --git a/tests/sys_ptrace_test.cpp b/tests/sys_ptrace_test.cpp
index a079ead..b8c1537 100644
--- a/tests/sys_ptrace_test.cpp
+++ b/tests/sys_ptrace_test.cpp
@@ -257,6 +257,9 @@
   asm volatile("stm %0, { r0, r1, r2, r3 }" : : "r"(&data));
 #elif defined(__aarch64__)
   asm volatile("stp x0, x1, %0" : : "m"(data));
+#elif defined(__riscv)
+  UNUSED(data);
+  GTEST_LOG_(INFO) << "missing riscv64 instruction to store > 64 bits in one instruction";
 #endif
 }
 
diff --git a/tests/sys_resource_test.cpp b/tests/sys_resource_test.cpp
index 0247fcb..492fabd 100644
--- a/tests/sys_resource_test.cpp
+++ b/tests/sys_resource_test.cpp
@@ -26,6 +26,7 @@
   ASSERT_NE(sizeof(rlimit), sizeof(rlimit64));
   ASSERT_EQ(4U, sizeof(rlim_t));
 #endif
+  ASSERT_EQ(8U, sizeof(rlim64_t));
 }
 
 class SysResourceTest : public ::testing::Test {
diff --git a/tests/sys_sysinfo_test.cpp b/tests/sys_sysinfo_test.cpp
index cca2f44..69656ad 100644
--- a/tests/sys_sysinfo_test.cpp
+++ b/tests/sys_sysinfo_test.cpp
@@ -43,7 +43,7 @@
   memset(&si, 0, sizeof(si));
   ASSERT_EQ(0, sysinfo(&si));
 
-  ASSERT_GT(si.uptime, 10);  // You're not running CTS within 10s of booting!
+  ASSERT_GT(static_cast<long>(si.uptime), 10);  // You're not running CTS within 10s of booting!
   ASSERT_GT(uint64_t(si.totalram) * si.mem_unit, uint64_t(512 * 1024 * 1024));
   ASSERT_GE(si.totalram, si.freeram);
   ASSERT_GE(si.totalswap, si.freeswap);
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 5fc4cad..f0ad937 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -84,6 +84,16 @@
   ASSERT_EQ(1970, broken_down->tm_year + 1900);
 }
 
+TEST(time, mktime_TZ_as_UTC_and_offset) {
+  struct tm tm = {.tm_year = 70, .tm_mon = 0, .tm_mday = 1};
+
+  // This TZ value is not a valid Olson ID and is not present in tzdata file,
+  // but is a valid TZ string according to POSIX standard.
+  setenv("TZ", "UTC+08:00:00", 1);
+  tzset();
+  ASSERT_EQ(static_cast<time_t>(8 * 60 * 60), mktime(&tm));
+}
+
 static void* gmtime_no_stack_overflow_14313703_fn(void*) {
   const char* original_tz = getenv("TZ");
   // Ensure we'll actually have to enter tzload by using a time zone that doesn't exist.
@@ -134,15 +144,11 @@
 }
 
 TEST(time, mktime_10310929) {
-  struct tm t;
-  memset(&t, 0, sizeof(tm));
-  t.tm_year = 200;
-  t.tm_mon = 2;
-  t.tm_mday = 10;
+  struct tm tm = {.tm_year = 2100 - 1900, .tm_mon = 2, .tm_mday = 10};
 
 #if !defined(__LP64__)
   // 32-bit bionic has a signed 32-bit time_t.
-  ASSERT_EQ(-1, mktime(&t));
+  ASSERT_EQ(-1, mktime(&tm));
   ASSERT_EQ(EOVERFLOW, errno);
 #else
   // Everyone else should be using a signed 64-bit time_t.
@@ -151,13 +157,12 @@
   setenv("TZ", "America/Los_Angeles", 1);
   tzset();
   errno = 0;
-  ASSERT_EQ(static_cast<time_t>(4108348800U), mktime(&t));
-  ASSERT_EQ(0, errno);
 
-  setenv("TZ", "UTC", 1);
-  tzset();
-  errno = 0;
-  ASSERT_EQ(static_cast<time_t>(4108320000U), mktime(&t));
+  // On the date/time specified by tm America/Los_Angeles
+  // follows DST. But tm_isdst is set to 0, which forces
+  // mktime to interpret that time as local standard, hence offset
+  // is 8 hours, not 7.
+  ASSERT_EQ(static_cast<time_t>(4108348800U), mktime(&tm));
   ASSERT_EQ(0, errno);
 #endif
 }
@@ -184,6 +189,43 @@
   ASSERT_EQ(EOVERFLOW, errno);
 }
 
+TEST(time, mktime_invalid_tm_TZ_combination) {
+  setenv("TZ", "UTC", 1);
+
+  struct tm t;
+  memset(&t, 0, sizeof(tm));
+  t.tm_year = 2022 - 1900;
+  t.tm_mon = 11;
+  t.tm_mday = 31;
+  // UTC does not observe DST
+  t.tm_isdst = 1;
+
+  errno = 0;
+
+  EXPECT_EQ(static_cast<time_t>(-1), mktime(&t));
+  // mktime sets errno to EOVERFLOW if result is unrepresentable.
+  EXPECT_EQ(EOVERFLOW, errno);
+}
+
+// Transitions in the tzdata file are generated up to the year 2100. Testing
+// that dates beyond that are handled properly too.
+TEST(time, mktime_after_2100) {
+  struct tm tm = {.tm_year = 2150 - 1900, .tm_mon = 2, .tm_mday = 10, .tm_isdst = -1};
+
+#if !defined(__LP64__)
+  // 32-bit bionic has a signed 32-bit time_t.
+  ASSERT_EQ(-1, mktime(&tm));
+  ASSERT_EQ(EOVERFLOW, errno);
+#else
+  setenv("TZ", "Europe/London", 1);
+  tzset();
+  errno = 0;
+
+  ASSERT_EQ(static_cast<time_t>(5686156800U), mktime(&tm));
+  ASSERT_EQ(0, errno);
+#endif
+}
+
 TEST(time, strftime) {
   setenv("TZ", "UTC", 1);
 
@@ -206,7 +248,25 @@
   EXPECT_STREQ("Sun Mar 10 00:00:00 2100", buf);
 }
 
-TEST(time, strftime_null_tm_zone) {
+TEST(time, strftime_second_before_epoch) {
+  setenv("TZ", "UTC", 1);
+
+  struct tm t;
+  memset(&t, 0, sizeof(tm));
+  t.tm_year = 1969 - 1900;
+  t.tm_mon = 11;
+  t.tm_mday = 31;
+  t.tm_hour = 23;
+  t.tm_min = 59;
+  t.tm_sec = 59;
+
+  char buf[64];
+
+  EXPECT_EQ(2U, strftime(buf, sizeof(buf), "%s", &t));
+  EXPECT_STREQ("-1", buf);
+}
+
+TEST(time, strftime_Z_null_tm_zone) {
   // Netflix on Nexus Player wouldn't start (http://b/25170306).
   struct tm t;
   memset(&t, 0, sizeof(tm));
@@ -244,6 +304,86 @@
 #endif
 }
 
+// According to C language specification the only tm struct field needed to
+// find out replacement for %z and %Z in strftime is tm_isdst. Which is
+// wrong, as time zones change their standard offset and even DST savings.
+// tzcode deviates from C language specification and requires tm struct either
+// to be output of localtime-like functions or to be modified by mktime call
+// before passing to strftime. See tz mailing discussion for more details
+// https://mm.icann.org/pipermail/tz/2022-July/031674.html
+// But we are testing case when tm.tm_zone is null, which means that tm struct
+// is not coming from localtime and is neither modified by mktime. That's why
+// we are comparing against +0000, even though America/Los_Angeles never
+// observes it.
+TEST(time, strftime_z_null_tm_zone) {
+  char str[64];
+  struct tm tm = {.tm_year = 109, .tm_mon = 4, .tm_mday = 2, .tm_isdst = 0};
+
+  setenv("TZ", "America/Los_Angeles", 1);
+  tzset();
+
+  tm.tm_zone = NULL;
+
+  size_t result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0000", str);
+
+  tm.tm_isdst = 1;
+
+  result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0000", str);
+
+  setenv("TZ", "UTC", 1);
+  tzset();
+
+  tm.tm_isdst = 0;
+
+  result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0000", str);
+
+  tm.tm_isdst = 1;
+
+  result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0000", str);
+}
+
+TEST(time, strftime_z_Europe_Lisbon) {
+  char str[64];
+  // During 1992-1996 Europe/Lisbon standard offset was 1 hour.
+  // tm_isdst is not set as it will be overridden by mktime call anyway.
+  struct tm tm = {.tm_year = 1996 - 1900, .tm_mon = 2, .tm_mday = 13};
+
+  setenv("TZ", "Europe/Lisbon", 1);
+  tzset();
+
+  // tzcode's strftime implementation for %z relies on prior mktime call.
+  // At the moment of writing %z value is taken from tm_gmtoff. So without
+  // mktime call %z is replaced with +0000.
+  // See https://mm.icann.org/pipermail/tz/2022-July/031674.html
+  mktime(&tm);
+
+  size_t result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0100", str);
+
+  // Now standard offset is 0.
+  tm = {.tm_year = 2022 - 1900, .tm_mon = 2, .tm_mday = 13};
+
+  mktime(&tm);
+  result = strftime(str, sizeof(str), "%z", &tm);
+
+  EXPECT_EQ(5U, result);
+  EXPECT_STREQ("+0000", str);
+}
+
 TEST(time, strftime_l) {
   locale_t cloc = newlocale(LC_ALL, "C.UTF-8", nullptr);
   locale_t old_locale = uselocale(cloc);
@@ -858,6 +998,10 @@
   ASSERT_EQ(-1, ts.tv_sec);
 }
 
+TEST(time, clock_getres_null_resolution) {
+  ASSERT_EQ(0, clock_getres(CLOCK_REALTIME, nullptr));
+}
+
 TEST(time, clock) {
   // clock(3) is hard to test, but a 1s sleep should cost less than 10ms on average.
   static const clock_t N = 5;
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 6d7e687..2a36460 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -294,10 +294,13 @@
 }
 
 TEST(UNISTD_TEST, setenv_EINVAL) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   EXPECT_EQ(-1, setenv(nullptr, "value", 0));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, setenv(nullptr, "value", 1));
   EXPECT_EQ(EINVAL, errno);
+#pragma clang diagnostic pop
   EXPECT_EQ(-1, setenv("", "value", 0));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, setenv("", "value", 1));
@@ -1103,6 +1106,10 @@
   ASSERT_EQ(4, GetCpuCountFromString("0, 1-2, 4\n"));
 }
 
+TEST(UNISTD_TEST, sysconf_SC_NPROCESSORS_make_sense) {
+  ASSERT_LE(sysconf(_SC_NPROCESSORS_ONLN), sysconf(_SC_NPROCESSORS_CONF));
+}
+
 TEST(UNISTD_TEST, sysconf_SC_NPROCESSORS_ONLN) {
   std::string line;
   ASSERT_TRUE(android::base::ReadFileToString("/sys/devices/system/cpu/online", &line));
@@ -1648,3 +1655,41 @@
   auto t1 = std::chrono::steady_clock::now();
   ASSERT_GE(t1-t0, 1s);
 }
+
+TEST(UNISTD_TEST, close_range) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "glibc too old";
+#elif defined(ANDROID_HOST_MUSL)
+  GTEST_SKIP() << "musl does not have close_range";
+#else   // __GLIBC__
+  int fd = open("/proc/version", O_RDONLY);
+  ASSERT_GE(fd, 0);
+
+  // Try to close the file descriptor (this requires a 5.9+ kernel)
+  if (close_range(fd, fd, 0) == 0) {
+    // we can't close it *again*
+    ASSERT_EQ(close(fd), -1);
+    ASSERT_EQ(errno, EBADF);
+  } else {
+    ASSERT_EQ(errno, ENOSYS);
+    // since close_range() failed, we can close it normally
+    ASSERT_EQ(close(fd), 0);
+  }
+#endif  // __GLIBC__
+}
+
+TEST(UNISTD_TEST, copy_file_range) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "glibc too old";
+#else   // __GLIBC__
+  TemporaryFile tf;
+  ASSERT_TRUE(android::base::WriteStringToFd("hello world", tf.fd));
+  ASSERT_EQ(0, lseek(tf.fd, SEEK_SET, 0));
+  TemporaryFile tf2;
+  ASSERT_EQ(11, copy_file_range(tf.fd, NULL, tf2.fd, NULL, 11, 0));
+  ASSERT_EQ(0, lseek(tf2.fd, SEEK_SET, 0));
+  std::string content;
+  ASSERT_TRUE(android::base::ReadFdToString(tf2.fd, &content));
+  ASSERT_EQ("hello world", content);
+#endif  // __GLIBC__
+}
diff --git a/tests/utils.cpp b/tests/utils.cpp
new file mode 100644
index 0000000..92ab145
--- /dev/null
+++ b/tests/utils.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "utils.h"
+
+#include <string>
+
+#include <android-base/properties.h>
+
+void RunGwpAsanTest(const char* test_name) {
+  ExecTestHelper eh;
+  eh.SetEnv({"GWP_ASAN_SAMPLE_RATE=1", "GWP_ASAN_PROCESS_SAMPLING=1", "GWP_ASAN_MAX_ALLOCS=40000",
+             nullptr});
+  std::string filter_arg = "--gtest_filter=";
+  filter_arg += test_name;
+  std::string exec(testing::internal::GetArgvs()[0]);
+  eh.SetArgs({exec.c_str(), "--gtest_also_run_disabled_tests", filter_arg.c_str(), nullptr});
+  eh.Run([&]() { execve(exec.c_str(), eh.GetArgs(), eh.GetEnv()); },
+         /* expected_exit_status */ 0,
+         // |expected_output_regex|, ensure at least one test ran:
+         R"(\[  PASSED  \] [1-9][0-9]* test)");
+}
+
+void RunSubtestNoEnv(const char* test_name) {
+  ExecTestHelper eh;
+  std::string filter_arg = "--gtest_filter=";
+  filter_arg += test_name;
+  std::string exec(testing::internal::GetArgvs()[0]);
+  eh.SetArgs({exec.c_str(), "--gtest_also_run_disabled_tests", filter_arg.c_str(), nullptr});
+  eh.Run([&]() { execve(exec.c_str(), eh.GetArgs(), eh.GetEnv()); },
+         /* expected_exit_status */ 0,
+         // |expected_output_regex|, ensure at least one test ran:
+         R"(\[  PASSED  \] [1-9]+0? test)");
+}
+
+bool IsLowRamDevice() {
+  return android::base::GetBoolProperty("ro.config.low_ram", false) ||
+         (android::base::GetBoolProperty("ro.debuggable", false) &&
+          android::base::GetBoolProperty("debug.force_low_ram", false));
+}
diff --git a/tests/utils.h b/tests/utils.h
index 72214c2..2e00cc1 100644
--- a/tests/utils.h
+++ b/tests/utils.h
@@ -19,6 +19,7 @@
 #include <dirent.h>
 #include <dlfcn.h>
 #include <fcntl.h>
+#include <gtest/gtest.h>
 #include <inttypes.h>
 #include <sys/mman.h>
 #include <sys/prctl.h>
@@ -264,6 +265,7 @@
 };
 
 void RunGwpAsanTest(const char* test_name);
+void RunSubtestNoEnv(const char* test_name);
 #endif
 
 class FdLeakChecker {
@@ -311,3 +313,5 @@
   return false;
 #endif
 }
+
+bool IsLowRamDevice();
diff --git a/tests/utmp_test.cpp b/tests/utmp_test.cpp
index 6d0d6f1..b024818 100644
--- a/tests/utmp_test.cpp
+++ b/tests/utmp_test.cpp
@@ -29,5 +29,6 @@
   setutent();
   ASSERT_EQ(NULL, getutent());
   endutent();
-  ASSERT_EQ(NULL, pututline(NULL));
+  utmp failure = {.ut_type = EMPTY};
+  ASSERT_EQ(NULL, pututline(&failure));
 }
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index 85a75ec..16d4348 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -460,6 +460,7 @@
   TestSingleWcsToInt(fn, L"   123 45", 0, static_cast<T>(123), 6);
   TestSingleWcsToInt(fn, L"  -123", 0, static_cast<T>(-123), 6);
   TestSingleWcsToInt(fn, L"0x10000", 0, static_cast<T>(65536), 7);
+  TestSingleWcsToInt(fn, L"0b1011", 0, static_cast<T>(0b1011), 6);
 }
 
 template <typename T>
diff --git a/tools/Android.bp b/tools/Android.bp
index dcd2a7d..d3ca28a 100644
--- a/tools/Android.bp
+++ b/tools/Android.bp
@@ -15,7 +15,7 @@
 
 subdirs = ["*"]
 
-filegroup {
-    name: "bionic-generate-version-script",
+python_binary_host {
+    name: "generate-version-script",
     srcs: ["generate-version-script.py"],
 }
diff --git a/tools/generate-version-script.py b/tools/generate-version-script.py
index def621e..fab46b9 100755
--- a/tools/generate-version-script.py
+++ b/tools/generate-version-script.py
@@ -8,7 +8,7 @@
 import sys
 
 def has_arch_tags(tags):
-  for arch in ["arm", "arm64", "x86", "x86_64"]:
+  for arch in ["arm", "arm64", "riscv64", "x86", "x86_64"]:
     if arch in tags:
       return True
   return False
diff --git a/tools/versioner/src/Arch.cpp b/tools/versioner/src/Arch.cpp
index 3a27a6e..d4d0208 100644
--- a/tools/versioner/src/Arch.cpp
+++ b/tools/versioner/src/Arch.cpp
@@ -28,6 +28,9 @@
     case Arch::arm64:
       return "arm64";
 
+    case Arch::riscv64:
+      return "riscv64";
+
     case Arch::x86:
       return "x86";
 
@@ -41,6 +44,7 @@
 static const std::unordered_map<std::string, Arch> arch_name_map{
   {"arm", Arch::arm},
   {"arm64", Arch::arm64},
+  {"riscv64", Arch::riscv64},
   {"x86", Arch::x86},
   {"x86_64", Arch::x86_64},
 };
diff --git a/tools/versioner/src/Arch.h b/tools/versioner/src/Arch.h
index 74d0f8f..fd98abc 100644
--- a/tools/versioner/src/Arch.h
+++ b/tools/versioner/src/Arch.h
@@ -28,6 +28,7 @@
 enum class Arch : size_t {
   arm = 0,
   arm64,
+  riscv64,
   x86,
   x86_64,
 };
@@ -121,6 +122,7 @@
 static const std::set<Arch> supported_archs = {
   Arch::arm,
   Arch::arm64,
+  Arch::riscv64,
   Arch::x86,
   Arch::x86_64,
 };
@@ -128,17 +130,19 @@
 static ArchMap<std::string> arch_targets = {
   { Arch::arm, "arm-linux-androideabi" },
   { Arch::arm64, "aarch64-linux-android" },
+  { Arch::riscv64, "riscv64-linux-android" },
   { Arch::x86, "i686-linux-android" },
   { Arch::x86_64, "x86_64-linux-android" },
 };
 
 static const std::set<int> default_levels = {
-  14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30,
+  14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34,
 };
 
 static const ArchMap<int> arch_min_api = {
   { Arch::arm, 9 },
   { Arch::arm64, 21 },
+  { Arch::riscv64, 10000 },
   { Arch::x86, 9 },
   { Arch::x86_64, 21 },
 };
@@ -160,4 +164,7 @@
   {"P", 28},
   {"Q", 29},
   {"R", 30},
+  {"S", 31},
+  {"T", 33},
+  {"U", 34},
 };
diff --git a/tools/versioner/src/DeclarationDatabase.cpp b/tools/versioner/src/DeclarationDatabase.cpp
index ec2e38d..a029c3b 100644
--- a/tools/versioner/src/DeclarationDatabase.cpp
+++ b/tools/versioner/src/DeclarationDatabase.cpp
@@ -170,6 +170,7 @@
               &arch_availability[Arch::x86].introduced } },
           { "introduced_in_64",
             { &arch_availability[Arch::arm64].introduced,
+              &arch_availability[Arch::riscv64].introduced,
               &arch_availability[Arch::x86_64].introduced } },
         };
 
diff --git a/tools/versioner/src/Preprocessor.cpp b/tools/versioner/src/Preprocessor.cpp
index eb88c46..14f80d8 100644
--- a/tools/versioner/src/Preprocessor.cpp
+++ b/tools/versioner/src/Preprocessor.cpp
@@ -141,11 +141,12 @@
   static const std::vector<std::pair<std::string, std::set<Arch>>> arch_sets = {
     { "", supported_archs },
     { "!defined(__LP64__)", { Arch::arm, Arch::x86 } },
-    { "defined(__LP64__)", { Arch::arm64, Arch::x86_64 } },
+    { "defined(__LP64__)", { Arch::arm64, Arch::riscv64, Arch::x86_64 } },
   };
   std::map<Arch, std::string> individual_archs = {
     { Arch::arm, "defined(__arm__)" },
     { Arch::arm64, "defined(__aarch64__)" },
+    { Arch::riscv64, "defined(__riscv)" },
     { Arch::x86, "defined(__i386__)" },
     { Arch::x86_64, "defined(__x86_64__)" },
   };
diff --git a/tools/versioner/src/versioner.h b/tools/versioner/src/versioner.h
index e9c4989..225e14b 100644
--- a/tools/versioner/src/versioner.h
+++ b/tools/versioner/src/versioner.h
@@ -39,5 +39,5 @@
   { "sys/_system_properties.h", supported_archs },
 
   // time64.h #errors when included on LP64 archs.
-  { "time64.h", { Arch::arm64, Arch::x86_64 } },
+  { "time64.h", { Arch::arm64, Arch::riscv64, Arch::x86_64 } },
 };
