Merge "Do not run heapprofd_initialize twice concurrently."
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index f7c8fd7..98bede5 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -2,4 +2,3 @@
notice = tools/update_notice.sh
seccomp = tools/update_seccomp.sh
syscalls = tools/update_syscalls.sh
-version_scripts = tools/update_version_scripts.sh
diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp
index 09654c8..9a68a12 100644
--- a/benchmarks/pthread_benchmark.cpp
+++ b/benchmarks/pthread_benchmark.cpp
@@ -100,7 +100,7 @@
struct PIMutex {
pthread_mutex_t mutex;
- PIMutex(int type) {
+ explicit PIMutex(int type) {
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, type);
diff --git a/libc/Android.bp b/libc/Android.bp
index 0098d07..964b64a 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -760,6 +760,7 @@
"arch-arm/generic/bionic/strcpy.S",
"arch-arm/generic/bionic/strlen.c",
+ "arch-arm/bionic/__aeabi_read_tp.S",
"arch-arm/bionic/atomics_arm.c",
"arch-arm/bionic/__bionic_clone.S",
"arch-arm/bionic/_exit_with_stack_teardown.S",
@@ -1198,6 +1199,7 @@
cc_library_static {
defaults: ["libc_defaults"],
srcs: [
+ "bionic/bionic_elf_tls.cpp",
"bionic/pthread_atfork.cpp",
"bionic/pthread_attr.cpp",
"bionic/pthread_barrier.cpp",
@@ -1429,7 +1431,12 @@
srcs: ["arch-x86/dynamic_function_dispatch.cpp"],
},
arm: {
- srcs: ["arch-arm/dynamic_function_dispatch.cpp"],
+ srcs: [
+ "arch-arm/dynamic_function_dispatch.cpp",
+
+ // Workaround for b/120254692.
+ "arch-arm/dynamic_function_wrapper.S",
+ ],
},
},
@@ -1571,12 +1578,11 @@
arch: {
arm: {
- //TODO: This is to work around b/24465209. Remove after root cause is fixed
+ // TODO: This is to work around b/24465209. Remove after root cause is fixed.
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.arm.map",
+ version_script: ":libc.arm.map",
shared: {
srcs: [":libc_sources_shared_arm"],
@@ -1588,35 +1594,64 @@
},
},
arm64: {
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.arm64.map",
- },
- mips: {
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.mips.map",
- },
- mips64: {
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.mips64.map",
+ version_script: ":libc.arm64.map",
},
x86: {
- //TODO: This is to work around b/24465209. Remove after root cause is fixed
+ // TODO: This is to work around b/24465209. Remove after root cause is fixed.
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.x86.map",
+ version_script: ":libc.x86.map",
},
x86_64: {
- // Don't re-export new/delete and friends, even if the compiler really wants to.
- version_script: "libc.x86_64.map",
+ version_script: ":libc.x86_64.map",
},
},
+
+ stubs: {
+ symbol_file: "libc.map.txt",
+ versions: ["10000"],
+ },
+
+ symbol_ordering_file: "symbol_ordering",
+}
+
+genrule {
+ 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)",
+}
+
+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)",
+}
+
+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)",
+}
+
+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)",
}
// ========================================================
-// libstdc++.so + libstdc++.a
+// libstdc++.so and libstdc++.a.
// ========================================================
+
cc_library {
defaults: ["libc_defaults"],
include_dirs: ["bionic/libstdc++/include"],
@@ -1639,30 +1674,61 @@
//TODO (dimitry): This is to work around b/24465209. Remove after root cause is fixed
arch: {
arm: {
+ // TODO: This is to work around b/24465209. Remove after root cause is fixed.
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- version_script: "libstdc++.arm.map",
+ version_script: ":libstdc++.arm.map",
},
arm64: {
- version_script: "libstdc++.arm64.map",
- },
- mips: {
- version_script: "libstdc++.mips.map",
- },
- mips64: {
- version_script: "libstdc++.mips64.map",
+ version_script: ":libstdc++.arm64.map",
},
x86: {
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- version_script: "libstdc++.x86.map",
+ version_script: ":libstdc++.x86.map",
},
x86_64: {
- version_script: "libstdc++.x86_64.map",
+ version_script: ":libstdc++.x86_64.map",
},
},
}
+genrule {
+ 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)",
+}
+
+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)",
+}
+
+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)",
+}
+
+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)",
+}
+
+// ========================================================
+// crt object files.
+// ========================================================
+
cc_defaults {
name: "crt_defaults",
defaults: ["linux_bionic_supported"],
@@ -1697,7 +1763,6 @@
stl: "none",
}
-// crt obj files
cc_object {
name: "crtbrand",
// crtbrand.c needs <stdint.h> and a #define for the platform SDK version.
@@ -1829,6 +1894,10 @@
defaults: ["crt_defaults"],
}
+// ========================================================
+// NDK headers.
+// ========================================================
+
versioned_ndk_headers {
name: "common_libc",
from: "include",
diff --git a/libc/NOTICE b/libc/NOTICE
index 40a5704..120c4fd 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -1068,6 +1068,34 @@
-------------------------------------------------------------------
+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) 1980, 1983, 1988, 1993
The Regents of the University of California. All rights reserved.
diff --git a/libc/arch-arm/bionic/__aeabi_read_tp.S b/libc/arch-arm/bionic/__aeabi_read_tp.S
new file mode 100644
index 0000000..f6f9757
--- /dev/null
+++ b/libc/arch-arm/bionic/__aeabi_read_tp.S
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 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>
+
+// For arm32 and -mtp=soft, the compiler uses this function to read the thread
+// pointer for ELF TLS accesses. With -mtp=cp15, the compiler inlines the call
+// instead. GCC defaults to -mtp=auto, which inlines this function with
+// -march=armv7-a. Clang does not yet implement -mtp=auto, and instead defaults
+// to -mtp=soft.
+// - https://bugs.llvm.org/show_bug.cgi?id=38394.
+// - https://reviews.llvm.org/D34878?id=114573.
+//
+// This function must preserve every register except r0, ip, lr, and cpsr.
+//
+// See "Run-time ABI for the ARM Architecture"
+// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.pdf
+//
+ENTRY(__aeabi_read_tp)
+ // __get_tls()
+ mrc p15, 0, r0, c13, c0, 3
+ bx lr
+END(__aeabi_read_tp)
diff --git a/libc/arch-arm/dynamic_function_dispatch.cpp b/libc/arch-arm/dynamic_function_dispatch.cpp
index 640f330..09fd8f3 100644
--- a/libc/arch-arm/dynamic_function_dispatch.cpp
+++ b/libc/arch-arm/dynamic_function_dispatch.cpp
@@ -89,11 +89,15 @@
return r0;
}
-#define DEFINE_IFUNC(name) \
- name##_func name __attribute__((ifunc(#name "_resolver"))); \
+#define DEFINE_IFUNC_WITH_SUFFIX(name, suffix) \
+ name##_func name##suffix __attribute__((ifunc(#name "_resolver"))); \
__attribute__((visibility("hidden"))) \
name##_func* name##_resolver()
+#define DEFINE_IFUNC(name) DEFINE_IFUNC_WITH_SUFFIX(name, )
+
+#define DEFINE_INTERNAL_IFUNC(name) DEFINE_IFUNC_WITH_SUFFIX(name, _internal)
+
#define DECLARE_FUNC(type, name) \
__attribute__((visibility("hidden"))) \
type name
@@ -287,7 +291,7 @@
}
typedef int strcmp_func(const char* __lhs, const char* __rhs);
-DEFINE_IFUNC(strcmp) {
+DEFINE_INTERNAL_IFUNC(strcmp) {
switch(get_cpu_variant()) {
case kCortexA9:
RETURN_FUNC(strcmp_func, strcmp_a9);
@@ -301,7 +305,7 @@
}
typedef size_t strlen_func(const char* __s);
-DEFINE_IFUNC(strlen) {
+DEFINE_INTERNAL_IFUNC(strlen) {
switch(get_cpu_variant()) {
case kCortexA9:
RETURN_FUNC(strlen_func, strlen_a9);
diff --git a/libc/arch-arm/dynamic_function_wrapper.S b/libc/arch-arm/dynamic_function_wrapper.S
new file mode 100644
index 0000000..1d2842b
--- /dev/null
+++ b/libc/arch-arm/dynamic_function_wrapper.S
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2018 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>
+
+#define FUNCTION_DELEGATE(name, impl) \
+ENTRY(name); \
+ b impl; \
+END(name)
+
+FUNCTION_DELEGATE(strcmp, strcmp_internal)
+FUNCTION_DELEGATE(strlen, strlen_internal)
diff --git a/libc/arch-arm/generic/bionic/memcmp.S b/libc/arch-arm/generic/bionic/memcmp.S
index e648720..9fd72e9 100644
--- a/libc/arch-arm/generic/bionic/memcmp.S
+++ b/libc/arch-arm/generic/bionic/memcmp.S
@@ -62,7 +62,7 @@
* Neon optimization
* Comparing 32 bytes at a time
*/
-#if defined(__ARM_NEON__) && defined(NEON_UNALIGNED_ACCESS)
+#if defined(__ARM_NEON__)
subs r2, r2, #32
blo 3f
diff --git a/libc/bionic/__libc_init_main_thread.cpp b/libc/bionic/__libc_init_main_thread.cpp
index 5abdc07..2b90c90 100644
--- a/libc/bionic/__libc_init_main_thread.cpp
+++ b/libc/bionic/__libc_init_main_thread.cpp
@@ -28,9 +28,12 @@
#include "libc_init_common.h"
+#include <async_safe/log.h>
+
#include "private/KernelArgumentBlock.h"
#include "private/bionic_arc4random.h"
#include "private/bionic_defs.h"
+#include "private/bionic_elf_tls.h"
#include "private/bionic_globals.h"
#include "private/bionic_ssp.h"
#include "pthread_internal.h"
@@ -43,11 +46,6 @@
static pthread_internal_t main_thread;
-__attribute__((no_sanitize("hwaddress")))
-pthread_internal_t* __get_main_thread() {
- return &main_thread;
-}
-
// Setup for the main thread. For dynamic executables, this is called by the
// linker _before_ libc is mapped in memory. This means that all writes to
// globals from this function will apply to linker-private copies and will not
@@ -69,35 +67,28 @@
// linker, the linker binary hasn't been relocated yet, so certain kinds of code
// are hazardous, such as accessing non-hidden global variables.
__BIONIC_WEAK_FOR_NATIVE_BRIDGE
-void __libc_init_main_thread_early(KernelArgumentBlock& args) {
+extern "C" void __libc_init_main_thread_early(const KernelArgumentBlock& args,
+ bionic_tcb* temp_tcb) {
__libc_shared_globals()->auxv = args.auxv;
#if defined(__i386__)
- __libc_init_sysinfo();
+ __libc_init_sysinfo(); // uses AT_SYSINFO auxv entry
#endif
- __set_tls(main_thread.tls);
- __init_tls(&main_thread);
+ __init_tcb(temp_tcb, &main_thread);
+ __set_tls(&temp_tcb->tls_slot(0));
main_thread.tid = __getpid();
main_thread.set_cached_pid(main_thread.tid);
}
// Finish initializing the main thread.
__BIONIC_WEAK_FOR_NATIVE_BRIDGE
-void __libc_init_main_thread_late() {
- main_thread.bionic_tls = __allocate_bionic_tls();
- if (main_thread.bionic_tls == nullptr) {
- // Avoid strerror because it might need bionic_tls.
- async_safe_fatal("failed to allocate bionic_tls: error %d", errno);
- }
+extern "C" void __libc_init_main_thread_late() {
+ __init_bionic_tls_ptrs(__get_bionic_tcb(), __allocate_temp_bionic_tls());
// Tell the kernel to clear our tid field when we exit, so we're like any other pthread.
+ // For threads created by pthread_create, this setup happens during the clone syscall (i.e.
+ // CLONE_CHILD_CLEARTID).
__set_tid_address(&main_thread.tid);
- // We don't want to free the main thread's stack even when the main thread exits
- // because things like environment variables with global scope live on it.
- // We also can't free the pthread_internal_t itself, since it is a static variable.
- // The main thread has no mmap allocated space for stack or pthread_internal_t.
- main_thread.mmap_size = 0;
-
pthread_attr_init(&main_thread.attr);
// We don't want to explicitly set the main thread's scheduler attributes (http://b/68328561).
pthread_attr_setinheritsched(&main_thread.attr, PTHREAD_INHERIT_SCHED);
@@ -110,9 +101,40 @@
// before we initialize the TLS. Dynamic executables will initialize their copy of the global
// stack protector from the one in the main thread's TLS.
__libc_safe_arc4random_buf(&__stack_chk_guard, sizeof(__stack_chk_guard));
- __init_tls_stack_guard(&main_thread);
+ __init_tcb_stack_guard(__get_bionic_tcb());
__init_thread(&main_thread);
__init_additional_stacks(&main_thread);
}
+
+// Once all ELF modules are loaded, allocate the final copy of the main thread's
+// static TLS memory.
+__BIONIC_WEAK_FOR_NATIVE_BRIDGE
+extern "C" void __libc_init_main_thread_final() {
+ bionic_tcb* temp_tcb = __get_bionic_tcb();
+ bionic_tls* temp_tls = &__get_bionic_tls();
+
+ // Allocate the main thread's static TLS. (This mapping doesn't include a
+ // stack.)
+ ThreadMapping mapping = __allocate_thread_mapping(0, PTHREAD_GUARD_SIZE);
+ if (mapping.mmap_base == nullptr) {
+ async_safe_fatal("failed to mmap main thread static TLS: %s", strerror(errno));
+ }
+
+ const StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+ auto new_tcb = reinterpret_cast<bionic_tcb*>(mapping.static_tls + layout.offset_bionic_tcb());
+ auto new_tls = reinterpret_cast<bionic_tls*>(mapping.static_tls + layout.offset_bionic_tls());
+
+ new_tcb->copy_from_bootstrap(temp_tcb);
+ new_tls->copy_from_bootstrap(temp_tls);
+ __init_tcb(new_tcb, &main_thread);
+ __init_bionic_tls_ptrs(new_tcb, new_tls);
+
+ main_thread.mmap_base = mapping.mmap_base;
+ main_thread.mmap_size = mapping.mmap_size;
+
+ __set_tls(&new_tcb->tls_slot(0));
+
+ __free_temp_bionic_tls(temp_tls);
+}
diff --git a/libc/bionic/bionic_elf_tls.cpp b/libc/bionic/bionic_elf_tls.cpp
new file mode 100644
index 0000000..55c2c31
--- /dev/null
+++ b/libc/bionic/bionic_elf_tls.cpp
@@ -0,0 +1,64 @@
+/*
+ * 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_elf_tls.h"
+
+#include <sys/param.h>
+
+#include "private/bionic_macros.h"
+#include "private/bionic_tls.h"
+
+void StaticTlsLayout::reserve_tcb() {
+ offset_bionic_tcb_ = reserve_type<bionic_tcb>();
+}
+
+void StaticTlsLayout::reserve_bionic_tls() {
+ offset_bionic_tls_ = reserve_type<bionic_tls>();
+}
+
+void StaticTlsLayout::finish_layout() {
+ // Round the offset up to the alignment.
+ offset_ = round_up_with_overflow_check(offset_, alignment_);
+}
+
+// The size is not required to be a multiple of the alignment. The alignment
+// must be a positive power-of-two.
+size_t StaticTlsLayout::reserve(size_t size, size_t alignment) {
+ offset_ = round_up_with_overflow_check(offset_, alignment);
+ const size_t result = offset_;
+ if (__builtin_add_overflow(offset_, size, &offset_)) overflowed_ = true;
+ alignment_ = MAX(alignment_, alignment);
+ return result;
+}
+
+size_t StaticTlsLayout::round_up_with_overflow_check(size_t value, size_t alignment) {
+ const size_t old_value = value;
+ value = __BIONIC_ALIGN(value, alignment);
+ if (value < old_value) overflowed_ = true;
+ return value;
+}
diff --git a/libc/bionic/icu.cpp b/libc/bionic/icu.cpp
index c09c9ea..41a0729 100644
--- a/libc/bionic/icu.cpp
+++ b/libc/bionic/icu.cpp
@@ -58,7 +58,12 @@
static bool __find_icu() {
dirent** namelist = nullptr;
- int n = scandir("/system/usr/icu", &namelist, &__icu_dat_file_filter, alphasort);
+ int n = scandir("/apex/com.android.runtime/etc/icu", &namelist, &__icu_dat_file_filter,
+ alphasort);
+ if (n < 0) {
+ async_safe_write_log(ANDROID_LOG_ERROR, "bionic-icu", "couldn't find ICU folder");
+ return false;
+ }
int max_version = -1;
while (n--) {
// We prefer the latest version available.
diff --git a/libc/bionic/libc_init_static.cpp b/libc/bionic/libc_init_static.cpp
index 289b4a3..68650ed 100644
--- a/libc/bionic/libc_init_static.cpp
+++ b/libc/bionic/libc_init_static.cpp
@@ -39,6 +39,7 @@
#include "libc_init_common.h"
#include "pthread_internal.h"
+#include "private/bionic_elf_tls.h"
#include "private/bionic_globals.h"
#include "private/bionic_macros.h"
#include "private/bionic_page.h"
@@ -82,6 +83,13 @@
}
}
+static void layout_static_tls() {
+ StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+ layout.reserve_bionic_tls();
+ layout.reserve_tcb();
+ layout.finish_layout();
+}
+
// The program startup function __libc_init() defined here is
// used for static executables only (i.e. those that don't depend
// on shared libraries). It is called from arch-$ARCH/bionic/crtbegin_static.S
@@ -92,16 +100,19 @@
__noreturn static void __real_libc_init(void *raw_args,
void (*onexit)(void) __unused,
int (*slingshot)(int, char**, char**),
- structors_array_t const * const structors) {
+ structors_array_t const * const structors,
+ bionic_tcb* temp_tcb) {
BIONIC_STOP_UNWIND;
// Initialize TLS early so system calls and errno work.
KernelArgumentBlock args(raw_args);
- __libc_init_main_thread_early(args);
+ __libc_init_main_thread_early(args, temp_tcb);
__libc_init_main_thread_late();
__libc_init_globals();
__libc_shared_globals()->init_progname = args.argv[0];
__libc_init_AT_SECURE(args.envp);
+ layout_static_tls();
+ __libc_init_main_thread_final();
__libc_init_common();
apply_gnu_relro();
@@ -129,16 +140,16 @@
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
- // all we need is access to TLS_SLOT_TSAN.
- pthread_internal_t* main_thread = __get_main_thread();
- __set_tls(main_thread->tls);
- // Initialize HWASan. This sets up TLS_SLOT_TSAN, among other things.
+ // all we need is access to TLS_SLOT_SANITIZER.
+ __set_tls(&temp_tcb.tls_slot(0));
+ // Initialize HWASan. This sets up TLS_SLOT_SANITIZER, among other things.
__hwasan_init();
// We are ready to run HWASan-instrumented code, proceed with libc initialization...
#endif
- __real_libc_init(raw_args, onexit, slingshot, structors);
+ __real_libc_init(raw_args, onexit, slingshot, structors, &temp_tcb);
}
static int g_target_sdk_version{__ANDROID_API__};
@@ -152,8 +163,6 @@
}
__LIBC_HIDDEN__ libc_shared_globals* __libc_shared_globals() {
- static libc_shared_globals globals = {
- .abort_msg_lock = PTHREAD_MUTEX_INITIALIZER,
- };
+ static libc_shared_globals globals;
return &globals;
}
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index 8e8d180..8676a45 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -41,6 +41,7 @@
#include "private/bionic_constants.h"
#include "private/bionic_defs.h"
+#include "private/bionic_globals.h"
#include "private/bionic_macros.h"
#include "private/bionic_ssp.h"
#include "private/bionic_tls.h"
@@ -54,42 +55,43 @@
// This code is used both by each new pthread and the code that initializes the main thread.
__attribute__((no_stack_protector))
-void __init_tls(pthread_internal_t* thread) {
- // Slot 0 must point to itself. The x86 Linux kernel reads the TLS from %fs:0.
- thread->tls[TLS_SLOT_SELF] = thread->tls;
- thread->tls[TLS_SLOT_THREAD_ID] = thread;
+void __init_tcb(bionic_tcb* tcb, pthread_internal_t* thread) {
+#ifdef TLS_SLOT_SELF
+ // On x86, slot 0 must point to itself so code can read the thread pointer by
+ // loading %fs:0 or %gs:0.
+ tcb->tls_slot(TLS_SLOT_SELF) = &tcb->tls_slot(TLS_SLOT_SELF);
+#endif
+ tcb->tls_slot(TLS_SLOT_THREAD_ID) = thread;
}
__attribute__((no_stack_protector))
-void __init_tls_stack_guard(pthread_internal_t* thread) {
+void __init_tcb_stack_guard(bionic_tcb* tcb) {
// GCC looks in the TLS for the stack guard on x86, so copy it there from our global.
- thread->tls[TLS_SLOT_STACK_GUARD] = reinterpret_cast<void*>(__stack_chk_guard);
+ tcb->tls_slot(TLS_SLOT_STACK_GUARD) = reinterpret_cast<void*>(__stack_chk_guard);
}
-bionic_tls* __allocate_bionic_tls() {
- // Add a guard before and after.
- size_t allocation_size = BIONIC_TLS_SIZE + (2 * PTHREAD_GUARD_SIZE);
- void* allocation = mmap(nullptr, allocation_size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+void __init_bionic_tls_ptrs(bionic_tcb* tcb, bionic_tls* tls) {
+ tcb->thread()->bionic_tls = tls;
+ tcb->tls_slot(TLS_SLOT_BIONIC_TLS) = tls;
+}
+
+// Allocate a temporary bionic_tls that the dynamic linker's main thread can
+// use while it's loading the initial set of ELF modules.
+bionic_tls* __allocate_temp_bionic_tls() {
+ size_t allocation_size = __BIONIC_ALIGN(sizeof(bionic_tls), PAGE_SIZE);
+ void* allocation = mmap(nullptr, allocation_size,
+ PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS,
+ -1, 0);
if (allocation == MAP_FAILED) {
- async_safe_format_log(ANDROID_LOG_WARN, "libc",
- "pthread_create failed: couldn't allocate TLS: %s", strerror(errno));
- return nullptr;
+ // Avoid strerror because it might need bionic_tls.
+ async_safe_fatal("failed to allocate bionic_tls: error %d", errno);
}
+ return static_cast<bionic_tls*>(allocation);
+}
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, allocation, allocation_size, "bionic TLS guard");
-
- // Carve out the writable TLS section.
- bionic_tls* result = reinterpret_cast<bionic_tls*>(static_cast<char*>(allocation) +
- PTHREAD_GUARD_SIZE);
- if (mprotect(result, BIONIC_TLS_SIZE, PROT_READ | PROT_WRITE) != 0) {
- async_safe_format_log(ANDROID_LOG_WARN, "libc",
- "pthread_create failed: couldn't mprotect TLS: %s", strerror(errno));
- munmap(allocation, allocation_size);
- return nullptr;
- }
-
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, result, BIONIC_TLS_SIZE, "bionic TLS");
- return result;
+void __free_temp_bionic_tls(bionic_tls* tls) {
+ munmap(tls, __BIONIC_ALIGN(sizeof(bionic_tls), PAGE_SIZE));
}
static void __init_alternate_signal_stack(pthread_internal_t* thread) {
@@ -111,7 +113,6 @@
// We can only use const static allocated string for mapped region name, as Android kernel
// uses the string pointer directly when dumping /proc/pid/maps.
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ss.ss_sp, ss.ss_size, "thread signal stack");
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, stack_base, PTHREAD_GUARD_SIZE, "thread signal stack guard");
}
}
@@ -192,84 +193,112 @@
return 0;
}
-static void* __create_thread_mapped_space(size_t mmap_size, size_t stack_guard_size) {
- // Create a new private anonymous map.
- int prot = PROT_READ | PROT_WRITE;
- int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE;
- void* space = mmap(nullptr, mmap_size, prot, flags, -1, 0);
+
+// Allocate a thread's primary mapping. This mapping includes static TLS and
+// optionally a stack. Static TLS includes ELF TLS segments and the bionic_tls
+// struct.
+//
+// The stack_guard_size must be a multiple of the PAGE_SIZE.
+ThreadMapping __allocate_thread_mapping(size_t stack_size, size_t stack_guard_size) {
+ const StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+
+ // Allocate in order: stack guard, stack, static TLS, guard page.
+ size_t mmap_size;
+ if (__builtin_add_overflow(stack_size, stack_guard_size, &mmap_size)) return {};
+ if (__builtin_add_overflow(mmap_size, layout.size(), &mmap_size)) return {};
+ if (__builtin_add_overflow(mmap_size, PTHREAD_GUARD_SIZE, &mmap_size)) return {};
+
+ // Align the result to a page size.
+ const size_t unaligned_size = mmap_size;
+ mmap_size = __BIONIC_ALIGN(mmap_size, PAGE_SIZE);
+ if (mmap_size < unaligned_size) return {};
+
+ // Create a new private anonymous map. Make the entire mapping PROT_NONE, then carve out a
+ // read+write area in the middle.
+ const int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE;
+ char* const space = static_cast<char*>(mmap(nullptr, mmap_size, PROT_NONE, flags, -1, 0));
if (space == MAP_FAILED) {
async_safe_format_log(ANDROID_LOG_WARN,
- "libc",
- "pthread_create failed: couldn't allocate %zu-bytes mapped space: %s",
- mmap_size, strerror(errno));
- return nullptr;
+ "libc",
+ "pthread_create failed: couldn't allocate %zu-bytes mapped space: %s",
+ mmap_size, strerror(errno));
+ return {};
}
-
- // Stack is at the lower end of mapped space, stack guard region is at the lower end of stack.
- // Set the stack guard region to PROT_NONE, so we can detect thread stack overflow.
- if (mprotect(space, stack_guard_size, PROT_NONE) == -1) {
+ 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 PROT_NONE %zu-byte stack guard region: %s",
- stack_guard_size, strerror(errno));
+ "pthread_create failed: couldn't mprotect R+W %zu-byte thread mapping region: %s",
+ writable_size, strerror(errno));
munmap(space, mmap_size);
- return nullptr;
+ return {};
}
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, space, stack_guard_size, "thread stack guard");
- return space;
+ ThreadMapping result = {};
+ result.mmap_base = space;
+ result.mmap_size = mmap_size;
+ result.static_tls = space + mmap_size - PTHREAD_GUARD_SIZE - layout.size();
+ result.stack_base = space;
+ result.stack_top = result.static_tls;
+ return result;
}
-static int __allocate_thread(pthread_attr_t* attr, pthread_internal_t** threadp, void** child_stack) {
- size_t mmap_size;
- uint8_t* stack_top;
+static int __allocate_thread(pthread_attr_t* attr, bionic_tcb** tcbp, void** child_stack) {
+ ThreadMapping mapping;
+ char* stack_top;
+ bool stack_clean = false;
if (attr->stack_base == nullptr) {
// The caller didn't provide a stack, so allocate one.
- // Make sure the stack size and guard size are multiples of PAGE_SIZE.
- if (__builtin_add_overflow(attr->stack_size, attr->guard_size, &mmap_size)) return EAGAIN;
- if (__builtin_add_overflow(mmap_size, sizeof(pthread_internal_t), &mmap_size)) return EAGAIN;
- mmap_size = __BIONIC_ALIGN(mmap_size, PAGE_SIZE);
+
+ // Make sure the guard size is a multiple of PAGE_SIZE.
+ const size_t unaligned_guard_size = attr->guard_size;
attr->guard_size = __BIONIC_ALIGN(attr->guard_size, PAGE_SIZE);
- attr->stack_base = __create_thread_mapped_space(mmap_size, attr->guard_size);
- if (attr->stack_base == nullptr) {
- return EAGAIN;
- }
- stack_top = reinterpret_cast<uint8_t*>(attr->stack_base) + mmap_size;
+ if (attr->guard_size < unaligned_guard_size) return EAGAIN;
+
+ mapping = __allocate_thread_mapping(attr->stack_size, attr->guard_size);
+ if (mapping.mmap_base == nullptr) return EAGAIN;
+
+ stack_top = mapping.stack_top;
+ attr->stack_base = mapping.stack_base;
+ stack_clean = true;
} else {
- // Remember the mmap size is zero and we don't need to free it.
- mmap_size = 0;
- stack_top = reinterpret_cast<uint8_t*>(attr->stack_base) + attr->stack_size;
+ mapping = __allocate_thread_mapping(0, PTHREAD_GUARD_SIZE);
+ if (mapping.mmap_base == nullptr) return EAGAIN;
+
+ stack_top = static_cast<char*>(attr->stack_base) + attr->stack_size;
}
- // Mapped space(or user allocated stack) is used for:
- // pthread_internal_t
- // thread stack (including guard)
+ // Carve out space from the stack for the thread's pthread_internal_t. This
+ // memory isn't counted in pthread_attr_getstacksize.
// To safely access the pthread_internal_t and thread stack, we need to find a 16-byte aligned boundary.
- stack_top = reinterpret_cast<uint8_t*>(
- (reinterpret_cast<uintptr_t>(stack_top) - sizeof(pthread_internal_t)) & ~0xf);
+ stack_top = align_down(stack_top - sizeof(pthread_internal_t), 16);
pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(stack_top);
- if (mmap_size == 0) {
+ if (!stack_clean) {
// If thread was not allocated by mmap(), it may not have been cleared to zero.
// So assume the worst and zero it.
memset(thread, 0, sizeof(pthread_internal_t));
}
- attr->stack_size = stack_top - reinterpret_cast<uint8_t*>(attr->stack_base);
- thread->mmap_size = mmap_size;
+ // Locate static TLS structures within the mapped region.
+ const StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+ auto tcb = reinterpret_cast<bionic_tcb*>(mapping.static_tls + layout.offset_bionic_tcb());
+ auto tls = reinterpret_cast<bionic_tls*>(mapping.static_tls + layout.offset_bionic_tls());
+
+ // (Re)initialize TLS pointers.
+ __init_tcb(tcb, thread);
+ __init_tcb_stack_guard(tcb);
+ __init_bionic_tls_ptrs(tcb, tls);
+
+ attr->stack_size = stack_top - static_cast<char*>(attr->stack_base);
thread->attr = *attr;
+ thread->mmap_base = mapping.mmap_base;
+ thread->mmap_size = mapping.mmap_size;
- thread->bionic_tls = __allocate_bionic_tls();
- if (thread->bionic_tls == nullptr) {
- if (thread->mmap_size != 0) munmap(thread->attr.stack_base, thread->mmap_size);
- return EAGAIN;
- }
-
- __init_tls(thread);
- __init_tls_stack_guard(thread);
-
- *threadp = thread;
+ *tcbp = tcb;
*child_stack = stack_top;
return 0;
}
@@ -315,13 +344,15 @@
attr = nullptr; // Prevent misuse below.
}
- pthread_internal_t* thread = nullptr;
+ bionic_tcb* tcb = nullptr;
void* child_stack = nullptr;
- int result = __allocate_thread(&thread_attr, &thread, &child_stack);
+ int result = __allocate_thread(&thread_attr, &tcb, &child_stack);
if (result != 0) {
return result;
}
+ pthread_internal_t* thread = tcb->thread();
+
// Create a lock for the thread to wait on once it starts so we can keep
// it from doing anything until after we notify the debugger about it
//
@@ -338,7 +369,7 @@
int flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM |
CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID;
- void* tls = reinterpret_cast<void*>(thread->tls);
+ void* tls = &tcb->tls_slot(0);
#if defined(__i386__)
// On x86 (but not x86-64), CLONE_SETTLS takes a pointer to a struct user_desc rather than
// a pointer to the TLS itself.
@@ -354,7 +385,7 @@
// reminder that you can't rewrite this function to use a ScopedPthreadMutexLocker.
thread->startup_handshake_lock.unlock();
if (thread->mmap_size != 0) {
- munmap(thread->attr.stack_base, thread->mmap_size);
+ munmap(thread->mmap_base, thread->mmap_size);
}
async_safe_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: clone failed: %s",
strerror(clone_errno));
diff --git a/libc/bionic/pthread_exit.cpp b/libc/bionic/pthread_exit.cpp
index 2d4d6cf..84ea2e6 100644
--- a/libc/bionic/pthread_exit.cpp
+++ b/libc/bionic/pthread_exit.cpp
@@ -65,12 +65,6 @@
}
}
-static void __pthread_unmap_tls(pthread_internal_t* thread) {
- // Unmap the bionic TLS, including guard pages.
- void* allocation = reinterpret_cast<char*>(thread->bionic_tls) - PTHREAD_GUARD_SIZE;
- munmap(allocation, BIONIC_TLS_SIZE + 2 * PTHREAD_GUARD_SIZE);
-}
-
__BIONIC_WEAK_FOR_NATIVE_BRIDGE
void pthread_exit(void* return_value) {
// Call dtors for thread_local objects first.
@@ -131,15 +125,13 @@
// We don't want to take a signal after we've unmapped the stack.
// That's one last thing we can do before dropping to assembler.
ScopedSignalBlocker ssb;
- __pthread_unmap_tls(thread);
__hwasan_thread_exit();
- _exit_with_stack_teardown(thread->attr.stack_base, thread->mmap_size);
+ _exit_with_stack_teardown(thread->mmap_base, thread->mmap_size);
}
}
// No need to free mapped space. Either there was no space mapped, or it is left for
// the pthread_join caller to clean up.
- __pthread_unmap_tls(thread);
__hwasan_thread_exit();
__exit(0);
}
diff --git a/libc/bionic/pthread_internal.cpp b/libc/bionic/pthread_internal.cpp
index 2b7a99a..870a526 100644
--- a/libc/bionic/pthread_internal.cpp
+++ b/libc/bionic/pthread_internal.cpp
@@ -43,7 +43,7 @@
template <bool write> class ScopedRWLock {
public:
- ScopedRWLock(pthread_rwlock_t* rwlock) : rwlock_(rwlock) {
+ explicit ScopedRWLock(pthread_rwlock_t* rwlock) : rwlock_(rwlock) {
(write ? pthread_rwlock_wrlock : pthread_rwlock_rdlock)(rwlock_);
}
@@ -88,7 +88,7 @@
static void __pthread_internal_free(pthread_internal_t* thread) {
if (thread->mmap_size != 0) {
// Free mapped space, including thread stack and pthread_internal_t.
- munmap(thread->attr.stack_base, thread->mmap_size);
+ munmap(thread->mmap_base, thread->mmap_size);
}
}
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index 4c13dcb..27ab3df 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -52,12 +52,6 @@
#define PTHREAD_ATTR_FLAG_INHERIT 0x00000004
#define PTHREAD_ATTR_FLAG_EXPLICIT 0x00000008
-class pthread_key_data_t {
- public:
- uintptr_t seq; // Use uintptr_t just for alignment, as we use pointer below.
- void* data;
-};
-
enum ThreadJoinState {
THREAD_NOT_JOINED,
THREAD_EXITED_NOT_JOINED,
@@ -131,6 +125,7 @@
Lock startup_handshake_lock;
+ void* mmap_base;
size_t mmap_size;
thread_local_dtor* thread_local_dtors;
@@ -146,42 +141,44 @@
bionic_tls* bionic_tls;
int errno_value;
-
- // The thread pointer (__get_tls()) points at this field. This field must come last so that
- // an executable's TLS segment can be allocated at a fixed offset after the thread pointer.
- void* tls[BIONIC_TLS_SLOTS];
-
- // The golang runtime currently expects this field to come after the slots.
- pthread_key_data_t key_data[BIONIC_PTHREAD_KEY_COUNT];
};
-__LIBC_HIDDEN__ void __init_tls(pthread_internal_t* thread);
-__LIBC_HIDDEN__ void __init_tls_stack_guard(pthread_internal_t* thread);
-__LIBC_HIDDEN__ bionic_tls* __allocate_bionic_tls();
+struct ThreadMapping {
+ char* mmap_base;
+ size_t mmap_size;
+
+ char* static_tls;
+ char* stack_base;
+ char* stack_top;
+};
+
+__LIBC_HIDDEN__ void __init_tcb(bionic_tcb* tcb, pthread_internal_t* thread);
+__LIBC_HIDDEN__ void __init_tcb_stack_guard(bionic_tcb* tcb);
+__LIBC_HIDDEN__ void __init_bionic_tls_ptrs(bionic_tcb* tcb, bionic_tls* tls);
+__LIBC_HIDDEN__ bionic_tls* __allocate_temp_bionic_tls();
+__LIBC_HIDDEN__ void __free_temp_bionic_tls(bionic_tls* tls);
__LIBC_HIDDEN__ void __init_additional_stacks(pthread_internal_t*);
__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread);
+__LIBC_HIDDEN__ ThreadMapping __allocate_thread_mapping(size_t stack_size, size_t stack_guard_size);
__LIBC_HIDDEN__ pthread_t __pthread_internal_add(pthread_internal_t* thread);
__LIBC_HIDDEN__ pthread_internal_t* __pthread_internal_find(pthread_t pthread_id);
__LIBC_HIDDEN__ void __pthread_internal_remove(pthread_internal_t* thread);
__LIBC_HIDDEN__ void __pthread_internal_remove_and_free(pthread_internal_t* thread);
+static inline __always_inline bionic_tcb* __get_bionic_tcb() {
+ return reinterpret_cast<bionic_tcb*>(&__get_tls()[MIN_TLS_SLOT]);
+}
+
// Make __get_thread() inlined for performance reason. See http://b/19825434.
static inline __always_inline pthread_internal_t* __get_thread() {
- void** tls = __get_tls();
- if (__predict_true(tls)) {
- return reinterpret_cast<pthread_internal_t*>(tls[TLS_SLOT_THREAD_ID]);
- }
-
- // This happens when called during libc initialization before TLS has been initialized.
- return nullptr;
+ return static_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
}
static inline __always_inline bionic_tls& __get_bionic_tls() {
- return *__get_thread()->bionic_tls;
+ return *static_cast<bionic_tls*>(__get_tls()[TLS_SLOT_BIONIC_TLS]);
}
-extern __LIBC_HIDDEN__ pthread_internal_t* __get_main_thread();
extern "C" __LIBC_HIDDEN__ int __set_tls(void* ptr);
__LIBC_HIDDEN__ void pthread_key_clean_all(void);
diff --git a/libc/bionic/pthread_key.cpp b/libc/bionic/pthread_key.cpp
index f3878a6..53f0f11 100644
--- a/libc/bionic/pthread_key.cpp
+++ b/libc/bionic/pthread_key.cpp
@@ -69,12 +69,16 @@
return (key < (KEY_VALID_FLAG | BIONIC_PTHREAD_KEY_COUNT));
}
+static inline pthread_key_data_t* get_thread_key_data() {
+ return __get_bionic_tls().key_data;
+}
+
// Called from pthread_exit() to remove all pthread keys. This must call the destructor of
// all keys that have a non-NULL data value and a non-NULL destructor.
__LIBC_HIDDEN__ void pthread_key_clean_all() {
// Because destructors can do funky things like deleting/creating other keys,
// we need to implement this in a loop.
- pthread_key_data_t* key_data = __get_thread()->key_data;
+ pthread_key_data_t* key_data = get_thread_key_data();
for (size_t rounds = PTHREAD_DESTRUCTOR_ITERATIONS; rounds > 0; --rounds) {
size_t called_destructor_count = 0;
for (size_t i = 0; i < BIONIC_PTHREAD_KEY_COUNT; ++i) {
@@ -158,7 +162,7 @@
}
key &= ~KEY_VALID_FLAG;
uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
- pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+ pthread_key_data_t* data = &get_thread_key_data()[key];
// It is user's responsibility to synchornize between the creation and use of pthread keys,
// so we use memory_order_relaxed when checking the sequence number.
if (__predict_true(SeqOfKeyInUse(seq) && data->seq == seq)) {
@@ -178,7 +182,7 @@
key &= ~KEY_VALID_FLAG;
uintptr_t seq = atomic_load_explicit(&key_map[key].seq, memory_order_relaxed);
if (__predict_true(SeqOfKeyInUse(seq))) {
- pthread_key_data_t* data = &(__get_thread()->key_data[key]);
+ pthread_key_data_t* data = &get_thread_key_data()[key];
data->seq = seq;
data->data = const_cast<void*>(ptr);
return 0;
diff --git a/libc/kernel/tools/cpp.py b/libc/kernel/tools/cpp.py
index 336a9c8..1ada59e 100755
--- a/libc/kernel/tools/cpp.py
+++ b/libc/kernel/tools/cpp.py
@@ -1037,11 +1037,14 @@
if t.id == '{':
buf += ' {'
result.append(strip_space(buf))
- indent += 2
+ # Do not indent if this is extern "C" {
+ if i < 2 or tokens[i-2].id != 'extern' or tokens[i-1].id != '"C"':
+ indent += 2
buf = ''
newline = True
elif t.id == '}':
- indent -= 2
+ if indent >= 2:
+ indent -= 2
if not newline:
result.append(strip_space(buf))
# Look ahead to determine if it's the end of line.
@@ -1221,133 +1224,140 @@
function declarations are removed. We only accept typedefs and
enum/structs/union declarations.
+ In addition, remove any macros expanding in the headers. Usually,
+ these macros are static inline functions, which is why they are
+ removed.
+
However, we keep the definitions corresponding to the set of known
static inline functions in the set 'keep', which is useful
for optimized byteorder swap functions and stuff like that.
"""
- # NOTE: It's also removing function-like macros, such as __SYSCALL(...)
- # in uapi/asm-generic/unistd.h, or KEY_FIELD(...) in linux/bcache.h.
- # It could be problematic when we have function-like macros but without
- # '}' following them. It will skip all the tokens/blocks until seeing a
- # '}' as the function end. Fortunately we don't have such cases in the
- # current kernel headers.
+ # state = NORMAL => normal (i.e. LN + spaces)
+ # state = OTHER_DECL => typedef/struct encountered, ends with ";"
+ # state = VAR_DECL => var declaration encountered, ends with ";"
+ # state = FUNC_DECL => func declaration encountered, ends with "}"
+ NORMAL = 0
+ OTHER_DECL = 1
+ VAR_DECL = 2
+ FUNC_DECL = 3
- # state = 0 => normal (i.e. LN + spaces)
- # state = 1 => typedef/struct encountered, ends with ";"
- # state = 2 => var declaration encountered, ends with ";"
- # state = 3 => func declaration encountered, ends with "}"
-
- state = 0
+ state = NORMAL
depth = 0
- blocks2 = []
- skipTokens = False
- for b in self.blocks:
- if b.isDirective():
- blocks2.append(b)
- else:
- n = len(b.tokens)
- i = 0
- if skipTokens:
- first = n
- else:
- first = 0
- while i < n:
- tok = b.tokens[i]
- tokid = tok.id
- # If we are not looking for the start of a new
- # type/var/func, then skip over tokens until
- # we find our terminator, managing the depth of
- # accolades as we go.
- if state > 0:
- terminator = False
- if tokid == '{':
- depth += 1
- elif tokid == '}':
- if depth > 0:
- depth -= 1
- if (depth == 0) and (state == 3):
- terminator = True
- elif tokid == ';' and depth == 0:
- terminator = True
-
- if terminator:
- # we found the terminator
- state = 0
- if skipTokens:
- skipTokens = False
- first = i + 1
-
- i += 1
- continue
-
- # Is it a new type definition, then start recording it
- if tok.id in ['struct', 'typedef', 'enum', 'union',
- '__extension__']:
- state = 1
- i += 1
- continue
-
- # Is it a variable or function definition. If so, first
- # try to determine which type it is, and also extract
- # its name.
- #
- # We're going to parse the next tokens of the same block
- # until we find a semicolon or a left parenthesis.
- #
- # The semicolon corresponds to a variable definition,
- # the left-parenthesis to a function definition.
- #
- # We also assume that the var/func name is the last
- # identifier before the terminator.
- #
- j = i + 1
- ident = ""
- while j < n:
- tokid = b.tokens[j].id
- if tokid == '(': # a function declaration
- state = 3
- break
- elif tokid == ';': # a variable declaration
- state = 2
- break
- if b.tokens[j].kind == TokenKind.IDENTIFIER:
- ident = b.tokens[j].id
- j += 1
-
- if j >= n:
- # This can only happen when the declaration
- # does not end on the current block (e.g. with
- # a directive mixed inside it.
- #
- # We will treat it as malformed because
- # it's very hard to recover from this case
- # without making our parser much more
- # complex.
- #
- logging.debug("### skip unterminated static '%s'",
- ident)
- break
-
- if ident in keep:
- logging.debug("### keep var/func '%s': %s", ident,
- repr(b.tokens[i:j]))
+ blocksToKeep = []
+ blocksInProgress = []
+ blocksOfDirectives = []
+ ident = ""
+ state_token = ""
+ macros = set()
+ for block in self.blocks:
+ if block.isDirective():
+ # Record all macros.
+ if block.directive == 'define':
+ macro_name = block.define_id
+ paren_index = macro_name.find('(')
+ if paren_index == -1:
+ macros.add(macro_name)
else:
- # We're going to skip the tokens for this declaration
- logging.debug("### skip var/func '%s': %s", ident,
- repr(b.tokens[i:j]))
- if i > first:
- blocks2.append(Block(b.tokens[first:i]))
- skipTokens = True
- first = n
+ macros.add(macro_name[0:paren_index])
+ blocksInProgress.append(block)
+ # If this is in a function/variable declaration, we might need
+ # to emit the directives alone, so save them separately.
+ blocksOfDirectives.append(block)
+ continue
- i += 1
+ numTokens = len(block.tokens)
+ lastTerminatorIndex = 0
+ i = 0
+ while i < numTokens:
+ token_id = block.tokens[i].id
+ terminator = False
+ if token_id == '{':
+ depth += 1
+ if (i >= 2 and block.tokens[i-2].id == 'extern' and
+ block.tokens[i-1].id == '"C"'):
+ # For an extern "C" { pretend as though this is depth 0.
+ depth -= 1
+ elif token_id == '}':
+ if depth > 0:
+ depth -= 1
+ if depth == 0:
+ if state == OTHER_DECL:
+ # Loop through until we hit the ';'
+ i += 1
+ while i < numTokens:
+ if block.tokens[i].id == ';':
+ token_id = ';'
+ break
+ i += 1
+ # If we didn't hit the ';', just consider this the
+ # terminator any way.
+ terminator = True
+ elif depth == 0:
+ if token_id == ';':
+ if state == NORMAL:
+ blocksToKeep.extend(blocksInProgress)
+ blocksInProgress = []
+ blocksOfDirectives = []
+ state = FUNC_DECL
+ terminator = True
+ elif (state == NORMAL and token_id == '(' and i >= 1 and
+ block.tokens[i-1].kind == TokenKind.IDENTIFIER and
+ block.tokens[i-1].id in macros):
+ # This is a plain macro being expanded in the header
+ # which needs to be removed.
+ blocksToKeep.extend(blocksInProgress)
+ if lastTerminatorIndex < i - 1:
+ blocksToKeep.append(Block(block.tokens[lastTerminatorIndex:i-1]))
+ blocksInProgress = []
+ blocksOfDirectives = []
- if i > first:
- #print "### final '%s'" % repr(b.tokens[first:i])
- blocks2.append(Block(b.tokens[first:i]))
+ # Skip until we see the terminating ')'
+ i += 1
+ paren_depth = 1
+ while i < numTokens:
+ if block.tokens[i].id == ')':
+ paren_depth -= 1
+ if paren_depth == 0:
+ break
+ elif block.tokens[i].id == '(':
+ paren_depth += 1
+ i += 1
+ lastTerminatorIndex = i + 1
+ elif (state != FUNC_DECL and token_id == '(' and
+ state_token != 'typedef'):
+ blocksToKeep.extend(blocksInProgress)
+ blocksInProgress = []
+ blocksOfDirectives = []
+ state = VAR_DECL
+ elif state == NORMAL and token_id in ['struct', 'typedef',
+ 'enum', 'union',
+ '__extension__']:
+ state = OTHER_DECL
+ state_token = token_id
+ elif block.tokens[i].kind == TokenKind.IDENTIFIER:
+ if state != VAR_DECL or ident == "":
+ ident = token_id
- self.blocks = blocks2
+ if terminator:
+ if state != VAR_DECL and state != FUNC_DECL or ident in keep:
+ blocksInProgress.append(Block(block.tokens[lastTerminatorIndex:i+1]))
+ blocksToKeep.extend(blocksInProgress)
+ else:
+ # Only keep the directives found.
+ blocksToKeep.extend(blocksOfDirectives)
+ lastTerminatorIndex = i + 1
+ blocksInProgress = []
+ blocksOfDirectives = []
+ state = NORMAL
+ ident = ""
+ state_token = ""
+ i += 1
+ if lastTerminatorIndex < numTokens:
+ blocksInProgress.append(Block(block.tokens[lastTerminatorIndex:numTokens]))
+ if len(blocksInProgress) > 0:
+ blocksToKeep.extend(blocksInProgress)
+ self.blocks = blocksToKeep
def replaceTokens(self, replacements):
"""Replace tokens according to the given dict."""
@@ -1938,6 +1948,299 @@
expected = ""
self.assertEqual(self.parse(text), expected)
+class FullPathTest(unittest.TestCase):
+ """Test of the full path parsing."""
+
+ def parse(self, text, keep=None):
+ if not keep:
+ keep = set()
+ out = utils.StringOutput()
+ blocks = BlockParser().parse(CppStringTokenizer(text))
+ blocks.removeVarsAndFuncs(keep)
+ blocks.replaceTokens(kernel_token_replacements)
+ blocks.optimizeAll(None)
+ blocks.write(out)
+ return out.get()
+
+ def test_function_removed(self):
+ text = """\
+static inline __u64 function()
+{
+}
+"""
+ expected = ""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_function_removed_with_struct(self):
+ text = """\
+static inline struct something* function()
+{
+}
+"""
+ expected = ""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_function_kept(self):
+ text = """\
+static inline __u64 function()
+{
+}
+"""
+ expected = """\
+static inline __u64 function() {
+}
+"""
+ self.assertEqual(self.parse(text, set(["function"])), expected)
+
+ def test_var_removed(self):
+ text = "__u64 variable;"
+ expected = ""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_var_kept(self):
+ text = "__u64 variable;"
+ expected = "__u64 variable;\n"
+ self.assertEqual(self.parse(text, set(["variable"])), expected)
+
+ def test_keep_function_typedef(self):
+ text = "typedef void somefunction_t(void);"
+ expected = "typedef void somefunction_t(void);\n"
+ self.assertEqual(self.parse(text), expected)
+
+ def test_struct_keep_attribute(self):
+ text = """\
+struct something_s {
+ __u32 s1;
+ __u32 s2;
+} __attribute__((packed));
+"""
+ expected = """\
+struct something_s {
+ __u32 s1;
+ __u32 s2;
+} __attribute__((packed));
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_function_keep_attribute_structs(self):
+ text = """\
+static __inline__ struct some_struct1 * function(struct some_struct2 * e) {
+}
+"""
+ expected = """\
+static __inline__ struct some_struct1 * function(struct some_struct2 * e) {
+}
+"""
+ self.assertEqual(self.parse(text, set(["function"])), expected)
+
+ def test_struct_after_struct(self):
+ text = """\
+struct first {
+};
+
+struct second {
+ unsigned short s1;
+#define SOMETHING 8
+ unsigned short s2;
+};
+"""
+ expected = """\
+struct first {
+};
+struct second {
+ unsigned short s1;
+#define SOMETHING 8
+ unsigned short s2;
+};
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_other_not_removed(self):
+ text = """\
+typedef union {
+ __u64 tu1;
+ __u64 tu2;
+} typedef_name;
+
+union {
+ __u64 u1;
+ __u64 u2;
+};
+
+struct {
+ __u64 s1;
+ __u64 s2;
+};
+
+enum {
+ ENUM1 = 0,
+ ENUM2,
+};
+
+__extension__ typedef __signed__ long long __s64;
+"""
+ expected = """\
+typedef union {
+ __u64 tu1;
+ __u64 tu2;
+} typedef_name;
+union {
+ __u64 u1;
+ __u64 u2;
+};
+struct {
+ __u64 s1;
+ __u64 s2;
+};
+enum {
+ ENUM1 = 0,
+ ENUM2,
+};
+__extension__ typedef __signed__ long long __s64;
+"""
+
+ self.assertEqual(self.parse(text), expected)
+
+ def test_semicolon_after_function(self):
+ text = """\
+static inline __u64 function()
+{
+};
+
+struct should_see {
+ __u32 field;
+};
+"""
+ expected = """\
+struct should_see {
+ __u32 field;
+};
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_define_in_middle_keep(self):
+ text = """\
+enum {
+ ENUM0 = 0x10,
+ ENUM1 = 0x20,
+#define SOMETHING SOMETHING_ELSE
+ ENUM2 = 0x40,
+};
+"""
+ expected = """\
+enum {
+ ENUM0 = 0x10,
+ ENUM1 = 0x20,
+#define SOMETHING SOMETHING_ELSE
+ ENUM2 = 0x40,
+};
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_define_in_middle_remove(self):
+ text = """\
+static inline function() {
+#define SOMETHING1 SOMETHING_ELSE1
+ i = 0;
+ {
+ i = 1;
+ }
+#define SOMETHING2 SOMETHING_ELSE2
+}
+"""
+ expected = """\
+#define SOMETHING1 SOMETHING_ELSE1
+#define SOMETHING2 SOMETHING_ELSE2
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_define_in_middle_force_keep(self):
+ text = """\
+static inline function() {
+#define SOMETHING1 SOMETHING_ELSE1
+ i = 0;
+ {
+ i = 1;
+ }
+#define SOMETHING2 SOMETHING_ELSE2
+}
+"""
+ expected = """\
+static inline function() {
+#define SOMETHING1 SOMETHING_ELSE1
+ i = 0;
+ {
+ i = 1;
+ }
+#define SOMETHING2 SOMETHING_ELSE2
+}
+"""
+ self.assertEqual(self.parse(text, set(["function"])), expected)
+
+ def test_define_before_remove(self):
+ text = """\
+#define SHOULD_BE_KEPT NOTHING1
+#define ANOTHER_TO_KEEP NOTHING2
+static inline function() {
+#define SOMETHING1 SOMETHING_ELSE1
+ i = 0;
+ {
+ i = 1;
+ }
+#define SOMETHING2 SOMETHING_ELSE2
+}
+"""
+ expected = """\
+#define SHOULD_BE_KEPT NOTHING1
+#define ANOTHER_TO_KEEP NOTHING2
+#define SOMETHING1 SOMETHING_ELSE1
+#define SOMETHING2 SOMETHING_ELSE2
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_extern_C(self):
+ text = """\
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+struct something {
+};
+
+#if defined(__cplusplus)
+}
+#endif
+"""
+ expected = """\
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct something {
+};
+#ifdef __cplusplus
+}
+#endif
+"""
+ self.assertEqual(self.parse(text), expected)
+
+ def test_macro_definition_removed(self):
+ text = """\
+#define MACRO_FUNCTION_NO_PARAMS static inline some_func() {}
+MACRO_FUNCTION_NO_PARAMS()
+
+#define MACRO_FUNCTION_PARAMS(a) static inline some_func() { a; }
+MACRO_FUNCTION_PARAMS(a = 1)
+
+something that should still be kept
+MACRO_FUNCTION_PARAMS(b)
+"""
+ expected = """\
+#define MACRO_FUNCTION_NO_PARAMS static inline some_func() { }
+#define MACRO_FUNCTION_PARAMS(a) static inline some_func() { a; }
+something that should still be kept
+"""
+ self.assertEqual(self.parse(text), expected)
+
if __name__ == '__main__':
unittest.main()
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index a7cd560..8f50b1d 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -46,4 +46,5 @@
#define HWCAP_USCAT (1 << 25)
#define HWCAP_ILRCPC (1 << 26)
#define HWCAP_FLAGM (1 << 27)
+#define HWCAP_SSBS (1 << 28)
#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 4e6c755..e1cfb48 100644
--- a/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -34,6 +34,7 @@
#define PSR_I_BIT 0x00000080
#define PSR_A_BIT 0x00000100
#define PSR_D_BIT 0x00000200
+#define PSR_SSBS_BIT 0x00001000
#define PSR_PAN_BIT 0x00400000
#define PSR_UAO_BIT 0x00800000
#define PSR_V_BIT 0x10000000
diff --git a/libc/kernel/uapi/asm-arm64/asm/siginfo.h b/libc/kernel/uapi/asm-arm64/asm/siginfo.h
index 111a215..a31ebb2 100644
--- a/libc/kernel/uapi/asm-arm64/asm/siginfo.h
+++ b/libc/kernel/uapi/asm-arm64/asm/siginfo.h
@@ -16,8 +16,4 @@
***
****************************************************************************
****************************************************************************/
-#ifndef __ASM_SIGINFO_H
-#define __ASM_SIGINFO_H
-#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
#include <asm-generic/siginfo.h>
-#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/unistd.h b/libc/kernel/uapi/asm-arm64/asm/unistd.h
index cc151fd..0648b02 100644
--- a/libc/kernel/uapi/asm-arm64/asm/unistd.h
+++ b/libc/kernel/uapi/asm-arm64/asm/unistd.h
@@ -17,4 +17,5 @@
****************************************************************************
****************************************************************************/
#define __ARCH_WANT_RENAMEAT
+#define __ARCH_WANT_NEW_STAT
#include <asm-generic/unistd.h>
diff --git a/libc/kernel/uapi/asm-generic/ioctls.h b/libc/kernel/uapi/asm-generic/ioctls.h
index 41dbce2..f8a4357 100644
--- a/libc/kernel/uapi/asm-generic/ioctls.h
+++ b/libc/kernel/uapi/asm-generic/ioctls.h
@@ -81,6 +81,8 @@
#define TIOCGPTLCK _IOR('T', 0x39, int)
#define TIOCGEXCL _IOR('T', 0x40, int)
#define TIOCGPTPEER _IO('T', 0x41)
+#define TIOCGISO7816 _IOR('T', 0x42, struct serial_iso7816)
+#define TIOCSISO7816 _IOWR('T', 0x43, struct serial_iso7816)
#define FIONCLEX 0x5450
#define FIOCLEX 0x5451
#define FIOASYNC 0x5452
diff --git a/libc/kernel/uapi/asm-generic/siginfo.h b/libc/kernel/uapi/asm-generic/siginfo.h
index 166193b..829ffad 100644
--- a/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/libc/kernel/uapi/asm-generic/siginfo.h
@@ -24,13 +24,7 @@
int sival_int;
void __user * sival_ptr;
} sigval_t;
-#ifndef __ARCH_SI_PREAMBLE_SIZE
-#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
-#endif
#define SI_MAX_SIZE 128
-#ifndef SI_PAD_SIZE
-#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
-#endif
#ifndef __ARCH_SI_BAND_T
#define __ARCH_SI_BAND_T long
#endif
@@ -40,73 +34,75 @@
#ifndef __ARCH_SI_ATTRIBUTES
#define __ARCH_SI_ATTRIBUTES
#endif
-typedef struct siginfo {
- int si_signo;
-#ifndef __ARCH_HAS_SWAPPED_SIGINFO
- int si_errno;
- int si_code;
-#else
- int si_code;
- int si_errno;
-#endif
- union {
- int _pad[SI_PAD_SIZE];
- struct {
- __kernel_pid_t _pid;
- __kernel_uid32_t _uid;
- } _kill;
- struct {
- __kernel_timer_t _tid;
- int _overrun;
- sigval_t _sigval;
- int _sys_private;
- } _timer;
- struct {
- __kernel_pid_t _pid;
- __kernel_uid32_t _uid;
- sigval_t _sigval;
- } _rt;
- struct {
- __kernel_pid_t _pid;
- __kernel_uid32_t _uid;
- int _status;
- __ARCH_SI_CLOCK_T _utime;
- __ARCH_SI_CLOCK_T _stime;
- } _sigchld;
- struct {
- void __user * _addr;
+union __sifields {
+ struct {
+ __kernel_pid_t _pid;
+ __kernel_uid32_t _uid;
+ } _kill;
+ struct {
+ __kernel_timer_t _tid;
+ int _overrun;
+ sigval_t _sigval;
+ int _sys_private;
+ } _timer;
+ struct {
+ __kernel_pid_t _pid;
+ __kernel_uid32_t _uid;
+ sigval_t _sigval;
+ } _rt;
+ struct {
+ __kernel_pid_t _pid;
+ __kernel_uid32_t _uid;
+ int _status;
+ __ARCH_SI_CLOCK_T _utime;
+ __ARCH_SI_CLOCK_T _stime;
+ } _sigchld;
+ struct {
+ void __user * _addr;
#ifdef __ARCH_SI_TRAPNO
- int _trapno;
+ int _trapno;
#endif
#ifdef __ia64__
- int _imm;
- unsigned int _flags;
- unsigned long _isr;
+ int _imm;
+ unsigned int _flags;
+ unsigned long _isr;
#endif
#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))
- union {
- short _addr_lsb;
- struct {
- char _dummy_bnd[__ADDR_BND_PKEY_PAD];
- void __user * _lower;
- void __user * _upper;
- } _addr_bnd;
- struct {
- char _dummy_pkey[__ADDR_BND_PKEY_PAD];
- __u32 _pkey;
- } _addr_pkey;
- };
- } _sigfault;
- struct {
- __ARCH_SI_BAND_T _band;
- int _fd;
- } _sigpoll;
- struct {
- void __user * _call_addr;
- int _syscall;
- unsigned int _arch;
- } _sigsys;
- } _sifields;
+ union {
+ short _addr_lsb;
+ struct {
+ char _dummy_bnd[__ADDR_BND_PKEY_PAD];
+ void __user * _lower;
+ void __user * _upper;
+ } _addr_bnd;
+ struct {
+ char _dummy_pkey[__ADDR_BND_PKEY_PAD];
+ __u32 _pkey;
+ } _addr_pkey;
+ };
+ } _sigfault;
+ struct {
+ __ARCH_SI_BAND_T _band;
+ int _fd;
+ } _sigpoll;
+ struct {
+ void __user * _call_addr;
+ int _syscall;
+ unsigned int _arch;
+ } _sigsys;
+};
+#ifndef __ARCH_HAS_SWAPPED_SIGINFO
+#define __SIGINFO struct { int si_signo; int si_errno; int si_code; union __sifields _sifields; \
+}
+#else
+#define __SIGINFO struct { int si_signo; int si_code; int si_errno; union __sifields _sifields; \
+}
+#endif
+typedef struct siginfo {
+ union {
+ __SIGINFO;
+ int _si_pad[SI_MAX_SIZE / sizeof(int)];
+ };
} __ARCH_SI_ATTRIBUTES siginfo_t;
#define si_pid _sifields._kill._pid
#define si_uid _sifields._kill._uid
@@ -212,6 +208,8 @@
#define NSIGPOLL 6
#define SYS_SECCOMP 1
#define NSIGSYS 1
+#define EMT_TAGOVF 1
+#define NSIGEMT 1
#define SIGEV_SIGNAL 0
#define SIGEV_NONE 1
#define SIGEV_THREAD 2
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index 52f0b57..fddf1d0 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -113,8 +113,10 @@
#define __NR_splice 76
#define __NR_tee 77
#define __NR_readlinkat 78
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
#define __NR3264_fstatat 79
#define __NR3264_fstat 80
+#endif
#define __NR_sync 81
#define __NR_fsync 82
#define __NR_fdatasync 83
@@ -329,8 +331,10 @@
#define __NR_ftruncate __NR3264_ftruncate
#define __NR_lseek __NR3264_lseek
#define __NR_sendfile __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
#define __NR_newfstatat __NR3264_fstatat
#define __NR_fstat __NR3264_fstat
+#endif
#define __NR_mmap __NR3264_mmap
#define __NR_fadvise64 __NR3264_fadvise64
#ifdef __NR3264_stat
@@ -345,8 +349,10 @@
#define __NR_ftruncate64 __NR3264_ftruncate
#define __NR_llseek __NR3264_lseek
#define __NR_sendfile64 __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
#define __NR_fstatat64 __NR3264_fstatat
#define __NR_fstat64 __NR3264_fstat
+#endif
#define __NR_mmap2 __NR3264_mmap
#define __NR_fadvise64_64 __NR3264_fadvise64
#ifdef __NR3264_stat
diff --git a/libc/kernel/uapi/asm-mips/asm/ioctls.h b/libc/kernel/uapi/asm-mips/asm/ioctls.h
index a4a40b0..694546f 100644
--- a/libc/kernel/uapi/asm-mips/asm/ioctls.h
+++ b/libc/kernel/uapi/asm-mips/asm/ioctls.h
@@ -85,6 +85,8 @@
#define TIOCGPTLCK _IOR('T', 0x39, int)
#define TIOCGEXCL _IOR('T', 0x40, int)
#define TIOCGPTPEER _IO('T', 0x41)
+#define TIOCGISO7816 _IOR('T', 0x42, struct serial_iso7816)
+#define TIOCSISO7816 _IOWR('T', 0x43, struct serial_iso7816)
#define TIOCSCTTY 0x5480
#define TIOCGSOFTCAR 0x5481
#define TIOCSSOFTCAR 0x5482
diff --git a/libc/kernel/uapi/asm-mips/asm/siginfo.h b/libc/kernel/uapi/asm-mips/asm/siginfo.h
index c37107b..c9efb21 100644
--- a/libc/kernel/uapi/asm-mips/asm/siginfo.h
+++ b/libc/kernel/uapi/asm-mips/asm/siginfo.h
@@ -20,13 +20,6 @@
#define _UAPI_ASM_SIGINFO_H
#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2 * sizeof(int))
#undef __ARCH_SI_TRAPNO
-#if _MIPS_SZLONG == 32
-#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
-#elif _MIPS_SZLONG==64
-#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
-#else
-#error _MIPS_SZLONG neither 32 nor 64
-#endif
#define __ARCH_HAS_SWAPPED_SIGINFO
#include <asm-generic/siginfo.h>
#undef SI_ASYNCIO
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index b010277..dc90f57 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -135,7 +135,8 @@
__u8 _pad2[4];
__u64 tboot_addr;
struct ist_info ist_info;
- __u8 _pad3[16];
+ __u64 acpi_rsdp_addr;
+ __u8 _pad3[8];
__u8 hd0_info[16];
__u8 hd1_info[16];
struct sys_desc_table sys_desc_table;
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 1d7f767..4386f76 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -248,6 +248,7 @@
#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
#define KVM_VCPUEVENT_VALID_SMM 0x00000008
+#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
#define KVM_X86_SHADOW_INT_MOV_SS 0x01
#define KVM_X86_SHADOW_INT_STI 0x02
struct kvm_vcpu_events {
@@ -255,7 +256,7 @@
__u8 injected;
__u8 nr;
__u8 has_error_code;
- __u8 pad;
+ __u8 pending;
__u32 error_code;
} exception;
struct {
@@ -278,7 +279,9 @@
__u8 smm_inside_nmi;
__u8 latched_init;
} smi;
- __u32 reserved[9];
+ __u8 reserved[27];
+ __u8 exception_has_payload;
+ __u64 exception_payload;
};
struct kvm_debugregs {
__u64 db[4];
@@ -316,6 +319,7 @@
#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+#define KVM_STATE_NESTED_EVMCS 0x00000004
#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
struct kvm_vmx_nested_state {
diff --git a/libc/kernel/uapi/asm-x86/asm/siginfo.h b/libc/kernel/uapi/asm-x86/asm/siginfo.h
index 1da8066..0de5283 100644
--- a/libc/kernel/uapi/asm-x86/asm/siginfo.h
+++ b/libc/kernel/uapi/asm-x86/asm/siginfo.h
@@ -23,8 +23,6 @@
typedef long long __kernel_si_clock_t __attribute__((aligned(4)));
#define __ARCH_SI_CLOCK_T __kernel_si_clock_t
#define __ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
-#else
-#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
#endif
#endif
#include <asm-generic/siginfo.h>
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index bdf59d6..8d65fd4 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -20,6 +20,7 @@
#define __AMDGPU_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_AMDGPU_GEM_CREATE 0x00
#define DRM_AMDGPU_GEM_MMAP 0x01
@@ -405,6 +406,7 @@
#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL 0x0f
#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM 0x10
#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
+#define AMDGPU_INFO_FW_DMCU 0x12
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
#define AMDGPU_INFO_VRAM_USAGE 0x10
#define AMDGPU_INFO_GTT_USAGE 0x11
@@ -593,5 +595,6 @@
#define AMDGPU_FAMILY_AI 141
#define AMDGPU_FAMILY_RV 142
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/armada_drm.h b/libc/kernel/uapi/drm/armada_drm.h
index ea1f37d..aabd23b 100644
--- a/libc/kernel/uapi/drm/armada_drm.h
+++ b/libc/kernel/uapi/drm/armada_drm.h
@@ -20,6 +20,7 @@
#define DRM_ARMADA_IOCTL_H
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_ARMADA_GEM_CREATE 0x00
#define DRM_ARMADA_GEM_MMAP 0x02
@@ -46,5 +47,6 @@
};
#define DRM_IOCTL_ARMADA_GEM_PWRITE ARMADA_IOCTL(IOW, GEM_PWRITE, gem_pwrite)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/drm.h b/libc/kernel/uapi/drm/drm.h
index 21f23f4..ef64ed7 100644
--- a/libc/kernel/uapi/drm/drm.h
+++ b/libc/kernel/uapi/drm/drm.h
@@ -37,6 +37,7 @@
typedef unsigned long drm_handle_t;
#endif
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_NAME "drm"
#define DRM_MIN_ORDER 5
@@ -429,9 +430,11 @@
__u64 user_data;
};
#ifdef __cplusplus
+}
#endif
#include "drm_mode.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_IOCTL_BASE 'd'
#define DRM_IO(nr) _IO(DRM_IOCTL_BASE, nr)
@@ -603,5 +606,6 @@
typedef struct drm_scatter_gather drm_scatter_gather_t;
typedef struct drm_set_version drm_set_version_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index 9634e99..df89cd1 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -20,9 +20,11 @@
#define DRM_FOURCC_H
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
#define DRM_FORMAT_BIG_ENDIAN (1 << 31)
+#define DRM_FORMAT_INVALID 0
#define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
#define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ')
@@ -117,6 +119,7 @@
#define I915_FORMAT_MOD_Y_TILED_CCS fourcc_mod_code(INTEL, 4)
#define I915_FORMAT_MOD_Yf_TILED_CCS fourcc_mod_code(INTEL, 5)
#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_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
@@ -156,5 +159,6 @@
#define AFBC_FORMAT_MOD_TILED (1ULL << 8)
#define AFBC_FORMAT_MOD_SC (1ULL << 9)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/drm_mode.h b/libc/kernel/uapi/drm/drm_mode.h
index 06c26e4..dff9f34 100644
--- a/libc/kernel/uapi/drm/drm_mode.h
+++ b/libc/kernel/uapi/drm/drm_mode.h
@@ -20,6 +20,7 @@
#define _DRM_MODE_H
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_DISPLAY_INFO_LEN 32
#define DRM_CONNECTOR_NAME_LEN 32
@@ -463,5 +464,6 @@
__u32 lessee_id;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/drm_sarea.h b/libc/kernel/uapi/drm/drm_sarea.h
index 03317b9..a0c7f3a 100644
--- a/libc/kernel/uapi/drm/drm_sarea.h
+++ b/libc/kernel/uapi/drm/drm_sarea.h
@@ -20,6 +20,7 @@
#define _DRM_SAREA_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifdef __alpha__
#define SAREA_MAX 0x2000U
@@ -54,5 +55,6 @@
typedef struct drm_sarea_frame drm_sarea_frame_t;
typedef struct drm_sarea drm_sarea_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/etnaviv_drm.h b/libc/kernel/uapi/drm/etnaviv_drm.h
index bb502d9..4c09e6c 100644
--- a/libc/kernel/uapi/drm/etnaviv_drm.h
+++ b/libc/kernel/uapi/drm/etnaviv_drm.h
@@ -20,6 +20,7 @@
#define __ETNAVIV_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
struct drm_etnaviv_timespec {
__s64 tv_sec;
@@ -193,5 +194,6 @@
#define DRM_IOCTL_ETNAVIV_PM_QUERY_DOM DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_DOM, struct drm_etnaviv_pm_domain)
#define DRM_IOCTL_ETNAVIV_PM_QUERY_SIG DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_SIG, struct drm_etnaviv_pm_signal)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/exynos_drm.h b/libc/kernel/uapi/drm/exynos_drm.h
index 8b27cbb..4918035 100644
--- a/libc/kernel/uapi/drm/exynos_drm.h
+++ b/libc/kernel/uapi/drm/exynos_drm.h
@@ -20,6 +20,7 @@
#define _UAPI_EXYNOS_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
struct drm_exynos_gem_create {
__u64 size;
@@ -225,5 +226,6 @@
__u64 reserved;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/i810_drm.h b/libc/kernel/uapi/drm/i810_drm.h
index 1fd3c46..e33387d 100644
--- a/libc/kernel/uapi/drm/i810_drm.h
+++ b/libc/kernel/uapi/drm/i810_drm.h
@@ -20,6 +20,7 @@
#define _I810_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef _I810_DEFINES_
#define _I810_DEFINES_
@@ -214,5 +215,6 @@
unsigned int last_render;
} drm_i810_mc_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 4c1d87f..89fa529 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -20,6 +20,7 @@
#define _UAPI_I915_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define I915_L3_PARITY_UEVENT "L3_PARITY_ERROR"
#define I915_ERROR_UEVENT "ERROR"
@@ -334,6 +335,7 @@
#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+#define I915_PARAM_MMAP_GTT_COHERENT 52
typedef struct drm_i915_getparam {
__s32 param;
int __user * value;
@@ -775,5 +777,6 @@
__u8 data[];
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/mga_drm.h b/libc/kernel/uapi/drm/mga_drm.h
index 4d5ad0c..4959502 100644
--- a/libc/kernel/uapi/drm/mga_drm.h
+++ b/libc/kernel/uapi/drm/mga_drm.h
@@ -20,6 +20,7 @@
#define __MGA_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef __MGA_SAREA_DEFINES__
#define __MGA_SAREA_DEFINES__
@@ -240,5 +241,6 @@
void __user * value;
} drm_mga_getparam_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/msm_drm.h b/libc/kernel/uapi/drm/msm_drm.h
index 1d53c5d..df8119f 100644
--- a/libc/kernel/uapi/drm/msm_drm.h
+++ b/libc/kernel/uapi/drm/msm_drm.h
@@ -20,6 +20,7 @@
#define __MSM_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define MSM_PIPE_NONE 0x00
#define MSM_PIPE_2D0 0x01
@@ -158,5 +159,6 @@
#define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue)
#define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/nouveau_drm.h b/libc/kernel/uapi/drm/nouveau_drm.h
index f9c3447..54c3b97 100644
--- a/libc/kernel/uapi/drm/nouveau_drm.h
+++ b/libc/kernel/uapi/drm/nouveau_drm.h
@@ -21,6 +21,7 @@
#define DRM_NOUVEAU_EVENT_NVIF 0x80000000
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
@@ -122,5 +123,6 @@
#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/omap_drm.h b/libc/kernel/uapi/drm/omap_drm.h
index 54b539a..3c2fc08 100644
--- a/libc/kernel/uapi/drm/omap_drm.h
+++ b/libc/kernel/uapi/drm/omap_drm.h
@@ -20,6 +20,7 @@
#define __OMAP_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define OMAP_PARAM_CHIPSET_ID 1
struct drm_omap_param {
@@ -84,5 +85,6 @@
#define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini)
#define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/qxl_drm.h b/libc/kernel/uapi/drm/qxl_drm.h
index 5942635..e9521c4 100644
--- a/libc/kernel/uapi/drm/qxl_drm.h
+++ b/libc/kernel/uapi/drm/qxl_drm.h
@@ -20,6 +20,7 @@
#define QXL_DRM_H
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define QXL_GEM_DOMAIN_CPU 0
#define QXL_GEM_DOMAIN_VRAM 1
@@ -97,5 +98,6 @@
#define DRM_IOCTL_QXL_CLIENTCAP DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP, struct drm_qxl_clientcap)
#define DRM_IOCTL_QXL_ALLOC_SURF DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF, struct drm_qxl_alloc_surf)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/r128_drm.h b/libc/kernel/uapi/drm/r128_drm.h
index 85dea7e..618b6dc 100644
--- a/libc/kernel/uapi/drm/r128_drm.h
+++ b/libc/kernel/uapi/drm/r128_drm.h
@@ -20,6 +20,7 @@
#define __R128_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef __R128_SAREA_DEFINES__
#define __R128_SAREA_DEFINES__
@@ -229,5 +230,6 @@
void __user * value;
} drm_r128_getparam_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/radeon_drm.h b/libc/kernel/uapi/drm/radeon_drm.h
index fe8fe67..9dc69ad 100644
--- a/libc/kernel/uapi/drm/radeon_drm.h
+++ b/libc/kernel/uapi/drm/radeon_drm.h
@@ -20,6 +20,7 @@
#define __RADEON_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef __RADEON_SAREA_DEFINES__
#define __RADEON_SAREA_DEFINES__
@@ -801,5 +802,6 @@
#define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA 2
#define CIK_TILE_MODE_DEPTH_STENCIL_1D 5
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/savage_drm.h b/libc/kernel/uapi/drm/savage_drm.h
index 8c5a172..ae87d21 100644
--- a/libc/kernel/uapi/drm/savage_drm.h
+++ b/libc/kernel/uapi/drm/savage_drm.h
@@ -20,6 +20,7 @@
#define __SAVAGE_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef __SAVAGE_SAREA_DEFINES__
#define __SAVAGE_SAREA_DEFINES__
@@ -151,5 +152,6 @@
} clear1;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/sis_drm.h b/libc/kernel/uapi/drm/sis_drm.h
index ba88ea9..1606a85 100644
--- a/libc/kernel/uapi/drm/sis_drm.h
+++ b/libc/kernel/uapi/drm/sis_drm.h
@@ -20,6 +20,7 @@
#define __SIS_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define NOT_USED_0_3
#define DRM_SIS_FB_ALLOC 0x04
@@ -48,5 +49,6 @@
unsigned long offset, size;
} drm_sis_fb_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/tegra_drm.h b/libc/kernel/uapi/drm/tegra_drm.h
index ee111dc..5244a27 100644
--- a/libc/kernel/uapi/drm/tegra_drm.h
+++ b/libc/kernel/uapi/drm/tegra_drm.h
@@ -20,6 +20,7 @@
#define _UAPI_TEGRA_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_TEGRA_GEM_CREATE_TILED (1 << 0)
#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
@@ -163,5 +164,6 @@
#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/v3d_drm.h b/libc/kernel/uapi/drm/v3d_drm.h
index c3e58cb..8865911 100644
--- a/libc/kernel/uapi/drm/v3d_drm.h
+++ b/libc/kernel/uapi/drm/v3d_drm.h
@@ -20,6 +20,7 @@
#define _V3D_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_V3D_SUBMIT_CL 0x00
#define DRM_V3D_WAIT_BO 0x01
@@ -83,5 +84,6 @@
__u32 offset;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/vc4_drm.h b/libc/kernel/uapi/drm/vc4_drm.h
index 29eb872..fde443f 100644
--- a/libc/kernel/uapi/drm/vc4_drm.h
+++ b/libc/kernel/uapi/drm/vc4_drm.h
@@ -20,6 +20,7 @@
#define _UAPI_VC4_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_VC4_SUBMIT_CL 0x00
#define DRM_VC4_WAIT_SEQNO 0x01
@@ -233,5 +234,6 @@
__u64 values_ptr;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/vgem_drm.h b/libc/kernel/uapi/drm/vgem_drm.h
index 7b0ebc9..b33452b 100644
--- a/libc/kernel/uapi/drm/vgem_drm.h
+++ b/libc/kernel/uapi/drm/vgem_drm.h
@@ -20,6 +20,7 @@
#define _UAPI_VGEM_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_VGEM_FENCE_ATTACH 0x1
#define DRM_VGEM_FENCE_SIGNAL 0x2
@@ -37,5 +38,6 @@
__u32 flags;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/via_drm.h b/libc/kernel/uapi/drm/via_drm.h
index fd4948d..9ef645a 100644
--- a/libc/kernel/uapi/drm/via_drm.h
+++ b/libc/kernel/uapi/drm/via_drm.h
@@ -20,6 +20,7 @@
#define _VIA_DRM_H_
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#ifndef _VIA_DEFINES_
#define _VIA_DEFINES_
@@ -196,5 +197,6 @@
drm_via_blitsync_t sync;
} drm_via_dmablit_t;
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/virtgpu_drm.h b/libc/kernel/uapi/drm/virtgpu_drm.h
index 6b7fb0b..84986e4 100644
--- a/libc/kernel/uapi/drm/virtgpu_drm.h
+++ b/libc/kernel/uapi/drm/virtgpu_drm.h
@@ -20,6 +20,7 @@
#define VIRTGPU_DRM_H
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_VIRTGPU_MAP 0x01
#define DRM_VIRTGPU_EXECBUFFER 0x02
@@ -113,5 +114,6 @@
#define DRM_IOCTL_VIRTGPU_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_WAIT, struct drm_virtgpu_3d_wait)
#define DRM_IOCTL_VIRTGPU_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GET_CAPS, struct drm_virtgpu_get_caps)
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/drm/vmwgfx_drm.h b/libc/kernel/uapi/drm/vmwgfx_drm.h
index 7df722a..bb1f36d 100644
--- a/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -20,6 +20,7 @@
#define __VMWGFX_DRM_H__
#include "drm.h"
#ifdef __cplusplus
+extern "C" {
#endif
#define DRM_VMW_MAX_SURFACE_FACES 6
#define DRM_VMW_MAX_MIP_LEVELS 24
@@ -350,5 +351,6 @@
struct drm_vmw_surface_arg req;
};
#ifdef __cplusplus
+}
#endif
#endif
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 538a441..2d00a79 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -103,6 +103,14 @@
__u32 has_strong_ref;
__u32 has_weak_ref;
};
+struct binder_node_info_for_ref {
+ __u32 handle;
+ __u32 strong_count;
+ __u32 weak_count;
+ __u32 reserved1;
+ __u32 reserved2;
+ __u32 reserved3;
+};
#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)
@@ -111,6 +119,7 @@
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
+#define BINDER_GET_NODE_INFO_FOR_REF _IOWR('b', 12, struct binder_node_info_for_ref)
enum transaction_flags {
TF_ONE_WAY = 0x01,
TF_ROOT_OBJECT = 0x04,
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index eaff1d8..62f826f 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -57,4 +57,6 @@
};
#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
+#define BLKGETZONESZ _IOR(0x12, 132, __u32)
+#define BLKGETNRZONES _IOR(0x12, 133, __u32)
#endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index a187913..d70a409 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -91,6 +91,7 @@
BPF_BTF_LOAD,
BPF_BTF_GET_FD_BY_ID,
BPF_TASK_FD_QUERY,
+ BPF_MAP_LOOKUP_AND_DELETE_ELEM,
};
enum bpf_map_type {
BPF_MAP_TYPE_UNSPEC,
@@ -114,6 +115,9 @@
BPF_MAP_TYPE_SOCKHASH,
BPF_MAP_TYPE_CGROUP_STORAGE,
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
+ BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
+ BPF_MAP_TYPE_QUEUE,
+ BPF_MAP_TYPE_STACK,
};
enum bpf_prog_type {
BPF_PROG_TYPE_UNSPEC,
@@ -138,6 +142,7 @@
BPF_PROG_TYPE_LWT_SEG6LOCAL,
BPF_PROG_TYPE_LIRC_MODE2,
BPF_PROG_TYPE_SK_REUSEPORT,
+ BPF_PROG_TYPE_FLOW_DISSECTOR,
};
enum bpf_attach_type {
BPF_CGROUP_INET_INGRESS,
@@ -157,6 +162,7 @@
BPF_CGROUP_UDP4_SENDMSG,
BPF_CGROUP_UDP6_SENDMSG,
BPF_LIRC_MODE2,
+ BPF_FLOW_DISSECTOR,
__MAX_BPF_ATTACH_TYPE
};
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -295,7 +301,7 @@
__u64 probe_addr;
} task_fd_query;
} __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),
+#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),
#define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
enum bpf_func_id {
__BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -320,6 +326,7 @@
#define BPF_F_INDEX_MASK 0xffffffffULL
#define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
#define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
+#define BPF_F_CURRENT_NETNS (- 1L)
enum bpf_adj_room_mode {
BPF_ADJ_ROOM_NET,
};
@@ -331,6 +338,8 @@
BPF_LWT_ENCAP_SEG6,
BPF_LWT_ENCAP_SEG6_INLINE
};
+#define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
+} __attribute__((aligned(8)))
struct __sk_buff {
__u32 len;
__u32 pkt_type;
@@ -358,6 +367,7 @@
__u32 remote_port;
__u32 local_port;
__u32 data_meta;
+ __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
};
struct bpf_tunnel_key {
__u32 tunnel_id;
@@ -396,6 +406,22 @@
__u32 src_ip6[4];
__u32 src_port;
};
+struct bpf_sock_tuple {
+ union {
+ struct {
+ __be32 saddr;
+ __be32 daddr;
+ __be16 sport;
+ __be16 dport;
+ } ipv4;
+ struct {
+ __be32 saddr[4];
+ __be32 daddr[4];
+ __be16 sport;
+ __be16 dport;
+ } ipv6;
+ };
+};
#define XDP_PACKET_HEADROOM 256
enum xdp_action {
XDP_ABORTED = 0,
@@ -416,8 +442,8 @@
SK_PASS,
};
struct sk_msg_md {
- void * data;
- void * data_end;
+ __bpf_md_ptr(void *, data);
+ __bpf_md_ptr(void *, data_end);
__u32 family;
__u32 remote_ip4;
__u32 local_ip4;
@@ -427,8 +453,8 @@
__u32 local_port;
};
struct sk_reuseport_md {
- void * data;
- void * data_end;
+ __bpf_md_ptr(void *, data);
+ __bpf_md_ptr(void *, data_end);
__u32 len;
__u32 eth_protocol;
__u32 ip_protocol;
@@ -630,4 +656,26 @@
BPF_FD_TYPE_UPROBE,
BPF_FD_TYPE_URETPROBE,
};
+struct bpf_flow_keys {
+ __u16 nhoff;
+ __u16 thoff;
+ __u16 addr_proto;
+ __u8 is_frag;
+ __u8 is_first_frag;
+ __u8 is_encap;
+ __u8 ip_proto;
+ __be16 n_proto;
+ __be16 sport;
+ __be16 dport;
+ union {
+ struct {
+ __be32 ipv4_src;
+ __be32 ipv4_dst;
+ };
+ struct {
+ __u32 ipv6_src[4];
+ __u32 ipv6_dst[4];
+ };
+ };
+};
#endif
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index fd0f824..05af529 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -44,9 +44,12 @@
#define CEC_TX_STATUS_LOW_DRIVE (1 << 3)
#define CEC_TX_STATUS_ERROR (1 << 4)
#define CEC_TX_STATUS_MAX_RETRIES (1 << 5)
+#define CEC_TX_STATUS_ABORTED (1 << 6)
+#define CEC_TX_STATUS_TIMEOUT (1 << 7)
#define CEC_RX_STATUS_OK (1 << 0)
#define CEC_RX_STATUS_TIMEOUT (1 << 1)
#define CEC_RX_STATUS_FEATURE_ABORT (1 << 2)
+#define CEC_RX_STATUS_ABORTED (1 << 3)
#define CEC_LOG_ADDR_INVALID 0xff
#define CEC_PHYS_ADDR_INVALID 0xffff
#define CEC_MAX_LOG_ADDRS 4
diff --git a/libc/kernel/uapi/linux/cryptouser.h b/libc/kernel/uapi/linux/cryptouser.h
index 15c46d8..816fb05 100644
--- a/libc/kernel/uapi/linux/cryptouser.h
+++ b/libc/kernel/uapi/linux/cryptouser.h
@@ -24,6 +24,7 @@
CRYPTO_MSG_UPDATEALG,
CRYPTO_MSG_GETALG,
CRYPTO_MSG_DELRNG,
+ CRYPTO_MSG_GETSTAT,
__CRYPTO_MSG_MAX
};
#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
@@ -42,6 +43,16 @@
CRYPTOCFGA_REPORT_AKCIPHER,
CRYPTOCFGA_REPORT_KPP,
CRYPTOCFGA_REPORT_ACOMP,
+ CRYPTOCFGA_STAT_LARVAL,
+ CRYPTOCFGA_STAT_HASH,
+ CRYPTOCFGA_STAT_BLKCIPHER,
+ CRYPTOCFGA_STAT_AEAD,
+ CRYPTOCFGA_STAT_COMPRESS,
+ CRYPTOCFGA_STAT_RNG,
+ CRYPTOCFGA_STAT_CIPHER,
+ CRYPTOCFGA_STAT_AKCIPHER,
+ CRYPTOCFGA_STAT_KPP,
+ CRYPTOCFGA_STAT_ACOMP,
__CRYPTOCFGA_MAX
#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
};
@@ -54,6 +65,46 @@
__u32 cru_refcnt;
__u32 cru_flags;
};
+struct crypto_stat {
+ char type[CRYPTO_MAX_NAME];
+ union {
+ __u32 stat_encrypt_cnt;
+ __u32 stat_compress_cnt;
+ __u32 stat_generate_cnt;
+ __u32 stat_hash_cnt;
+ __u32 stat_setsecret_cnt;
+ };
+ union {
+ __u64 stat_encrypt_tlen;
+ __u64 stat_compress_tlen;
+ __u64 stat_generate_tlen;
+ __u64 stat_hash_tlen;
+ };
+ union {
+ __u32 stat_akcipher_err_cnt;
+ __u32 stat_cipher_err_cnt;
+ __u32 stat_compress_err_cnt;
+ __u32 stat_aead_err_cnt;
+ __u32 stat_hash_err_cnt;
+ __u32 stat_rng_err_cnt;
+ __u32 stat_kpp_err_cnt;
+ };
+ union {
+ __u32 stat_decrypt_cnt;
+ __u32 stat_decompress_cnt;
+ __u32 stat_seed_cnt;
+ __u32 stat_generate_public_key_cnt;
+ };
+ union {
+ __u64 stat_decrypt_tlen;
+ __u64 stat_decompress_tlen;
+ };
+ union {
+ __u32 stat_verify_cnt;
+ __u32 stat_compute_shared_secret_cnt;
+ };
+ __u32 stat_sign_cnt;
+};
struct crypto_report_larval {
char type[CRYPTO_MAX_NAME];
};
diff --git a/libc/kernel/uapi/linux/dns_resolver.h b/libc/kernel/uapi/linux/dns_resolver.h
new file mode 100644
index 0000000..21cb5c0
--- /dev/null
+++ b/libc/kernel/uapi/linux/dns_resolver.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** 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_DNS_RESOLVER_H
+#define _UAPI_LINUX_DNS_RESOLVER_H
+#include <linux/types.h>
+enum dns_payload_content_type {
+ DNS_PAYLOAD_IS_SERVER_LIST = 0,
+};
+enum dns_payload_address_type {
+ DNS_ADDRESS_IS_IPV4 = 0,
+ DNS_ADDRESS_IS_IPV6 = 1,
+};
+enum dns_payload_protocol_type {
+ DNS_SERVER_PROTOCOL_UNSPECIFIED = 0,
+ DNS_SERVER_PROTOCOL_UDP = 1,
+ DNS_SERVER_PROTOCOL_TCP = 2,
+};
+enum dns_record_source {
+ DNS_RECORD_UNAVAILABLE = 0,
+ DNS_RECORD_FROM_CONFIG = 1,
+ DNS_RECORD_FROM_DNS_A = 2,
+ DNS_RECORD_FROM_DNS_AFSDB = 3,
+ DNS_RECORD_FROM_DNS_SRV = 4,
+ DNS_RECORD_FROM_NSS = 5,
+ NR__dns_record_source
+};
+enum dns_lookup_status {
+ DNS_LOOKUP_NOT_DONE = 0,
+ DNS_LOOKUP_GOOD = 1,
+ DNS_LOOKUP_GOOD_WITH_BAD = 2,
+ DNS_LOOKUP_BAD = 3,
+ DNS_LOOKUP_GOT_NOT_FOUND = 4,
+ DNS_LOOKUP_GOT_LOCAL_FAILURE = 5,
+ DNS_LOOKUP_GOT_TEMP_FAILURE = 6,
+ DNS_LOOKUP_GOT_NS_FAILURE = 7,
+ NR__dns_lookup_status
+};
+struct dns_payload_header {
+ __u8 zero;
+ __u8 content;
+ __u8 version;
+} __packed;
+struct dns_server_list_v1_header {
+ struct dns_payload_header hdr;
+ __u8 source;
+ __u8 status;
+ __u8 nr_servers;
+} __packed;
+struct dns_server_list_v1_server {
+ __u16 name_len;
+ __u16 priority;
+ __u16 weight;
+ __u16 port;
+ __u8 source;
+ __u8 status;
+ __u8 protocol;
+ __u8 nr_addrs;
+} __packed;
+struct dns_server_list_v1_address {
+ __u8 address_type;
+} __packed;
+#endif
diff --git a/libc/kernel/uapi/linux/elf-em.h b/libc/kernel/uapi/linux/elf-em.h
index b7c89da..5b54e18 100644
--- a/libc/kernel/uapi/linux/elf-em.h
+++ b/libc/kernel/uapi/linux/elf-em.h
@@ -52,6 +52,7 @@
#define EM_TILEPRO 188
#define EM_MICROBLAZE 189
#define EM_TILEGX 191
+#define EM_RISCV 243
#define EM_BPF 247
#define EM_FRV 0x5441
#define EM_ALPHA 0x9026
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 73d92ca..00a1871 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -39,15 +39,18 @@
#define FAN_UNLIMITED_QUEUE 0x00000010
#define FAN_UNLIMITED_MARKS 0x00000020
#define FAN_ENABLE_AUDIT 0x00000040
+#define FAN_REPORT_TID 0x00000100
#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
#define FAN_MARK_ADD 0x00000001
#define FAN_MARK_REMOVE 0x00000002
#define FAN_MARK_DONT_FOLLOW 0x00000004
#define FAN_MARK_ONLYDIR 0x00000008
-#define FAN_MARK_MOUNT 0x00000010
#define FAN_MARK_IGNORED_MASK 0x00000020
#define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
#define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_INODE 0x00000000
+#define FAN_MARK_MOUNT 0x00000010
+#define FAN_MARK_FILESYSTEM 0x00000100
#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)
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index a727580..3c3a124 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 27
+#define FUSE_KERNEL_MINOR_VERSION 28
#define FUSE_ROOT_ID 1
struct fuse_attr {
uint64_t ino;
@@ -72,6 +72,7 @@
#define FOPEN_DIRECT_IO (1 << 0)
#define FOPEN_KEEP_CACHE (1 << 1)
#define FOPEN_NONSEEKABLE (1 << 2)
+#define FOPEN_CACHE_DIR (1 << 3)
#define FUSE_ASYNC_READ (1 << 0)
#define FUSE_POSIX_LOCKS (1 << 1)
#define FUSE_FILE_OPS (1 << 2)
@@ -94,6 +95,8 @@
#define FUSE_HANDLE_KILLPRIV (1 << 19)
#define FUSE_POSIX_ACL (1 << 20)
#define FUSE_ABORT_ERROR (1 << 21)
+#define FUSE_MAX_PAGES (1 << 22)
+#define FUSE_CACHE_SYMLINKS (1 << 23)
#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
#define FUSE_RELEASE_FLUSH (1 << 0)
#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
@@ -154,6 +157,7 @@
FUSE_READDIRPLUS = 44,
FUSE_RENAME2 = 45,
FUSE_LSEEK = 46,
+ FUSE_COPY_FILE_RANGE = 47,
CUSE_INIT = 4096,
};
enum fuse_notify_code {
@@ -341,7 +345,9 @@
uint16_t congestion_threshold;
uint32_t max_write;
uint32_t time_gran;
- uint32_t unused[9];
+ uint16_t max_pages;
+ uint16_t padding;
+ uint32_t unused[8];
};
#define CUSE_INIT_INFO_MAX 4096
struct cuse_init_in {
@@ -488,4 +494,13 @@
struct fuse_lseek_out {
uint64_t offset;
};
+struct fuse_copy_file_range_in {
+ uint64_t fh_in;
+ uint64_t off_in;
+ uint64_t nodeid_out;
+ uint64_t fh_out;
+ uint64_t off_out;
+ uint64_t len;
+ uint64_t flags;
+};
#endif
diff --git a/libc/kernel/uapi/linux/gen_stats.h b/libc/kernel/uapi/linux/gen_stats.h
index 127ae88..0b6c228 100644
--- a/libc/kernel/uapi/linux/gen_stats.h
+++ b/libc/kernel/uapi/linux/gen_stats.h
@@ -27,6 +27,7 @@
TCA_STATS_APP,
TCA_STATS_RATE_EST64,
TCA_STATS_PAD,
+ TCA_STATS_BASIC_HW,
__TCA_STATS_MAX,
};
#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_addr.h b/libc/kernel/uapi/linux/if_addr.h
index 0a4b0ae..6a6b640 100644
--- a/libc/kernel/uapi/linux/if_addr.h
+++ b/libc/kernel/uapi/linux/if_addr.h
@@ -38,6 +38,7 @@
IFA_MULTICAST,
IFA_FLAGS,
IFA_RT_PRIORITY,
+ IFA_TARGET_NETNSID,
__IFA_MAX,
};
#define IFA_MAX (__IFA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_arp.h b/libc/kernel/uapi/linux/if_arp.h
index 0b1959d..eda888f 100644
--- a/libc/kernel/uapi/linux/if_arp.h
+++ b/libc/kernel/uapi/linux/if_arp.h
@@ -98,7 +98,7 @@
struct sockaddr arp_ha;
int arp_flags;
struct sockaddr arp_netmask;
- char arp_dev[16];
+ char arp_dev[IFNAMSIZ];
};
struct arpreq_old {
struct sockaddr arp_pa;
diff --git a/libc/kernel/uapi/linux/if_fddi.h b/libc/kernel/uapi/linux/if_fddi.h
index 4efd7f8..4b5074b 100644
--- a/libc/kernel/uapi/linux/if_fddi.h
+++ b/libc/kernel/uapi/linux/if_fddi.h
@@ -29,6 +29,18 @@
#define FDDI_K_LLC_ZLEN 13
#define FDDI_K_LLC_LEN 4491
#define FDDI_K_OUI_LEN 3
+#define FDDI_FC_K_CLASS_MASK 0x80
+#define FDDI_FC_K_CLASS_SYNC 0x80
+#define FDDI_FC_K_CLASS_ASYNC 0x00
+#define FDDI_FC_K_ALEN_MASK 0x40
+#define FDDI_FC_K_ALEN_48 0x40
+#define FDDI_FC_K_ALEN_16 0x00
+#define FDDI_FC_K_FORMAT_MASK 0x30
+#define FDDI_FC_K_FORMAT_FUTURE 0x30
+#define FDDI_FC_K_FORMAT_IMPLEMENTOR 0x20
+#define FDDI_FC_K_FORMAT_LLC 0x10
+#define FDDI_FC_K_FORMAT_MANAGEMENT 0x00
+#define FDDI_FC_K_CONTROL_MASK 0x0f
#define FDDI_FC_K_VOID 0x00
#define FDDI_FC_K_NON_RESTRICTED_TOKEN 0x80
#define FDDI_FC_K_RESTRICTED_TOKEN 0xC0
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 4bbf21d..2c80d3d 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -138,6 +138,7 @@
IFLA_EVENT,
IFLA_NEW_NETNSID,
IFLA_IF_NETNSID,
+ IFLA_TARGET_NETNSID = IFLA_IF_NETNSID,
IFLA_CARRIER_UP_COUNT,
IFLA_CARRIER_DOWN_COUNT,
IFLA_NEW_IFINDEX,
@@ -219,6 +220,7 @@
IFLA_BR_MCAST_STATS_ENABLED,
IFLA_BR_MCAST_IGMP_VERSION,
IFLA_BR_MCAST_MLD_VERSION,
+ IFLA_BR_VLAN_STATS_PER_PORT,
__IFLA_BR_MAX,
};
#define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
@@ -444,6 +446,7 @@
IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
IFLA_GENEVE_LABEL,
+ IFLA_GENEVE_TTL_INHERIT,
__IFLA_GENEVE_MAX
};
#define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_packet.h b/libc/kernel/uapi/linux/if_packet.h
index 61d0a3a..300aa7b 100644
--- a/libc/kernel/uapi/linux/if_packet.h
+++ b/libc/kernel/uapi/linux/if_packet.h
@@ -63,6 +63,7 @@
#define PACKET_QDISC_BYPASS 20
#define PACKET_ROLLOVER_STATS 21
#define PACKET_FANOUT_DATA 22
+#define PACKET_IGNORE_OUTGOING 23
#define PACKET_FANOUT_HASH 0
#define PACKET_FANOUT_LB 1
#define PACKET_FANOUT_CPU 2
diff --git a/libc/kernel/uapi/linux/if_tunnel.h b/libc/kernel/uapi/linux/if_tunnel.h
index d41dc49..8e1847f 100644
--- a/libc/kernel/uapi/linux/if_tunnel.h
+++ b/libc/kernel/uapi/linux/if_tunnel.h
@@ -154,4 +154,20 @@
__IFLA_VTI_MAX,
};
#define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
+#define TUNNEL_CSUM __cpu_to_be16(0x01)
+#define TUNNEL_ROUTING __cpu_to_be16(0x02)
+#define TUNNEL_KEY __cpu_to_be16(0x04)
+#define TUNNEL_SEQ __cpu_to_be16(0x08)
+#define TUNNEL_STRICT __cpu_to_be16(0x10)
+#define TUNNEL_REC __cpu_to_be16(0x20)
+#define TUNNEL_VERSION __cpu_to_be16(0x40)
+#define TUNNEL_NO_KEY __cpu_to_be16(0x80)
+#define TUNNEL_DONT_FRAGMENT __cpu_to_be16(0x0100)
+#define TUNNEL_OAM __cpu_to_be16(0x0200)
+#define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400)
+#define TUNNEL_GENEVE_OPT __cpu_to_be16(0x0800)
+#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)
#endif
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index 788a6d9..78bd72a 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -200,9 +200,12 @@
#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
#define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
#define IN_MULTICAST(a) IN_CLASSD(a)
-#define IN_MULTICAST_NET 0xF0000000
-#define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
+#define IN_MULTICAST_NET 0xe0000000
+#define IN_BADCLASS(a) (((long int) (a)) == (long int)0xffffffff)
+#define IN_EXPERIMENTAL(a) IN_BADCLASS((a))
+#define IN_CLASSE(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define IN_CLASSE_NET 0xffffffff
+#define IN_CLASSE_NSHIFT 0
#define INADDR_ANY ((unsigned long int) 0x00000000)
#define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
#define INADDR_NONE ((unsigned long int) 0xffffffff)
diff --git a/libc/kernel/uapi/linux/in6.h b/libc/kernel/uapi/linux/in6.h
index 9da111c..3627f52 100644
--- a/libc/kernel/uapi/linux/in6.h
+++ b/libc/kernel/uapi/linux/in6.h
@@ -132,6 +132,7 @@
#define IPV6_V6ONLY 26
#define IPV6_JOIN_ANYCAST 27
#define IPV6_LEAVE_ANYCAST 28
+#define IPV6_MULTICAST_ALL 29
#define IPV6_PMTUDISC_DONT 0
#define IPV6_PMTUDISC_WANT 1
#define IPV6_PMTUDISC_DO 2
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index d8ae4c8..11e6d5b 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -622,6 +622,7 @@
#define REL_DIAL 0x07
#define REL_WHEEL 0x08
#define REL_MISC 0x09
+#define REL_RESERVED 0x0a
#define REL_MAX 0x0f
#define REL_CNT (REL_MAX + 1)
#define ABS_X 0x00
@@ -650,6 +651,7 @@
#define ABS_TOOL_WIDTH 0x1c
#define ABS_VOLUME 0x20
#define ABS_MISC 0x28
+#define ABS_RESERVED 0x2e
#define ABS_MT_SLOT 0x2f
#define ABS_MT_TOUCH_MAJOR 0x30
#define ABS_MT_TOUCH_MINOR 0x31
diff --git a/libc/kernel/uapi/linux/keyctl.h b/libc/kernel/uapi/linux/keyctl.h
index 0cc7f55..53f0468 100644
--- a/libc/kernel/uapi/linux/keyctl.h
+++ b/libc/kernel/uapi/linux/keyctl.h
@@ -60,9 +60,19 @@
#define KEYCTL_INVALIDATE 21
#define KEYCTL_GET_PERSISTENT 22
#define KEYCTL_DH_COMPUTE 23
+#define KEYCTL_PKEY_QUERY 24
+#define KEYCTL_PKEY_ENCRYPT 25
+#define KEYCTL_PKEY_DECRYPT 26
+#define KEYCTL_PKEY_SIGN 27
+#define KEYCTL_PKEY_VERIFY 28
#define KEYCTL_RESTRICT_KEYRING 29
struct keyctl_dh_params {
- __s32 __linux_private;
+ union {
+#ifndef __cplusplus
+ __s32 __linux_private;
+#endif
+ __s32 priv;
+ };
__s32 prime;
__s32 base;
};
@@ -72,4 +82,26 @@
__u32 otherinfolen;
__u32 __spare[8];
};
+#define KEYCTL_SUPPORTS_ENCRYPT 0x01
+#define KEYCTL_SUPPORTS_DECRYPT 0x02
+#define KEYCTL_SUPPORTS_SIGN 0x04
+#define KEYCTL_SUPPORTS_VERIFY 0x08
+struct keyctl_pkey_query {
+ __u32 supported_ops;
+ __u32 key_size;
+ __u16 max_data_size;
+ __u16 max_sig_size;
+ __u16 max_enc_size;
+ __u16 max_dec_size;
+ __u32 __spare[10];
+};
+struct keyctl_pkey_params {
+ __s32 key_id;
+ __u32 in_len;
+ union {
+ __u32 out_len;
+ __u32 in2_len;
+ };
+ __u32 __spare[7];
+};
#endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 55aff04..525f672 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -64,6 +64,13 @@
__u32 num_cu_mask;
__u64 cu_mask_ptr;
};
+struct kfd_ioctl_get_queue_wave_state_args {
+ __u64 ctl_stack_address;
+ __u32 ctl_stack_used_size;
+ __u32 save_area_used_size;
+ __u32 queue_id;
+ __u32 pad;
+};
#define KFD_IOC_CACHE_POLICY_COHERENT 0
#define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
struct kfd_ioctl_set_memory_policy_args {
@@ -175,10 +182,10 @@
__u32 pad;
};
struct kfd_hsa_hw_exception_data {
- uint32_t reset_type;
- uint32_t reset_cause;
- uint32_t memory_lost;
- uint32_t gpu_id;
+ __u32 reset_type;
+ __u32 reset_cause;
+ __u32 memory_lost;
+ __u32 gpu_id;
};
struct kfd_event_data {
union {
@@ -285,6 +292,7 @@
#define AMDKFD_IOC_MAP_MEMORY_TO_GPU AMDKFD_IOWR(0x18, struct kfd_ioctl_map_memory_to_gpu_args)
#define AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU AMDKFD_IOWR(0x19, struct kfd_ioctl_unmap_memory_from_gpu_args)
#define AMDKFD_IOC_SET_CU_MASK AMDKFD_IOW(0x1A, struct kfd_ioctl_set_cu_mask_args)
+#define AMDKFD_IOC_GET_QUEUE_WAVE_STATE AMDKFD_IOWR(0x1B, struct kfd_ioctl_get_queue_wave_state_args)
#define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x1B
+#define AMDKFD_COMMAND_END 0x1C
#endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 14e882b..b70bcd9 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -316,12 +316,18 @@
struct kvm_coalesced_mmio_zone {
__u64 addr;
__u32 size;
- __u32 pad;
+ union {
+ __u32 pad;
+ __u32 pio;
+ };
};
struct kvm_coalesced_mmio {
__u64 phys_addr;
__u32 len;
- __u32 pad;
+ union {
+ __u32 pad;
+ __u32 pio;
+ };
__u8 data[8];
};
struct kvm_coalesced_mmio_ring {
@@ -539,6 +545,7 @@
};
#define KVM_PPC_PAGE_SIZES_REAL 0x00000001
#define KVM_PPC_1T_SEGMENTS 0x00000002
+#define KVM_PPC_NO_HASH 0x00000004
struct kvm_ppc_smmu_info {
__u64 flags;
__u32 slb_size;
@@ -558,6 +565,8 @@
#define KVM_VM_MIPS_TE 0
#define KVM_VM_MIPS_VZ 1
#define KVM_S390_SIE_PAGE_OFFSET 1
+#define KVM_VM_TYPE_ARM_IPA_SIZE_MASK 0xffULL
+#define KVM_VM_TYPE_ARM_IPA_SIZE(x) ((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK)
#define KVM_GET_API_VERSION _IO(KVMIO, 0x00)
#define KVM_CREATE_VM _IO(KVMIO, 0x01)
#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list)
@@ -744,6 +753,12 @@
#define KVM_CAP_NESTED_STATE 157
#define KVM_CAP_ARM_INJECT_SERROR_ESR 158
#define KVM_CAP_MSR_PLATFORM_INFO 159
+#define KVM_CAP_PPC_NESTED_HV 160
+#define KVM_CAP_HYPERV_SEND_IPI 161
+#define KVM_CAP_COALESCED_PIO 162
+#define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163
+#define KVM_CAP_EXCEPTION_PAYLOAD 164
+#define KVM_CAP_ARM_VM_IPA_SIZE 165
#ifdef KVM_CAP_IRQ_ROUTING
struct kvm_irq_routing_irqchip {
__u32 irqchip;
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index 68b4c65..bf57a58 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -45,6 +45,7 @@
#define HPFS_SUPER_MAGIC 0xf995e849
#define ISOFS_SUPER_MAGIC 0x9660
#define JFFS2_SUPER_MAGIC 0x72b6
+#define XFS_SUPER_MAGIC 0x58465342
#define PSTOREFS_MAGIC 0x6165676C
#define EFIVARFS_MAGIC 0xde5e81e4
#define HOSTFS_SUPER_MAGIC 0x00c0ffee
diff --git a/libc/kernel/uapi/linux/media.h b/libc/kernel/uapi/linux/media.h
index eefc07a..4ba0ef6 100644
--- a/libc/kernel/uapi/linux/media.h
+++ b/libc/kernel/uapi/linux/media.h
@@ -198,6 +198,9 @@
#define MEDIA_IOC_ENUM_LINKS _IOWR('|', 0x02, struct media_links_enum)
#define MEDIA_IOC_SETUP_LINK _IOWR('|', 0x03, struct media_link_desc)
#define MEDIA_IOC_G_TOPOLOGY _IOWR('|', 0x04, struct media_v2_topology)
+#define MEDIA_IOC_REQUEST_ALLOC _IOR('|', 0x05, int)
+#define MEDIA_REQUEST_IOC_QUEUE _IO('|', 0x80)
+#define MEDIA_REQUEST_IOC_REINIT _IO('|', 0x81)
#define MEDIA_ENT_TYPE_SHIFT 16
#define MEDIA_ENT_TYPE_MASK 0x00ff0000
#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
diff --git a/libc/kernel/uapi/linux/ncsi.h b/libc/kernel/uapi/linux/ncsi.h
index 6b128e4..23cdf1b 100644
--- a/libc/kernel/uapi/linux/ncsi.h
+++ b/libc/kernel/uapi/linux/ncsi.h
@@ -23,6 +23,7 @@
NCSI_CMD_PKG_INFO,
NCSI_CMD_SET_INTERFACE,
NCSI_CMD_CLEAR_INTERFACE,
+ NCSI_CMD_SEND_CMD,
__NCSI_CMD_AFTER_LAST,
NCSI_CMD_MAX = __NCSI_CMD_AFTER_LAST - 1
};
@@ -32,6 +33,7 @@
NCSI_ATTR_PACKAGE_LIST,
NCSI_ATTR_PACKAGE_ID,
NCSI_ATTR_CHANNEL_ID,
+ NCSI_ATTR_DATA,
__NCSI_ATTR_AFTER_LAST,
NCSI_ATTR_MAX = __NCSI_ATTR_AFTER_LAST - 1
};
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index bee0b1c..742fbad 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -140,9 +140,6 @@
ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
};
-enum {
- ND_MIN_NAMESPACE_SIZE = PAGE_SIZE,
-};
enum ars_masks {
ARS_STATUS_MASK = 0x0000FFFF,
ARS_EXT_STATUS_SHIFT = 16,
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index cf32a12..6329211 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -51,6 +51,7 @@
#define NTF_PROXY 0x08
#define NTF_EXT_LEARNED 0x10
#define NTF_OFFLOADED 0x20
+#define NTF_STICKY 0x40
#define NTF_ROUTER 0x80
#define NUD_INCOMPLETE 0x01
#define NUD_REACHABLE 0x02
diff --git a/libc/kernel/uapi/linux/net_tstamp.h b/libc/kernel/uapi/linux/net_tstamp.h
index 2f022ea..375906a 100644
--- a/libc/kernel/uapi/linux/net_tstamp.h
+++ b/libc/kernel/uapi/linux/net_tstamp.h
@@ -80,7 +80,7 @@
SOF_TXTIME_FLAGS_MASK = (SOF_TXTIME_FLAGS_LAST - 1) | SOF_TXTIME_FLAGS_LAST
};
struct sock_txtime {
- clockid_t clockid;
+ __kernel_clockid_t clockid;
__u32 flags;
};
#endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 63394e0..2bb7c86 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -419,6 +419,7 @@
NFT_RT_NEXTHOP4,
NFT_RT_NEXTHOP6,
NFT_RT_TCPMSS,
+ NFT_RT_XFRM,
__NFT_RT_MAX
};
#define NFT_RT_MAX (__NFT_RT_MAX - 1)
@@ -596,6 +597,13 @@
__NFTA_QUOTA_MAX
};
#define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
+enum nft_secmark_attributes {
+ NFTA_SECMARK_UNSPEC,
+ NFTA_SECMARK_CTX,
+ __NFTA_SECMARK_MAX,
+};
+#define NFTA_SECMARK_MAX (__NFTA_SECMARK_MAX - 1)
+#define NFT_SECMARK_CTX_MAXLEN 256
enum nft_reject_types {
NFT_REJECT_ICMP_UNREACH,
NFT_REJECT_TCP_RST,
@@ -737,7 +745,8 @@
#define NFT_OBJECT_CONNLIMIT 5
#define NFT_OBJECT_TUNNEL 6
#define NFT_OBJECT_CT_TIMEOUT 7
-#define __NFT_OBJECT_MAX 8
+#define NFT_OBJECT_SECMARK 8
+#define __NFT_OBJECT_MAX 9
#define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
enum nft_object_attributes {
NFTA_OBJ_UNSPEC,
@@ -773,6 +782,7 @@
enum nft_osf_attributes {
NFTA_OSF_UNSPEC,
NFTA_OSF_DREG,
+ NFTA_OSF_TTL,
__NFTA_OSF_MAX,
};
#define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
@@ -782,6 +792,26 @@
__NFTA_DEVICE_MAX
};
#define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1)
+enum nft_xfrm_attributes {
+ NFTA_XFRM_UNSPEC,
+ NFTA_XFRM_DREG,
+ NFTA_XFRM_KEY,
+ NFTA_XFRM_DIR,
+ NFTA_XFRM_SPNUM,
+ __NFTA_XFRM_MAX
+};
+#define NFTA_XFRM_MAX (__NFTA_XFRM_MAX - 1)
+enum nft_xfrm_keys {
+ NFT_XFRM_KEY_UNSPEC,
+ NFT_XFRM_KEY_DADDR_IP4,
+ NFT_XFRM_KEY_DADDR_IP6,
+ NFT_XFRM_KEY_SADDR_IP4,
+ NFT_XFRM_KEY_SADDR_IP6,
+ NFT_XFRM_KEY_REQID,
+ NFT_XFRM_KEY_SPI,
+ __NFT_XFRM_KEY_MAX,
+};
+#define NFT_XFRM_KEY_MAX (__NFT_XFRM_KEY_MAX - 1)
enum nft_trace_attributes {
NFTA_TRACE_UNSPEC,
NFTA_TRACE_TABLE,
diff --git a/libc/kernel/uapi/linux/netfilter/xt_cgroup.h b/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
index ccc0349..6d939ea 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_cgroup.h
@@ -33,4 +33,16 @@
__u32 classid;
void * priv __attribute__((aligned(8)));
};
+#define XT_CGROUP_PATH_MAX 512
+struct xt_cgroup_info_v2 {
+ __u8 has_path;
+ __u8 has_classid;
+ __u8 invert_path;
+ __u8 invert_classid;
+ union {
+ char path[XT_CGROUP_PATH_MAX];
+ __u32 classid;
+ };
+ void * priv __attribute__((aligned(8)));
+};
#endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge.h b/libc/kernel/uapi/linux/netfilter_bridge.h
index 6da98f5..e1434f4 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge.h
@@ -23,6 +23,7 @@
#include <linux/if_ether.h>
#include <linux/if_vlan.h>
#include <linux/if_pppox.h>
+#include <limits.h>
#define NF_BR_PRE_ROUTING 0
#define NF_BR_LOCAL_IN 1
#define NF_BR_FORWARD 2
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index 4f35c02..4c0fd1f 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -112,6 +112,7 @@
#define NETLINK_LIST_MEMBERSHIPS 9
#define NETLINK_CAP_ACK 10
#define NETLINK_EXT_ACK 11
+#define NETLINK_GET_STRICT_CHK 12
struct nl_pktinfo {
__u32 group;
};
diff --git a/libc/kernel/uapi/linux/nilfs2_api.h b/libc/kernel/uapi/linux/nilfs2_api.h
index 2f2692e..d6a6b8f 100644
--- a/libc/kernel/uapi/linux/nilfs2_api.h
+++ b/libc/kernel/uapi/linux/nilfs2_api.h
@@ -39,6 +39,16 @@
#define NILFS_CPINFO_FNS(flag,name) static inline int nilfs_cpinfo_ ##name(const struct nilfs_cpinfo * cpinfo) \
{ return ! ! (cpinfo->ci_flags & (1UL << NILFS_CPINFO_ ##flag)); \
}
+struct nilfs_suinfo {
+ __u64 sui_lastmod;
+ __u32 sui_nblocks;
+ __u32 sui_flags;
+};
+enum {
+ NILFS_SUINFO_ACTIVE,
+ NILFS_SUINFO_DIRTY,
+ NILFS_SUINFO_ERROR,
+};
#define NILFS_SUINFO_FNS(flag,name) static inline int nilfs_suinfo_ ##name(const struct nilfs_suinfo * si) \
{ return si->sui_flags & (1UL << NILFS_SUINFO_ ##flag); \
}
@@ -61,6 +71,15 @@
} static inline int nilfs_suinfo_update_ ##name(const struct nilfs_suinfo_update * sup) \
{ return ! ! (sup->sup_flags & (1UL << NILFS_SUINFO_UPDATE_ ##flag)); \
}
+enum {
+ NILFS_CHECKPOINT,
+ NILFS_SNAPSHOT,
+};
+struct nilfs_cpmode {
+ __u64 cm_cno;
+ __u32 cm_mode;
+ __u32 cm_pad;
+};
struct nilfs_argv {
__u64 v_base;
__u32 v_nmembs;
diff --git a/libc/kernel/uapi/linux/nilfs2_ondisk.h b/libc/kernel/uapi/linux/nilfs2_ondisk.h
index d70b75f..e9995a1 100644
--- a/libc/kernel/uapi/linux/nilfs2_ondisk.h
+++ b/libc/kernel/uapi/linux/nilfs2_ondisk.h
@@ -254,6 +254,11 @@
} static inline int nilfs_checkpoint_ ##name(const struct nilfs_checkpoint * cp) \
{ return ! ! (le32_to_cpu(cp->cp_flags) & (1UL << NILFS_CHECKPOINT_ ##flag)); \
}
+struct nilfs_cpfile_header {
+ __le64 ch_ncheckpoints;
+ __le64 ch_nsnapshots;
+ struct nilfs_snapshot_list ch_snapshot_list;
+};
#define NILFS_CPFILE_FIRST_CHECKPOINT_OFFSET ((sizeof(struct nilfs_cpfile_header) + sizeof(struct nilfs_checkpoint) - 1) / sizeof(struct nilfs_checkpoint))
struct nilfs_segment_usage {
__le64 su_lastmod;
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 1f2f77d..471e65f 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -163,6 +163,7 @@
NL80211_CMD_EXTERNAL_AUTH,
NL80211_CMD_STA_OPMODE_CHANGED,
NL80211_CMD_CONTROL_PORT_FRAME,
+ NL80211_CMD_GET_FTM_RESPONDER_STATS,
__NL80211_CMD_AFTER_LAST,
NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
};
@@ -449,6 +450,8 @@
NL80211_ATTR_TXQ_MEMORY_LIMIT,
NL80211_ATTR_TXQ_QUANTUM,
NL80211_ATTR_HE_CAPABILITY,
+ NL80211_ATTR_FTM_RESPONDER,
+ NL80211_ATTR_FTM_RESPONDER_STATS,
__NL80211_ATTR_AFTER_LAST,
NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -615,10 +618,13 @@
NL80211_STA_INFO_RX_DURATION,
NL80211_STA_INFO_PAD,
NL80211_STA_INFO_ACK_SIGNAL,
- NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG,
+ NL80211_STA_INFO_ACK_SIGNAL_AVG,
+ NL80211_STA_INFO_RX_MPDUS,
+ NL80211_STA_INFO_FCS_ERROR_COUNT,
__NL80211_STA_INFO_AFTER_LAST,
NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
};
+#define NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG NL80211_STA_INFO_ACK_SIGNAL_AVG
enum nl80211_tid_stats {
__NL80211_TID_STATS_INVALID,
NL80211_TID_STATS_RX_MSDU,
@@ -1283,10 +1289,13 @@
NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
NL80211_EXT_FEATURE_DFS_OFFLOAD,
NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
- NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT,
+ NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
+ NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
NL80211_EXT_FEATURE_TXQS,
NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
+ NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
+ NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
NUM_NL80211_EXT_FEATURES,
MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
};
@@ -1448,4 +1457,27 @@
NL80211_EXTERNAL_AUTH_START,
NL80211_EXTERNAL_AUTH_ABORT,
};
+enum nl80211_ftm_responder_attributes {
+ __NL80211_FTM_RESP_ATTR_INVALID,
+ NL80211_FTM_RESP_ATTR_ENABLED,
+ NL80211_FTM_RESP_ATTR_LCI,
+ NL80211_FTM_RESP_ATTR_CIVICLOC,
+ __NL80211_FTM_RESP_ATTR_LAST,
+ NL80211_FTM_RESP_ATTR_MAX = __NL80211_FTM_RESP_ATTR_LAST - 1,
+};
+enum nl80211_ftm_responder_stats {
+ __NL80211_FTM_STATS_INVALID,
+ NL80211_FTM_STATS_SUCCESS_NUM,
+ NL80211_FTM_STATS_PARTIAL_NUM,
+ NL80211_FTM_STATS_FAILED_NUM,
+ NL80211_FTM_STATS_ASAP_NUM,
+ NL80211_FTM_STATS_NON_ASAP_NUM,
+ NL80211_FTM_STATS_TOTAL_DURATION_MSEC,
+ NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM,
+ NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM,
+ NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM,
+ NL80211_FTM_STATS_PAD,
+ __NL80211_FTM_STATS_AFTER_LAST,
+ NL80211_FTM_STATS_MAX = __NL80211_FTM_STATS_AFTER_LAST - 1
+};
#endif
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 7b234f5..8122fbb 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -36,6 +36,7 @@
#define PCI_COMMAND_FAST_BACK 0x200
#define PCI_COMMAND_INTX_DISABLE 0x400
#define PCI_STATUS 0x06
+#define PCI_STATUS_IMM_READY 0x01
#define PCI_STATUS_INTERRUPT 0x08
#define PCI_STATUS_CAP_LIST 0x10
#define PCI_STATUS_66MHZ 0x20
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index c106b5b..bf51785 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -286,6 +286,7 @@
#define PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT (1 << 12)
#define PERF_RECORD_MISC_MMAP_DATA (1 << 13)
#define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
+#define PERF_RECORD_MISC_FORK_EXEC (1 << 13)
#define PERF_RECORD_MISC_SWITCH_OUT (1 << 13)
#define PERF_RECORD_MISC_EXACT_IP (1 << 14)
#define PERF_RECORD_MISC_SWITCH_OUT_PREEMPT (1 << 14)
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 1ede892..ac80a0a 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -388,6 +388,7 @@
TCA_FLOWER_KEY_ENC_IP_TTL_MASK,
TCA_FLOWER_KEY_ENC_OPTS,
TCA_FLOWER_KEY_ENC_OPTS_MASK,
+ TCA_FLOWER_IN_HW_COUNT,
__TCA_FLOWER_MAX,
};
#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index 4efbc1c..e7d4942 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -283,8 +283,8 @@
__u32 lends;
__u32 borrows;
__u32 giants;
- __u32 tokens;
- __u32 ctokens;
+ __s32 tokens;
+ __s32 ctokens;
};
struct tc_hfsc_qopt {
__u16 defcls;
@@ -828,4 +828,35 @@
CAKE_ATM_PTM,
CAKE_ATM_MAX
};
+enum {
+ TC_TAPRIO_CMD_SET_GATES = 0x00,
+ TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
+ TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
+};
+enum {
+ TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
+ TCA_TAPRIO_SCHED_ENTRY_INDEX,
+ TCA_TAPRIO_SCHED_ENTRY_CMD,
+ TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
+ TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
+ __TCA_TAPRIO_SCHED_ENTRY_MAX,
+};
+#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
+enum {
+ TCA_TAPRIO_SCHED_UNSPEC,
+ TCA_TAPRIO_SCHED_ENTRY,
+ __TCA_TAPRIO_SCHED_MAX,
+};
+#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
+enum {
+ TCA_TAPRIO_ATTR_UNSPEC,
+ TCA_TAPRIO_ATTR_PRIOMAP,
+ TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
+ TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
+ TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
+ TCA_TAPRIO_ATTR_SCHED_CLOCKID,
+ TCA_TAPRIO_PAD,
+ __TCA_TAPRIO_ATTR_MAX,
+};
+#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
#endif
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index ba50b14..44a088d 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -137,6 +137,7 @@
#define PR_GET_SPECULATION_CTRL 52
#define PR_SET_SPECULATION_CTRL 53
#define PR_SPEC_STORE_BYPASS 0
+#define PR_SPEC_INDIRECT_BRANCH 1
#define PR_SPEC_NOT_AFFECTED 0
#define PR_SPEC_PRCTL (1UL << 0)
#define PR_SPEC_ENABLE (1UL << 1)
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 6ba738e..dc07d78 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -314,6 +314,8 @@
};
#define SCTP_ASSOC_CHANGE_DENIED 0x0004
#define SCTP_ASSOC_CHANGE_FAILED 0x0008
+#define SCTP_STREAM_CHANGE_DENIED SCTP_ASSOC_CHANGE_DENIED
+#define SCTP_STREAM_CHANGE_FAILED SCTP_ASSOC_CHANGE_FAILED
struct sctp_stream_change_event {
__u16 strchange_type;
__u16 strchange_flags;
@@ -655,6 +657,7 @@
};
enum sctp_sched_type {
SCTP_SS_FCFS,
+ SCTP_SS_DEFAULT = SCTP_SS_FCFS,
SCTP_SS_PRIO,
SCTP_SS_RR,
SCTP_SS_MAX = SCTP_SS_RR
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index 79f11e3..e4e903d 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -100,4 +100,15 @@
__u32 delay_rts_after_send;
__u32 padding[5];
};
+struct serial_iso7816 {
+ __u32 flags;
+#define SER_ISO7816_ENABLED (1 << 0)
+#define SER_ISO7816_T_PARAM (0x0f << 4)
+#define SER_ISO7816_T(t) (((t) & 0x0f) << 4)
+ __u32 tg;
+ __u32 sc_fi;
+ __u32 sc_di;
+ __u32 clk;
+ __u32 reserved[5];
+};
#endif
diff --git a/libc/kernel/uapi/linux/taskstats.h b/libc/kernel/uapi/linux/taskstats.h
index b7bc744..dc7791d 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 8
+#define TASKSTATS_VERSION 9
#define TS_COMM_LEN 32
struct taskstats {
__u16 version;
@@ -66,6 +66,8 @@
__u64 cpu_scaled_run_real_total;
__u64 freepages_count;
__u64 freepages_delay_total;
+ __u64 thrashing_count;
+ __u64 thrashing_delay_total;
};
enum {
TASKSTATS_CMD_UNSPEC = 0,
diff --git a/libc/kernel/uapi/linux/udmabuf.h b/libc/kernel/uapi/linux/udmabuf.h
new file mode 100644
index 0000000..70cf49f
--- /dev/null
+++ b/libc/kernel/uapi/linux/udmabuf.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** 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_UDMABUF_H
+#define _UAPI_LINUX_UDMABUF_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define UDMABUF_FLAGS_CLOEXEC 0x01
+struct udmabuf_create {
+ __u32 memfd;
+ __u32 flags;
+ __u64 offset;
+ __u64 size;
+};
+struct udmabuf_create_item {
+ __u32 memfd;
+ __u32 __pad;
+ __u64 offset;
+ __u64 size;
+};
+struct udmabuf_create_list {
+ __u32 flags;
+ __u32 count;
+ struct udmabuf_create_item list[];
+};
+#define UDMABUF_CREATE _IOW('u', 0x42, struct udmabuf_create)
+#define UDMABUF_CREATE_LIST _IOW('u', 0x43, struct udmabuf_create_list)
+#endif
diff --git a/libc/kernel/uapi/linux/usb/tmc.h b/libc/kernel/uapi/linux/usb/tmc.h
index 6e276de..20c061b 100644
--- a/libc/kernel/uapi/linux/usb/tmc.h
+++ b/libc/kernel/uapi/linux/usb/tmc.h
@@ -37,10 +37,30 @@
#define USBTMC488_REQUEST_REN_CONTROL 160
#define USBTMC488_REQUEST_GOTO_LOCAL 161
#define USBTMC488_REQUEST_LOCAL_LOCKOUT 162
+struct usbtmc_request {
+ __u8 bRequestType;
+ __u8 bRequest;
+ __u16 wValue;
+ __u16 wIndex;
+ __u16 wLength;
+} __attribute__((packed));
+struct usbtmc_ctrlrequest {
+ struct usbtmc_request req;
+ void __user * data;
+} __attribute__((packed));
struct usbtmc_termchar {
__u8 term_char;
__u8 term_char_enabled;
} __attribute__((packed));
+#define USBTMC_FLAG_ASYNC 0x0001
+#define USBTMC_FLAG_APPEND 0x0002
+#define USBTMC_FLAG_IGNORE_TRAILER 0x0004
+struct usbtmc_message {
+ __u32 transfer_size;
+ __u32 transferred;
+ __u32 flags;
+ void __user * message;
+} __attribute__((packed));
#define USBTMC_IOC_NR 91
#define USBTMC_IOCTL_INDICATOR_PULSE _IO(USBTMC_IOC_NR, 1)
#define USBTMC_IOCTL_CLEAR _IO(USBTMC_IOC_NR, 2)
@@ -48,16 +68,26 @@
#define USBTMC_IOCTL_ABORT_BULK_IN _IO(USBTMC_IOC_NR, 4)
#define USBTMC_IOCTL_CLEAR_OUT_HALT _IO(USBTMC_IOC_NR, 6)
#define USBTMC_IOCTL_CLEAR_IN_HALT _IO(USBTMC_IOC_NR, 7)
+#define USBTMC_IOCTL_CTRL_REQUEST _IOWR(USBTMC_IOC_NR, 8, struct usbtmc_ctrlrequest)
#define USBTMC_IOCTL_GET_TIMEOUT _IOR(USBTMC_IOC_NR, 9, __u32)
#define USBTMC_IOCTL_SET_TIMEOUT _IOW(USBTMC_IOC_NR, 10, __u32)
#define USBTMC_IOCTL_EOM_ENABLE _IOW(USBTMC_IOC_NR, 11, __u8)
#define USBTMC_IOCTL_CONFIG_TERMCHAR _IOW(USBTMC_IOC_NR, 12, struct usbtmc_termchar)
+#define USBTMC_IOCTL_WRITE _IOWR(USBTMC_IOC_NR, 13, struct usbtmc_message)
+#define USBTMC_IOCTL_READ _IOWR(USBTMC_IOC_NR, 14, struct usbtmc_message)
+#define USBTMC_IOCTL_WRITE_RESULT _IOWR(USBTMC_IOC_NR, 15, __u32)
+#define USBTMC_IOCTL_API_VERSION _IOR(USBTMC_IOC_NR, 16, __u32)
#define USBTMC488_IOCTL_GET_CAPS _IOR(USBTMC_IOC_NR, 17, unsigned char)
#define USBTMC488_IOCTL_READ_STB _IOR(USBTMC_IOC_NR, 18, unsigned char)
#define USBTMC488_IOCTL_REN_CONTROL _IOW(USBTMC_IOC_NR, 19, unsigned char)
#define USBTMC488_IOCTL_GOTO_LOCAL _IO(USBTMC_IOC_NR, 20)
#define USBTMC488_IOCTL_LOCAL_LOCKOUT _IO(USBTMC_IOC_NR, 21)
#define USBTMC488_IOCTL_TRIGGER _IO(USBTMC_IOC_NR, 22)
+#define USBTMC488_IOCTL_WAIT_SRQ _IOW(USBTMC_IOC_NR, 23, __u32)
+#define USBTMC_IOCTL_MSG_IN_ATTR _IOR(USBTMC_IOC_NR, 24, __u8)
+#define USBTMC_IOCTL_AUTO_ABORT _IOW(USBTMC_IOC_NR, 25, __u8)
+#define USBTMC_IOCTL_CANCEL_IO _IO(USBTMC_IOC_NR, 35)
+#define USBTMC_IOCTL_CLEANUP_IO _IO(USBTMC_IOC_NR, 36)
#define USBTMC488_CAPABILITY_TRIGGER 1
#define USBTMC488_CAPABILITY_SIMPLE 2
#define USBTMC488_CAPABILITY_REN_CONTROL 2
diff --git a/libc/kernel/uapi/linux/usb/video.h b/libc/kernel/uapi/linux/usb/video.h
index fb34483..cd2ede9 100644
--- a/libc/kernel/uapi/linux/usb/video.h
+++ b/libc/kernel/uapi/linux/usb/video.h
@@ -148,22 +148,22 @@
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
- __u16 bcdUVC;
- __u16 wTotalLength;
- __u32 dwClockFrequency;
+ __le16 bcdUVC;
+ __le16 wTotalLength;
+ __le32 dwClockFrequency;
__u8 bInCollection;
__u8 baInterfaceNr[];
} __attribute__((__packed__));
#define UVC_DT_HEADER_SIZE(n) (12 + (n))
#define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
-#define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u16 bcdUVC; __u16 wTotalLength; __u32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
+#define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __le16 bcdUVC; __le16 wTotalLength; __le32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
} __attribute__((packed))
struct uvc_input_terminal_descriptor {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bTerminalID;
- __u16 wTerminalType;
+ __le16 wTerminalType;
__u8 bAssocTerminal;
__u8 iTerminal;
} __attribute__((__packed__));
@@ -173,7 +173,7 @@
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bTerminalID;
- __u16 wTerminalType;
+ __le16 wTerminalType;
__u8 bAssocTerminal;
__u8 bSourceID;
__u8 iTerminal;
@@ -184,12 +184,12 @@
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bTerminalID;
- __u16 wTerminalType;
+ __le16 wTerminalType;
__u8 bAssocTerminal;
__u8 iTerminal;
- __u16 wObjectiveFocalLengthMin;
- __u16 wObjectiveFocalLengthMax;
- __u16 wOcularFocalLength;
+ __le16 wObjectiveFocalLengthMin;
+ __le16 wObjectiveFocalLengthMax;
+ __le16 wOcularFocalLength;
__u8 bControlSize;
__u8 bmControls[3];
} __attribute__((__packed__));
@@ -213,7 +213,7 @@
__u8 bDescriptorSubType;
__u8 bUnitID;
__u8 bSourceID;
- __u16 wMaxMultiplier;
+ __le16 wMaxMultiplier;
__u8 bControlSize;
__u8 bmControls[2];
__u8 iProcessing;
@@ -240,7 +240,7 @@
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
- __u16 wMaxTransferSize;
+ __le16 wMaxTransferSize;
} __attribute__((__packed__));
#define UVC_DT_CONTROL_ENDPOINT_SIZE 5
struct uvc_input_header_descriptor {
@@ -248,7 +248,7 @@
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bNumFormats;
- __u16 wTotalLength;
+ __le16 wTotalLength;
__u8 bEndpointAddress;
__u8 bmInfo;
__u8 bTerminalLink;
@@ -260,14 +260,14 @@
} __attribute__((__packed__));
#define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
#define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
-#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
+#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
} __attribute__((packed))
struct uvc_output_header_descriptor {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bNumFormats;
- __u16 wTotalLength;
+ __le16 wTotalLength;
__u8 bEndpointAddress;
__u8 bTerminalLink;
__u8 bControlSize;
@@ -275,7 +275,7 @@
} __attribute__((__packed__));
#define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
#define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
-#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
+#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
} __attribute__((packed))
struct uvc_color_matching_descriptor {
__u8 bLength;
@@ -325,18 +325,18 @@
__u8 bDescriptorSubType;
__u8 bFrameIndex;
__u8 bmCapabilities;
- __u16 wWidth;
- __u16 wHeight;
- __u32 dwMinBitRate;
- __u32 dwMaxBitRate;
- __u32 dwMaxVideoFrameBufferSize;
- __u32 dwDefaultFrameInterval;
+ __le16 wWidth;
+ __le16 wHeight;
+ __le32 dwMinBitRate;
+ __le32 dwMaxBitRate;
+ __le32 dwMaxVideoFrameBufferSize;
+ __le32 dwDefaultFrameInterval;
__u8 bFrameIntervalType;
- __u32 dwFrameInterval[];
+ __le32 dwFrameInterval[];
} __attribute__((__packed__));
#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
#define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
-#define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
+#define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
} __attribute__((packed))
struct uvc_format_mjpeg {
__u8 bLength;
@@ -358,17 +358,17 @@
__u8 bDescriptorSubType;
__u8 bFrameIndex;
__u8 bmCapabilities;
- __u16 wWidth;
- __u16 wHeight;
- __u32 dwMinBitRate;
- __u32 dwMaxBitRate;
- __u32 dwMaxVideoFrameBufferSize;
- __u32 dwDefaultFrameInterval;
+ __le16 wWidth;
+ __le16 wHeight;
+ __le32 dwMinBitRate;
+ __le32 dwMaxBitRate;
+ __le32 dwMaxVideoFrameBufferSize;
+ __le32 dwDefaultFrameInterval;
__u8 bFrameIntervalType;
- __u32 dwFrameInterval[];
+ __le32 dwFrameInterval[];
} __attribute__((__packed__));
#define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
#define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
-#define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
+#define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
} __attribute__((packed))
#endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 45590a2..3c2d2b2 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -18,6 +18,7 @@
****************************************************************************/
#ifndef __LINUX_V4L2_CONTROLS_H
#define __LINUX_V4L2_CONTROLS_H
+#include <linux/types.h>
#define V4L2_CTRL_CLASS_USER 0x00980000
#define V4L2_CTRL_CLASS_MPEG 0x00990000
#define V4L2_CTRL_CLASS_CAMERA 0x009a0000
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index a234744..6b1ef1b 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
***
****************************************************************************
****************************************************************************/
-#define LINUX_VERSION_CODE 267008
+#define LINUX_VERSION_CODE 267265
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 8b397f4..d282a52 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -57,6 +57,7 @@
#define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)
#define VFIO_DEVICE_FLAGS_AMBA (1 << 3)
#define VFIO_DEVICE_FLAGS_CCW (1 << 4)
+#define VFIO_DEVICE_FLAGS_AP (1 << 5)
__u32 num_regions;
__u32 num_irqs;
};
@@ -65,6 +66,7 @@
#define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform"
#define VFIO_DEVICE_API_AMBA_STRING "vfio-amba"
#define VFIO_DEVICE_API_CCW_STRING "vfio-ccw"
+#define VFIO_DEVICE_API_AP_STRING "vfio-ap"
struct vfio_region_info {
__u32 argsz;
__u32 flags;
@@ -100,6 +102,18 @@
#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)
+#define VFIO_REGION_TYPE_GFX (1)
+#define VFIO_REGION_SUBTYPE_GFX_EDID (1)
+struct vfio_region_gfx_edid {
+ __u32 edid_offset;
+ __u32 edid_max_size;
+ __u32 edid_size;
+ __u32 max_xres;
+ __u32 max_yres;
+ __u32 link_state;
+#define VFIO_DEVICE_GFX_LINK_STATE_UP 1
+#define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
+};
#define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3
struct vfio_irq_info {
__u32 argsz;
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 51faa1e..ef89b08 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -86,7 +86,7 @@
V4L2_COLORSPACE_470_SYSTEM_BG = 6,
V4L2_COLORSPACE_JPEG = 7,
V4L2_COLORSPACE_SRGB = 8,
- V4L2_COLORSPACE_ADOBERGB = 9,
+ V4L2_COLORSPACE_OPRGB = 9,
V4L2_COLORSPACE_BT2020 = 10,
V4L2_COLORSPACE_RAW = 11,
V4L2_COLORSPACE_DCI_P3 = 12,
@@ -96,13 +96,13 @@
V4L2_XFER_FUNC_DEFAULT = 0,
V4L2_XFER_FUNC_709 = 1,
V4L2_XFER_FUNC_SRGB = 2,
- V4L2_XFER_FUNC_ADOBERGB = 3,
+ V4L2_XFER_FUNC_OPRGB = 3,
V4L2_XFER_FUNC_SMPTE240M = 4,
V4L2_XFER_FUNC_NONE = 5,
V4L2_XFER_FUNC_DCI_P3 = 6,
V4L2_XFER_FUNC_SMPTE2084 = 7,
};
-#define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) ((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
+#define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
enum v4l2_ycbcr_encoding {
V4L2_YCBCR_ENC_DEFAULT = 0,
V4L2_YCBCR_ENC_601 = 1,
@@ -125,6 +125,8 @@
V4L2_QUANTIZATION_LIM_RANGE = 2,
};
#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv,colsp,ycbcr_enc) (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
+#define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB
+#define V4L2_XFER_FUNC_ADOBERGB V4L2_XFER_FUNC_OPRGB
enum v4l2_priority {
V4L2_PRIORITY_UNSET = 0,
V4L2_PRIORITY_BACKGROUND = 1,
@@ -313,6 +315,7 @@
#define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
#define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
#define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
+#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S')
#define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
#define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
@@ -352,6 +355,7 @@
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
+#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2')
#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')
@@ -371,6 +375,7 @@
#define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
#define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
+#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
struct v4l2_fmtdesc {
@@ -469,8 +474,13 @@
__u32 count;
__u32 type;
__u32 memory;
- __u32 reserved[2];
+ __u32 capabilities;
+ __u32 reserved[1];
};
+#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
+#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
+#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
+#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
struct v4l2_plane {
__u32 bytesused;
__u32 length;
@@ -500,7 +510,10 @@
} m;
__u32 length;
__u32 reserved2;
- __u32 reserved;
+ union {
+ __s32 request_fd;
+ __u32 reserved;
+ };
};
#define V4L2_BUF_FLAG_MAPPED 0x00000001
#define V4L2_BUF_FLAG_QUEUED 0x00000002
@@ -509,6 +522,7 @@
#define V4L2_BUF_FLAG_PFRAME 0x00000010
#define V4L2_BUF_FLAG_BFRAME 0x00000020
#define V4L2_BUF_FLAG_ERROR 0x00000040
+#define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
#define V4L2_BUF_FLAG_TIMECODE 0x00000100
#define V4L2_BUF_FLAG_PREPARED 0x00000400
#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
@@ -521,6 +535,7 @@
#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
#define V4L2_BUF_FLAG_LAST 0x00100000
+#define V4L2_BUF_FLAG_REQUEST_FD 0x00800000
struct v4l2_exportbuffer {
__u32 type;
__u32 index;
@@ -702,6 +717,7 @@
#define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6)
#define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7)
#define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8)
+#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)
@@ -819,7 +835,8 @@
};
__u32 count;
__u32 error_idx;
- __u32 reserved[2];
+ __s32 request_fd;
+ __u32 reserved[1];
struct v4l2_ext_control * controls;
};
#define V4L2_CTRL_ID_MASK (0x0fffffff)
@@ -829,6 +846,7 @@
#define V4L2_CTRL_MAX_DIMS (4)
#define V4L2_CTRL_WHICH_CUR_VAL 0
#define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000
+#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000
enum v4l2_ctrl_type {
V4L2_CTRL_TYPE_INTEGER = 1,
V4L2_CTRL_TYPE_BOOLEAN = 2,
@@ -1274,7 +1292,8 @@
__u32 count;
__u32 memory;
struct v4l2_format format;
- __u32 reserved[8];
+ __u32 capabilities;
+ __u32 reserved[7];
};
#define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
diff --git a/libc/kernel/uapi/linux/virtio_balloon.h b/libc/kernel/uapi/linux/virtio_balloon.h
index 5969fa0..806e757 100644
--- a/libc/kernel/uapi/linux/virtio_balloon.h
+++ b/libc/kernel/uapi/linux/virtio_balloon.h
@@ -25,10 +25,16 @@
#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0
#define VIRTIO_BALLOON_F_STATS_VQ 1
#define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2
+#define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3
+#define VIRTIO_BALLOON_F_PAGE_POISON 4
#define VIRTIO_BALLOON_PFN_SHIFT 12
+#define VIRTIO_BALLOON_CMD_ID_STOP 0
+#define VIRTIO_BALLOON_CMD_ID_DONE 1
struct virtio_balloon_config {
__u32 num_pages;
__u32 actual;
+ __u32 free_page_report_cmd_id;
+ __u32 poison_val;
};
#define VIRTIO_BALLOON_S_SWAP_IN 0
#define VIRTIO_BALLOON_S_SWAP_OUT 1
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index 3baf4ed..6ca4413 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -619,6 +619,22 @@
__u32 length;
__u32 lkey;
};
+enum ib_uverbs_wr_opcode {
+ IB_UVERBS_WR_RDMA_WRITE = 0,
+ IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1,
+ IB_UVERBS_WR_SEND = 2,
+ IB_UVERBS_WR_SEND_WITH_IMM = 3,
+ IB_UVERBS_WR_RDMA_READ = 4,
+ IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5,
+ IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6,
+ IB_UVERBS_WR_LOCAL_INV = 7,
+ IB_UVERBS_WR_BIND_MW = 8,
+ IB_UVERBS_WR_SEND_WITH_INV = 9,
+ IB_UVERBS_WR_TSO = 10,
+ IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
+ IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
+ IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
+};
struct ib_uverbs_send_wr {
__aligned_u64 wr_id;
__u32 num_sge;
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index 50ecd2f..77e14f6 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -28,6 +28,9 @@
MLX5_QP_FLAG_BFREG_INDEX = 1 << 3,
MLX5_QP_FLAG_TYPE_DCT = 1 << 4,
MLX5_QP_FLAG_TYPE_DCI = 1 << 5,
+ MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_UC = 1 << 6,
+ MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_MC = 1 << 7,
+ MLX5_QP_FLAG_ALLOW_SCATTER_CQE = 1 << 8,
};
enum {
MLX5_SRQ_FLAG_SIGNATURE = 1 << 0,
@@ -252,9 +255,21 @@
__u32 comp_mask;
__u32 flags;
};
+enum mlx5_ib_create_qp_resp_mask {
+ MLX5_IB_CREATE_QP_RESP_MASK_TIRN = 1UL << 0,
+ MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1,
+ MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2,
+ MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3,
+};
struct mlx5_ib_create_qp_resp {
__u32 bfreg_index;
__u32 reserved;
+ __u32 comp_mask;
+ __u32 tirn;
+ __u32 tisn;
+ __u32 rqn;
+ __u32 sqn;
+ __u32 reserved1;
};
struct mlx5_ib_alloc_mw {
__u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 11ff576..902816b 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -93,6 +93,7 @@
MLX5_IB_ATTR_FLOW_MATCHER_MATCH_MASK,
MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
+ MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
};
enum mlx5_ib_flow_matcher_destroy_attrs {
MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -117,6 +118,8 @@
MLX5_IB_ATTR_CREATE_FLOW_DEST_QP,
MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX,
MLX5_IB_ATTR_CREATE_FLOW_MATCHER,
+ MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
+ MLX5_IB_ATTR_CREATE_FLOW_TAG,
};
enum mlx5_ib_destoy_flow_attrs {
MLX5_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -125,4 +128,19 @@
MLX5_IB_METHOD_CREATE_FLOW = (1U << UVERBS_ID_NS_SHIFT),
MLX5_IB_METHOD_DESTROY_FLOW,
};
+enum mlx5_ib_flow_action_methods {
+ MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER = (1U << UVERBS_ID_NS_SHIFT),
+ MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT,
+};
+enum mlx5_ib_create_flow_action_create_modify_header_attrs {
+ MLX5_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+ MLX5_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM,
+ MLX5_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE,
+};
+enum mlx5_ib_create_flow_action_create_packet_reformat_attrs {
+ MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+ MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE,
+ MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE,
+ MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF,
+};
#endif
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c9a83cf..dc246e5 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -22,4 +22,14 @@
enum mlx5_ib_uapi_flow_action_flags {
MLX5_IB_UAPI_FLOW_ACTION_FLAGS_REQUIRE_METADATA = 1 << 0,
};
+enum mlx5_ib_uapi_flow_table_type {
+ MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX = 0x0,
+ MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX = 0x1,
+};
+enum mlx5_ib_uapi_flow_action_packet_reformat_type {
+ MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TUNNEL_TO_L2 = 0x0,
+ MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L2_TUNNEL = 0x1,
+ MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 = 0x2,
+ MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3,
+};
#endif
diff --git a/libc/kernel/uapi/rdma/rdma_netlink.h b/libc/kernel/uapi/rdma/rdma_netlink.h
index 48cbc3d..69805f1 100644
--- a/libc/kernel/uapi/rdma/rdma_netlink.h
+++ b/libc/kernel/uapi/rdma/rdma_netlink.h
@@ -173,6 +173,7 @@
enum rdma_nldev_command {
RDMA_NLDEV_CMD_UNSPEC,
RDMA_NLDEV_CMD_GET,
+ RDMA_NLDEV_CMD_SET,
RDMA_NLDEV_CMD_PORT_GET = 5,
RDMA_NLDEV_CMD_RES_GET = 9,
RDMA_NLDEV_CMD_RES_QP_GET,
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_ufs.h b/libc/kernel/uapi/scsi/scsi_bsg_ufs.h
new file mode 100644
index 0000000..177cae9
--- /dev/null
+++ b/libc/kernel/uapi/scsi/scsi_bsg_ufs.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** 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_UFS_H
+#define SCSI_BSG_UFS_H
+#include <linux/types.h>
+#define UFS_CDB_SIZE 16
+#define UPIU_TRANSACTION_UIC_CMD 0x1F
+#define UIC_CMD_SIZE (sizeof(__u32) * 4)
+struct utp_upiu_header {
+ __be32 dword_0;
+ __be32 dword_1;
+ __be32 dword_2;
+};
+struct utp_upiu_query {
+ __u8 opcode;
+ __u8 idn;
+ __u8 index;
+ __u8 selector;
+ __be16 reserved_osf;
+ __be16 length;
+ __be32 value;
+ __be32 reserved[2];
+};
+struct utp_upiu_cmd {
+ __be32 exp_data_transfer_len;
+ __u8 cdb[UFS_CDB_SIZE];
+};
+struct utp_upiu_req {
+ struct utp_upiu_header header;
+ union {
+ struct utp_upiu_cmd sc;
+ struct utp_upiu_query qr;
+ struct utp_upiu_query tr;
+ struct utp_upiu_query uc;
+ };
+};
+struct ufs_bsg_request {
+ __u32 msgcode;
+ struct utp_upiu_req upiu_req;
+};
+struct ufs_bsg_reply {
+ __u32 result;
+ __u32 reply_payload_rcv_len;
+ struct utp_upiu_req upiu_rsp;
+};
+#endif
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
deleted file mode 100644
index bd39d42..0000000
--- a/libc/libc.arm.map
+++ /dev/null
@@ -1,1679 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __atomic_cmpxchg; # arm
- __atomic_dec; # arm
- __atomic_inc; # arm
- __atomic_swap; # arm
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __connect; # arm x86 mips introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __epoll_pwait; # arm x86 mips introduced=21
- __errno;
- __exit; # arm x86 mips introduced=21
- __fbufsize; # introduced=23
- __fcntl64; # arm x86 mips
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fstatfs64; # arm x86 mips
- __fwritable; # introduced=23
- __get_h_errno;
- __getcpu; # arm x86 mips introduced-arm=12 introduced-mips=16 introduced-x86=12
- __getcwd; # arm x86 mips
- __getpid; # arm x86 mips introduced=21
- __getpriority; # arm x86 mips
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __ioctl; # arm x86 mips
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __isthreaded; # arm x86 mips var
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __llseek; # arm x86 mips
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __mmap2; # arm x86 mips
- __ns_format_ttl; # arm x86 mips
- __ns_get16; # arm x86 mips
- __ns_get32; # arm x86 mips
- __ns_initparse; # arm x86 mips
- __ns_makecanon; # arm x86 mips
- __ns_msg_getflag; # arm x86 mips
- __ns_name_compress; # arm x86 mips
- __ns_name_ntol; # arm x86 mips
- __ns_name_ntop; # arm x86 mips
- __ns_name_pack; # arm x86 mips
- __ns_name_pton; # arm x86 mips
- __ns_name_rollback; # arm x86 mips
- __ns_name_skip; # arm x86 mips
- __ns_name_uncompress; # arm x86 mips
- __ns_name_unpack; # arm x86 mips
- __ns_parserr; # arm x86 mips
- __ns_put16; # arm x86 mips
- __ns_put32; # arm x86 mips
- __ns_samename; # arm x86 mips
- __ns_skiprr; # arm x86 mips
- __ns_sprintrr; # arm x86 mips
- __ns_sprintrrf; # arm x86 mips
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat; # arm x86 mips
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll; # arm x86 mips introduced=21
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pselect6; # arm x86 mips introduced=21
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __ptrace; # arm x86 mips
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __reboot; # arm x86 mips
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __rt_sigaction; # arm x86 mips
- __rt_sigpending; # arm x86 mips introduced=21
- __rt_sigprocmask; # arm x86 mips
- __rt_sigsuspend; # arm x86 mips introduced=21
- __rt_sigtimedwait; # arm x86 mips
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_getaffinity; # arm x86 mips introduced=12
- __set_tid_address; # arm x86 mips introduced=21
- __set_tls; # arm mips
- __sF; # var
- __sigaction; # arm x86 mips introduced=21
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __socket; # arm x86 mips introduced=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __statfs64; # arm x86 mips
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __timer_create; # arm x86 mips
- __timer_delete; # arm x86 mips
- __timer_getoverrun; # arm x86 mips
- __timer_gettime; # arm x86 mips
- __timer_settime; # arm x86 mips
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __waitid; # arm x86 mips
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _tolower_tab_; # arm x86 mips var
- _toupper; # introduced=21
- _toupper_tab_; # arm x86 mips var
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime64; # arm x86 mips
- asctime64_r; # arm x86 mips
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- basename_r; # arm x86 mips
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- cacheflush; # arm mips
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime64; # arm x86 mips
- ctime64_r; # arm x86 mips
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- dirname_r; # arm x86 mips
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- fdprintf; # arm x86 mips versioned=28
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime64; # arm x86 mips
- gmtime64_r; # arm x86 mips
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime64; # arm x86 mips
- localtime64_r; # arm x86 mips
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mktime64; # arm x86 mips
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic; # arm x86 mips
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_timedwait_relative_np; # arm x86 mips
- pthread_cond_timeout_np; # arm x86 mips
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_lock_timeout_np; # arm x86 mips
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putw; # arm x86 mips
- putwc;
- putwchar;
- pvalloc; # arm x86 mips introduced=17
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timegm64; # arm x86 mips
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal64; # arm x86 mips
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- valloc; # arm x86 mips
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfdprintf; # arm x86 mips versioned=28
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __aeabi_atexit; # arm versioned=24
- __aeabi_memclr; # arm versioned=24
- __aeabi_memclr4; # arm versioned=24
- __aeabi_memclr8; # arm versioned=24
- __aeabi_memcpy; # arm versioned=24
- __aeabi_memcpy4; # arm versioned=24
- __aeabi_memcpy8; # arm versioned=24
- __aeabi_memmove; # arm versioned=24
- __aeabi_memmove4; # arm versioned=24
- __aeabi_memmove8; # arm versioned=24
- __aeabi_memset; # arm versioned=24
- __aeabi_memset4; # arm versioned=24
- __aeabi_memset8; # arm versioned=24
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __gnu_Unwind_Find_exidx; # arm versioned=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- prlimit; # arm mips x86 introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- bsd_signal; # arm x86 mips versioned=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- ___Unwind_Backtrace; # arm
- ___Unwind_ForcedUnwind; # arm
- ___Unwind_RaiseException; # arm
- ___Unwind_Resume; # arm
- ___Unwind_Resume_or_Rethrow; # arm
- __accept4; # arm x86 mips
- __adddf3; # arm
- __addsf3; # arm
- __aeabi_atexit; # arm
- __aeabi_cdcmpeq; # arm
- __aeabi_cdcmple; # arm
- __aeabi_cdrcmple; # arm
- __aeabi_d2f; # arm
- __aeabi_d2iz; # arm
- __aeabi_dadd; # arm
- __aeabi_dcmpeq; # arm
- __aeabi_dcmpge; # arm
- __aeabi_dcmpgt; # arm
- __aeabi_dcmple; # arm
- __aeabi_dcmplt; # arm
- __aeabi_dcmpun; # arm
- __aeabi_ddiv; # arm
- __aeabi_dmul; # arm
- __aeabi_drsub; # arm
- __aeabi_dsub; # arm
- __aeabi_f2d; # arm
- __aeabi_f2iz; # arm
- __aeabi_f2uiz; # arm
- __aeabi_fadd; # arm
- __aeabi_fcmpun; # arm
- __aeabi_fdiv; # arm
- __aeabi_fmul; # arm
- __aeabi_frsub; # arm
- __aeabi_fsub; # arm
- __aeabi_i2d; # arm
- __aeabi_i2f; # arm
- __aeabi_idiv; # arm
- __aeabi_idiv0; # arm
- __aeabi_idivmod; # arm
- __aeabi_l2d; # arm
- __aeabi_l2f; # arm
- __aeabi_lasr; # arm
- __aeabi_ldiv0; # arm
- __aeabi_ldivmod; # arm
- __aeabi_llsl; # arm
- __aeabi_llsr; # arm
- __aeabi_lmul; # arm
- __aeabi_memclr; # arm
- __aeabi_memclr4; # arm
- __aeabi_memclr8; # arm
- __aeabi_memcpy; # arm
- __aeabi_memcpy4; # arm
- __aeabi_memcpy8; # arm
- __aeabi_memmove; # arm
- __aeabi_memmove4; # arm
- __aeabi_memmove8; # arm
- __aeabi_memset; # arm
- __aeabi_memset4; # arm
- __aeabi_memset8; # arm
- __aeabi_ui2d; # arm
- __aeabi_ui2f; # arm
- __aeabi_uidiv; # arm
- __aeabi_uidivmod; # arm
- __aeabi_ul2d; # arm
- __aeabi_ul2f; # arm
- __aeabi_uldivmod; # arm
- __aeabi_unwind_cpp_pr0; # arm
- __aeabi_unwind_cpp_pr1; # arm
- __aeabi_unwind_cpp_pr2; # arm
- __arm_fadvise64_64; # arm
- __ashldi3; # arm
- __ashrdi3; # arm
- __bionic_brk; # arm x86 mips
- __bionic_libgcc_compat_symbols; # arm x86
- __cmpdf2; # arm
- __divdf3; # arm
- __divdi3; # arm x86 mips
- __divsf3; # arm
- __divsi3; # arm
- __dso_handle; # arm
- __eqdf2; # arm
- __extendsfdf2; # arm
- __fixdfsi; # arm
- __fixsfsi; # arm
- __fixunssfsi; # arm
- __floatdidf; # arm
- __floatdisf; # arm
- __floatsidf; # arm
- __floatsisf; # arm
- __floatundidf; # arm
- __floatundisf; # arm
- __floatunsidf; # arm
- __floatunsisf; # arm
- __futex_wait; # arm x86 mips
- __futex_wake; # arm x86 mips
- __gedf2; # arm
- __get_thread; # arm x86 mips
- __get_tls; # arm x86 mips
- __getdents64; # arm x86 mips
- __gnu_ldivmod_helper; # arm
- __gnu_uldivmod_helper; # arm
- __gnu_Unwind_Backtrace; # arm
- __gnu_unwind_execute; # arm
- __gnu_Unwind_Find_exidx; # arm
- __gnu_Unwind_ForcedUnwind; # arm
- __gnu_unwind_frame; # arm
- __gnu_Unwind_RaiseException; # arm
- __gnu_Unwind_Restore_VFP; # arm
- __gnu_Unwind_Restore_VFP_D; # arm
- __gnu_Unwind_Restore_VFP_D_16_to_31; # arm
- __gnu_Unwind_Restore_WMMXC; # arm
- __gnu_Unwind_Restore_WMMXD; # arm
- __gnu_Unwind_Resume; # arm
- __gnu_Unwind_Resume_or_Rethrow; # arm
- __gnu_Unwind_Save_VFP; # arm
- __gnu_Unwind_Save_VFP_D; # arm
- __gnu_Unwind_Save_VFP_D_16_to_31; # arm
- __gnu_Unwind_Save_WMMXC; # arm
- __gnu_Unwind_Save_WMMXD; # arm
- __gtdf2; # arm
- __ledf2; # arm
- __lshrdi3; # arm
- __ltdf2; # arm
- __muldf3; # arm
- __muldi3; # arm
- __mulsf3; # arm
- __nedf2; # arm
- __open; # arm x86 mips
- __page_shift; # arm x86 mips
- __page_size; # arm x86 mips
- __popcount_tab; # arm
- __popcountsi2; # arm x86 mips
- __pthread_gettid; # arm x86 mips
- __restore_core_regs; # arm
- __sclose; # arm x86 mips
- __sdidinit; # arm x86 mips
- __set_errno; # arm x86 mips
- __sflags; # arm x86 mips
- __sflush; # arm x86 mips
- __sfp; # arm x86 mips
- __sglue; # arm x86 mips
- __sinit; # arm x86 mips
- __smakebuf; # arm x86 mips
- __sread; # arm x86 mips
- __srefill; # arm x86 mips
- __srget; # arm x86 mips
- __sseek; # arm x86 mips
- __subdf3; # arm
- __subsf3; # arm
- __swbuf; # arm x86 mips
- __swrite; # arm x86 mips
- __swsetup; # arm x86 mips
- __truncdfsf2; # arm
- __udivdi3; # arm x86 mips
- __udivsi3; # arm
- __unorddf2; # arm
- __unordsf2; # arm
- __wait4; # arm x86 mips
- _fwalk; # arm x86 mips
- _Unwind_Backtrace; # arm
- _Unwind_Complete; # arm
- _Unwind_DeleteException; # arm
- _Unwind_ForcedUnwind; # arm
- _Unwind_GetCFA; # arm
- _Unwind_GetDataRelBase; # arm
- _Unwind_GetLanguageSpecificData; # arm
- _Unwind_GetRegionStart; # arm
- _Unwind_GetTextRelBase; # arm
- _Unwind_RaiseException; # arm
- _Unwind_Resume; # arm
- _Unwind_Resume_or_Rethrow; # arm
- _Unwind_VRS_Get; # arm
- _Unwind_VRS_Pop; # arm
- _Unwind_VRS_Set; # arm
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- arc4random_addrandom; # arm x86 mips
- arc4random_stir; # arm x86 mips
- atexit; # arm
- bcopy; # arm x86 mips
- bzero; # arm x86 mips
- dlmalloc; # arm x86 mips
- dlmalloc_inspect_all; # arm x86 mips
- dlmalloc_trim; # arm x86 mips
- dlmalloc_usable_size; # arm x86 mips
- free_malloc_leak_info;
- ftime; # arm x86 mips
- get_malloc_leak_info;
- getdents; # arm x86 mips
- getdtablesize; # arm x86 mips
- gMallocLeakZygoteChild;
- index; # arm x86 mips
- issetugid; # arm x86 mips
- memswap; # arm x86 mips
- pthread_attr_getstackaddr; # arm x86 mips
- pthread_attr_setstackaddr; # arm x86 mips
- restore_core_regs; # arm
- SHA1Final; # arm x86 mips
- SHA1Init; # arm x86 mips
- SHA1Transform; # arm x86 mips
- SHA1Update; # arm x86 mips
- strntoimax; # arm x86 mips
- strntoumax; # arm x86 mips
- strtotimeval; # arm x86 mips
- sysv_signal; # arm x86 mips
- tkill; # arm x86 mips
- wait3; # arm x86 mips
- wcswcs; # arm x86 mips
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
deleted file mode 100644
index 81ff00d..0000000
--- a/libc/libc.arm64.map
+++ /dev/null
@@ -1,1397 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __errno;
- __fbufsize; # introduced=23
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fwritable; # introduced=23
- __get_h_errno;
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sF; # var
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _toupper; # introduced=21
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- ns_format_ttl; # arm64 x86_64 mips64 introduced=22
- ns_get16; # arm64 x86_64 mips64 introduced=22
- ns_get32; # arm64 x86_64 mips64 introduced=22
- ns_initparse; # arm64 x86_64 mips64 introduced=22
- ns_makecanon; # arm64 x86_64 mips64 introduced=22
- ns_msg_getflag; # arm64 x86_64 mips64 introduced=22
- ns_name_compress; # arm64 x86_64 mips64 introduced=22
- ns_name_ntol; # arm64 x86_64 mips64 introduced=22
- ns_name_ntop; # arm64 x86_64 mips64 introduced=22
- ns_name_pack; # arm64 x86_64 mips64 introduced=22
- ns_name_pton; # arm64 x86_64 mips64 introduced=23
- ns_name_rollback; # arm64 x86_64 mips64 introduced=22
- ns_name_skip; # arm64 x86_64 mips64 introduced=22
- ns_name_uncompress; # arm64 x86_64 mips64 introduced=22
- ns_name_unpack; # arm64 x86_64 mips64 introduced=22
- ns_parserr; # arm64 x86_64 mips64 introduced=22
- ns_put16; # arm64 x86_64 mips64 introduced=22
- ns_put32; # arm64 x86_64 mips64 introduced=22
- ns_samename; # arm64 x86_64 mips64 introduced=22
- ns_skiprr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrrf; # arm64 x86_64 mips64 introduced=22
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit; # arm64 x86_64 mips64
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putwc;
- putwchar;
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- free_malloc_leak_info;
- get_malloc_leak_info;
- gMallocLeakZygoteChild;
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index 934ad1f..9dfdbc0 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -207,7 +207,6 @@
_ctype_; # var
_Exit; # introduced=21
_exit;
- _flush_cache; # mips
_flushlbf; # introduced=23
_getlong;
_getshort;
@@ -1447,20 +1446,49 @@
LIBC_Q { # introduced=Q
global:
+ __aeabi_read_tp; # arm
__res_randomid;
android_fdsan_close_with_tag;
android_fdsan_create_owner_tag;
android_fdsan_exchange_owner_tag;
+ android_fdsan_get_error_level;
android_fdsan_get_owner_tag;
android_fdsan_get_tag_type;
android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
android_fdsan_set_error_level;
android_get_device_api_level;
getloadavg;
pthread_sigqueue;
reallocarray;
timespec_get;
+
+ # Used by libselinux
+ __system_properties_init; # apex
+
+ # Used by libmemunreachable
+ malloc_backtrace; # apex
+ malloc_disable; # apex
+ malloc_enable; # apex
+ malloc_iterate; # apex
+
+ # Used by libmediautils
+ write_malloc_leak_info; # apex
+ free_malloc_leak_info; # apex
+ get_malloc_leak_info; # apex
+
+ # Used by libandroid_net
+ android_getaddrinfofornet; # apex
+
+ # Used by libandroid_runtime
+ gMallocLeakZygoteChild; # apex
+
+ # TODO(b/120266448) hide these symbols again
+ # Used by libndk_translation
+ __getdents64; # arm x86 mips apex
+ tkill; # arm x86 mips apex
+ # Used by PtsBionicDeviceTestCases
+ __bionic_brk; # arm x86 mips apex
+ __system_property_add; # apex
} LIBC_P;
LIBC_PRIVATE {
@@ -1537,7 +1565,6 @@
__arm_fadvise64_64; # arm
__ashldi3; # arm
__ashrdi3; # arm
- __bionic_brk; # arm x86 mips
__bionic_libgcc_compat_symbols; # arm x86
__cmpdf2; # arm
__divdf3; # arm
@@ -1563,7 +1590,6 @@
__gedf2; # arm
__get_thread; # arm x86 mips
__get_tls; # arm x86 mips
- __getdents64; # arm x86 mips
__gnu_ldivmod_helper; # arm
__gnu_uldivmod_helper; # arm
__gnu_Unwind_Backtrace; # arm
@@ -1640,7 +1666,6 @@
_Unwind_VRS_Get; # arm
_Unwind_VRS_Pop; # arm
_Unwind_VRS_Set; # arm
- android_getaddrinfofornet;
android_getaddrinfofornetcontext;
android_gethostbyaddrfornet;
android_gethostbyaddrfornetcontext;
@@ -1655,12 +1680,9 @@
dlmalloc_inspect_all; # arm x86 mips
dlmalloc_trim; # arm x86 mips
dlmalloc_usable_size; # arm x86 mips
- free_malloc_leak_info;
ftime; # arm x86 mips
- get_malloc_leak_info;
getdents; # arm x86 mips
getdtablesize; # arm x86 mips
- gMallocLeakZygoteChild;
index; # arm x86 mips
issetugid; # arm x86 mips
memswap; # arm x86 mips
@@ -1675,10 +1697,8 @@
strntoumax; # arm x86 mips
strtotimeval; # arm x86 mips
sysv_signal; # arm x86 mips
- tkill; # arm x86 mips
wait3; # arm x86 mips
wcswcs; # arm x86 mips
- write_malloc_leak_info;
} LIBC_Q;
LIBC_DEPRECATED {
@@ -1688,9 +1708,7 @@
LIBC_PLATFORM {
global:
- __system_properties_init;
__system_property_area__; # var
- __system_property_add;
__system_property_area_init;
__system_property_set_filename;
__system_property_update;
@@ -1698,8 +1716,4 @@
android_net_res_stats_get_info_for_net;
android_net_res_stats_aggregate;
android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
} LIBC_Q;
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
deleted file mode 100644
index dc184a6..0000000
--- a/libc/libc.mips.map
+++ /dev/null
@@ -1,1520 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __connect; # arm x86 mips introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __epoll_pwait; # arm x86 mips introduced=21
- __errno;
- __exit; # arm x86 mips introduced=21
- __fadvise64; # x86 mips introduced=21
- __fbufsize; # introduced=23
- __fcntl64; # arm x86 mips
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fstatfs64; # arm x86 mips
- __fwritable; # introduced=23
- __get_h_errno;
- __getcpu; # arm x86 mips introduced-arm=12 introduced-mips=16 introduced-x86=12
- __getcwd; # arm x86 mips
- __getpid; # arm x86 mips introduced=21
- __getpriority; # arm x86 mips
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __ioctl; # arm x86 mips
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __isthreaded; # arm x86 mips var
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __llseek; # arm x86 mips
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __mmap2; # arm x86 mips
- __ns_format_ttl; # arm x86 mips
- __ns_get16; # arm x86 mips
- __ns_get32; # arm x86 mips
- __ns_initparse; # arm x86 mips
- __ns_makecanon; # arm x86 mips
- __ns_msg_getflag; # arm x86 mips
- __ns_name_compress; # arm x86 mips
- __ns_name_ntol; # arm x86 mips
- __ns_name_ntop; # arm x86 mips
- __ns_name_pack; # arm x86 mips
- __ns_name_pton; # arm x86 mips
- __ns_name_rollback; # arm x86 mips
- __ns_name_skip; # arm x86 mips
- __ns_name_uncompress; # arm x86 mips
- __ns_name_unpack; # arm x86 mips
- __ns_parserr; # arm x86 mips
- __ns_put16; # arm x86 mips
- __ns_put32; # arm x86 mips
- __ns_samename; # arm x86 mips
- __ns_skiprr; # arm x86 mips
- __ns_sprintrr; # arm x86 mips
- __ns_sprintrrf; # arm x86 mips
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat; # arm x86 mips
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll; # arm x86 mips introduced=21
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pselect6; # arm x86 mips introduced=21
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __ptrace; # arm x86 mips
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __reboot; # arm x86 mips
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __rt_sigaction; # arm x86 mips
- __rt_sigpending; # arm x86 mips introduced=21
- __rt_sigprocmask; # arm x86 mips
- __rt_sigsuspend; # arm x86 mips introduced=21
- __rt_sigtimedwait; # arm x86 mips
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_getaffinity; # arm x86 mips introduced=12
- __set_tid_address; # arm x86 mips introduced=21
- __set_tls; # arm mips
- __sF; # var
- __sigaction; # arm x86 mips introduced=21
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __socket; # arm x86 mips introduced=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __statfs64; # arm x86 mips
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __timer_create; # arm x86 mips
- __timer_delete; # arm x86 mips
- __timer_getoverrun; # arm x86 mips
- __timer_gettime; # arm x86 mips
- __timer_settime; # arm x86 mips
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __waitid; # arm x86 mips
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flush_cache; # mips
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _tolower_tab_; # arm x86 mips var
- _toupper; # introduced=21
- _toupper_tab_; # arm x86 mips var
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime64; # arm x86 mips
- asctime64_r; # arm x86 mips
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- basename_r; # arm x86 mips
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- cacheflush; # arm mips
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime64; # arm x86 mips
- ctime64_r; # arm x86 mips
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- dirname_r; # arm x86 mips
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- fdprintf; # arm x86 mips versioned=28
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime64; # arm x86 mips
- gmtime64_r; # arm x86 mips
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime64; # arm x86 mips
- localtime64_r; # arm x86 mips
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mktime64; # arm x86 mips
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic; # arm x86 mips
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_timedwait_relative_np; # arm x86 mips
- pthread_cond_timeout_np; # arm x86 mips
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_lock_timeout_np; # arm x86 mips
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putw; # arm x86 mips
- putwc;
- putwchar;
- pvalloc; # arm x86 mips introduced=17
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timegm64; # arm x86 mips
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal64; # arm x86 mips
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- valloc; # arm x86 mips
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfdprintf; # arm x86 mips versioned=28
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- prlimit; # arm mips x86 introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- bsd_signal; # arm x86 mips versioned=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- __accept4; # arm x86 mips
- __bionic_brk; # arm x86 mips
- __divdi3; # arm x86 mips
- __futex_wait; # arm x86 mips
- __futex_wake; # arm x86 mips
- __get_thread; # arm x86 mips
- __get_tls; # arm x86 mips
- __getdents64; # arm x86 mips
- __open; # arm x86 mips
- __page_shift; # arm x86 mips
- __page_size; # arm x86 mips
- __popcountsi2; # arm x86 mips
- __pthread_gettid; # arm x86 mips
- __sclose; # arm x86 mips
- __sdidinit; # arm x86 mips
- __set_errno; # arm x86 mips
- __sflags; # arm x86 mips
- __sflush; # arm x86 mips
- __sfp; # arm x86 mips
- __sglue; # arm x86 mips
- __sinit; # arm x86 mips
- __smakebuf; # arm x86 mips
- __sread; # arm x86 mips
- __srefill; # arm x86 mips
- __srget; # arm x86 mips
- __sseek; # arm x86 mips
- __swbuf; # arm x86 mips
- __swrite; # arm x86 mips
- __swsetup; # arm x86 mips
- __udivdi3; # arm x86 mips
- __umoddi3; # x86 mips
- __wait4; # arm x86 mips
- _fwalk; # arm x86 mips
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- arc4random_addrandom; # arm x86 mips
- arc4random_stir; # arm x86 mips
- bcopy; # arm x86 mips
- bzero; # arm x86 mips
- dlmalloc; # arm x86 mips
- dlmalloc_inspect_all; # arm x86 mips
- dlmalloc_trim; # arm x86 mips
- dlmalloc_usable_size; # arm x86 mips
- free_malloc_leak_info;
- ftime; # arm x86 mips
- get_malloc_leak_info;
- getdents; # arm x86 mips
- getdtablesize; # arm x86 mips
- gMallocLeakZygoteChild;
- index; # arm x86 mips
- issetugid; # arm x86 mips
- memswap; # arm x86 mips
- pthread_attr_getstackaddr; # arm x86 mips
- pthread_attr_setstackaddr; # arm x86 mips
- SHA1Final; # arm x86 mips
- SHA1Init; # arm x86 mips
- SHA1Transform; # arm x86 mips
- SHA1Update; # arm x86 mips
- strntoimax; # arm x86 mips
- strntoumax; # arm x86 mips
- strtotimeval; # arm x86 mips
- sysv_signal; # arm x86 mips
- tkill; # arm x86 mips
- wait3; # arm x86 mips
- wcswcs; # arm x86 mips
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
deleted file mode 100644
index 81ff00d..0000000
--- a/libc/libc.mips64.map
+++ /dev/null
@@ -1,1397 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __errno;
- __fbufsize; # introduced=23
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fwritable; # introduced=23
- __get_h_errno;
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sF; # var
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _toupper; # introduced=21
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- ns_format_ttl; # arm64 x86_64 mips64 introduced=22
- ns_get16; # arm64 x86_64 mips64 introduced=22
- ns_get32; # arm64 x86_64 mips64 introduced=22
- ns_initparse; # arm64 x86_64 mips64 introduced=22
- ns_makecanon; # arm64 x86_64 mips64 introduced=22
- ns_msg_getflag; # arm64 x86_64 mips64 introduced=22
- ns_name_compress; # arm64 x86_64 mips64 introduced=22
- ns_name_ntol; # arm64 x86_64 mips64 introduced=22
- ns_name_ntop; # arm64 x86_64 mips64 introduced=22
- ns_name_pack; # arm64 x86_64 mips64 introduced=22
- ns_name_pton; # arm64 x86_64 mips64 introduced=23
- ns_name_rollback; # arm64 x86_64 mips64 introduced=22
- ns_name_skip; # arm64 x86_64 mips64 introduced=22
- ns_name_uncompress; # arm64 x86_64 mips64 introduced=22
- ns_name_unpack; # arm64 x86_64 mips64 introduced=22
- ns_parserr; # arm64 x86_64 mips64 introduced=22
- ns_put16; # arm64 x86_64 mips64 introduced=22
- ns_put32; # arm64 x86_64 mips64 introduced=22
- ns_samename; # arm64 x86_64 mips64 introduced=22
- ns_skiprr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrrf; # arm64 x86_64 mips64 introduced=22
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit; # arm64 x86_64 mips64
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putwc;
- putwchar;
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- free_malloc_leak_info;
- get_malloc_leak_info;
- gMallocLeakZygoteChild;
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
deleted file mode 100644
index f360dbf..0000000
--- a/libc/libc.x86.map
+++ /dev/null
@@ -1,1519 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __connect; # arm x86 mips introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __epoll_pwait; # arm x86 mips introduced=21
- __errno;
- __exit; # arm x86 mips introduced=21
- __fadvise64; # x86 mips introduced=21
- __fbufsize; # introduced=23
- __fcntl64; # arm x86 mips
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fstatfs64; # arm x86 mips
- __fwritable; # introduced=23
- __get_h_errno;
- __getcpu; # arm x86 mips introduced-arm=12 introduced-mips=16 introduced-x86=12
- __getcwd; # arm x86 mips
- __getpid; # arm x86 mips introduced=21
- __getpriority; # arm x86 mips
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __ioctl; # arm x86 mips
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __isthreaded; # arm x86 mips var
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __llseek; # arm x86 mips
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __mmap2; # arm x86 mips
- __ns_format_ttl; # arm x86 mips
- __ns_get16; # arm x86 mips
- __ns_get32; # arm x86 mips
- __ns_initparse; # arm x86 mips
- __ns_makecanon; # arm x86 mips
- __ns_msg_getflag; # arm x86 mips
- __ns_name_compress; # arm x86 mips
- __ns_name_ntol; # arm x86 mips
- __ns_name_ntop; # arm x86 mips
- __ns_name_pack; # arm x86 mips
- __ns_name_pton; # arm x86 mips
- __ns_name_rollback; # arm x86 mips
- __ns_name_skip; # arm x86 mips
- __ns_name_uncompress; # arm x86 mips
- __ns_name_unpack; # arm x86 mips
- __ns_parserr; # arm x86 mips
- __ns_put16; # arm x86 mips
- __ns_put32; # arm x86 mips
- __ns_samename; # arm x86 mips
- __ns_skiprr; # arm x86 mips
- __ns_sprintrr; # arm x86 mips
- __ns_sprintrrf; # arm x86 mips
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat; # arm x86 mips
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll; # arm x86 mips introduced=21
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pselect6; # arm x86 mips introduced=21
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __ptrace; # arm x86 mips
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __reboot; # arm x86 mips
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __rt_sigaction; # arm x86 mips
- __rt_sigpending; # arm x86 mips introduced=21
- __rt_sigprocmask; # arm x86 mips
- __rt_sigsuspend; # arm x86 mips introduced=21
- __rt_sigtimedwait; # arm x86 mips
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_getaffinity; # arm x86 mips introduced=12
- __set_thread_area; # x86
- __set_tid_address; # arm x86 mips introduced=21
- __sF; # var
- __sigaction; # arm x86 mips introduced=21
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __socket; # arm x86 mips introduced=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __statfs64; # arm x86 mips
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __timer_create; # arm x86 mips
- __timer_delete; # arm x86 mips
- __timer_getoverrun; # arm x86 mips
- __timer_gettime; # arm x86 mips
- __timer_settime; # arm x86 mips
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __waitid; # arm x86 mips
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _tolower_tab_; # arm x86 mips var
- _toupper; # introduced=21
- _toupper_tab_; # arm x86 mips var
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime64; # arm x86 mips
- asctime64_r; # arm x86 mips
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- basename_r; # arm x86 mips
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime64; # arm x86 mips
- ctime64_r; # arm x86 mips
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- dirname_r; # arm x86 mips
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- fdprintf; # arm x86 mips versioned=28
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime64; # arm x86 mips
- gmtime64_r; # arm x86 mips
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime64; # arm x86 mips
- localtime64_r; # arm x86 mips
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mktime64; # arm x86 mips
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic; # arm x86 mips
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_timedwait_relative_np; # arm x86 mips
- pthread_cond_timeout_np; # arm x86 mips
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_lock_timeout_np; # arm x86 mips
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putw; # arm x86 mips
- putwc;
- putwchar;
- pvalloc; # arm x86 mips introduced=17
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timegm64; # arm x86 mips
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal64; # arm x86 mips
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- valloc; # arm x86 mips
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfdprintf; # arm x86 mips versioned=28
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- prlimit; # arm mips x86 introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- bsd_signal; # arm x86 mips versioned=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- __accept4; # arm x86 mips
- __bionic_brk; # arm x86 mips
- __bionic_libgcc_compat_symbols; # arm x86
- __divdi3; # arm x86 mips
- __futex_wait; # arm x86 mips
- __futex_wake; # arm x86 mips
- __get_thread; # arm x86 mips
- __get_tls; # arm x86 mips
- __getdents64; # arm x86 mips
- __open; # arm x86 mips
- __page_shift; # arm x86 mips
- __page_size; # arm x86 mips
- __popcountsi2; # arm x86 mips
- __pthread_gettid; # arm x86 mips
- __sclose; # arm x86 mips
- __sdidinit; # arm x86 mips
- __set_errno; # arm x86 mips
- __sflags; # arm x86 mips
- __sflush; # arm x86 mips
- __sfp; # arm x86 mips
- __sglue; # arm x86 mips
- __sinit; # arm x86 mips
- __smakebuf; # arm x86 mips
- __sread; # arm x86 mips
- __srefill; # arm x86 mips
- __srget; # arm x86 mips
- __sseek; # arm x86 mips
- __swbuf; # arm x86 mips
- __swrite; # arm x86 mips
- __swsetup; # arm x86 mips
- __udivdi3; # arm x86 mips
- __umoddi3; # x86 mips
- __wait4; # arm x86 mips
- _fwalk; # arm x86 mips
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- arc4random_addrandom; # arm x86 mips
- arc4random_stir; # arm x86 mips
- bcopy; # arm x86 mips
- bzero; # arm x86 mips
- dlmalloc; # arm x86 mips
- dlmalloc_inspect_all; # arm x86 mips
- dlmalloc_trim; # arm x86 mips
- dlmalloc_usable_size; # arm x86 mips
- free_malloc_leak_info;
- ftime; # arm x86 mips
- get_malloc_leak_info;
- getdents; # arm x86 mips
- getdtablesize; # arm x86 mips
- gMallocLeakZygoteChild;
- index; # arm x86 mips
- issetugid; # arm x86 mips
- memswap; # arm x86 mips
- pthread_attr_getstackaddr; # arm x86 mips
- pthread_attr_setstackaddr; # arm x86 mips
- SHA1Final; # arm x86 mips
- SHA1Init; # arm x86 mips
- SHA1Transform; # arm x86 mips
- SHA1Update; # arm x86 mips
- strntoimax; # arm x86 mips
- strntoumax; # arm x86 mips
- strtotimeval; # arm x86 mips
- sysv_signal; # arm x86 mips
- tkill; # arm x86 mips
- wait3; # arm x86 mips
- wcswcs; # arm x86 mips
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
deleted file mode 100644
index 81ff00d..0000000
--- a/libc/libc.x86_64.map
+++ /dev/null
@@ -1,1397 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __assert;
- __assert2;
- __b64_ntop;
- __b64_pton;
- __cmsg_nxthdr; # introduced=21
- __ctype_get_mb_cur_max; # introduced=21
- __cxa_atexit;
- __cxa_finalize;
- __cxa_thread_atexit_impl; # introduced=23
- __dn_comp;
- __dn_count_labels;
- __dn_skipname;
- __errno;
- __fbufsize; # introduced=23
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __flbf; # introduced=23
- __fp_nquery;
- __fp_query;
- __fpclassify; # introduced=21
- __fpclassifyd;
- __fpclassifyf;
- __fpclassifyl;
- __fpending; # introduced=23
- __fpurge; # introduced=23
- __freadable; # introduced=23
- __fsetlocking; # introduced=23
- __fwritable; # introduced=23
- __get_h_errno;
- __gnu_basename; # introduced=23
- __gnu_strerror_r; # introduced=23
- __hostalias;
- __isfinite;
- __isfinitef;
- __isfinitel;
- __isinf;
- __isinff;
- __isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
- __isnanl;
- __isnormal;
- __isnormalf;
- __isnormall;
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
- __libc_init;
- __loc_aton;
- __loc_ntoa;
- __memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __p_cdname;
- __p_cdnname;
- __p_class;
- __p_class_syms; # var
- __p_fqname;
- __p_fqnname;
- __p_option;
- __p_query;
- __p_rcode;
- __p_secstodate;
- __p_time;
- __p_type;
- __p_type_syms; # var
- __poll_chk; # introduced=23
- __ppoll_chk; # introduced=23
- __ppoll64_chk; # introduced=28
- __pread64_chk; # introduced=23
- __pread_chk; # introduced=23
- __progname; # var
- __pthread_cleanup_pop;
- __pthread_cleanup_push;
- __putlong;
- __putshort;
- __read_chk; # introduced=21
- __readlink_chk; # introduced=23
- __readlinkat_chk; # introduced=23
- __recvfrom_chk; # introduced=21
- __register_atfork; # introduced=23
- __res_close;
- __res_dnok;
- __res_hnok;
- __res_hostalias;
- __res_isourserver;
- __res_mailok;
- __res_nameinquery;
- __res_nclose;
- __res_ninit;
- __res_nmkquery;
- __res_nquery;
- __res_nquerydomain;
- __res_nsearch;
- __res_nsend;
- __res_ownok;
- __res_queriesmatch;
- __res_querydomain;
- __res_send;
- __res_send_setqhook;
- __res_send_setrhook;
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __sF; # var
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __stack_chk_fail;
- __stack_chk_guard; # var
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __sym_ntop;
- __sym_ntos;
- __sym_ston;
- __system_property_area_serial; # introduced=23
- __system_property_find;
- __system_property_find_nth;
- __system_property_foreach; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_get;
- __system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- _ctype_; # var
- _Exit; # introduced=21
- _exit;
- _flushlbf; # introduced=23
- _getlong;
- _getshort;
- _longjmp;
- _resolv_delete_cache_for_net; # introduced=21
- _resolv_flush_cache_for_net; # introduced=21
- _resolv_set_nameservers_for_net; # introduced=21
- _setjmp;
- _tolower; # introduced=21
- _toupper; # introduced=21
- abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- accept;
- accept4; # introduced=21
- access;
- acct;
- alarm;
- alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
- arc4random;
- arc4random_buf;
- arc4random_uniform;
- asctime;
- asctime_r;
- asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
- atoi;
- atol;
- atoll;
- basename;
- bind;
- bindresvport;
- brk;
- bsearch;
- btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
- calloc;
- capget;
- capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
- chdir;
- chmod;
- chown;
- chroot;
- clearenv;
- clearerr;
- clearerr_unlocked; # introduced=23
- clock;
- clock_getcpuclockid; # introduced=23
- clock_getres;
- clock_gettime;
- clock_nanosleep;
- clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- close;
- closedir;
- closelog;
- connect;
- creat;
- creat64; # introduced=21
- ctime;
- ctime_r;
- daemon;
- daylight; # var
- delete_module;
- difftime;
- dirfd;
- dirname;
- div;
- dn_expand;
- dprintf; # introduced=21
- drand48;
- dup;
- dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
- endservent;
- endutent;
- environ; # var
- epoll_create;
- epoll_create1; # introduced=21
- epoll_ctl;
- epoll_pwait; # introduced=21
- epoll_wait;
- erand48;
- err;
- error; # introduced=23
- error_at_line; # introduced=23
- error_message_count; # var introduced=23
- error_one_per_line; # var introduced=23
- error_print_progname; # var introduced=23
- errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- eventfd;
- eventfd_read;
- eventfd_write;
- execl;
- execle;
- execlp;
- execv;
- execve;
- execvp;
- execvpe; # introduced=21
- exit;
- faccessat; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fallocate; # introduced=21
- fallocate64; # introduced=21
- fchdir;
- fchmod;
- fchmodat;
- fchown;
- fchownat;
- fclose;
- fcntl;
- fdatasync;
- fdopen;
- fdopendir;
- feof;
- feof_unlocked; # introduced=23
- ferror;
- ferror_unlocked; # introduced=23
- fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- fgetc;
- fgetln;
- fgetpos;
- fgets;
- fgetwc;
- fgetws;
- fgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fileno;
- flistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- flock;
- flockfile;
- fmemopen; # introduced=23
- fnmatch;
- fopen;
- fork;
- forkpty; # introduced=23
- fpathconf;
- fprintf;
- fpurge;
- fputc;
- fputs;
- fputwc;
- fputws;
- fread;
- free;
- freeaddrinfo;
- freelocale; # introduced=21
- fremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- freopen;
- fscanf;
- fseek;
- fseeko;
- fsetpos;
- fsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- fstat;
- fstat64; # introduced=21
- fstatat;
- fstatat64; # introduced=21
- fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
- fsync;
- ftell;
- ftello;
- ftok;
- ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- ftrylockfile;
- fts_children; # introduced=21
- fts_close; # introduced=21
- fts_open; # introduced=21
- fts_read; # introduced=21
- fts_set; # introduced=21
- ftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
- funlockfile;
- funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- fwide;
- fwprintf;
- fwrite;
- fwscanf;
- gai_strerror;
- get_avphys_pages; # introduced=23
- get_nprocs; # introduced=23
- get_nprocs_conf; # introduced=23
- get_phys_pages; # introduced=23
- getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getc;
- getc_unlocked;
- getchar;
- getchar_unlocked;
- getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getegid;
- getenv;
- geteuid;
- getgid;
- getgrgid;
- getgrnam;
- getgrouplist;
- getgroups;
- gethostbyaddr;
- gethostbyaddr_r; # introduced=23
- gethostbyname;
- gethostbyname2;
- gethostbyname2_r; # introduced=23
- gethostbyname_r;
- gethostent;
- gethostname;
- getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- getlogin;
- getmntent;
- getmntent_r; # introduced=21
- getnameinfo;
- getnetbyaddr;
- getnetbyname;
- getopt;
- getopt_long;
- getopt_long_only;
- getpagesize; # introduced=21
- getpeername;
- getpgid;
- getpgrp;
- getpid;
- getppid;
- getpriority;
- getprogname; # introduced=21
- getprotobyname;
- getprotobynumber;
- getpt;
- getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- getresgid;
- getresuid;
- getrlimit;
- getrlimit64; # introduced=21
- getrusage;
- gets;
- getservbyname;
- getservbyport;
- getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- getsockname;
- getsockopt;
- gettid;
- gettimeofday;
- getuid;
- getutent;
- getwc;
- getwchar;
- getxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- gmtime;
- gmtime_r;
- grantpt; # introduced=21
- herror;
- hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
- if_indextoname;
- if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- inet_addr;
- inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
- inet_nsap_addr;
- inet_nsap_ntoa;
- inet_ntoa;
- inet_ntop;
- inet_pton;
- init_module;
- initgroups;
- initstate; # introduced=21
- inotify_add_watch;
- inotify_init;
- inotify_init1; # introduced=21
- inotify_rm_watch;
- insque; # introduced=21
- ioctl;
- isalnum;
- isalnum_l; # introduced=21
- isalpha;
- isalpha_l; # introduced=21
- isascii;
- isatty;
- isblank;
- isblank_l; # introduced=21
- iscntrl;
- iscntrl_l; # introduced=21
- isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
- isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
- islower;
- islower_l; # introduced=21
- isnan;
- isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
- isprint;
- isprint_l; # introduced=21
- ispunct;
- ispunct_l; # introduced=21
- isspace;
- isspace_l; # introduced=21
- isupper;
- isupper_l; # introduced=21
- iswalnum;
- iswalnum_l; # introduced=21
- iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
- iswcntrl;
- iswcntrl_l; # introduced=21
- iswctype;
- iswctype_l; # introduced=21
- iswdigit;
- iswdigit_l; # introduced=21
- iswgraph;
- iswgraph_l; # introduced=21
- iswlower;
- iswlower_l; # introduced=21
- iswprint;
- iswprint_l; # introduced=21
- iswpunct;
- iswpunct_l; # introduced=21
- iswspace;
- iswspace_l; # introduced=21
- iswupper;
- iswupper_l; # introduced=21
- iswxdigit;
- iswxdigit_l; # introduced=21
- isxdigit;
- isxdigit_l; # introduced=21
- jrand48;
- kill;
- killpg;
- klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lchown;
- lcong48; # introduced=23
- ldexp;
- ldiv;
- lfind; # introduced=21
- lgetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- link;
- linkat; # introduced=21
- listen;
- listxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- lldiv;
- llistxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- localeconv; # introduced=21
- localtime;
- localtime_r;
- login_tty; # introduced=23
- longjmp;
- lrand48;
- lremovexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lsearch; # introduced=21
- lseek;
- lseek64;
- lsetxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- lstat;
- lstat64; # introduced=21
- madvise;
- mallinfo;
- malloc;
- malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
- mbrtowc;
- mbsinit;
- mbsnrtowcs; # introduced=21
- mbsrtowcs;
- mbstowcs;
- mbtowc; # introduced=21
- memalign;
- memccpy;
- memchr;
- memcmp;
- memcpy;
- memmem;
- memmove;
- mempcpy; # introduced=23
- memrchr;
- memset;
- mincore;
- mkdir;
- mkdirat;
- mkdtemp;
- mkfifo; # introduced=21
- mkfifoat; # introduced=23
- mknod;
- mknodat; # introduced=21
- mkostemp; # introduced=23
- mkostemp64; # introduced=23
- mkostemps; # introduced=23
- mkostemps64; # introduced=23
- mkstemp;
- mkstemp64; # introduced=21
- mkstemps;
- mkstemps64; # introduced=23
- mktemp;
- mktime;
- mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- mmap;
- mmap64; # introduced=21
- mount;
- mprotect;
- mrand48;
- mremap;
- msync;
- munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- munmap;
- nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
- nice;
- nrand48;
- ns_format_ttl; # arm64 x86_64 mips64 introduced=22
- ns_get16; # arm64 x86_64 mips64 introduced=22
- ns_get32; # arm64 x86_64 mips64 introduced=22
- ns_initparse; # arm64 x86_64 mips64 introduced=22
- ns_makecanon; # arm64 x86_64 mips64 introduced=22
- ns_msg_getflag; # arm64 x86_64 mips64 introduced=22
- ns_name_compress; # arm64 x86_64 mips64 introduced=22
- ns_name_ntol; # arm64 x86_64 mips64 introduced=22
- ns_name_ntop; # arm64 x86_64 mips64 introduced=22
- ns_name_pack; # arm64 x86_64 mips64 introduced=22
- ns_name_pton; # arm64 x86_64 mips64 introduced=23
- ns_name_rollback; # arm64 x86_64 mips64 introduced=22
- ns_name_skip; # arm64 x86_64 mips64 introduced=22
- ns_name_uncompress; # arm64 x86_64 mips64 introduced=22
- ns_name_unpack; # arm64 x86_64 mips64 introduced=22
- ns_parserr; # arm64 x86_64 mips64 introduced=22
- ns_put16; # arm64 x86_64 mips64 introduced=22
- ns_put32; # arm64 x86_64 mips64 introduced=22
- ns_samename; # arm64 x86_64 mips64 introduced=22
- ns_skiprr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrr; # arm64 x86_64 mips64 introduced=22
- ns_sprintrrf; # arm64 x86_64 mips64 introduced=22
- nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
- open;
- open64; # introduced=21
- open_memstream; # introduced=23
- open_wmemstream; # introduced=23
- openat;
- openat64; # introduced=21
- opendir;
- openlog;
- openpty; # introduced=23
- optarg; # var
- opterr; # var
- optind; # var
- optopt; # var
- optreset; # var
- pathconf;
- pause;
- pclose;
- perror;
- personality; # introduced-arm=15 introduced-arm64=21 introduced-mips=15 introduced-mips64=21 introduced-x86=15 introduced-x86_64=21
- pipe;
- pipe2;
- poll;
- popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
- posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
- prctl;
- pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- printf;
- prlimit; # arm64 x86_64 mips64
- prlimit64; # introduced=21
- process_vm_readv; # introduced=23
- process_vm_writev; # introduced=23
- pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- pthread_attr_destroy;
- pthread_attr_getdetachstate;
- pthread_attr_getguardsize;
- pthread_attr_getschedparam;
- pthread_attr_getschedpolicy;
- pthread_attr_getscope;
- pthread_attr_getstack;
- pthread_attr_getstacksize;
- pthread_attr_init;
- pthread_attr_setdetachstate;
- pthread_attr_setguardsize;
- pthread_attr_setschedparam;
- pthread_attr_setschedpolicy;
- pthread_attr_setscope;
- pthread_attr_setstack;
- pthread_attr_setstacksize;
- pthread_cond_broadcast;
- pthread_cond_destroy;
- pthread_cond_init;
- pthread_cond_signal;
- pthread_cond_timedwait;
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-mips=9 introduced-arm64=28 introduced-x64_64=28 introduced-mips64=28
- pthread_cond_wait;
- pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
- pthread_condattr_getpshared;
- pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
- pthread_condattr_setpshared;
- pthread_create;
- pthread_detach;
- pthread_equal;
- pthread_exit;
- pthread_getattr_np;
- pthread_getcpuclockid;
- pthread_getschedparam;
- pthread_getspecific;
- pthread_gettid_np; # introduced=21
- pthread_join;
- pthread_key_create;
- pthread_key_delete;
- pthread_kill;
- pthread_mutex_destroy;
- pthread_mutex_init;
- pthread_mutex_lock;
- pthread_mutex_timedlock; # introduced=21
- pthread_mutex_trylock;
- pthread_mutex_unlock;
- pthread_mutexattr_destroy;
- pthread_mutexattr_getpshared;
- pthread_mutexattr_gettype;
- pthread_mutexattr_init;
- pthread_mutexattr_setpshared;
- pthread_mutexattr_settype;
- pthread_once;
- pthread_rwlock_destroy;
- pthread_rwlock_init;
- pthread_rwlock_rdlock;
- pthread_rwlock_timedrdlock;
- pthread_rwlock_timedwrlock;
- pthread_rwlock_tryrdlock;
- pthread_rwlock_trywrlock;
- pthread_rwlock_unlock;
- pthread_rwlock_wrlock;
- pthread_rwlockattr_destroy;
- pthread_rwlockattr_getkind_np; # introduced=23
- pthread_rwlockattr_getpshared;
- pthread_rwlockattr_init;
- pthread_rwlockattr_setkind_np; # introduced=23
- pthread_rwlockattr_setpshared;
- pthread_self;
- pthread_setname_np;
- pthread_setschedparam;
- pthread_setspecific;
- pthread_sigmask;
- ptrace;
- ptsname;
- ptsname_r;
- putc;
- putc_unlocked;
- putchar;
- putchar_unlocked;
- putenv;
- puts;
- pututline;
- putwc;
- putwchar;
- pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- qsort;
- quick_exit; # introduced=21
- raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
- read;
- readahead; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
- readdir_r;
- readlink;
- readlinkat; # introduced=21
- readv;
- realloc;
- realpath;
- reboot;
- recv;
- recvfrom;
- recvmmsg; # introduced=21
- recvmsg;
- regcomp;
- regerror;
- regexec;
- regfree;
- remove;
- removexattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- remque; # introduced=21
- rename;
- renameat;
- res_init;
- res_mkquery;
- res_query;
- res_search;
- rewind;
- rewinddir;
- rmdir;
- sbrk;
- scandir;
- scandir64; # introduced=21
- scanf;
- sched_get_priority_max;
- sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_getparam;
- sched_getscheduler;
- sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sched_setparam;
- sched_setscheduler;
- sched_yield;
- seed48;
- seekdir; # introduced=23
- select;
- sem_close;
- sem_destroy;
- sem_getvalue;
- sem_init;
- sem_open;
- sem_post;
- sem_timedwait;
- sem_trywait;
- sem_unlink;
- sem_wait;
- send;
- sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
- sendmsg;
- sendto;
- setbuf;
- setbuffer;
- setegid;
- setenv;
- seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
- setgid;
- setgroups;
- sethostname; # introduced=23
- setitimer;
- setjmp;
- setlinebuf;
- setlocale;
- setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
- setpgid;
- setpgrp;
- setpriority;
- setprogname; # introduced=21
- setregid;
- setresgid;
- setresuid;
- setreuid;
- setrlimit;
- setrlimit64; # introduced=21
- setservent;
- setsid;
- setsockopt;
- setstate; # introduced=21
- settimeofday;
- setuid;
- setutent;
- setvbuf;
- setxattr; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- shutdown;
- sigaction;
- sigaddset; # introduced=21
- sigaltstack;
- sigblock;
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
- siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- sigpending;
- sigprocmask;
- sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- sigsetmask;
- sigsuspend;
- sigtimedwait; # introduced=23
- sigwait;
- sigwaitinfo; # introduced=23
- sleep;
- snprintf;
- socket;
- socketpair;
- splice; # introduced=21
- sprintf;
- srand; # introduced=21
- srand48;
- srandom; # introduced=21
- sscanf;
- stat;
- stat64; # introduced=21
- statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
- stderr; # var introduced=23
- stdin; # var introduced=23
- stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
- strcasecmp;
- strcasecmp_l; # introduced=23
- strcasestr;
- strcat;
- strchr;
- strcmp;
- strcoll;
- strcoll_l; # introduced=21
- strcpy;
- strcspn;
- strdup;
- strerror;
- strerror_l; # introduced=23
- strerror_r;
- strftime;
- strftime_l; # introduced=21
- strlcat;
- strlcpy;
- strlen;
- strncasecmp;
- strncasecmp_l; # introduced=23
- strncat;
- strncmp;
- strncpy;
- strndup;
- strnlen;
- strpbrk;
- strptime;
- strrchr;
- strsep;
- strsignal;
- strspn;
- strstr;
- strtod;
- strtof; # introduced=21
- strtoimax;
- strtok;
- strtok_r;
- strtol;
- strtold; # introduced=21
- 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-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- swprintf;
- swscanf;
- symlink;
- symlinkat; # introduced=21
- sync;
- sys_siglist; # var
- sys_signame; # var
- syscall;
- sysconf;
- sysinfo;
- syslog;
- system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
- tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
- tcsetpgrp;
- tdelete; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tdestroy; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tee; # introduced=21
- telldir; # introduced=23
- tempnam;
- tfind; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- tgkill; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- timer_create;
- timer_delete;
- timer_getoverrun;
- timer_gettime;
- timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-mips=19 introduced-mips64=21 introduced-x86=19 introduced-x86_64=21
- times;
- timezone; # var
- tmpfile;
- tmpnam;
- toascii;
- tolower;
- tolower_l; # introduced=21
- toupper;
- toupper_l; # introduced=21
- towlower;
- towlower_l; # introduced=21
- towupper;
- towupper_l; # introduced=21
- truncate;
- truncate64; # introduced=21
- tsearch; # introduced-arm=16 introduced-arm64=21 introduced-mips=16 introduced-mips64=21 introduced-x86=16 introduced-x86_64=21
- ttyname;
- ttyname_r;
- twalk; # introduced=21
- tzname; # var
- tzset;
- umask;
- umount;
- umount2;
- uname;
- ungetc;
- ungetwc;
- unlink;
- unlinkat;
- unlockpt;
- unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-mips=17 introduced-mips64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
- usleep;
- utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-mips=12 introduced-mips64=21 introduced-x86=12 introduced-x86_64=21
- utimes;
- utmpname;
- vasprintf;
- vdprintf; # introduced=21
- verr;
- verrx;
- vfork;
- vfprintf;
- vfscanf;
- vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
- vprintf;
- vscanf;
- vsnprintf;
- vsprintf;
- vsscanf;
- vswprintf;
- vswscanf; # introduced=21
- vsyslog;
- vwarn;
- vwarnx;
- vwprintf;
- vwscanf; # introduced=21
- wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- waitid;
- waitpid;
- warn;
- warnx;
- wcpcpy;
- wcpncpy;
- wcrtomb;
- wcscasecmp;
- wcscasecmp_l; # introduced=23
- wcscat;
- wcschr;
- wcscmp;
- wcscoll;
- wcscoll_l; # introduced=21
- wcscpy;
- wcscspn;
- wcsdup;
- wcsftime;
- wcslcat;
- wcslcpy;
- wcslen;
- wcsncasecmp;
- wcsncasecmp_l; # introduced=23
- wcsncat;
- wcsncmp;
- wcsncpy;
- wcsnlen;
- wcsnrtombs; # introduced=21
- wcspbrk;
- wcsrchr;
- wcsrtombs;
- wcsspn;
- wcsstr;
- wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
- wcstok;
- wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs;
- wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
- wcswidth;
- wcsxfrm;
- wcsxfrm_l; # introduced=21
- wctob;
- wctomb; # introduced=21
- wctype;
- wctype_l; # introduced=21
- wcwidth;
- wmemchr;
- wmemcmp;
- wmemcpy;
- wmemmove;
- wmempcpy; # introduced=23
- wmemset;
- wprintf;
- write;
- writev;
- wscanf;
- local:
- *;
-};
-
-LIBC_N { # introduced-arm64=24 introduced-mips=24 introduced-mips64=24 introduced-x86=24 introduced-x86_64=24
- global:
- __fread_chk; # introduced=24
- __fwrite_chk; # introduced=24
- __getcwd_chk; # introduced=24
- __pwrite_chk; # introduced=24
- __pwrite64_chk; # introduced=24
- __write_chk; # introduced=24
- adjtimex; # introduced=24
- clock_adjtime; # introduced=24
- fgetpos64; # introduced=24
- fileno_unlocked; # introduced=24
- fopen64; # introduced=24
- freeifaddrs; # introduced=24
- freopen64; # introduced=24
- fseeko64; # introduced=24
- fsetpos64; # introduced=24
- ftello64; # introduced=24
- funopen64; # introduced=24
- getgrgid_r; # introduced=24
- getgrnam_r; # introduced=24
- getifaddrs; # introduced=24
- if_freenameindex; # introduced=24
- if_nameindex; # introduced=24
- in6addr_any; # var introduced=24
- in6addr_loopback; # var introduced=24
- lockf; # introduced=24
- lockf64; # introduced=24
- preadv; # introduced=24
- preadv64; # introduced=24
- pthread_barrierattr_destroy; # introduced=24
- pthread_barrierattr_getpshared; # introduced=24
- pthread_barrierattr_init; # introduced=24
- pthread_barrierattr_setpshared; # introduced=24
- pthread_barrier_destroy; # introduced=24
- pthread_barrier_init; # introduced=24
- pthread_barrier_wait; # introduced=24
- pthread_spin_destroy; # introduced=24
- pthread_spin_init; # introduced=24
- pthread_spin_lock; # introduced=24
- pthread_spin_trylock; # introduced=24
- pthread_spin_unlock; # introduced=24
- pwritev; # introduced=24
- pwritev64; # introduced=24
- scandirat; # introduced=24
- scandirat64; # introduced=24
- strchrnul; # introduced=24
- tmpfile64; # introduced=24
-} LIBC;
-
-LIBC_O {
- global:
- __sendto_chk; # introduced=26
- __system_property_read_callback; # introduced=26
- __system_property_wait; # introduced=26
- catclose; # introduced=26
- catgets; # introduced=26
- catopen; # introduced=26
- ctermid; # introduced=26
- endgrent; # introduced=26
- endpwent; # introduced=26
- futimes; # introduced=26
- futimesat; # introduced=26
- getdomainname; # introduced=26
- getgrent; # introduced=26
- getpwent; # introduced=26
- getsubopt; # introduced=26
- hasmntopt; # introduced=26
- lutimes; # introduced=26
- mallopt; # introduced=26
- mblen; # introduced=26
- msgctl; # introduced=26
- msgget; # introduced=26
- msgrcv; # introduced=26
- msgsnd; # introduced=26
- nl_langinfo; # introduced=26
- nl_langinfo_l; # introduced=26
- pthread_getname_np; # introduced=26
- quotactl; # introduced=26
- semctl; # introduced=26
- semget; # introduced=26
- semop; # introduced=26
- semtimedop; # introduced=26
- setdomainname; # introduced=26
- setgrent; # introduced=26
- setpwent; # introduced=26
- shmat; # introduced=26
- shmctl; # introduced=26
- shmdt; # introduced=26
- shmget; # introduced=26
- sighold; # introduced=26
- sigignore; # introduced=26
- sigpause; # introduced=26
- sigrelse; # introduced=26
- sigset; # introduced=26
- strtod_l; # introduced=26
- strtof_l; # introduced=26
- strtol_l; # introduced=26
- strtoul_l; # introduced=26
- sync_file_range; # introduced=26
- towctrans; # introduced=26
- towctrans_l; # introduced=26
- wctrans; # introduced=26
- wctrans_l; # introduced=26
-} LIBC_N;
-
-LIBC_P { # introduced=P
- global:
- __freading;
- __free_hook;
- __fseterr;
- __fwriting;
- __malloc_hook;
- __memalign_hook;
- __realloc_hook;
- aligned_alloc;
- endhostent;
- endnetent;
- endprotoent;
- epoll_pwait64;
- fexecve;
- fflush_unlocked;
- fgetc_unlocked;
- fgets_unlocked;
- fputc_unlocked;
- fputs_unlocked;
- fread_unlocked;
- fwrite_unlocked;
- getentropy;
- getnetent;
- getprotoent;
- getrandom;
- getlogin_r;
- glob;
- globfree;
- hcreate;
- hcreate_r;
- hdestroy;
- hdestroy_r;
- hsearch;
- hsearch_r;
- iconv;
- iconv_close;
- iconv_open;
- posix_spawn;
- posix_spawnattr_destroy;
- posix_spawnattr_getflags;
- posix_spawnattr_getpgroup;
- posix_spawnattr_getschedparam;
- posix_spawnattr_getschedpolicy;
- posix_spawnattr_getsigdefault;
- posix_spawnattr_getsigdefault64;
- posix_spawnattr_getsigmask;
- posix_spawnattr_getsigmask64;
- posix_spawnattr_init;
- posix_spawnattr_setflags;
- posix_spawnattr_setpgroup;
- posix_spawnattr_setschedparam;
- posix_spawnattr_setschedpolicy;
- posix_spawnattr_setsigdefault;
- posix_spawnattr_setsigdefault64;
- posix_spawnattr_setsigmask;
- posix_spawnattr_setsigmask64;
- posix_spawn_file_actions_addclose;
- posix_spawn_file_actions_adddup2;
- posix_spawn_file_actions_addopen;
- posix_spawn_file_actions_destroy;
- posix_spawn_file_actions_init;
- posix_spawnp;
- ppoll64;
- pselect64;
- pthread_attr_getinheritsched;
- pthread_attr_setinheritsched;
- pthread_mutex_timedlock_monotonic_np;
- pthread_mutexattr_getprotocol;
- pthread_mutexattr_setprotocol;
- pthread_rwlock_timedrdlock_monotonic_np;
- pthread_rwlock_timedwrlock_monotonic_np;
- pthread_setschedprio;
- pthread_sigmask64;
- sem_timedwait_monotonic_np;
- sethostent;
- setnetent;
- setprotoent;
- sigaction64;
- sigaddset64;
- sigdelset64;
- sigemptyset64;
- sigfillset64;
- sigismember64;
- signalfd64;
- sigpending64;
- sigprocmask64;
- sigsuspend64;
- sigtimedwait64;
- sigwait64;
- sigwaitinfo64;
- strptime_l;
- swab;
- syncfs;
- wcsftime_l;
- wcstod_l;
- wcstof_l;
- wcstol_l;
- wcstoul_l;
-} LIBC_O;
-
-LIBC_Q { # introduced=Q
- global:
- __res_randomid;
- android_fdsan_close_with_tag;
- android_fdsan_create_owner_tag;
- android_fdsan_exchange_owner_tag;
- android_fdsan_get_owner_tag;
- android_fdsan_get_tag_type;
- android_fdsan_get_tag_value;
- android_fdsan_get_error_level;
- android_fdsan_set_error_level;
- android_get_device_api_level;
- getloadavg;
- pthread_sigqueue;
- reallocarray;
- timespec_get;
-} LIBC_P;
-
-LIBC_PRIVATE {
- global:
- android_getaddrinfofornet;
- android_getaddrinfofornetcontext;
- android_gethostbyaddrfornet;
- android_gethostbyaddrfornetcontext;
- android_gethostbynamefornet;
- android_gethostbynamefornetcontext;
- free_malloc_leak_info;
- get_malloc_leak_info;
- gMallocLeakZygoteChild;
- write_malloc_leak_info;
-} LIBC_Q;
-
-LIBC_DEPRECATED {
- global:
- __system_property_wait_any;
-};
-
-LIBC_PLATFORM {
- global:
- __system_properties_init;
- __system_property_area__; # var
- __system_property_add;
- __system_property_area_init;
- __system_property_set_filename;
- __system_property_update;
- android_fdsan_get_fd_table;
- android_net_res_stats_get_info_for_net;
- android_net_res_stats_aggregate;
- android_net_res_stats_get_usable_servers;
- malloc_backtrace;
- malloc_disable;
- malloc_enable;
- malloc_iterate;
-} LIBC_Q;
diff --git a/libc/libstdc++.arm.map b/libc/libstdc++.arm.map
deleted file mode 100644
index 8ee5863..0000000
--- a/libc/libstdc++.arm.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znaj; # arm x86 mips weak
- _ZnajRKSt9nothrow_t; # arm x86 mips weak
- _Znwj; # arm x86 mips weak
- _ZnwjRKSt9nothrow_t; # arm x86 mips weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/libstdc++.arm64.map b/libc/libstdc++.arm64.map
deleted file mode 100644
index cd4f3c3..0000000
--- a/libc/libstdc++.arm64.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znam; # arm64 x86_64 mips64 weak
- _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- _Znwm; # arm64 x86_64 mips64 weak
- _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/libstdc++.mips.map b/libc/libstdc++.mips.map
deleted file mode 100644
index 8ee5863..0000000
--- a/libc/libstdc++.mips.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znaj; # arm x86 mips weak
- _ZnajRKSt9nothrow_t; # arm x86 mips weak
- _Znwj; # arm x86 mips weak
- _ZnwjRKSt9nothrow_t; # arm x86 mips weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/libstdc++.mips64.map b/libc/libstdc++.mips64.map
deleted file mode 100644
index cd4f3c3..0000000
--- a/libc/libstdc++.mips64.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znam; # arm64 x86_64 mips64 weak
- _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- _Znwm; # arm64 x86_64 mips64 weak
- _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/libstdc++.x86.map b/libc/libstdc++.x86.map
deleted file mode 100644
index 8ee5863..0000000
--- a/libc/libstdc++.x86.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znaj; # arm x86 mips weak
- _ZnajRKSt9nothrow_t; # arm x86 mips weak
- _Znwj; # arm x86 mips weak
- _ZnwjRKSt9nothrow_t; # arm x86 mips weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/libstdc++.x86_64.map b/libc/libstdc++.x86_64.map
deleted file mode 100644
index cd4f3c3..0000000
--- a/libc/libstdc++.x86_64.map
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC_O {
- global:
- _ZSt7nothrow; # var
- _ZdaPv; # weak
- _ZdaPvRKSt9nothrow_t; # weak
- _ZdlPv; # weak
- _ZdlPvRKSt9nothrow_t; # weak
- _Znam; # arm64 x86_64 mips64 weak
- _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- _Znwm; # arm64 x86_64 mips64 weak
- _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64 weak
- __cxa_guard_abort;
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_pure_virtual;
- local:
- *;
-};
diff --git a/libc/malloc_debug/MapData.cpp b/libc/malloc_debug/MapData.cpp
index 060425e..e8fbc54 100644
--- a/libc/malloc_debug/MapData.cpp
+++ b/libc/malloc_debug/MapData.cpp
@@ -33,6 +33,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/mman.h>
#include <vector>
@@ -44,6 +45,7 @@
uintptr_t start;
uintptr_t end;
uintptr_t offset;
+ int flags;
char permissions[5];
int name_pos;
if (sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %4s %" PRIxPTR " %*x:%*x %*d %n", &start, &end,
@@ -57,18 +59,27 @@
name_len -= 1;
}
- MapEntry* entry = new MapEntry(start, end, offset, name, name_len);
- if (permissions[0] != 'r') {
- // Any unreadable map will just get a zero load base.
- entry->load_base = 0;
- entry->load_base_read = true;
+ flags = 0;
+ if (permissions[0] == 'r') {
+ flags |= PROT_READ;
+ }
+ if (permissions[2] == 'x') {
+ flags |= PROT_EXEC;
+ }
+
+ MapEntry* entry = new MapEntry(start, end, offset, name, name_len, flags);
+ if (!(flags & PROT_READ)) {
+ // Any unreadable map will just get a zero load bias.
+ entry->load_bias = 0;
+ entry->init = true;
+ entry->valid = false;
}
return entry;
}
template <typename T>
static inline bool get_val(MapEntry* entry, uintptr_t addr, T* store) {
- if (addr < entry->start || addr + sizeof(T) > entry->end) {
+ if (!(entry->flags & PROT_READ) || addr < entry->start || addr + sizeof(T) > entry->end) {
return false;
}
// Make sure the address is aligned properly.
@@ -79,9 +90,18 @@
return true;
}
-static void read_loadbase(MapEntry* entry) {
- entry->load_base = 0;
- entry->load_base_read = true;
+static bool valid_elf(MapEntry* entry) {
+ uintptr_t addr = entry->start;
+ uintptr_t end;
+ if (__builtin_add_overflow(addr, SELFMAG, &end) || end >= entry->end) {
+ return false;
+ }
+
+ return memcmp(reinterpret_cast<void*>(addr), ELFMAG, SELFMAG) == 0;
+}
+
+static void read_loadbias(MapEntry* entry) {
+ entry->load_bias = 0;
uintptr_t addr = entry->start;
ElfW(Ehdr) ehdr;
if (!get_val<ElfW(Half)>(entry, addr + offsetof(ElfW(Ehdr), e_phnum), &ehdr.e_phnum)) {
@@ -103,13 +123,24 @@
if (!get_val<ElfW(Addr)>(entry, addr + offsetof(ElfW(Phdr), p_vaddr), &phdr.p_vaddr)) {
return;
}
- entry->load_base = phdr.p_vaddr;
+ entry->load_bias = phdr.p_vaddr;
return;
}
addr += sizeof(phdr);
}
}
+static void inline init(MapEntry* entry) {
+ if (entry->init) {
+ return;
+ }
+ entry->init = true;
+ if (valid_elf(entry)) {
+ entry->valid = true;
+ read_loadbias(entry);
+ }
+}
+
bool MapData::ReadMaps() {
FILE* fp = fopen("/proc/self/maps", "re");
if (fp == nullptr) {
@@ -158,11 +189,25 @@
}
MapEntry* entry = *it;
- if (!entry->load_base_read) {
- read_loadbase(entry);
- }
- if (rel_pc) {
- *rel_pc = pc - entry->start + entry->load_base;
+ init(entry);
+
+ if (rel_pc != nullptr) {
+ // Need to check to see if this is a read-execute map and the read-only
+ // map is the previous one.
+ if (!entry->valid && it != entries_.begin()) {
+ MapEntry* prev_entry = *--it;
+ if (prev_entry->flags == PROT_READ && prev_entry->offset < entry->offset &&
+ prev_entry->name == entry->name) {
+ init(prev_entry);
+
+ if (prev_entry->valid) {
+ entry->elf_start_offset = prev_entry->offset;
+ *rel_pc = pc - entry->start + entry->offset + prev_entry->load_bias;
+ return entry;
+ }
+ }
+ }
+ *rel_pc = pc - entry->start + entry->load_bias;
}
return entry;
}
diff --git a/libc/malloc_debug/MapData.h b/libc/malloc_debug/MapData.h
index b9b697c..5b08b90 100644
--- a/libc/malloc_debug/MapData.h
+++ b/libc/malloc_debug/MapData.h
@@ -37,17 +37,20 @@
#include <private/bionic_macros.h>
struct MapEntry {
- MapEntry(uintptr_t start, uintptr_t end, uintptr_t offset, const char* name, size_t name_len)
- : start(start), end(end), offset(offset), name(name, name_len) {}
+ MapEntry(uintptr_t start, uintptr_t end, uintptr_t offset, const char* name, size_t name_len, int flags)
+ : start(start), end(end), offset(offset), name(name, name_len), flags(flags) {}
explicit MapEntry(uintptr_t pc) : start(pc), end(pc) {}
uintptr_t start;
uintptr_t end;
uintptr_t offset;
- uintptr_t load_base;
- bool load_base_read = false;
+ uintptr_t load_bias;
+ uintptr_t elf_start_offset = 0;
std::string name;
+ int flags;
+ bool init = false;
+ bool valid = false;
};
// Ordering comparator that returns equivalence for overlapping entries
diff --git a/libc/malloc_debug/PointerData.h b/libc/malloc_debug/PointerData.h
index b05a763..6955c9a 100644
--- a/libc/malloc_debug/PointerData.h
+++ b/libc/malloc_debug/PointerData.h
@@ -112,7 +112,7 @@
class PointerData : public OptionData {
public:
- PointerData(DebugData* debug_data);
+ explicit PointerData(DebugData* debug_data);
virtual ~PointerData() = default;
bool Initialize(const Config& config);
diff --git a/libc/malloc_debug/backtrace.cpp b/libc/malloc_debug/backtrace.cpp
index cd8c334..0e3a53f 100644
--- a/libc/malloc_debug/backtrace.cpp
+++ b/libc/malloc_debug/backtrace.cpp
@@ -156,8 +156,8 @@
}
char offset_buf[128];
- if (entry != nullptr && entry->offset != 0) {
- snprintf(offset_buf, sizeof(offset_buf), " (offset 0x%" PRIxPTR ")", entry->offset);
+ if (entry != nullptr && entry->elf_start_offset != 0) {
+ snprintf(offset_buf, sizeof(offset_buf), " (offset 0x%" PRIxPTR ")", entry->elf_start_offset);
} else {
offset_buf[0] = '\0';
}
diff --git a/libc/private/ScopedReaddir.h b/libc/private/ScopedReaddir.h
index dc22309..9a20c09 100644
--- a/libc/private/ScopedReaddir.h
+++ b/libc/private/ScopedReaddir.h
@@ -22,10 +22,10 @@
class ScopedReaddir {
public:
- ScopedReaddir(const char* path) : ScopedReaddir(opendir(path)) {
+ explicit ScopedReaddir(const char* path) : ScopedReaddir(opendir(path)) {
}
- ScopedReaddir(DIR* dir) {
+ explicit ScopedReaddir(DIR* dir) {
dir_ = dir;
}
diff --git a/libc/private/ScopedSignalHandler.h b/libc/private/ScopedSignalHandler.h
index dd5823f..7031752 100644
--- a/libc/private/ScopedSignalHandler.h
+++ b/libc/private/ScopedSignalHandler.h
@@ -33,7 +33,7 @@
sigaction64(signal_number_, &action_, &old_action_);
}
- ScopedSignalHandler(int signal_number) : signal_number_(signal_number) {
+ explicit ScopedSignalHandler(int signal_number) : signal_number_(signal_number) {
sigaction64(signal_number, nullptr, &old_action_);
}
diff --git a/libc/private/bionic_asm_tls.h b/libc/private/bionic_asm_tls.h
new file mode 100644
index 0000000..06e3dce
--- /dev/null
+++ b/libc/private/bionic_asm_tls.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#pragma once
+
+/** WARNING WARNING WARNING
+ **
+ ** This header file is *NOT* part of the public Bionic ABI/API and should not
+ ** be used/included by user-serviceable parts of the system (e.g.
+ ** applications).
+ **
+ ** It is only provided here for the benefit of Android components that need a
+ ** pre-allocated slot for performance reasons (including ART, the OpenGL
+ ** subsystem, and sanitizers).
+ **/
+
+// Bionic TCB / TLS slots:
+//
+// - TLS_SLOT_SELF: On x86-{32,64}, the kernel makes TLS memory available via
+// the gs/fs segments. To get the address of a TLS variable, the first slot
+// of TLS memory (accessed using %gs:0 / %fs:0) holds the address of the
+// gs/fs segment. This slot is used by:
+// - OpenGL and compiler-rt
+// - Accesses of x86 ELF TLS variables
+//
+// - TLS_SLOT_OPENGL and TLS_SLOT_OPENGL_API: These two aren't used by bionic
+// itself, but allow the graphics code to access TLS directly rather than
+// using the pthread API.
+//
+// - TLS_SLOT_STACK_GUARD: Used for -fstack-protector by:
+// - Clang targeting Android/arm64
+// - gcc targeting Linux/x86-{32,64}
+//
+// - TLS_SLOT_SANITIZER: Lets sanitizers avoid using pthread_getspecific for
+// finding the current thread state.
+//
+// - TLS_SLOT_DTV: Pointer to ELF TLS dynamic thread vector.
+//
+// - TLS_SLOT_ART_THREAD_SELF: Fast storage for Thread::Current() in ART.
+//
+// - TLS_SLOT_BIONIC_TLS: Optimizes accesses to bionic_tls by one load versus
+// finding it using __get_thread().
+
+#if defined(__arm__) || defined(__aarch64__)
+
+// The ARM ELF TLS ABI specifies[1] that the thread pointer points at a 2-word
+// TCB followed by the executable's TLS segment. Both the TCB and the
+// executable's segment are aligned according to the segment, so Bionic requires
+// a minimum segment alignment, which effectively reserves an 8-word TCB. The
+// ARM spec allocates the first TCB word to the DTV.
+//
+// [1] "Addenda to, and Errata in, the ABI for the ARM Architecture". Section 3.
+// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0045e/IHI0045E_ABI_addenda.pdf
+
+#define MIN_TLS_SLOT -1 // update this value when reserving a slot
+#define TLS_SLOT_BIONIC_TLS -1
+#define TLS_SLOT_DTV 0
+#define TLS_SLOT_THREAD_ID 1
+// Slot 2 is free (was historically used for TLS_SLOT_ERRNO)
+#define TLS_SLOT_OPENGL 3
+#define TLS_SLOT_OPENGL_API 4
+#define TLS_SLOT_STACK_GUARD 5
+#define TLS_SLOT_SANITIZER 6 // was historically used for dlerror
+#define TLS_SLOT_ART_THREAD_SELF 7
+#define TLS_SLOT_TSAN 8 // should be replaced with TLS_SLOT_SANITIZER
+
+// The maximum slot is fixed by the minimum TLS alignment in Bionic executables.
+// It should be changed to 7 once TLS_SLOT_TSAN is removed.
+#define MAX_TLS_SLOT 8
+
+#elif defined(__i386__) || defined(__x86_64__)
+
+// x86 uses variant 2 ELF TLS layout, which places the executable's TLS segment
+// immediately before the thread pointer. New slots are allocated at positive
+// offsets from the thread pointer.
+
+#define MIN_TLS_SLOT 0
+
+#define TLS_SLOT_SELF 0
+#define TLS_SLOT_THREAD_ID 1
+// Slot 2 is free (was historically used for TLS_SLOT_ERRNO)
+#define TLS_SLOT_OPENGL 3
+#define TLS_SLOT_OPENGL_API 4
+#define TLS_SLOT_STACK_GUARD 5
+#define TLS_SLOT_SANITIZER 6 // was historically used for dlerror
+#define TLS_SLOT_ART_THREAD_SELF 7
+#define TLS_SLOT_TSAN 8 // should be replaced with TLS_SLOT_SANITIZER
+#define TLS_SLOT_DTV 9
+#define TLS_SLOT_BIONIC_TLS 10
+#define MAX_TLS_SLOT 10 // update this value when reserving a slot
+
+#endif
+
+#define BIONIC_TLS_SLOTS (MAX_TLS_SLOT - MIN_TLS_SLOT + 1)
diff --git a/libc/private/bionic_elf_tls.h b/libc/private/bionic_elf_tls.h
new file mode 100644
index 0000000..e847669
--- /dev/null
+++ b/libc/private/bionic_elf_tls.h
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+struct StaticTlsLayout {
+ constexpr StaticTlsLayout() {}
+
+private:
+ size_t offset_ = 0;
+ size_t alignment_ = 1;
+ bool overflowed_ = false;
+
+ // Offsets to various Bionic TLS structs from the beginning of static TLS.
+ size_t offset_bionic_tcb_ = SIZE_MAX;
+ size_t offset_bionic_tls_ = SIZE_MAX;
+
+public:
+ size_t offset_bionic_tcb() const { return offset_bionic_tcb_; }
+ size_t offset_bionic_tls() const { return offset_bionic_tls_; }
+
+ size_t size() const { return offset_; }
+ size_t alignment() const { return alignment_; }
+ bool overflowed() const { return overflowed_; }
+
+ void reserve_tcb();
+ void reserve_bionic_tls();
+ void finish_layout();
+
+private:
+ size_t reserve(size_t size, size_t alignment);
+
+ template <typename T> size_t reserve_type() {
+ return reserve(sizeof(T), alignof(T));
+ }
+
+ size_t round_up_with_overflow_check(size_t value, size_t alignment);
+};
diff --git a/libc/private/bionic_fdsan.h b/libc/private/bionic_fdsan.h
index de14cf8..f403d08 100644
--- a/libc/private/bionic_fdsan.h
+++ b/libc/private/bionic_fdsan.h
@@ -39,21 +39,23 @@
#include <sys/user.h>
struct FdEntry {
- _Atomic(uint64_t) close_tag;
+ _Atomic(uint64_t) close_tag = 0;
};
struct FdTableOverflow {
- size_t len;
+ size_t len = 0;
FdEntry entries[0];
};
template <size_t inline_fds>
struct FdTableImpl {
- uint32_t version; // currently 0, and hopefully it'll stay that way.
- _Atomic(android_fdsan_error_level) error_level;
+ constexpr FdTableImpl() {}
+
+ uint32_t version = 0; // currently 0, and hopefully it'll stay that way.
+ _Atomic(android_fdsan_error_level) error_level = ANDROID_FDSAN_ERROR_LEVEL_DISABLED;
FdEntry entries[inline_fds];
- _Atomic(FdTableOverflow*) overflow;
+ _Atomic(FdTableOverflow*) overflow = nullptr;
FdEntry* at(size_t idx);
};
diff --git a/libc/private/bionic_globals.h b/libc/private/bionic_globals.h
index ba510b1..b5e677e 100644
--- a/libc/private/bionic_globals.h
+++ b/libc/private/bionic_globals.h
@@ -33,6 +33,7 @@
#include <link.h>
#include <pthread.h>
+#include "private/bionic_elf_tls.h"
#include "private/bionic_fdsan.h"
#include "private/bionic_malloc_dispatch.h"
#include "private/bionic_vdso.h"
@@ -50,21 +51,28 @@
// Globals shared between the dynamic linker and libc.so.
struct libc_shared_globals {
+ // Construct the shared globals using a constexpr constructor to ensure that
+ // the object doesn't need dynamic initialization. The object is accessed
+ // before the dynamic linker has relocated itself.
+ constexpr libc_shared_globals() {}
+
FdTable fd_table;
// When the linker is invoked on a binary (e.g. `linker64 /system/bin/date`),
// record the number of arguments passed to the linker itself rather than to
// the program it's loading. Typically 0, sometimes 1.
- int initial_linker_arg_count;
+ int initial_linker_arg_count = 0;
- ElfW(auxv_t)* auxv;
+ ElfW(auxv_t)* auxv = nullptr;
- pthread_mutex_t abort_msg_lock;
- abort_msg_t* abort_msg;
+ pthread_mutex_t abort_msg_lock = PTHREAD_MUTEX_INITIALIZER;
+ abort_msg_t* abort_msg = nullptr;
+
+ StaticTlsLayout static_tls_layout;
// Values passed from the linker to libc.so.
- const char* init_progname;
- char** init_environ;
+ const char* init_progname = nullptr;
+ char** init_environ = nullptr;
};
__LIBC_HIDDEN__ libc_shared_globals* __libc_shared_globals();
diff --git a/libc/private/bionic_lock.h b/libc/private/bionic_lock.h
index eebfeff..410e637 100644
--- a/libc/private/bionic_lock.h
+++ b/libc/private/bionic_lock.h
@@ -78,7 +78,7 @@
class LockGuard {
public:
- LockGuard(Lock& lock) : lock_(lock) {
+ explicit LockGuard(Lock& lock) : lock_(lock) {
lock_.lock();
}
~LockGuard() {
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 4749cee..90914c3 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -26,8 +26,7 @@
* SUCH DAMAGE.
*/
-#ifndef __BIONIC_PRIVATE_BIONIC_TLS_H_
-#define __BIONIC_PRIVATE_BIONIC_TLS_H_
+#pragma once
#include <locale.h>
#include <mntent.h>
@@ -35,73 +34,48 @@
#include <sys/cdefs.h>
#include <sys/param.h>
+#include "bionic_asm_tls.h"
#include "bionic_macros.h"
#include "__get_tls.h"
#include "grp_pwd.h"
-__BEGIN_DECLS
-
/** WARNING WARNING WARNING
**
- ** This header file is *NOT* part of the public Bionic ABI/API
- ** and should not be used/included by user-serviceable parts of
- ** the system (e.g. applications).
- **
- ** It is only provided here for the benefit of the system dynamic
- ** linker and the OpenGL sub-system (which needs to access the
- ** pre-allocated slot directly for performance reason).
+ ** This header file is *NOT* part of the public Bionic ABI/API and should not
+ ** be used/included by user-serviceable parts of the system (e.g.
+ ** applications).
**/
-// Well-known TLS slots. What data goes in which slot is arbitrary unless otherwise noted.
-enum {
- TLS_SLOT_SELF = 0, // The kernel requires this specific slot for x86.
- TLS_SLOT_THREAD_ID,
+class pthread_internal_t;
- // TLS slot 2 was used for errno but is now free.
+// This struct is small, so the linker can allocate a temporary copy on its
+// stack. It can't be combined with pthread_internal_t because:
+// - native bridge requires pthread_internal_t to have the same layout across
+// architectures, and
+// - On x86, this struct would have to be placed at the front of
+// pthread_internal_t, moving fields like `tid`.
+// - We'd like to avoid having a temporary pthread_internal_t object that
+// needs to be transferred once the final size of static TLS is known.
+struct bionic_tcb {
+ void* raw_slots_storage[BIONIC_TLS_SLOTS];
- // These two aren't used by bionic itself, but allow the graphics code to
- // access TLS directly rather than using the pthread API.
- TLS_SLOT_OPENGL_API = 3,
- TLS_SLOT_OPENGL = 4,
+ // Return a reference to a slot given its TP-relative TLS_SLOT_xxx index.
+ // The thread pointer (i.e. __get_tls()) points at &tls_slot(0).
+ void*& tls_slot(size_t tpindex) {
+ return raw_slots_storage[tpindex - MIN_TLS_SLOT];
+ }
- TLS_SLOT_STACK_GUARD = 5, // GCC requires this specific slot for x86.
+ // Initialize the main thread's final object using its bootstrap object.
+ void copy_from_bootstrap(const bionic_tcb* boot) {
+ // Copy everything. Problematic slots will be reinitialized.
+ *this = *boot;
+ }
- // Lets sanitizers avoid using pthread_getspecific for finding the current
- // thread state. (Slot 6 was historically used for dlerror instead.)
- TLS_SLOT_SANITIZER = 6,
-
- // Fast storage for Thread::Current() in ART.
- TLS_SLOT_ART_THREAD_SELF = 7,
-
- // Lets TSAN avoid using pthread_getspecific for finding the current thread
- // state.
- TLS_SLOT_TSAN = 8,
-
- BIONIC_TLS_SLOTS // Must come last!
+ pthread_internal_t* thread() {
+ return static_cast<pthread_internal_t*>(tls_slot(TLS_SLOT_THREAD_ID));
+ }
};
-// ~3 pages.
-struct bionic_tls {
- locale_t locale;
-
- char basename_buf[MAXPATHLEN];
- char dirname_buf[MAXPATHLEN];
-
- mntent mntent_buf;
- char mntent_strings[BUFSIZ];
-
- char ptsname_buf[32];
- char ttyname_buf[64];
-
- char strerror_buf[NL_TEXTMAX];
- char strsignal_buf[NL_TEXTMAX];
-
- group_state_t group;
- passwd_state_t passwd;
-};
-
-#define BIONIC_TLS_SIZE (__BIONIC_ALIGN(sizeof(bionic_tls), PAGE_SIZE))
-
/*
* Bionic uses some pthread keys internally. All pthread keys used internally
* should be created in constructors, except for keys that may be used in or
@@ -126,12 +100,42 @@
*/
#define BIONIC_PTHREAD_KEY_COUNT (BIONIC_PTHREAD_KEY_RESERVED_COUNT + PTHREAD_KEYS_MAX)
-__END_DECLS
+class pthread_key_data_t {
+ public:
+ uintptr_t seq; // Use uintptr_t just for alignment, as we use pointer below.
+ void* data;
+};
-#if defined(__cplusplus)
+// ~3 pages. This struct is allocated as static TLS memory (i.e. at a fixed
+// offset from the thread pointer).
+struct bionic_tls {
+ pthread_key_data_t key_data[BIONIC_PTHREAD_KEY_COUNT];
+
+ locale_t locale;
+
+ char basename_buf[MAXPATHLEN];
+ char dirname_buf[MAXPATHLEN];
+
+ mntent mntent_buf;
+ char mntent_strings[BUFSIZ];
+
+ char ptsname_buf[32];
+ char ttyname_buf[64];
+
+ char strerror_buf[NL_TEXTMAX];
+ char strsignal_buf[NL_TEXTMAX];
+
+ group_state_t group;
+ passwd_state_t passwd;
+
+ // Initialize the main thread's final object using its bootstrap object.
+ void copy_from_bootstrap(const bionic_tls* boot __attribute__((unused))) {
+ // Nothing in bionic_tls needs to be preserved in the transition to the
+ // final TLS objects, so don't copy anything.
+ }
+};
+
class KernelArgumentBlock;
-extern void __libc_init_main_thread_early(KernelArgumentBlock& args);
-extern void __libc_init_main_thread_late();
-#endif
-
-#endif /* __BIONIC_PRIVATE_BIONIC_TLS_H_ */
+extern "C" void __libc_init_main_thread_early(const KernelArgumentBlock& args, bionic_tcb* temp_tcb);
+extern "C" void __libc_init_main_thread_late();
+extern "C" void __libc_init_main_thread_final();
diff --git a/libc/private/linker_native_bridge.h b/libc/private/linker_native_bridge.h
new file mode 100644
index 0000000..bfd0153
--- /dev/null
+++ b/libc/private/linker_native_bridge.h
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+extern "C" void __linker_reserve_bionic_tls_in_static_tls();
diff --git a/libc/symbol_ordering b/libc/symbol_ordering
new file mode 100644
index 0000000..5b365f0
--- /dev/null
+++ b/libc/symbol_ordering
@@ -0,0 +1,210 @@
+# This file is generated by sorting symbols in the .bss section in libc.so by
+# their sizes and taking out symbols that are unique to a target. By sorting
+# symbols by size, we usually have less dirty pages at runtime, because small
+# symbols are grouped together.
+
+je_background_thread_enabled_state
+je_can_enable_background_thread
+_ZZ17__find_icu_symbolPKcE9found_icu
+_ZL28g_heapprofd_init_in_progress
+_ZL31g_heapprofd_init_hook_installed
+je_opt_abort
+je_opt_abort_conf
+je_opt_junk_alloc
+je_opt_junk_free
+je_opt_utrace
+je_opt_xmalloc
+je_opt_zero
+malloc_disabled_tcache
+had_conf_error
+malloc_slow_flags
+je_opt_background_thread
+background_thread_enabled_at_fork
+ctl_initialized
+je_log_init_done
+mmap_flags
+os_overcommits
+je_opt_stats_print
+je_tsd_booted
+global_hashtable_initialized
+gmtcheck.gmt_is_set
+restartloop
+_ZZ12bindresvportE4port
+ru_counter
+ru_a
+ru_x
+ru_b
+ru_seed
+ru_g
+ru_seed2
+ru_msb
+je_narenas_auto
+je_ncpus
+je_init_system_thp_mode
+je_nhbins
+je_tsd_tsd
+optreset
+_rs_forked
+daylight
+_ZL17g_icudata_version
+gMallocLeakZygoteChild
+_ZL18netdClientInitOnce
+je_opt_narenas
+narenas_total
+je_malloc_disable.once_control
+je_opt_metadata_thp
+je_opt_thp
+stack_nelms
+tcaches_past
+ncleanups
+error_message_count
+error_one_per_line
+_ZZ13error_at_lineE9last_line
+_ZL13g_locale_once
+_ZL30g_propservice_protocol_version
+_res_cache_once
+_res_key
+_rs_forkdetect._rs_pid
+ru_pid
+lcl_is_set
+__cxa_finalize.call_depth
+seed48.sseed
+ether_aton.addr
+je_background_thread_info
+je_max_background_threads
+je_n_background_threads
+je_malloc_message
+je_tcache_bin_info
+je_tcache_maxclass
+je_tcaches
+optarg
+suboptarg
+timezone
+_ZGVZ17__find_icu_symbolPKcE9found_icu
+_ZL17g_libicuuc_handle
+__malloc_hook
+__realloc_hook
+__free_hook
+__memalign_hook
+_ZL21g_heapprofd_init_func
+je_malloc_conf
+malloc_initializer
+a0
+je_opt_dirty_decay_ms
+je_opt_muzzy_decay_ms
+dirty_decay_ms_default.0
+muzzy_decay_ms_default.0
+pthread_create_fptr
+b0
+ctl_arenas
+ctl_stats
+je_hooks_arena_new_hook
+os_page
+tcaches_avail
+_ZN9prop_area8pa_size_E
+_ZN9prop_area13pa_data_size_E
+_ZL6g_lock
+_ZL6g_tags
+_ZZ8c16rtombE15__private_state
+_ZZ8c32rtombE15__private_state
+environ
+error_print_progname
+_ZZ13error_at_lineE9last_file
+_ZZ14__icu_charTypejE10u_charType
+_ZGVZ14__icu_charTypejE10u_charType
+_ZZ25__icu_getIntPropertyValuej9UPropertyE21u_getIntPropertyValue
+_ZGVZ25__icu_getIntPropertyValuej9UPropertyE21u_getIntPropertyValue
+_ZZ23__icu_hasBinaryPropertyj9UPropertyPFiiEE19u_hasBinaryProperty
+_ZGVZ23__icu_hasBinaryPropertyj9UPropertyPFiiEE19u_hasBinaryProperty
+__progname
+_ZZ8mbrtoc16E15__private_state
+_ZZ8mbrtoc32E15__private_state
+_ZL14syslog_log_tag
+__system_property_area__
+_ZZ7mbrtowcE15__private_state
+_ZZ10mbsnrtowcsE15__private_state
+_ZZ7wcrtombE15__private_state
+_ZZ10wcsnrtombsE15__private_state
+_ZZ8iswcntrlE10u_charType
+_ZGVZ8iswcntrlE10u_charType
+_ZZ8iswdigitE9u_isdigit
+_ZGVZ8iswdigitE9u_isdigit
+_ZZ8iswpunctE9u_ispunct
+_ZGVZ8iswpunctE9u_ispunct
+_ZZ8towlowerE9u_tolower
+_ZGVZ8towlowerE9u_tolower
+_ZZ8towupperE9u_toupper
+_ZGVZ8towupperE9u_toupper
+global_hashtable
+handlers
+p5s
+ut
+rs
+rsx
+mbrlen.mbs
+mbtowc.mbs
+wctomb.mbs
+ru_reseed
+ru_prf
+tmpnam.tmpcount
+lastenv
+strtok.last
+__stack_chk_guard
+lclptr
+gmtptr
+_ZGVZ14tzset_unlockedE20persist_sys_timezone
+_ZL13g_thread_list
+__atexit
+je_opt_stats_print_opts
+nuls
+precsize_ntoa.retbuf
+__p_secstodate.output
+_ZL13g_atfork_list
+inet_ntoa.b
+ether_ntoa.buf
+__sym_ntos.unname
+__sym_ntop.unname
+__p_type.typebuf
+__p_class.classbuf
+malloc_disabled_lock
+_ZL11g_arc4_lock
+_res_cache_list_lock
+__p_option.nbuf
+__p_time.nbuf
+atexit_mutex
+random_mutex
+__res_randomid.__libc_mutex_random
+locallock
+g_atexit_lock
+_ZL11g_functions
+_ZL13vendor_passwd
+_ZL12vendor_group
+tm
+_ZL18g_thread_list_lock
+buf_asctime
+__dtoa_locks
+freelist
+__loc_ntoa.tmpbuf
+_ZL8g_locale
+je_arenas_lock
+je_background_thread_lock
+init_lock
+ctl_mtx
+tcaches_mtx
+je_tsd_init_head
+_ZZ14tzset_unlockedE20persist_sys_timezone
+arena_binind_div_info
+__hexdig_D2A
+lcl_TZname
+utmp
+inet_nsap_ntoa_tmpbuf
+_ZL17system_properties
+_ZL7key_map
+private_mem
+__libc_globals
+tmpnam.buf
+_res_cache_list
+_nres
+je_extent_mutex_pool
+je_arenas
+je_extents_rtree
diff --git a/libc/tools/genversion-scripts.py b/libc/tools/genversion-scripts.py
deleted file mode 100755
index 5410580..0000000
--- a/libc/tools/genversion-scripts.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-
-# This tool is used to generate the version scripts for libc and libm
-# for every architecture.
-
-import atexit
-import os.path
-import shutil
-import tempfile
-import sys
-
-
-all_arches = ["arm", "arm64", "mips", "mips64", "x86", "x86_64"]
-bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc")
-bionic_libm_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libm")
-bionic_libdl_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libdl")
-libc_script = os.path.join(bionic_libc_root, "libc.map.txt")
-libm_script = os.path.join(bionic_libm_root, "libm.map.txt")
-libdl_script = os.path.join(bionic_libdl_root, "libdl.map.txt")
-libstdcxx_script = os.path.join(bionic_libc_root, "libstdc++.map.txt")
-
-script_name = os.path.basename(sys.argv[0])
-
-# TODO (dimity): generate architecture-specific version scripts as part of build
-
-# temp directory where we store all intermediate files
-bionic_temp = tempfile.mkdtemp(prefix="bionic_genversionscripts")
-# Make sure the directory is deleted when the script exits.
-atexit.register(shutil.rmtree, bionic_temp)
-
-bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc")
-
-warning = "Generated by %s. Do not edit." % script_name
-
-
-def has_arch_tags(tags):
- for arch in all_arches:
- if arch in tags:
- return True
- return False
-
-
-class VersionScriptGenerator(object):
-
- def run(self):
- for script in [libc_script, libstdcxx_script, libm_script, libdl_script]:
- basename = os.path.basename(script)
- dirname = os.path.dirname(script)
- for arch in all_arches:
- name = basename.split(".")[0] + "." + arch + ".map"
- tmp_path = os.path.join(bionic_temp, name)
- dest_path = os.path.join(dirname, name)
- with open(tmp_path, "w") as fout:
- with open(script, "r") as fin:
- fout.write("# %s\n" % warning)
- for line in fin:
- index = line.find("#")
- if index != -1:
- tags = line[index+1:].split()
- if arch not in tags and has_arch_tags(tags):
- continue
- fout.write(line)
- shutil.copyfile(tmp_path, dest_path)
-
-
-generator = VersionScriptGenerator()
-generator.run()
diff --git a/libc/tzcode/bionic.cpp b/libc/tzcode/bionic.cpp
index cb9c359..9051308 100644
--- a/libc/tzcode/bionic.cpp
+++ b/libc/tzcode/bionic.cpp
@@ -228,13 +228,18 @@
if (fd >= 0) return fd;
#else
// On the host, we don't expect those locations to exist, and we're not
- // worried about security so we trust $ANDROID_DATA and $ANDROID_ROOT to
- // point us in the right direction.
+ // worried about security so we trust $ANDROID_DATA, $ANDROID_RUNTIME_ROOT
+ // and $ANDROID_ROOT to point us in the right direction.
char* path = make_path("ANDROID_DATA", "/misc/zoneinfo/current/tzdata");
fd = __bionic_open_tzdata_path(path, olson_id, entry_length);
free(path);
if (fd >= 0) return fd;
+ path = make_path("ANDROID_RUNTIME_ROOT", "/etc/tz/tzdata");
+ fd = __bionic_open_tzdata_path(path, olson_id, entry_length);
+ free(path);
+ if (fd >= 0) return fd;
+
path = make_path("ANDROID_ROOT", "/usr/share/zoneinfo/tzdata");
fd = __bionic_open_tzdata_path(path, olson_id, entry_length);
free(path);
diff --git a/libdl/Android.bp b/libdl/Android.bp
index 656d3ab..262da6c 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -56,18 +56,12 @@
// for x86, exclude libgcc_eh.a for the same reasons as above
arch: {
arm: {
- version_script: "libdl.arm.map",
+ version_script: ":libdl.arm.map",
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
},
arm64: {
- version_script: "libdl.arm64.map",
- },
- mips: {
- version_script: "libdl.mips.map",
- },
- mips64: {
- version_script: "libdl.mips64.map",
+ version_script: ":libdl.arm64.map",
},
x86: {
pack_relocations: false,
@@ -75,11 +69,11 @@
"-Wl,--exclude-libs=libgcc_eh.a",
"-Wl,--hash-style=both",
],
- version_script: "libdl.x86.map",
+ version_script: ":libdl.x86.map",
},
x86_64: {
ldflags: ["-Wl,--exclude-libs=libgcc_eh.a"],
- version_script: "libdl.x86_64.map",
+ version_script: ":libdl.x86_64.map",
},
},
shared: {
@@ -106,6 +100,11 @@
sanitize: {
never: true,
},
+
+ stubs: {
+ symbol_file: "libdl.map.txt",
+ versions: ["10000"],
+ },
}
ndk_library {
@@ -118,3 +117,35 @@
name: "libdl",
symbol_file: "libdl.map.txt",
}
+
+genrule {
+ 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)",
+}
+
+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)",
+}
+
+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)",
+}
+
+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)",
+}
diff --git a/libdl/libdl.arm.map b/libdl/libdl.arm.map
deleted file mode 100644
index 28f0601..0000000
--- a/libdl/libdl.arm.map
+++ /dev/null
@@ -1,56 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dl_unwind_find_exidx; # arm
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libdl/libdl.arm64.map b/libdl/libdl.arm64.map
deleted file mode 100644
index a03e9e1..0000000
--- a/libdl/libdl.arm64.map
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libdl/libdl.map.txt b/libdl/libdl.map.txt
index c5d1be4..1514827 100644
--- a/libdl/libdl.map.txt
+++ b/libdl/libdl.map.txt
@@ -41,15 +41,19 @@
__cfi_slowpath_diag;
} LIBC_N;
+LIBC_Q { # introduced=29
+ global:
+ android_create_namespace; # apex
+ android_dlwarning; # apex
+ android_get_LD_LIBRARY_PATH; # apex
+ android_get_exported_namespace; # apex
+ android_init_anonymous_namespace; # apex
+ android_link_namespaces; # apex
+ android_set_application_target_sdk_version; # apex
+} LIBC_OMR1;
+
LIBC_PLATFORM {
global:
__cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
+} LIBC_Q;
diff --git a/libdl/libdl.mips.map b/libdl/libdl.mips.map
deleted file mode 100644
index a03e9e1..0000000
--- a/libdl/libdl.mips.map
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libdl/libdl.mips64.map b/libdl/libdl.mips64.map
deleted file mode 100644
index a03e9e1..0000000
--- a/libdl/libdl.mips64.map
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libdl/libdl.x86.map b/libdl/libdl.x86.map
deleted file mode 100644
index a03e9e1..0000000
--- a/libdl/libdl.x86.map
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libdl/libdl.x86_64.map b/libdl/libdl.x86_64.map
deleted file mode 100644
index a03e9e1..0000000
--- a/libdl/libdl.x86_64.map
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-#
-# Copyright (C) 2015 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.
-#
-
-LIBC {
- global:
- android_dlopen_ext; # introduced=21
- dl_iterate_phdr; # introduced-arm=21
- dladdr;
- dlclose;
- dlerror;
- dlopen;
- dlsym;
- local:
- *;
-};
-
-LIBC_N {
- global:
- android_get_application_target_sdk_version; # introduced=24 versioned=29
- dlvsym; # introduced=24
-} LIBC;
-
-LIBC_OMR1 { # introduced=27
- global:
- __cfi_shadow_size;
- __cfi_slowpath;
- __cfi_slowpath_diag;
-} LIBC_N;
-
-LIBC_PLATFORM {
- global:
- __cfi_init;
- android_dlwarning;
- android_set_application_target_sdk_version;
- android_get_LD_LIBRARY_PATH;
- android_update_LD_LIBRARY_PATH;
- android_init_anonymous_namespace;
- android_create_namespace;
- android_link_namespaces;
- android_get_exported_namespace;
-} LIBC_OMR1;
diff --git a/libm/Android.bp b/libm/Android.bp
index e4ba20d..28cf1fd 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -285,7 +285,7 @@
instruction_set: "arm",
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- version_script: "libm.arm.map",
+ version_script: ":libm.arm.map",
},
arm64: {
@@ -318,17 +318,7 @@
"upstream-freebsd/lib/msun/src/s_trunc.c",
"upstream-freebsd/lib/msun/src/s_truncf.c",
],
- version_script: "libm.arm64.map",
- },
-
- mips: {
- srcs: ["mips/fenv.c"],
- version_script: "libm.mips.map",
- },
-
- mips64: {
- srcs: ["mips/fenv.c"],
- version_script: "libm.mips64.map",
+ version_script: ":libm.arm64.map",
},
x86: {
@@ -403,7 +393,7 @@
local_include_dirs: ["i387"],
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
- version_script: "libm.x86.map",
+ version_script: ":libm.x86.map",
},
x86_64: {
@@ -474,7 +464,7 @@
"upstream-freebsd/lib/msun/src/s_truncf.c",
],
},
- version_script: "libm.x86_64.map",
+ version_script: ":libm.x86_64.map",
},
},
@@ -504,6 +494,9 @@
"-Wl,--Bsymbolic-functions",
],
+ // b/120614316, non-critical readibility check
+ tidy_checks: ["-cert-dcl16-c"],
+
include_dirs: ["bionic/libc"],
system_shared_libs: ["libc"],
@@ -517,6 +510,11 @@
// TODO(ivanlozano): Remove after b/118321713
xom: false,
+
+ stubs: {
+ symbol_file: "libm.map.txt",
+ versions: ["10000"],
+ },
}
ndk_library {
@@ -529,3 +527,35 @@
name: "libm",
symbol_file: "libm.map.txt",
}
+
+genrule {
+ 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)",
+}
+
+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)",
+}
+
+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)",
+}
+
+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)",
+}
diff --git a/libm/libm.arm.map b/libm/libm.arm.map
deleted file mode 100644
index bee08d4..0000000
--- a/libm/libm.arm.map
+++ /dev/null
@@ -1,401 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
-LIBC_DEPRECATED { # arm mips platform-only
- global: # arm mips
- ___Unwind_Backtrace; # arm
- ___Unwind_ForcedUnwind; # arm
- ___Unwind_RaiseException; # arm
- ___Unwind_Resume; # arm
- ___Unwind_Resume_or_Rethrow; # arm
- __adddf3; # arm
- __aeabi_cdcmpeq; # arm
- __aeabi_cdcmple; # arm
- __aeabi_cdrcmple; # arm
- __aeabi_cfcmpeq; # arm
- __aeabi_cfcmple; # arm
- __aeabi_cfrcmple; # arm
- __aeabi_d2lz; # arm
- __aeabi_d2uiz; # arm
- __aeabi_d2ulz; # arm
- __aeabi_dadd; # arm
- __aeabi_dcmpeq; # arm
- __aeabi_dcmpge; # arm
- __aeabi_dcmpgt; # arm
- __aeabi_dcmple; # arm
- __aeabi_dcmplt; # arm
- __aeabi_ddiv; # arm
- __aeabi_dmul; # arm
- __aeabi_drsub; # arm
- __aeabi_dsub; # arm
- __aeabi_f2d; # arm
- __aeabi_f2lz; # arm
- __aeabi_f2ulz; # arm
- __aeabi_fcmpeq; # arm
- __aeabi_fcmpge; # arm
- __aeabi_fcmpgt; # arm
- __aeabi_fcmple; # arm
- __aeabi_fcmplt; # arm
- __aeabi_i2d; # arm
- __aeabi_l2d; # arm
- __aeabi_ui2d; # arm
- __aeabi_ul2d; # arm
- __aeabi_unwind_cpp_pr0; # arm
- __aeabi_unwind_cpp_pr1; # arm
- __aeabi_unwind_cpp_pr2; # arm
- __cmpdf2; # arm
- __cmpsf2; # arm
- __divdf3; # arm
- __eqdf2; # arm
- __eqsf2; # arm
- __extendsfdf2; # arm
- __fixdfdi; # arm mips
- __fixsfdi; # arm mips
- __fixunsdfdi; # arm mips
- __fixunsdfsi; # arm
- __fixunssfdi; # arm mips
- __floatdidf; # arm
- __floatsidf; # arm
- __floatundidf; # arm
- __floatunsidf; # arm
- __gedf2; # arm
- __gesf2; # arm
- __gnu_Unwind_Backtrace; # arm
- __gnu_unwind_execute; # arm
- __gnu_Unwind_ForcedUnwind; # arm
- __gnu_unwind_frame; # arm
- __gnu_Unwind_RaiseException; # arm
- __gnu_Unwind_Restore_VFP; # arm
- __gnu_Unwind_Restore_VFP_D; # arm
- __gnu_Unwind_Restore_VFP_D_16_to_31; # arm
- __gnu_Unwind_Restore_WMMXC; # arm
- __gnu_Unwind_Restore_WMMXD; # arm
- __gnu_Unwind_Resume; # arm
- __gnu_Unwind_Resume_or_Rethrow; # arm
- __gnu_Unwind_Save_VFP; # arm
- __gnu_Unwind_Save_VFP_D; # arm
- __gnu_Unwind_Save_VFP_D_16_to_31; # arm
- __gnu_Unwind_Save_WMMXC; # arm
- __gnu_Unwind_Save_WMMXD; # arm
- __gtdf2; # arm
- __gtsf2; # arm
- __ledf2; # arm
- __lesf2; # arm
- __ltdf2; # arm
- __ltsf2; # arm
- __muldf3; # arm
- __nedf2; # arm
- __nesf2; # arm
- __restore_core_regs; # arm
- __subdf3; # arm
- _Unwind_Backtrace; # arm
- _Unwind_Complete; # arm
- _Unwind_DeleteException; # arm
- _Unwind_ForcedUnwind; # arm
- _Unwind_GetCFA; # arm
- _Unwind_GetDataRelBase; # arm
- _Unwind_GetLanguageSpecificData; # arm
- _Unwind_GetRegionStart; # arm
- _Unwind_GetTextRelBase; # arm
- _Unwind_RaiseException; # arm
- _Unwind_Resume; # arm
- _Unwind_Resume_or_Rethrow; # arm
- _Unwind_VRS_Get; # arm
- _Unwind_VRS_Pop; # arm
- _Unwind_VRS_Set; # arm
- restore_core_regs; # arm
-} LIBC_O; # arm mips
diff --git a/libm/libm.arm64.map b/libm/libm.arm64.map
deleted file mode 100644
index 550c39b..0000000
--- a/libm/libm.arm64.map
+++ /dev/null
@@ -1,297 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
diff --git a/libm/libm.mips.map b/libm/libm.mips.map
deleted file mode 100644
index 0b6dc02..0000000
--- a/libm/libm.mips.map
+++ /dev/null
@@ -1,304 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
-LIBC_DEPRECATED { # arm mips platform-only
- global: # arm mips
- __fixdfdi; # arm mips
- __fixsfdi; # arm mips
- __fixunsdfdi; # arm mips
- __fixunssfdi; # arm mips
-} LIBC_O; # arm mips
diff --git a/libm/libm.mips64.map b/libm/libm.mips64.map
deleted file mode 100644
index 550c39b..0000000
--- a/libm/libm.mips64.map
+++ /dev/null
@@ -1,297 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
diff --git a/libm/libm.x86.map b/libm/libm.x86.map
deleted file mode 100644
index 550c39b..0000000
--- a/libm/libm.x86.map
+++ /dev/null
@@ -1,297 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
diff --git a/libm/libm.x86_64.map b/libm/libm.x86_64.map
deleted file mode 100644
index 550c39b..0000000
--- a/libm/libm.x86_64.map
+++ /dev/null
@@ -1,297 +0,0 @@
-# Generated by genversion-scripts.py. Do not edit.
-LIBC {
- global:
- __fe_dfl_env; # var
- __signbit;
- __signbitf;
- __signbitl;
- acos;
- acosf;
- acosh;
- acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
- asin;
- asinf;
- asinh;
- asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
- atan;
- atan2;
- atan2f;
- atan2l; # introduced=21
- atanf;
- atanh;
- atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
- cabs; # introduced=23
- cabsf; # introduced=23
- cabsl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- cacos; # introduced=23
- cacosf; # introduced=23
- cacosh; # introduced=23
- cacoshf; # introduced=23
- carg; # introduced=23
- cargf; # introduced=23
- cargl; # introduced=23
- casin; # introduced=23
- casinf; # introduced=23
- casinh; # introduced=23
- casinhf; # introduced=23
- catan; # introduced=23
- catanf; # introduced=23
- catanh; # introduced=23
- catanhf; # introduced=23
- cbrt;
- cbrtf;
- cbrtl; # introduced=21
- ccos; # introduced=23
- ccosf; # introduced=23
- ccosh; # introduced=23
- ccoshf; # introduced=23
- ceil;
- ceilf;
- ceill;
- cexp; # introduced=23
- cexpf; # introduced=23
- cimag; # introduced=23
- cimagf; # introduced=23
- cimagl; # introduced=23
- conj; # introduced=23
- conjf; # introduced=23
- conjl; # introduced=23
- copysign;
- copysignf;
- copysignl;
- cos;
- cosf;
- cosh;
- coshf;
- coshl; # introduced=21
- cosl; # introduced=21
- cproj; # introduced=23
- cprojf; # introduced=23
- cprojl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- creal; # introduced=23
- crealf; # introduced=23
- creall; # introduced=23
- csin; # introduced=23
- csinf; # introduced=23
- csinh; # introduced=23
- csinhf; # introduced=23
- csqrt; # introduced=23
- csqrtf; # introduced=23
- csqrtl; # introduced-arm=21 introduced-arm64=23 introduced-mips=21 introduced-mips64=23 introduced-x86=21 introduced-x86_64=23
- ctan; # introduced=23
- ctanf; # introduced=23
- ctanh; # introduced=23
- ctanhf; # introduced=23
- drem;
- dremf;
- erf;
- erfc;
- erfcf;
- erfcl; # introduced=21
- erff;
- erfl; # introduced=21
- exp;
- exp2;
- exp2f;
- exp2l; # introduced=21
- expf;
- expl; # introduced=21
- expm1;
- expm1f;
- expm1l; # introduced=21
- fabs;
- fabsf;
- fabsl;
- fdim;
- fdimf;
- fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-mips=21 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- finite;
- finitef;
- floor;
- floorf;
- floorl;
- fma;
- fmaf;
- fmal; # introduced=21
- fmax;
- fmaxf;
- fmaxl;
- fmin;
- fminf;
- fminl;
- fmod;
- fmodf;
- fmodl; # introduced=21
- frexp;
- frexpf;
- frexpl; # introduced=21
- gamma;
- gamma_r;
- gammaf;
- gammaf_r;
- hypot;
- hypotf;
- hypotl; # introduced=21
- ilogb;
- ilogbf;
- ilogbl;
- j0;
- j0f;
- j1;
- j1f;
- jn;
- jnf;
- ldexpf;
- ldexpl;
- lgamma;
- lgamma_r;
- lgammaf;
- lgammaf_r;
- lgammal; # introduced=21
- lgammal_r; # introduced=23
- llrint;
- llrintf;
- llrintl; # introduced=21
- llround;
- llroundf;
- llroundl;
- log;
- log10;
- log10f;
- log10l; # introduced=21
- log1p;
- log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logb;
- logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- logf;
- logl; # introduced=21
- lrint;
- lrintf;
- lrintl; # introduced=21
- lround;
- lroundf;
- lroundl;
- modf;
- modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=13 introduced-x86_64=21
- nearbyint;
- nearbyintf;
- nearbyintl; # introduced=21
- nextafter;
- nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- pow;
- powf;
- powl; # introduced=21
- remainder;
- remainderf;
- remainderl; # introduced=21
- remquo;
- remquof;
- remquol; # introduced=21
- rint;
- rintf;
- rintl; # introduced=21
- round;
- roundf;
- roundl;
- scalb;
- scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-mips=9 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21
- scalbn;
- scalbnf;
- scalbnl;
- signgam; # var
- significand;
- significandf;
- significandl; # introduced=21
- sin;
- sincos;
- sincosf;
- sincosl;
- sinf;
- sinh;
- sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
- sqrt;
- sqrtf;
- sqrtl; # introduced=21
- tan;
- tanf;
- tanh;
- tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
- tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-mips=13 introduced-mips64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
- trunc;
- truncf;
- truncl;
- y0;
- y0f;
- y1;
- y1f;
- yn;
- ynf;
- local:
- *;
-};
-
-LIBC_O { # introduced=O
- global:
- cacoshl;
- cacosl;
- casinhl;
- casinl;
- catanhl;
- catanl;
- ccoshl;
- ccosl;
- cexpl;
- clog;
- clogf;
- clogl;
- cpow;
- cpowf;
- cpowl;
- csinhl;
- csinl;
- ctanhl;
- ctanl;
-} LIBC;
-
diff --git a/linker/Android.bp b/linker/Android.bp
index 0e3484a..38a53f8 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -86,6 +86,7 @@
"linker_phdr.cpp",
"linker_sdk_versions.cpp",
"linker_soinfo.cpp",
+ "linker_tls.cpp",
"linker_utils.cpp",
"rt.cpp",
],
diff --git a/linker/linker_allocator.cpp b/linker/linker_allocator.cpp
index 8b05a7e..015768a 100644
--- a/linker/linker_allocator.cpp
+++ b/linker/linker_allocator.cpp
@@ -30,9 +30,6 @@
#include "linker_debug.h"
#include "linker.h"
-#include <algorithm>
-#include <vector>
-
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/prctl.h>
@@ -56,9 +53,19 @@
// the memory.
//
// For a pointer allocated using SmallObjectAllocator it adds
-// the block to free_blocks_list_. If the number of free pages reaches 2,
-// SmallObjectAllocator munmaps one of the pages keeping the other one
-// in reserve.
+// the block to free_blocks_list in the corresponding page. If the number of
+// free pages reaches 2, SmallObjectAllocator munmaps one of the pages keeping
+// the other one in reserve.
+
+// Memory management for large objects is fairly straightforward, but for small
+// objects it is more complicated. If you are changing this code, one simple
+// way to evaluate the memory usage change is by running 'dd' and examine the
+// memory usage by 'showmap $(pidof dd)'. 'dd' is nice in that:
+// 1. It links in quite a few libraries, so you get some linker memory use.
+// 2. When run with no arguments, it sits waiting for input, so it is easy to
+// examine its memory usage with showmap.
+// 3. Since it does nothing while waiting for input, the memory usage is
+// determinisitic.
static const char kSignature[4] = {'L', 'M', 'A', 1};
@@ -67,9 +74,9 @@
// This type is used for large allocations (with size >1k)
static const uint32_t kLargeObject = 111;
-bool operator<(const small_object_page_record& one, const small_object_page_record& two) {
- return one.page_addr < two.page_addr;
-}
+// Allocated pointers must be at least 16-byte aligned. Round up the size of
+// page_info to multiple of 16.
+static constexpr size_t kPageInfoSize = __BIONIC_ALIGN(sizeof(page_info), 16);
static inline uint16_t log2(size_t number) {
uint16_t result = 0;
@@ -83,149 +90,159 @@
return result;
}
-LinkerSmallObjectAllocator::LinkerSmallObjectAllocator(uint32_t type, size_t block_size)
- : type_(type), block_size_(block_size), free_pages_cnt_(0), free_blocks_list_(nullptr) {}
+LinkerSmallObjectAllocator::LinkerSmallObjectAllocator(uint32_t type,
+ size_t block_size)
+ : type_(type),
+ block_size_(block_size),
+ blocks_per_page_((PAGE_SIZE - sizeof(small_object_page_info)) /
+ block_size),
+ free_pages_cnt_(0),
+ page_list_(nullptr) {}
void* LinkerSmallObjectAllocator::alloc() {
CHECK(block_size_ != 0);
- if (free_blocks_list_ == nullptr) {
+ if (page_list_ == nullptr) {
alloc_page();
}
- small_object_block_record* block_record = free_blocks_list_;
+ // Fully allocated pages are de-managed and removed from the page list, so
+ // every page from the page list must be useable. Let's just take the first
+ // one.
+ small_object_page_info* page = page_list_;
+ CHECK(page->free_block_list != nullptr);
+
+ small_object_block_record* const block_record = page->free_block_list;
if (block_record->free_blocks_cnt > 1) {
- small_object_block_record* next_free = reinterpret_cast<small_object_block_record*>(
- reinterpret_cast<uint8_t*>(block_record) + block_size_);
+ small_object_block_record* next_free =
+ reinterpret_cast<small_object_block_record*>(
+ reinterpret_cast<uint8_t*>(block_record) + block_size_);
next_free->next = block_record->next;
next_free->free_blocks_cnt = block_record->free_blocks_cnt - 1;
- free_blocks_list_ = next_free;
+ page->free_block_list = next_free;
} else {
- free_blocks_list_ = block_record->next;
+ page->free_block_list = block_record->next;
}
- // bookkeeping...
- auto page_record = find_page_record(block_record);
-
- if (page_record->allocated_blocks_cnt == 0) {
+ if (page->free_blocks_cnt == blocks_per_page_) {
free_pages_cnt_--;
}
- page_record->free_blocks_cnt--;
- page_record->allocated_blocks_cnt++;
+ page->free_blocks_cnt--;
memset(block_record, 0, block_size_);
+ if (page->free_blocks_cnt == 0) {
+ // De-manage fully allocated pages. These pages will be managed again if
+ // a block is freed.
+ remove_from_page_list(page);
+ }
+
return block_record;
}
-void LinkerSmallObjectAllocator::free_page(linker_vector_t::iterator page_record) {
- void* page_start = reinterpret_cast<void*>(page_record->page_addr);
- void* page_end = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(page_start) + PAGE_SIZE);
-
- while (free_blocks_list_ != nullptr &&
- free_blocks_list_ > page_start &&
- free_blocks_list_ < page_end) {
- free_blocks_list_ = free_blocks_list_->next;
+void LinkerSmallObjectAllocator::free_page(small_object_page_info* page) {
+ CHECK(page->free_blocks_cnt == blocks_per_page_);
+ if (page->prev_page) {
+ page->prev_page->next_page = page->next_page;
}
-
- small_object_block_record* current = free_blocks_list_;
-
- while (current != nullptr) {
- while (current->next > page_start && current->next < page_end) {
- current->next = current->next->next;
- }
-
- current = current->next;
+ if (page->next_page) {
+ page->next_page->prev_page = page->prev_page;
}
-
- munmap(page_start, PAGE_SIZE);
- page_records_.erase(page_record);
+ if (page_list_ == page) {
+ page_list_ = page->next_page;
+ }
+ munmap(page, PAGE_SIZE);
free_pages_cnt_--;
}
void LinkerSmallObjectAllocator::free(void* ptr) {
- auto page_record = find_page_record(ptr);
+ small_object_page_info* const page =
+ reinterpret_cast<small_object_page_info*>(
+ PAGE_START(reinterpret_cast<uintptr_t>(ptr)));
- ssize_t offset = reinterpret_cast<uintptr_t>(ptr) - sizeof(page_info);
-
- if (offset % block_size_ != 0) {
+ if (reinterpret_cast<uintptr_t>(ptr) % block_size_ != 0) {
async_safe_fatal("invalid pointer: %p (block_size=%zd)", ptr, block_size_);
}
memset(ptr, 0, block_size_);
- small_object_block_record* block_record = reinterpret_cast<small_object_block_record*>(ptr);
+ small_object_block_record* const block_record =
+ reinterpret_cast<small_object_block_record*>(ptr);
- block_record->next = free_blocks_list_;
+ block_record->next = page->free_block_list;
block_record->free_blocks_cnt = 1;
- free_blocks_list_ = block_record;
+ page->free_block_list = block_record;
+ page->free_blocks_cnt++;
- page_record->free_blocks_cnt++;
- page_record->allocated_blocks_cnt--;
-
- if (page_record->allocated_blocks_cnt == 0) {
- if (free_pages_cnt_++ > 1) {
+ if (page->free_blocks_cnt == blocks_per_page_) {
+ if (++free_pages_cnt_ > 1) {
// if we already have a free page - unmap this one.
- free_page(page_record);
+ free_page(page);
}
+ } else if (page->free_blocks_cnt == 1) {
+ // We just freed from a full page. Add this page back to the list.
+ add_to_page_list(page);
}
}
-linker_vector_t::iterator LinkerSmallObjectAllocator::find_page_record(void* ptr) {
- void* addr = reinterpret_cast<void*>(PAGE_START(reinterpret_cast<uintptr_t>(ptr)));
- small_object_page_record boundary;
- boundary.page_addr = addr;
- linker_vector_t::iterator it = std::lower_bound(
- page_records_.begin(), page_records_.end(), boundary);
-
- if (it == page_records_.end() || it->page_addr != addr) {
- // not found...
- async_safe_fatal("page record for %p was not found (block_size=%zd)", ptr, block_size_);
- }
-
- return it;
-}
-
-void LinkerSmallObjectAllocator::create_page_record(void* page_addr, size_t free_blocks_cnt) {
- small_object_page_record record;
- record.page_addr = page_addr;
- record.free_blocks_cnt = free_blocks_cnt;
- record.allocated_blocks_cnt = 0;
-
- linker_vector_t::iterator it = std::lower_bound(
- page_records_.begin(), page_records_.end(), record);
- page_records_.insert(it, record);
-}
-
void LinkerSmallObjectAllocator::alloc_page() {
- static_assert(sizeof(page_info) % 16 == 0, "sizeof(page_info) is not multiple of 16");
- void* map_ptr = mmap(nullptr, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+ void* const map_ptr = mmap(nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (map_ptr == MAP_FAILED) {
async_safe_fatal("mmap failed: %s", strerror(errno));
}
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, PAGE_SIZE, "linker_alloc_small_objects");
+ prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map_ptr, PAGE_SIZE,
+ "linker_alloc_small_objects");
- page_info* info = reinterpret_cast<page_info*>(map_ptr);
- memcpy(info->signature, kSignature, sizeof(kSignature));
- info->type = type_;
- info->allocator_addr = this;
+ small_object_page_info* const page =
+ reinterpret_cast<small_object_page_info*>(map_ptr);
+ memcpy(page->info.signature, kSignature, sizeof(kSignature));
+ page->info.type = type_;
+ page->info.allocator_addr = this;
- size_t free_blocks_cnt = (PAGE_SIZE - sizeof(page_info))/block_size_;
+ page->free_blocks_cnt = blocks_per_page_;
- create_page_record(map_ptr, free_blocks_cnt);
+ // Align the first block to block_size_.
+ const uintptr_t first_block_addr =
+ __BIONIC_ALIGN(reinterpret_cast<uintptr_t>(page + 1), block_size_);
+ small_object_block_record* const first_block =
+ reinterpret_cast<small_object_block_record*>(first_block_addr);
- small_object_block_record* first_block = reinterpret_cast<small_object_block_record*>(info + 1);
+ first_block->next = nullptr;
+ first_block->free_blocks_cnt = blocks_per_page_;
- first_block->next = free_blocks_list_;
- first_block->free_blocks_cnt = free_blocks_cnt;
+ page->free_block_list = first_block;
- free_blocks_list_ = first_block;
+ add_to_page_list(page);
free_pages_cnt_++;
}
+void LinkerSmallObjectAllocator::add_to_page_list(small_object_page_info* page) {
+ page->next_page = page_list_;
+ page->prev_page = nullptr;
+ if (page_list_) {
+ page_list_->prev_page = page;
+ }
+ page_list_ = page;
+}
+
+void LinkerSmallObjectAllocator::remove_from_page_list(
+ small_object_page_info* page) {
+ if (page->prev_page) {
+ page->prev_page->next_page = page->next_page;
+ }
+ if (page->next_page) {
+ page->next_page->prev_page = page->prev_page;
+ }
+ if (page_list_ == page) {
+ page_list_ = page->next_page;
+ }
+ page->prev_page = nullptr;
+ page->next_page = nullptr;
+}
void LinkerMemoryAllocator::initialize_allocators() {
if (allocators_ != nullptr) {
@@ -244,7 +261,7 @@
}
void* LinkerMemoryAllocator::alloc_mmap(size_t size) {
- size_t allocated_size = PAGE_END(size + sizeof(page_info));
+ size_t allocated_size = PAGE_END(size + kPageInfoSize);
void* map_ptr = mmap(nullptr, allocated_size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0);
@@ -259,7 +276,8 @@
info->type = kLargeObject;
info->allocated_size = allocated_size;
- return info + 1;
+ return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(info) +
+ kPageInfoSize);
}
void* LinkerMemoryAllocator::alloc(size_t size) {
@@ -305,7 +323,7 @@
size_t old_size = 0;
if (info->type == kLargeObject) {
- old_size = info->allocated_size - sizeof(page_info);
+ old_size = info->allocated_size - kPageInfoSize;
} else {
LinkerSmallObjectAllocator* allocator = get_small_object_allocator(info->type);
if (allocator != info->allocator_addr) {
diff --git a/linker/linker_allocator.h b/linker/linker_allocator.h
index 8c4198b..44a8b0d 100644
--- a/linker/linker_allocator.h
+++ b/linker/linker_allocator.h
@@ -36,8 +36,6 @@
#include <stddef.h>
#include <unistd.h>
-#include <vector>
-
#include <async_safe/log.h>
const uint32_t kSmallObjectMaxSizeLog2 = 10;
@@ -57,59 +55,32 @@
// and allocator_addr for small ones.
LinkerSmallObjectAllocator* allocator_addr;
};
-} __attribute__((aligned(16)));
-
-struct small_object_page_record {
- void* page_addr;
- size_t free_blocks_cnt;
- size_t allocated_blocks_cnt;
};
-// for lower_bound...
-bool operator<(const small_object_page_record& one, const small_object_page_record& two);
-
struct small_object_block_record {
small_object_block_record* next;
size_t free_blocks_cnt;
};
-// This is implementation for std::vector allocator
-template <typename T>
-class linker_vector_allocator {
- public:
- typedef T value_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
+// This structure is placed at the beginning of each page managed by
+// LinkerSmallObjectAllocator. Note that a page_info struct is expected at the
+// beginning of each page as well, and therefore this structure contains a
+// page_info as its *first* field.
+struct small_object_page_info {
+ page_info info; // Must be the first field.
- T* allocate(size_t n, const T* hint = nullptr) {
- size_t size = n * sizeof(T);
- void* ptr = mmap(const_cast<T*>(hint), size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
- -1, 0);
- if (ptr == MAP_FAILED) {
- // Spec says we need to throw std::bad_alloc here but because our
- // code does not support exception handling anyways - we are going to abort.
- async_safe_fatal("mmap failed: %s", strerror(errno));
- }
+ // Doubly linked list for traversing all pages allocated by a
+ // LinkerSmallObjectAllocator.
+ small_object_page_info* next_page;
+ small_object_page_info* prev_page;
- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ptr, size, "linker_alloc_vector");
+ // Linked list containing all free blocks in this page.
+ small_object_block_record* free_block_list;
- return reinterpret_cast<T*>(ptr);
- }
-
- void deallocate(T* ptr, size_t n) {
- munmap(ptr, n * sizeof(T));
- }
+ // Free blocks counter.
+ size_t free_blocks_cnt;
};
-typedef
- std::vector<small_object_page_record, linker_vector_allocator<small_object_page_record>>
- linker_vector_t;
-
-
class LinkerSmallObjectAllocator {
public:
LinkerSmallObjectAllocator(uint32_t type, size_t block_size);
@@ -119,18 +90,17 @@
size_t get_block_size() const { return block_size_; }
private:
void alloc_page();
- void free_page(linker_vector_t::iterator page_record);
- linker_vector_t::iterator find_page_record(void* ptr);
- void create_page_record(void* page_addr, size_t free_blocks_cnt);
+ void free_page(small_object_page_info* page);
+ void add_to_page_list(small_object_page_info* page);
+ void remove_from_page_list(small_object_page_info* page);
- uint32_t type_;
- size_t block_size_;
+ const uint32_t type_;
+ const size_t block_size_;
+ const size_t blocks_per_page_;
size_t free_pages_cnt_;
- small_object_block_record* free_blocks_list_;
- // sorted vector of page records
- linker_vector_t page_records_;
+ small_object_page_info* page_list_;
};
class LinkerMemoryAllocator {
diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index ac4c1fd..0e75c85 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -241,11 +241,15 @@
if (realpath(value.c_str(), buf)) {
resolved_path = buf;
} else if (errno != ENOENT) {
- DL_WARN("%s:%zd: warning: path \"%s\" couldn't be resolved: %s",
- ld_config_file_path,
- cp.lineno(),
- value.c_str(),
- strerror(errno));
+ // realpath is expected to fail with EPERM in some situations, so log
+ // the failure with INFO rather than DL_WARN. e.g. A binary in
+ // /data/local/tmp may attempt to stat /postinstall. See
+ // http://b/120996057.
+ INFO("%s:%zd: warning: path \"%s\" couldn't be resolved: %s",
+ ld_config_file_path,
+ cp.lineno(),
+ value.c_str(),
+ strerror(errno));
resolved_path = value;
} else {
// ENOENT: no need to test if binary is under the path
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 3318c2c..9b4ce47 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -36,6 +36,7 @@
#include "linker_gdb_support.h"
#include "linker_globals.h"
#include "linker_phdr.h"
+#include "linker_tls.h"
#include "linker_utils.h"
#include "private/bionic_globals.h"
@@ -51,6 +52,7 @@
#include <async_safe/log.h>
#include <bionic/libc_init_common.h>
+#include <bionic/pthread_internal.h>
#include <vector>
@@ -450,6 +452,10 @@
si->increment_ref_count();
}
+ layout_linker_static_tls();
+
+ __libc_init_main_thread_final();
+
if (!get_cfi_shadow()->InitialLinkDone(solist)) __linker_cannot_link(g_argv[0]);
si->call_pre_init_constructors();
@@ -557,7 +563,8 @@
extern "C" ElfW(Addr) __linker_init(void* raw_args) {
// Initialize TLS early so system calls and errno work.
KernelArgumentBlock args(raw_args);
- __libc_init_main_thread_early(args);
+ bionic_tcb temp_tcb = {};
+ __libc_init_main_thread_early(args, &temp_tcb);
// When the linker is run by itself (rather than as an interpreter for
// another program), AT_BASE is 0.
diff --git a/linker/linker_relocs.h b/linker/linker_relocs.h
index 4bab0e0..68191f9 100644
--- a/linker/linker_relocs.h
+++ b/linker/linker_relocs.h
@@ -34,30 +34,46 @@
#if defined (__aarch64__)
-#define R_GENERIC_JUMP_SLOT R_AARCH64_JUMP_SLOT
-#define R_GENERIC_GLOB_DAT R_AARCH64_GLOB_DAT
-#define R_GENERIC_RELATIVE R_AARCH64_RELATIVE
-#define R_GENERIC_IRELATIVE R_AARCH64_IRELATIVE
+#define R_GENERIC_JUMP_SLOT R_AARCH64_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT R_AARCH64_GLOB_DAT
+#define R_GENERIC_RELATIVE R_AARCH64_RELATIVE
+#define R_GENERIC_IRELATIVE R_AARCH64_IRELATIVE
+#define R_GENERIC_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_GENERIC_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_GENERIC_TLS_TPREL R_AARCH64_TLS_TPREL64
+#define R_GENERIC_TLSDESC R_AARCH64_TLSDESC
#elif defined (__arm__)
-#define R_GENERIC_JUMP_SLOT R_ARM_JUMP_SLOT
-#define R_GENERIC_GLOB_DAT R_ARM_GLOB_DAT
-#define R_GENERIC_RELATIVE R_ARM_RELATIVE
-#define R_GENERIC_IRELATIVE R_ARM_IRELATIVE
+#define R_GENERIC_JUMP_SLOT R_ARM_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT R_ARM_GLOB_DAT
+#define R_GENERIC_RELATIVE R_ARM_RELATIVE
+#define R_GENERIC_IRELATIVE R_ARM_IRELATIVE
+#define R_GENERIC_TLS_DTPMOD R_ARM_TLS_DTPMOD32
+#define R_GENERIC_TLS_DTPREL R_ARM_TLS_DTPOFF32
+#define R_GENERIC_TLS_TPREL R_ARM_TLS_TPOFF32
+#define R_GENERIC_TLSDESC R_ARM_TLS_DESC
#elif defined (__i386__)
-#define R_GENERIC_JUMP_SLOT R_386_JMP_SLOT
-#define R_GENERIC_GLOB_DAT R_386_GLOB_DAT
-#define R_GENERIC_RELATIVE R_386_RELATIVE
-#define R_GENERIC_IRELATIVE R_386_IRELATIVE
+#define R_GENERIC_JUMP_SLOT R_386_JMP_SLOT
+#define R_GENERIC_GLOB_DAT R_386_GLOB_DAT
+#define R_GENERIC_RELATIVE R_386_RELATIVE
+#define R_GENERIC_IRELATIVE R_386_IRELATIVE
+#define R_GENERIC_TLS_DTPMOD R_386_TLS_DTPMOD32
+#define R_GENERIC_TLS_DTPREL R_386_TLS_DTPOFF32
+#define R_GENERIC_TLS_TPREL R_386_TLS_TPOFF
+#define R_GENERIC_TLSDESC R_386_TLS_DESC
#elif defined (__x86_64__)
-#define R_GENERIC_JUMP_SLOT R_X86_64_JUMP_SLOT
-#define R_GENERIC_GLOB_DAT R_X86_64_GLOB_DAT
-#define R_GENERIC_RELATIVE R_X86_64_RELATIVE
-#define R_GENERIC_IRELATIVE R_X86_64_IRELATIVE
+#define R_GENERIC_JUMP_SLOT R_X86_64_JUMP_SLOT
+#define R_GENERIC_GLOB_DAT R_X86_64_GLOB_DAT
+#define R_GENERIC_RELATIVE R_X86_64_RELATIVE
+#define R_GENERIC_IRELATIVE R_X86_64_IRELATIVE
+#define R_GENERIC_TLS_DTPMOD R_X86_64_DTPMOD64
+#define R_GENERIC_TLS_DTPREL R_X86_64_DTPOFF64
+#define R_GENERIC_TLS_TPREL R_X86_64_TPOFF64
+#define R_GENERIC_TLSDESC R_X86_64_TLSDESC
#endif
diff --git a/linker/linker_tls.cpp b/linker/linker_tls.cpp
new file mode 100644
index 0000000..3327453
--- /dev/null
+++ b/linker/linker_tls.cpp
@@ -0,0 +1,56 @@
+/*
+ * 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 "linker_tls.h"
+
+#include "private/bionic_defs.h"
+#include "private/bionic_elf_tls.h"
+#include "private/bionic_globals.h"
+#include "private/linker_native_bridge.h"
+
+__BIONIC_WEAK_FOR_NATIVE_BRIDGE
+extern "C" void __linker_reserve_bionic_tls_in_static_tls() {
+ __libc_shared_globals()->static_tls_layout.reserve_bionic_tls();
+}
+
+// Stub for linker static TLS layout.
+void layout_linker_static_tls() {
+ StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+ layout.reserve_tcb();
+
+ // The pthread key data is located at the very front of bionic_tls. As a
+ // temporary workaround, allocate bionic_tls just after the thread pointer so
+ // Golang can find its pthread key, as long as the executable's TLS segment is
+ // small enough. Specifically, Golang scans forward 384 words from the TP on
+ // ARM.
+ // - http://b/118381796
+ // - https://groups.google.com/d/msg/golang-dev/yVrkFnYrYPE/2G3aFzYqBgAJ
+ __linker_reserve_bionic_tls_in_static_tls();
+
+ layout.finish_layout();
+}
diff --git a/linker/linker_tls.h b/linker/linker_tls.h
new file mode 100644
index 0000000..2f0a57d
--- /dev/null
+++ b/linker/linker_tls.h
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+void layout_linker_static_tls();
diff --git a/tests/Android.bp b/tests/Android.bp
index 899fc66..beed07a 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -42,6 +42,7 @@
sanitize: {
never: true,
},
+ bootstrap: true,
}
// -----------------------------------------------------------------------------
@@ -64,6 +65,7 @@
name: "libBionicStandardTests",
defaults: ["bionic_tests_defaults"],
srcs: [
+ "__aeabi_read_tp_test.cpp",
"alloca_test.cpp",
"android_get_device_api_level.cpp",
"arpa_inet_test.cpp",
diff --git a/tests/__aeabi_read_tp_test.cpp b/tests/__aeabi_read_tp_test.cpp
new file mode 100644
index 0000000..ab96af9
--- /dev/null
+++ b/tests/__aeabi_read_tp_test.cpp
@@ -0,0 +1,38 @@
+/*
+ * 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 <gtest/gtest.h>
+
+#include "private/__get_tls.h"
+
+#if defined(__arm__)
+extern "C" void* __aeabi_read_tp();
+TEST(aeabi, read_tp) {
+ ASSERT_EQ(__aeabi_read_tp(), static_cast<void*>(__get_tls()));
+}
+#endif
diff --git a/tests/grp_pwd_file_test.cpp b/tests/grp_pwd_file_test.cpp
index 2cbad62..66866fb 100644
--- a/tests/grp_pwd_file_test.cpp
+++ b/tests/grp_pwd_file_test.cpp
@@ -26,7 +26,7 @@
template <typename T>
class FileUnmapper {
public:
- FileUnmapper(T& file) : file_(file) {
+ explicit FileUnmapper(T& file) : file_(file) {
}
~FileUnmapper() {
file_.Unmap();
diff --git a/tests/libs/thread_local_dtor.cpp b/tests/libs/thread_local_dtor.cpp
index cefff7a..90fd418 100644
--- a/tests/libs/thread_local_dtor.cpp
+++ b/tests/libs/thread_local_dtor.cpp
@@ -30,7 +30,7 @@
class TestClass {
public:
- TestClass(bool* flag) : flag_(flag) {}
+ explicit TestClass(bool* flag) : flag_(flag) {}
~TestClass() {
*flag_ = true;
}
diff --git a/tests/libs/thread_local_dtor2.cpp b/tests/libs/thread_local_dtor2.cpp
index 9b2b164..177c91b 100644
--- a/tests/libs/thread_local_dtor2.cpp
+++ b/tests/libs/thread_local_dtor2.cpp
@@ -30,7 +30,7 @@
class TestClass {
public:
- TestClass(bool* flag) : flag_(flag) {}
+ explicit TestClass(bool* flag) : flag_(flag) {}
~TestClass() {
*flag_ = true;
}
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 84ce531..1c57264 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -2582,9 +2582,9 @@
ASSERT_EQ(0, munmap(pages[i], kPageSize));
}
- // Creating a thread uses at least six VMAs: the stack, the TLS, and a guard each side of both.
- // So we should have seen at least six failures.
- ASSERT_GE(EAGAIN_count, 6U);
+ // Creating a thread uses at least three VMAs: the combined stack and TLS, and a guard on each
+ // side. So we should have seen at least three failures.
+ ASSERT_GE(EAGAIN_count, 3U);
for (; i < pages.size(); ++i) {
ASSERT_EQ(0, munmap(pages[i], kPageSize));
diff --git a/tests/stack_protector_test_helper.cpp b/tests/stack_protector_test_helper.cpp
index 3f15a12..2db4ef1 100644
--- a/tests/stack_protector_test_helper.cpp
+++ b/tests/stack_protector_test_helper.cpp
@@ -21,6 +21,6 @@
// the line of defense *after* that.
// Without volatile, the generic x86/x86-64 targets don't write to the stack.
volatile char* p = buf;
- int size = static_cast<int>(sizeof(buf) + 1);
+ int size = static_cast<int>(sizeof(buf) + sizeof(void*));
while ((p - buf) < size) *p++ = '\0';
}
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index 00850f6..a249b75 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -876,16 +876,18 @@
ASSERT_EQ(3, getloadavg(load, INT_MAX));
// Read /proc/loadavg and check that it's "close enough".
- load[0] = nan("");
double expected[3];
std::unique_ptr<FILE, decltype(&fclose)> fp{fopen("/proc/loadavg", "re"), fclose};
ASSERT_EQ(3, fscanf(fp.get(), "%lf %lf %lf", &expected[0], &expected[1], &expected[2]));
+ load[0] = load[1] = load[2] = nan("");
ASSERT_EQ(3, getloadavg(load, 3));
- // It's probably too flaky if we look at the 1-minute average, so we just place a NaN there
- // and check that it's overwritten with _something_.
+ // Check that getloadavg(3) at least overwrote the NaNs.
ASSERT_FALSE(isnan(load[0]));
- // For the others, rounding to an integer is pessimistic but at least gives us a sanity check.
- ASSERT_DOUBLE_EQ(rint(expected[1]), rint(load[1]));
- ASSERT_DOUBLE_EQ(rint(expected[2]), rint(load[2]));
+ ASSERT_FALSE(isnan(load[1]));
+ ASSERT_FALSE(isnan(load[2]));
+ // And that the difference between /proc/loadavg and getloadavg(3) is "small".
+ ASSERT_TRUE(fabs(expected[0] - load[0]) < 0.5) << expected[0] << ' ' << load[0];
+ ASSERT_TRUE(fabs(expected[1] - load[1]) < 0.5) << expected[1] << ' ' << load[1];
+ ASSERT_TRUE(fabs(expected[2] - load[2]) < 0.5) << expected[2] << ' ' << load[2];
}
diff --git a/tests/sys_prctl_test.cpp b/tests/sys_prctl_test.cpp
index 7afa626..cd23c0a 100644
--- a/tests/sys_prctl_test.cpp
+++ b/tests/sys_prctl_test.cpp
@@ -20,6 +20,7 @@
#include <sys/capability.h>
#include <sys/mman.h>
#include <sys/prctl.h>
+#include <sys/utsname.h>
#include <unistd.h>
#include <string>
@@ -75,10 +76,14 @@
"https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/"
"?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3";
+ utsname u = {};
+ ASSERT_EQ(0, uname(&u));
+
+ errno = 0;
auto err = prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_CLEAR_ALL, 0, 0, 0);
EXPECT_EQ(0, err);
// EINVAL -> unrecognized prctl option
- ASSERT_NE(EINVAL, errno) << "kernel missing required commits:\n"
+ ASSERT_NE(EINVAL, errno) << "kernel (" << u.release << ") missing required commits:\n"
<< caps_sha << "\n"
<< caps_typo_sha << "\n";
diff --git a/tests/sys_time_test.cpp b/tests/sys_time_test.cpp
index 16187eb..d033364 100644
--- a/tests/sys_time_test.cpp
+++ b/tests/sys_time_test.cpp
@@ -147,7 +147,7 @@
tv2.tv_usec += 1000000;
}
- // Should be less than (a very generous, to try to avoid flakiness) 2ms (2000us).
+ // Should be less than (a very generous, to try to avoid flakiness) 5ms (5000us).
ASSERT_EQ(0, tv2.tv_sec);
- ASSERT_LT(tv2.tv_usec, 2000);
+ ASSERT_LT(tv2.tv_usec, 5000);
}
diff --git a/tools/Android.bp b/tools/Android.bp
index b44c296..c540c3c 100644
--- a/tools/Android.bp
+++ b/tools/Android.bp
@@ -1 +1,6 @@
subdirs = ["*"]
+
+filegroup {
+ name: "bionic-generate-version-script",
+ srcs: ["generate-version-script.py"],
+}
diff --git a/tools/generate-version-script.py b/tools/generate-version-script.py
new file mode 100755
index 0000000..acfe218
--- /dev/null
+++ b/tools/generate-version-script.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+# This tool is used to generate the version scripts for libc, libm, libdl,
+# and libstdc++ for every architecture.
+
+# usage: generate-version-script.py ARCH INPUT OUTPUT
+
+import sys
+
+def has_arch_tags(tags):
+ for arch in ["arm", "arm64", "x86", "x86_64"]:
+ if arch in tags:
+ return True
+ return False
+
+def GenerateVersionScript(arch, in_filename, out_filename):
+ with open(out_filename, "w") as fout:
+ with open(in_filename, "r") as fin:
+ for line in fin:
+ index = line.find("#")
+ if index != -1:
+ tags = line[index+1:].split()
+ if arch not in tags and has_arch_tags(tags):
+ continue
+ fout.write(line)
+
+arch = sys.argv[1]
+in_filename = sys.argv[2]
+out_filename = sys.argv[3]
+GenerateVersionScript(arch, in_filename, out_filename)