Merge "linker_note_gnu_property_test: clarify naming." into main
diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp
index 8c7a49b..94ba7e4 100644
--- a/libc/bionic/libc_init_common.cpp
+++ b/libc/bionic/libc_init_common.cpp
@@ -210,9 +210,9 @@
extern "C" void scudo_malloc_set_add_large_allocation_slack(int add_slack);
-__BIONIC_WEAK_FOR_NATIVE_BRIDGE void __libc_set_target_sdk_version(int target __unused) {
+__BIONIC_WEAK_FOR_NATIVE_BRIDGE void __libc_set_target_sdk_version(int target_api_level __unused) {
#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer)
- scudo_malloc_set_add_large_allocation_slack(target < __ANDROID_API_S__);
+ scudo_malloc_set_add_large_allocation_slack(target_api_level < 31);
#endif
}
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index a8d09eb..ba20c51 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -118,12 +118,15 @@
static void __init_shadow_call_stack(pthread_internal_t* thread __unused) {
#if defined(__aarch64__) || defined(__riscv)
- // Allocate the stack and the guard region.
+ // Allocate the shadow call stack and its guard region.
char* scs_guard_region = reinterpret_cast<char*>(
- mmap(nullptr, SCS_GUARD_REGION_SIZE, 0, MAP_PRIVATE | MAP_ANON, -1, 0));
+ mmap(nullptr, SCS_GUARD_REGION_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0));
+ if (scs_guard_region == MAP_FAILED) {
+ async_safe_fatal("failed to allocate shadow stack: %m");
+ }
thread->shadow_call_stack_guard_region = scs_guard_region;
- // The address is aligned to SCS_SIZE so that we only need to store the lower log2(SCS_SIZE) bits
+ // Align the address to SCS_SIZE so that we only need to store the lower log2(SCS_SIZE) bits
// in jmp_buf. See the SCS commentary in pthread_internal.h for more detail.
char* scs_aligned_guard_region =
reinterpret_cast<char*>(align_up(reinterpret_cast<uintptr_t>(scs_guard_region), SCS_SIZE));
@@ -349,7 +352,7 @@
extern "C" int __rt_sigprocmask(int, const sigset64_t*, sigset64_t*, size_t);
__attribute__((no_sanitize("hwaddress")))
-#ifdef __aarch64__
+#if defined(__aarch64__)
// This function doesn't return, but it does appear in stack traces. Avoid using return PAC in this
// function because we may end up resetting IA, which may confuse unwinders due to mismatching keys.
__attribute__((target("branch-protection=bti")))
@@ -368,13 +371,13 @@
__set_stack_and_tls_vma_name(false);
__init_additional_stacks(thread);
__rt_sigprocmask(SIG_SETMASK, &thread->start_mask, nullptr, sizeof(thread->start_mask));
-#ifdef __aarch64__
+#if defined(__aarch64__)
// Chrome's sandbox prevents this prctl, so only reset IA if the target SDK level is high enough.
// Furthermore, processes loaded from vendor partitions may have their own sandboxes that would
- // reject the prctl. Because no devices launched with PAC enabled before S, we can avoid issues on
- // upgrading devices by checking for PAC support before issuing the prctl.
+ // reject the prctl. Because no devices launched with PAC enabled before API level 31, we can
+ // avoid issues on upgrading devices by checking for PAC support before issuing the prctl.
static const bool pac_supported = getauxval(AT_HWCAP) & HWCAP_PACA;
- if (pac_supported && android_get_application_target_sdk_version() >= __ANDROID_API_S__) {
+ if (pac_supported && android_get_application_target_sdk_version() >= 31) {
prctl(PR_PAC_RESET_KEYS, PR_PAC_APIAKEY, 0, 0, 0);
}
#endif
diff --git a/libc/include/sys/_system_properties.h b/libc/include/sys/_system_properties.h
index 078e857..05612b3 100644
--- a/libc/include/sys/_system_properties.h
+++ b/libc/include/sys/_system_properties.h
@@ -26,8 +26,7 @@
* SUCH DAMAGE.
*/
-#ifndef _INCLUDE_SYS__SYSTEM_PROPERTIES_H
-#define _INCLUDE_SYS__SYSTEM_PROPERTIES_H
+#pragma once
#include <sys/cdefs.h>
#include <stdint.h>
@@ -40,13 +39,67 @@
__BEGIN_DECLS
+/**
+ * Reads the global serial number of the system properties _area_.
+ *
+ * Called to predict if a series of cached __system_property_find()
+ * objects will have seen __system_property_serial() values change.
+ * Also aids the converse, as changes in the global serial can
+ * also be used to predict if a failed __system_property_find()
+ * could in turn now find a new object; thus preventing the
+ * cycles of effort to poll __system_property_find().
+ *
+ * Typically called at beginning of a cache cycle to signal if _any_ possible
+ * changes have occurred since last. If there is, one may check each individual
+ * __system_property_serial() to confirm dirty, or __system_property_find()
+ * to check if the property now exists. If a call to __system_property_add()
+ * or __system_property_update() has completed between two calls to
+ * __system_property_area_serial() then the second call will return a larger
+ * value than the first call. Beware of race conditions as changes to the
+ * properties are not atomic, the main value of this call is to determine
+ * whether the expensive __system_property_find() is worth retrying to see if
+ * a property now exists.
+ *
+ * Returns the serial number on success, -1 on error.
+ */
+uint32_t __system_property_area_serial(void);
+
+/**
+ * Reads the serial number of a specific system property previously returned by
+ * __system_property_find(). This is a cheap way to check whether a system
+ * property has changed or not.
+ *
+ * Returns the serial number on success, -1 on error.
+ */
+uint32_t __system_property_serial(const prop_info* _Nonnull __pi);
+
+//
+// libc implementation detail.
+//
+
+/**
+ * Initializes the system properties area in read-only mode.
+ *
+ * This is called automatically during libc initialization,
+ * so user code should never need to call this.
+ *
+ * Returns 0 on success, -1 otherwise.
+ */
+int __system_properties_init(void);
+
+//
+// init implementation details.
+//
+
#define PROP_SERVICE_NAME "property_service"
#define PROP_SERVICE_FOR_SYSTEM_NAME "property_service_for_system"
#define PROP_DIRNAME "/dev/__properties__"
+// Messages sent to init.
#define PROP_MSG_SETPROP 1
#define PROP_MSG_SETPROP2 0x00020001
+// Status codes returned by init (but not passed from libc to the caller).
#define PROP_SUCCESS 0
#define PROP_ERROR_READ_CMD 0x0004
#define PROP_ERROR_READ_DATA 0x0008
@@ -58,93 +111,62 @@
#define PROP_ERROR_HANDLE_CONTROL_MESSAGE 0x0020
#define PROP_ERROR_SET_FAILED 0x0024
-/*
-** This was previously for testing, but now that SystemProperties is its own testable class,
-** there is never a reason to call this function and its implementation simply returns -1.
-*/
-int __system_property_set_filename(const char* __unused __filename);
-
-/*
-** Initialize the area to be used to store properties. Can
-** only be done by a single process that has write access to
-** the property area.
-*/
+/**
+ * Initializes the area to be used to store properties.
+ *
+ * Can only be done by the process that has write access to the property area,
+ * typically init.
+ *
+ * See __system_properties_init() for the equivalent for all other processes.
+ */
int __system_property_area_init(void);
-/* Read the global serial number of the system properties
-**
-** Called to predict if a series of cached __system_property_find
-** objects will have seen __system_property_serial values change.
-** But also aids the converse, as changes in the global serial can
-** also be used to predict if a failed __system_property_find
-** could in-turn now find a new object; thus preventing the
-** cycles of effort to poll __system_property_find.
-**
-** Typically called at beginning of a cache cycle to signal if _any_ possible
-** changes have occurred since last. If there is, one may check each individual
-** __system_property_serial to confirm dirty, or __system_property_find
-** to check if the property now exists. If a call to __system_property_add
-** or __system_property_update has completed between two calls to
-** __system_property_area_serial then the second call will return a larger
-** value than the first call. Beware of race conditions as changes to the
-** properties are not atomic, the main value of this call is to determine
-** whether the expensive __system_property_find is worth retrying to see if
-** a property now exists.
-**
-** Returns the serial number on success, -1 on error.
-*/
-uint32_t __system_property_area_serial(void);
-
-/* Add a new system property. Can only be done by a single
-** process that has write access to the property area, and
-** that process must handle sequencing to ensure the property
-** does not already exist and that only one property is added
-** or updated at a time.
-**
-** Returns 0 on success, -1 if the property area is full.
-*/
+/**
+ * Adds a new system property.
+ * Can only be done by the process that has write access to the property area --
+ * typically init -- which must handle sequencing to ensure that only one property is
+ * updated at a time.
+ *
+ * Returns 0 on success, -1 if the property area is full.
+ */
int __system_property_add(const char* _Nonnull __name, unsigned int __name_length, const char* _Nonnull __value, unsigned int __value_length);
-/* Update the value of a system property returned by
-** __system_property_find. Can only be done by a single process
-** that has write access to the property area, and that process
-** must handle sequencing to ensure that only one property is
-** updated at a time.
-**
-** Returns 0 on success, -1 if the parameters are incorrect.
-*/
+/**
+ * Updates the value of a system property returned by __system_property_find().
+ * Can only be done by the process that has write access to the property area --
+ * typically init -- which must handle sequencing to ensure that only one property is
+ * updated at a time.
+ *
+ * Returns 0 on success, -1 if the parameters are incorrect.
+ */
int __system_property_update(prop_info* _Nonnull __pi, const char* _Nonnull __value, unsigned int __value_length);
-/* Read the serial number of a system property returned by
-** __system_property_find.
-**
-** Returns the serial number on success, -1 on error.
-*/
-uint32_t __system_property_serial(const prop_info* _Nonnull __pi);
-
-/* Initialize the system properties area in read only mode.
- * Should be done by all processes that need to read system
- * properties.
+/**
+ * Reloads the system properties from disk.
+ * Not intended for use by any apps except the Zygote.
+ * Should only be called from the main thread.
+ *
+ * Pointers received from functions such as __system_property_find()
+ * may be invalidated by calls to this function.
*
* Returns 0 on success, -1 otherwise.
- */
-int __system_properties_init(void);
-
-/*
- * Reloads the system properties from disk.
- * Not intended for use by any apps except the Zygote. Should only be called from the main thread.
*
- * NOTE: Any pointers received from methods such as __system_property_find should be assumed to be
- * invalid after this method is called.
- *
- * Returns 0 on success, -1 if the system properties failed to re-initialize (same conditions as
- * __system properties_init)
+ * Available since API level 35.
*/
-int __system_properties_zygote_reload(void) __INTRODUCED_IN(__ANDROID_API_V__);
+int __system_properties_zygote_reload(void) __INTRODUCED_IN(35);
-/* Deprecated: use __system_property_wait instead. */
+//
+// Deprecated functions.
+//
+
+/** Deprecated: use __system_property_wait instead. */
uint32_t __system_property_wait_any(uint32_t __old_serial);
-__END_DECLS
+/**
+ * Deprecated: previously for testing, but now that SystemProperties is its own
+ * testable class, there is never a reason to call this function and its
+ * implementation simply returns -1.
+ */
+int __system_property_set_filename(const char* __unused __filename);
-#endif
+__END_DECLS
diff --git a/libc/include/sys/select.h b/libc/include/sys/select.h
index 84c2621..437a234 100644
--- a/libc/include/sys/select.h
+++ b/libc/include/sys/select.h
@@ -44,7 +44,7 @@
typedef unsigned long fd_mask;
/**
- * The limit on the largest fd that can be used with this API.
+ * The limit on the largest fd that can be used with fd_set.
* Use <poll.h> instead.
*/
#define FD_SETSIZE 1024
@@ -52,6 +52,9 @@
/**
* The type of a file descriptor set. Limited to 1024 fds.
+ * The underlying system calls do not have this limit,
+ * and callers can allocate their own sets with calloc().
+ *
* Use <poll.h> instead.
*/
typedef struct {
@@ -60,30 +63,27 @@
#define __FDELT(fd) ((fd) / NFDBITS)
#define __FDMASK(fd) (1UL << ((fd) % NFDBITS))
-#define __FDS_BITS(type,set) (__BIONIC_CAST(static_cast, type, set)->fds_bits)
-
-/* Inline loop so we don't have to declare memset. */
-#define FD_ZERO(set) \
- do { \
- size_t __i; \
- for (__i = 0; __i < sizeof(fd_set)/sizeof(fd_mask); ++__i) { \
- (set)->fds_bits[__i] = 0; \
- } \
- } while (0)
+#define __FDS_BITS(type, set) (__BIONIC_CAST(static_cast, type, set)->fds_bits)
void __FD_CLR_chk(int, fd_set* _Nonnull , size_t);
void __FD_SET_chk(int, fd_set* _Nonnull, size_t);
int __FD_ISSET_chk(int, const fd_set* _Nonnull, size_t);
-#define __FD_CLR(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] &= ~__FDMASK(fd))
-#define __FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))
-#define __FD_ISSET(fd, set) ((__FDS_BITS(const fd_set*,set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
+/** FD_CLR() with no bounds checking for users that allocated their own set. */
+#define __FD_CLR(fd, set) (__FDS_BITS(fd_set*, set)[__FDELT(fd)] &= ~__FDMASK(fd))
+/** FD_SET() with no bounds checking for users that allocated their own set. */
+#define __FD_SET(fd, set) (__FDS_BITS(fd_set*, set)[__FDELT(fd)] |= __FDMASK(fd))
+/** FD_ISSET() with no bounds checking for users that allocated their own set. */
+#define __FD_ISSET(fd, set) ((__FDS_BITS(const fd_set*, set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
-/** Removes `fd` from the given set. Use <poll.h> instead. */
+/** Removes all 1024 fds from the given set. Use <poll.h> instead. */
+#define FD_ZERO(set) __builtin_memset(set, 0, sizeof(*__BIONIC_CAST(static_cast, const fd_set*, set)))
+
+/** Removes `fd` from the given set. Limited to fds under 1024. Use <poll.h> instead. */
#define FD_CLR(fd, set) __FD_CLR_chk(fd, set, __bos(set))
-/** Adds `fd` to the given set. Use <poll.h> instead. */
+/** Adds `fd` to the given set. Limited to fds under 1024. Use <poll.h> instead. */
#define FD_SET(fd, set) __FD_SET_chk(fd, set, __bos(set))
-/** Tests whether `fd` is in the given set. Use <poll.h> instead. */
+/** Tests whether `fd` is in the given set. Limited to fds under 1024. Use <poll.h> instead. */
#define FD_ISSET(fd, set) __FD_ISSET_chk(fd, set, __bos(set))
/**
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index f56a791..cc2701b 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -8,29 +8,29 @@
__atomic_swap; # arm
__b64_ntop;
__b64_pton;
- __cmsg_nxthdr; # introduced=21
- __connect; # arm x86 introduced=21
- __ctype_get_mb_cur_max; # introduced=21
+ __cmsg_nxthdr;
+ __connect; # arm x86
+ __ctype_get_mb_cur_max;
__cxa_atexit;
__cxa_finalize;
__cxa_thread_atexit_impl; # introduced=23
__dn_comp;
__dn_count_labels;
__dn_skipname;
- __epoll_pwait; # arm x86 introduced=21
+ __epoll_pwait; # arm x86
__errno;
- __exit; # arm x86 introduced=21
- __fadvise64; # x86 introduced=21
+ __exit; # arm x86
+ __fadvise64; # x86
__fbufsize; # introduced=23
__fcntl64; # arm x86
- __FD_CLR_chk; # introduced=21
- __FD_ISSET_chk; # introduced=21
- __FD_SET_chk; # introduced=21
- __fgets_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __FD_CLR_chk;
+ __FD_ISSET_chk;
+ __FD_SET_chk;
+ __fgets_chk;
__flbf; # introduced=23
__fp_nquery;
__fp_query;
- __fpclassify; # introduced=21
+ __fpclassify;
__fpclassifyd;
__fpclassifyf;
__fpclassifyl;
@@ -41,9 +41,9 @@
__fstatfs64; # arm x86
__fwritable; # introduced=23
__get_h_errno;
- __getcpu; # arm x86 introduced-arm=12 introduced-x86=12
+ __getcpu; # arm x86
__getcwd; # arm x86
- __getpid; # arm x86 introduced=21
+ __getpid; # arm x86
__getpriority; # arm x86
__gnu_basename; # introduced=23
__gnu_strerror_r; # introduced=23
@@ -55,24 +55,24 @@
__isinf;
__isinff;
__isinfl;
- __isnan; # introduced=21
- __isnanf; # introduced=21
+ __isnan;
+ __isnanf;
__isnanl;
__isnormal;
__isnormalf;
__isnormall;
__isthreaded; # arm x86 var
- __libc_current_sigrtmax; # introduced=21
- __libc_current_sigrtmin; # introduced=21
+ __libc_current_sigrtmax;
+ __libc_current_sigrtmin;
__libc_init;
__llseek; # arm x86
__loc_aton;
__loc_ntoa;
__memchr_chk; # introduced=23
- __memcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __memmove_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __memcpy_chk;
+ __memmove_chk;
__memrchr_chk; # introduced=23
- __memset_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __memset_chk;
__mmap2; # arm x86
__ns_format_ttl; # arm x86 introduced=22
__ns_get16; # arm x86 introduced=22
@@ -96,9 +96,9 @@
__ns_skiprr; # arm x86 introduced=22
__ns_sprintrr; # arm x86 introduced=22
__ns_sprintrrf; # arm x86 introduced=22
- __open_2; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __open_2;
__openat; # arm x86
- __openat_2; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __openat_2;
__p_cdname;
__p_cdnname;
__p_class;
@@ -113,23 +113,23 @@
__p_type;
__p_type_syms; # var
__poll_chk; # introduced=23
- __ppoll; # arm x86 introduced=21
+ __ppoll; # arm x86
__ppoll_chk; # introduced=23
__ppoll64_chk; # introduced=28
__pread64_chk; # introduced=23
__pread_chk; # introduced=23
__progname; # var
- __pselect6; # arm x86 introduced=21
+ __pselect6; # arm x86
__pthread_cleanup_pop;
__pthread_cleanup_push;
__ptrace; # arm x86
__putlong;
__putshort;
- __read_chk; # introduced=21
+ __read_chk;
__readlink_chk; # introduced=23
__readlinkat_chk; # introduced=23
__reboot; # arm x86
- __recvfrom_chk; # introduced=21
+ __recvfrom_chk;
__register_atfork; # introduced=23
__res_close;
__res_dnok;
@@ -152,83 +152,83 @@
__res_send_setqhook;
__res_send_setrhook;
__rt_sigaction; # arm x86
- __rt_sigpending; # arm x86 introduced=21
+ __rt_sigpending; # arm x86
__rt_sigprocmask; # arm x86
- __rt_sigsuspend; # arm x86 introduced=21
+ __rt_sigsuspend; # arm x86
__rt_sigtimedwait; # arm x86
- __sched_cpualloc; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpucount; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- __sched_cpufree; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- __sched_getaffinity; # arm x86 introduced=12
+ __sched_cpualloc;
+ __sched_cpucount;
+ __sched_cpufree;
+ __sched_getaffinity; # arm x86
__set_thread_area; # x86
- __set_tid_address; # arm x86 introduced=21
+ __set_tid_address; # arm x86
__set_tls; # arm
__sF; # var
- __sigaction; # arm x86 introduced=21
- __snprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __socket; # arm x86 introduced=21
- __sprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __sigaction; # arm x86
+ __snprintf_chk;
+ __socket; # arm x86
+ __sprintf_chk;
__stack_chk_fail;
__stack_chk_guard; # var
__statfs64; # arm x86
- __stpcpy_chk; # introduced=21
- __stpncpy_chk; # introduced=21
- __stpncpy_chk2; # introduced=21
- __strcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- __strcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strlcat_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strlcpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strlen_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strncat_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __strncpy_chk2; # introduced=21
- __strrchr_chk; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ __stpcpy_chk;
+ __stpncpy_chk;
+ __stpncpy_chk2;
+ __strcat_chk;
+ __strchr_chk;
+ __strcpy_chk;
+ __strlcat_chk;
+ __strlcpy_chk;
+ __strlen_chk;
+ __strncat_chk;
+ __strncpy_chk;
+ __strncpy_chk2;
+ __strrchr_chk;
__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-x86=19 introduced-x86_64=21
+ __system_property_foreach;
__system_property_get;
__system_property_read;
- __system_property_serial; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- __system_property_set; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ __system_property_serial;
+ __system_property_set;
__timer_create; # arm x86
__timer_delete; # arm x86
__timer_getoverrun; # arm x86
__timer_gettime; # arm x86
__timer_settime; # arm x86
- __umask_chk; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- __vsnprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- __vsprintf_chk; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ __umask_chk;
+ __vsnprintf_chk;
+ __vsprintf_chk;
__waitid; # arm x86
_ctype_; # var
- _Exit; # introduced=21
+ _Exit;
_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
+ _resolv_delete_cache_for_net;
+ _resolv_flush_cache_for_net;
+ _resolv_set_nameservers_for_net;
_setjmp;
- _tolower; # introduced=21
+ _tolower;
_tolower_tab_; # arm x86 var
- _toupper; # introduced=21
+ _toupper;
_toupper_tab_; # arm x86 var
abort;
- abs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ abs;
accept;
- accept4; # introduced=21
+ accept4;
access;
acct;
alarm;
alphasort;
- alphasort64; # introduced=21
- android_set_abort_message; # introduced=21
+ alphasort64;
+ android_set_abort_message;
arc4random;
arc4random_buf;
arc4random_uniform;
@@ -237,8 +237,8 @@
asctime64_r; # arm x86
asctime_r;
asprintf;
- at_quick_exit; # introduced=21
- atof; # introduced=21
+ at_quick_exit;
+ atof;
atoi;
atol;
atoll;
@@ -249,18 +249,18 @@
brk;
bsearch;
btowc;
- c16rtomb; # introduced=21
- c32rtomb; # introduced=21
+ c16rtomb;
+ c32rtomb;
cacheflush; # arm
calloc;
capget;
capset;
- cfgetispeed; # introduced=21
- cfgetospeed; # introduced=21
- cfmakeraw; # introduced=21
- cfsetispeed; # introduced=21
- cfsetospeed; # introduced=21
- cfsetspeed; # introduced=21
+ cfgetispeed;
+ cfgetospeed;
+ cfmakeraw;
+ cfsetispeed;
+ cfsetospeed;
+ cfsetspeed;
chdir;
chmod;
chown;
@@ -274,13 +274,13 @@
clock_gettime;
clock_nanosleep;
clock_settime;
- clone; # introduced-arm=9 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ clone;
close;
closedir;
closelog;
connect;
creat;
- creat64; # introduced=21
+ creat64;
ctime;
ctime64; # arm x86
ctime64_r; # arm x86
@@ -294,20 +294,20 @@
dirname_r; # arm x86
div;
dn_expand;
- dprintf; # introduced=21
+ dprintf;
drand48;
dup;
dup2;
- dup3; # introduced=21
- duplocale; # introduced=21
- endmntent; # introduced=21
+ dup3;
+ duplocale;
+ endmntent;
endservent;
endutent;
environ; # var
epoll_create;
- epoll_create1; # introduced=21
+ epoll_create1;
epoll_ctl;
- epoll_pwait; # introduced=21
+ epoll_pwait;
epoll_wait;
erand48;
err;
@@ -317,10 +317,10 @@
error_one_per_line; # var introduced=23
error_print_progname; # var introduced=23
errx;
- ether_aton; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- ether_aton_r; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- ether_ntoa_r; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ ether_aton;
+ ether_aton_r;
+ ether_ntoa;
+ ether_ntoa_r;
eventfd;
eventfd_read;
eventfd_write;
@@ -330,11 +330,11 @@
execv;
execve;
execvp;
- execvpe; # introduced=21
+ execvpe;
exit;
faccessat;
- fallocate; # introduced=21
- fallocate64; # introduced=21
+ fallocate;
+ fallocate64;
fchdir;
fchmod;
fchmodat;
@@ -351,7 +351,7 @@
ferror;
ferror_unlocked; # introduced=23
fflush;
- ffs; # introduced-arm=9 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ ffs;
fgetc;
fgetln;
fgetpos;
@@ -378,7 +378,7 @@
fread;
free;
freeaddrinfo;
- freelocale; # introduced=21
+ freelocale;
fremovexattr;
freopen;
fscanf;
@@ -387,30 +387,30 @@
fsetpos;
fsetxattr;
fstat;
- fstat64; # introduced=21
+ fstat64;
fstatat;
- fstatat64; # introduced=21
+ fstatat64;
fstatfs;
- fstatfs64; # introduced=21
- fstatvfs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- fstatvfs64; # introduced=21
+ fstatfs64;
+ fstatvfs;
+ fstatvfs64;
fsync;
ftell;
ftello;
ftok;
ftruncate;
- ftruncate64; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ ftruncate64;
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-x86=17 introduced-x86_64=21
- ftw64; # introduced=21
+ fts_children;
+ fts_close;
+ fts_open;
+ fts_read;
+ fts_set;
+ ftw;
+ ftw64;
funlockfile;
funopen;
- futimens; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ futimens;
fwide;
fwprintf;
fwrite;
@@ -421,13 +421,13 @@
get_nprocs_conf; # introduced=23
get_phys_pages; # introduced=23
getaddrinfo;
- getauxval; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ getauxval;
getc;
getc_unlocked;
getchar;
getchar_unlocked;
getcwd;
- getdelim; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ getdelim;
getegid;
getenv;
geteuid;
@@ -445,41 +445,41 @@
gethostent;
gethostname;
getitimer;
- getline; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ getline;
getlogin;
getmntent;
- getmntent_r; # introduced=21
+ getmntent_r;
getnameinfo;
getnetbyaddr;
getnetbyname;
getopt;
getopt_long;
getopt_long_only;
- getpagesize; # introduced=21
+ getpagesize;
getpeername;
getpgid;
getpgrp;
getpid;
getppid;
getpriority;
- getprogname; # introduced=21
+ getprogname;
getprotobyname;
getprotobynumber;
getpt;
getpwnam;
- getpwnam_r; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ getpwnam_r;
getpwuid;
- getpwuid_r; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ getpwuid_r;
getresgid;
getresuid;
getrlimit;
- getrlimit64; # introduced=21
+ getrlimit64;
getrusage;
gets;
getservbyname;
getservbyport;
getservent;
- getsid; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ getsid;
getsockname;
getsockopt;
gettid;
@@ -493,21 +493,21 @@
gmtime64; # arm x86
gmtime64_r; # arm x86
gmtime_r;
- grantpt; # introduced=21
+ grantpt;
herror;
hstrerror;
- htonl; # introduced=21
- htons; # introduced=21
+ htonl;
+ htons;
if_indextoname;
if_nametoindex;
- imaxabs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- imaxdiv; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ imaxabs;
+ imaxdiv;
inet_addr;
inet_aton;
- inet_lnaof; # introduced=21
- inet_makeaddr; # introduced=21
- inet_netof; # introduced=21
- inet_network; # introduced=21
+ inet_lnaof;
+ inet_makeaddr;
+ inet_netof;
+ inet_network;
inet_nsap_addr;
inet_nsap_ntoa;
inet_ntoa;
@@ -515,96 +515,96 @@
inet_pton;
init_module;
initgroups;
- initstate; # introduced=21
+ initstate;
inotify_add_watch;
inotify_init;
- inotify_init1; # introduced=21
+ inotify_init1;
inotify_rm_watch;
- insque; # introduced=21
+ insque;
ioctl;
isalnum;
- isalnum_l; # introduced=21
+ isalnum_l;
isalpha;
- isalpha_l; # introduced=21
+ isalpha_l;
isascii;
isatty;
isblank;
- isblank_l; # introduced=21
+ isblank_l;
iscntrl;
- iscntrl_l; # introduced=21
+ iscntrl_l;
isdigit;
- isdigit_l; # introduced=21
- isfinite; # introduced=21
- isfinitef; # introduced=21
- isfinitel; # introduced=21
+ isdigit_l;
+ isfinite;
+ isfinitef;
+ isfinitel;
isgraph;
- isgraph_l; # introduced=21
- isinf; # introduced=21
- isinff; # introduced=21
- isinfl; # introduced=21
+ isgraph_l;
+ isinf;
+ isinff;
+ isinfl;
islower;
- islower_l; # introduced=21
+ islower_l;
isnan;
isnanf;
- isnanl; # introduced=21
- isnormal; # introduced=21
- isnormalf; # introduced=21
- isnormall; # introduced=21
+ isnanl;
+ isnormal;
+ isnormalf;
+ isnormall;
isprint;
- isprint_l; # introduced=21
+ isprint_l;
ispunct;
- ispunct_l; # introduced=21
+ ispunct_l;
isspace;
- isspace_l; # introduced=21
+ isspace_l;
isupper;
- isupper_l; # introduced=21
+ isupper_l;
iswalnum;
- iswalnum_l; # introduced=21
+ iswalnum_l;
iswalpha;
- iswalpha_l; # introduced=21
- iswblank; # introduced=21
- iswblank_l; # introduced=21
+ iswalpha_l;
+ iswblank;
+ iswblank_l;
iswcntrl;
- iswcntrl_l; # introduced=21
+ iswcntrl_l;
iswctype;
- iswctype_l; # introduced=21
+ iswctype_l;
iswdigit;
- iswdigit_l; # introduced=21
+ iswdigit_l;
iswgraph;
- iswgraph_l; # introduced=21
+ iswgraph_l;
iswlower;
- iswlower_l; # introduced=21
+ iswlower_l;
iswprint;
- iswprint_l; # introduced=21
+ iswprint_l;
iswpunct;
- iswpunct_l; # introduced=21
+ iswpunct_l;
iswspace;
- iswspace_l; # introduced=21
+ iswspace_l;
iswupper;
- iswupper_l; # introduced=21
+ iswupper_l;
iswxdigit;
- iswxdigit_l; # introduced=21
+ iswxdigit_l;
isxdigit;
- isxdigit_l; # introduced=21
+ isxdigit_l;
jrand48;
kill;
killpg;
klogctl;
- labs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ labs;
lchown;
lcong48; # introduced=23
ldexp;
ldiv;
- lfind; # introduced=21
+ lfind;
lgetxattr;
link;
- linkat; # introduced=21
+ linkat;
listen;
listxattr;
- llabs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ llabs;
lldiv;
llistxattr;
- localeconv; # introduced=21
+ localeconv;
localtime;
localtime64; # arm x86
localtime64_r; # arm x86
@@ -613,26 +613,26 @@
longjmp;
lrand48;
lremovexattr;
- lsearch; # introduced=21
+ lsearch;
lseek;
lseek64;
lsetxattr;
lstat;
- lstat64; # introduced=21
+ lstat64;
madvise;
mallinfo;
malloc;
malloc_info; # introduced=23
- malloc_usable_size; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ malloc_usable_size;
mbrlen;
- mbrtoc16; # introduced=21
- mbrtoc32; # introduced=21
+ mbrtoc16;
+ mbrtoc32;
mbrtowc;
mbsinit;
- mbsnrtowcs; # introduced=21
+ mbsnrtowcs;
mbsrtowcs;
- mbstowcs; # introduced=21
- mbtowc; # introduced=21
+ mbstowcs;
+ mbtowc;
memalign;
memccpy;
memchr;
@@ -647,37 +647,37 @@
mkdir;
mkdirat;
mkdtemp;
- mkfifo; # introduced=21
+ mkfifo;
mkfifoat; # introduced=23
mknod;
- mknodat; # introduced=21
+ mknodat;
mkostemp; # introduced=23
mkostemp64; # introduced=23
mkostemps; # introduced=23
mkostemps64; # introduced=23
mkstemp;
- mkstemp64; # introduced=21
+ mkstemp64;
mkstemps;
mkstemps64; # introduced=23
mktemp;
mktime;
mktime64; # arm x86
mlock;
- mlockall; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ mlockall;
mmap;
- mmap64; # introduced=21
+ mmap64;
mount;
mprotect;
mrand48;
mremap;
msync;
munlock;
- munlockall; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
+ munlockall;
munmap;
nanosleep;
- newlocale; # introduced=21
- nftw; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- nftw64; # introduced=21
+ newlocale;
+ nftw;
+ nftw64;
nice;
nrand48;
ns_format_ttl; # arm64 x86_64 riscv64 introduced=22
@@ -703,14 +703,14 @@
ns_sprintrr; # arm64 x86_64 riscv64 introduced=22
ns_sprintrrf; # arm64 x86_64 riscv64 introduced=22
nsdispatch;
- ntohl; # introduced=21
- ntohs; # introduced=21
+ ntohl;
+ ntohs;
open;
- open64; # introduced=21
+ open64;
open_memstream; # introduced=23
open_wmemstream; # introduced=23
openat;
- openat64; # introduced=21
+ openat64;
opendir;
openlog;
openpty; # introduced=23
@@ -728,26 +728,26 @@
pipe2;
poll;
popen;
- posix_fadvise; # introduced=21
- posix_fadvise64; # introduced=21
- posix_fallocate; # introduced=21
- posix_fallocate64; # introduced=21
+ posix_fadvise;
+ posix_fadvise64;
+ posix_fallocate;
+ posix_fallocate64;
posix_madvise; # introduced=23
- posix_memalign; # introduced=17
- posix_openpt; # introduced=21
- ppoll; # introduced=21
+ posix_memalign;
+ posix_openpt;
+ ppoll;
prctl;
pread;
- pread64; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ pread64;
printf;
prlimit; # arm64 x86_64 riscv64
- prlimit64; # introduced=21
+ prlimit64;
process_vm_readv; # introduced=23
process_vm_writev; # introduced=23
pselect;
- psiginfo; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- psignal; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- pthread_atfork; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ psiginfo;
+ psignal;
+ pthread_atfork;
pthread_attr_destroy;
pthread_attr_getdetachstate;
pthread_attr_getguardsize;
@@ -770,15 +770,15 @@
pthread_cond_signal;
pthread_cond_timedwait;
pthread_cond_timedwait_monotonic; # arm x86
- pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-arm64=28 introduced-x64_64=28
+ pthread_cond_timedwait_monotonic_np; # introduced-arm=9 introduced-x86=9 introduced-arm64=28 introduced-x64_64=28 introduced-riscv64=28
pthread_cond_timedwait_relative_np; # arm x86
pthread_cond_timeout_np; # arm x86
pthread_cond_wait;
pthread_condattr_destroy;
- pthread_condattr_getclock; # introduced=21
+ pthread_condattr_getclock;
pthread_condattr_getpshared;
pthread_condattr_init;
- pthread_condattr_setclock; # introduced=21
+ pthread_condattr_setclock;
pthread_condattr_setpshared;
pthread_create;
pthread_detach;
@@ -788,7 +788,7 @@
pthread_getcpuclockid;
pthread_getschedparam;
pthread_getspecific;
- pthread_gettid_np; # introduced=21
+ pthread_gettid_np;
pthread_join;
pthread_key_create;
pthread_key_delete;
@@ -797,7 +797,7 @@
pthread_mutex_init;
pthread_mutex_lock;
pthread_mutex_lock_timeout_np; # arm x86
- pthread_mutex_timedlock; # introduced=21
+ pthread_mutex_timedlock;
pthread_mutex_trylock;
pthread_mutex_unlock;
pthread_mutexattr_destroy;
@@ -840,30 +840,30 @@
putw; # arm x86
putwc;
putwchar;
- pvalloc; # arm x86 introduced=17
+ pvalloc; # arm x86
pwrite;
- pwrite64; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ pwrite64;
qsort;
- quick_exit; # introduced=21
+ quick_exit;
raise;
- rand; # introduced=21
- rand_r; # introduced=21
- random; # introduced=21
+ rand;
+ rand_r;
+ random;
read;
readahead;
readdir;
- readdir64; # introduced=21
- readdir64_r; # introduced=21
+ readdir64;
+ readdir64_r;
readdir_r;
readlink;
- readlinkat; # introduced=21
+ readlinkat;
readv;
realloc;
realpath;
reboot;
recv;
recvfrom;
- recvmmsg; # introduced=21
+ recvmmsg;
recvmsg;
regcomp;
regerror;
@@ -871,7 +871,7 @@
regfree;
remove;
removexattr;
- remque; # introduced=21
+ remque;
rename;
renameat;
res_init;
@@ -883,16 +883,16 @@
rmdir;
sbrk;
scandir;
- scandir64; # introduced=21
+ scandir64;
scanf;
sched_get_priority_max;
sched_get_priority_min;
- sched_getaffinity; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- sched_getcpu; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ sched_getaffinity;
+ sched_getcpu;
sched_getparam;
sched_getscheduler;
sched_rr_get_interval;
- sched_setaffinity; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ sched_setaffinity;
sched_setparam;
sched_setscheduler;
sched_yield;
@@ -911,8 +911,8 @@
sem_wait;
send;
sendfile;
- sendfile64; # introduced=21
- sendmmsg; # introduced=21
+ sendfile64;
+ sendmmsg;
sendmsg;
sendto;
setbuf;
@@ -920,8 +920,8 @@
setegid;
setenv;
seteuid;
- setfsgid; # introduced=21
- setfsuid; # introduced=21
+ setfsgid;
+ setfsuid;
setgid;
setgroups;
sethostname; # introduced=23
@@ -930,22 +930,22 @@
setlinebuf;
setlocale;
setlogmask;
- setmntent; # introduced=21
- setns; # introduced=21
+ setmntent;
+ setns;
setpgid;
setpgrp;
setpriority;
- setprogname; # introduced=21
+ setprogname;
setregid;
setresgid;
setresuid;
setreuid;
setrlimit;
- setrlimit64; # introduced=21
+ setrlimit64;
setservent;
setsid;
setsockopt;
- setstate; # introduced=21
+ setstate;
settimeofday;
setuid;
setutent;
@@ -953,21 +953,21 @@
setxattr;
shutdown;
sigaction;
- sigaddset; # introduced=21
+ sigaddset;
sigaltstack;
sigblock; # arm x86 arm64 x86_64
- sigdelset; # introduced=21
- sigemptyset; # introduced=21
- sigfillset; # introduced=21
+ sigdelset;
+ sigemptyset;
+ sigfillset;
siginterrupt;
- sigismember; # introduced=21
- siglongjmp; # introduced-arm=9 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
- signal; # introduced=21
- signalfd; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ sigismember;
+ siglongjmp;
+ signal;
+ signalfd;
sigpending;
sigprocmask;
sigqueue; # introduced=23
- sigsetjmp; # introduced-arm=9 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ sigsetjmp;
sigsetmask; # arm x86 arm64 x86_64
sigsuspend;
sigtimedwait; # introduced=23
@@ -977,23 +977,23 @@
snprintf;
socket;
socketpair;
- splice; # introduced=21
+ splice;
sprintf;
- srand; # introduced=21
+ srand;
srand48;
- srandom; # introduced=21
+ srandom;
sscanf;
stat;
- stat64; # introduced=21
+ stat64;
statfs;
- statfs64; # introduced=21
- statvfs; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- statvfs64; # introduced=21
+ statfs64;
+ statvfs;
+ statvfs64;
stderr; # var introduced=23
stdin; # var introduced=23
stdout; # var introduced=23
- stpcpy; # introduced=21
- stpncpy; # introduced=21
+ stpcpy;
+ stpncpy;
strcasecmp;
strcasecmp_l; # introduced=23
strcasestr;
@@ -1001,7 +1001,7 @@
strchr;
strcmp;
strcoll;
- strcoll_l; # introduced=21
+ strcoll_l;
strcpy;
strcspn;
strdup;
@@ -1009,7 +1009,7 @@
strerror_l; # introduced=23
strerror_r;
strftime;
- strftime_l; # introduced=21
+ strftime_l;
strlcat;
strlcpy;
strlen;
@@ -1028,27 +1028,27 @@
strspn;
strstr;
strtod;
- strtof; # introduced=21
+ strtof;
strtoimax;
strtok;
strtok_r;
strtol;
- strtold; # introduced=21
- strtold_l; # introduced=21
+ strtold;
+ strtold_l;
strtoll;
- strtoll_l; # introduced=21
+ strtoll_l;
strtoul;
strtoull;
- strtoull_l; # introduced=21
+ strtoull_l;
strtoumax;
strxfrm;
- strxfrm_l; # introduced=21
- swapoff; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- swapon; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ strxfrm_l;
+ swapoff;
+ swapon;
swprintf;
swscanf;
symlink;
- symlinkat; # introduced=21
+ symlinkat;
sync;
sys_siglist; # var
sys_signame; # var
@@ -1057,54 +1057,54 @@
sysinfo;
syslog;
system;
- tcdrain; # introduced=21
- tcflow; # introduced=21
- tcflush; # introduced=21
- tcgetattr; # introduced=21
+ tcdrain;
+ tcflow;
+ tcflush;
+ tcgetattr;
tcgetpgrp;
- tcgetsid; # introduced=21
- tcsendbreak; # introduced=21
- tcsetattr; # introduced=21
+ tcgetsid;
+ tcsendbreak;
+ tcsetattr;
tcsetpgrp;
tdelete;
tdestroy;
- tee; # introduced=21
+ tee;
telldir; # introduced=23
tempnam;
tfind;
tgkill;
time;
- timegm; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ timegm;
timegm64; # arm x86
- timelocal; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ timelocal;
timelocal64; # arm x86
timer_create;
timer_delete;
timer_getoverrun;
timer_gettime;
timer_settime;
- timerfd_create; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_gettime; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
- timerfd_settime; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
+ timerfd_create;
+ timerfd_gettime;
+ timerfd_settime;
times;
timezone; # var
tmpfile;
tmpnam;
toascii;
tolower;
- tolower_l; # introduced=21
+ tolower_l;
toupper;
- toupper_l; # introduced=21
+ toupper_l;
towlower;
- towlower_l; # introduced=21
+ towlower_l;
towupper;
- towupper_l; # introduced=21
+ towupper_l;
truncate;
- truncate64; # introduced=21
+ truncate64;
tsearch;
ttyname;
ttyname_r;
- twalk; # introduced=21
+ twalk;
tzname; # var
tzset;
umask;
@@ -1117,16 +1117,16 @@
unlinkat;
unlockpt;
unsetenv;
- unshare; # introduced-arm=17 introduced-arm64=21 introduced-x86=17 introduced-x86_64=21
- uselocale; # introduced=21
+ unshare;
+ uselocale;
usleep;
utime;
- utimensat; # introduced-arm=12 introduced-arm64=21 introduced-x86=12 introduced-x86_64=21
+ utimensat;
utimes;
utmpname;
valloc; # arm x86
vasprintf;
- vdprintf; # introduced=21
+ vdprintf;
verr;
verrx;
vfdprintf; # arm x86 versioned=28
@@ -1134,22 +1134,22 @@
vfprintf;
vfscanf;
vfwprintf;
- vfwscanf; # introduced=21
- vmsplice; # introduced=21
+ vfwscanf;
+ vmsplice;
vprintf;
vscanf;
vsnprintf;
vsprintf;
vsscanf;
vswprintf;
- vswscanf; # introduced=21
+ vswscanf;
vsyslog;
vwarn;
vwarnx;
vwprintf;
- vwscanf; # introduced=21
+ vwscanf;
wait;
- wait4; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ wait4;
waitid;
waitpid;
warn;
@@ -1163,7 +1163,7 @@
wcschr;
wcscmp;
wcscoll;
- wcscoll_l; # introduced=21
+ wcscoll_l;
wcscpy;
wcscspn;
wcsdup;
@@ -1177,33 +1177,33 @@
wcsncmp;
wcsncpy;
wcsnlen;
- wcsnrtombs; # introduced=21
+ wcsnrtombs;
wcspbrk;
wcsrchr;
wcsrtombs;
wcsspn;
wcsstr;
wcstod;
- wcstof; # introduced=21
- wcstoimax; # introduced=21
+ wcstof;
+ wcstoimax;
wcstok;
wcstol;
- wcstold; # introduced=21
- wcstold_l; # introduced=21
- wcstoll; # introduced=21
- wcstoll_l; # introduced=21
- wcstombs; # introduced=21
+ wcstold;
+ wcstold_l;
+ wcstoll;
+ wcstoll_l;
+ wcstombs;
wcstoul;
- wcstoull; # introduced=21
- wcstoull_l; # introduced=21
- wcstoumax; # introduced=21
+ wcstoull;
+ wcstoull_l;
+ wcstoumax;
wcswidth;
wcsxfrm;
- wcsxfrm_l; # introduced=21
+ wcsxfrm_l;
wctob;
- wctomb; # introduced=21
+ wctomb;
wctype;
- wctype_l; # introduced=21
+ wctype_l;
wcwidth;
wmemchr;
wmemcmp;
diff --git a/libm/libm.map.txt b/libm/libm.map.txt
index f1732f8..b9a0db2 100644
--- a/libm/libm.map.txt
+++ b/libm/libm.map.txt
@@ -8,23 +8,23 @@
acosf;
acosh;
acoshf;
- acoshl; # introduced=21
- acosl; # introduced=21
+ acoshl;
+ acosl;
asin;
asinf;
asinh;
asinhf;
- asinhl; # introduced=21
- asinl; # introduced=21
+ asinhl;
+ asinl;
atan;
atan2;
atan2f;
- atan2l; # introduced=21
+ atan2l;
atanf;
atanh;
atanhf;
- atanhl; # introduced=21
- atanl; # introduced=21
+ atanhl;
+ atanl;
cabs; # introduced=23
cabsf; # introduced=23
cabsl; # introduced-arm=21 introduced-arm64=23 introduced-x86=21 introduced-x86_64=23
@@ -45,7 +45,7 @@
catanhf; # introduced=23
cbrt;
cbrtf;
- cbrtl; # introduced=21
+ cbrtl;
ccos; # introduced=23
ccosf; # introduced=23
ccosh; # introduced=23
@@ -68,8 +68,8 @@
cosf;
cosh;
coshf;
- coshl; # introduced=21
- cosl; # introduced=21
+ coshl;
+ cosl;
cproj; # introduced=23
cprojf; # introduced=23
cprojl; # introduced-arm=21 introduced-arm64=23 introduced-x86=21 introduced-x86_64=23
@@ -92,38 +92,38 @@
erf;
erfc;
erfcf;
- erfcl; # introduced=21
+ erfcl;
erff;
- erfl; # introduced=21
+ erfl;
exp;
exp2;
exp2f;
- exp2l; # introduced=21
+ exp2l;
expf;
- expl; # introduced=21
+ expl;
expm1;
expm1f;
- expm1l; # introduced=21
+ expm1l;
fabs;
fabsf;
fabsl;
fdim;
fdimf;
fdiml;
- feclearexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fedisableexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- feenableexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fegetenv; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fegetexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fegetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fegetround; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- feholdexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- feraiseexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fesetenv; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fesetexceptflag; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fesetround; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- fetestexcept; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- feupdateenv; # introduced-arm=21 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
+ feclearexcept;
+ fedisableexcept;
+ feenableexcept;
+ fegetenv;
+ fegetexcept;
+ fegetexceptflag;
+ fegetround;
+ feholdexcept;
+ feraiseexcept;
+ fesetenv;
+ fesetexceptflag;
+ fesetround;
+ fetestexcept;
+ feupdateenv;
finite;
finitef;
floor;
@@ -131,7 +131,7 @@
floorl;
fma;
fmaf;
- fmal; # introduced=21
+ fmal;
fmax;
fmaxf;
fmaxl;
@@ -140,17 +140,17 @@
fminl;
fmod;
fmodf;
- fmodl; # introduced=21
+ fmodl;
frexp;
frexpf;
- frexpl; # introduced=21
+ frexpl;
gamma;
gamma_r;
gammaf;
gammaf_r;
hypot;
hypotf;
- hypotl; # introduced=21
+ hypotl;
ilogb;
ilogbf;
ilogbl;
@@ -166,77 +166,77 @@
lgamma_r;
lgammaf;
lgammaf_r;
- lgammal; # introduced=21
+ lgammal;
lgammal_r; # introduced=23
llrint;
llrintf;
- llrintl; # introduced=21
+ llrintl;
llround;
llroundf;
llroundl;
log;
log10;
log10f;
- log10l; # introduced=21
+ log10l;
log1p;
log1pf;
- log1pl; # introduced=21
- log2; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- log2f; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- log2l; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ log1pl;
+ log2;
+ log2f;
+ log2l;
logb;
logbf;
- logbl; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ logbl;
logf;
- logl; # introduced=21
+ logl;
lrint;
lrintf;
- lrintl; # introduced=21
+ lrintl;
lround;
lroundf;
lroundl;
modf;
modff;
- modfl; # introduced=21
- nan; # introduced-arm=13 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- nanf; # introduced-arm=13 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- nanl; # introduced-arm=13 introduced-arm64=21 introduced-x86=13 introduced-x86_64=21
+ modfl;
+ nan;
+ nanf;
+ nanl;
nearbyint;
nearbyintf;
- nearbyintl; # introduced=21
+ nearbyintl;
nextafter;
nextafterf;
- nextafterl; # introduced=21
- nexttoward; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ nextafterl;
+ nexttoward;
nexttowardf;
- nexttowardl; # introduced-arm=18 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ nexttowardl;
pow;
powf;
- powl; # introduced=21
+ powl;
remainder;
remainderf;
- remainderl; # introduced=21
+ remainderl;
remquo;
remquof;
- remquol; # introduced=21
+ remquol;
rint;
rintf;
- rintl; # introduced=21
+ rintl;
round;
roundf;
roundl;
scalb;
scalbf;
- scalbln; # introduced-arm=9 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- scalblnf; # introduced-arm=9 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
- scalblnl; # introduced-arm=9 introduced-arm64=21 introduced-x86=18 introduced-x86_64=21
+ scalbln;
+ scalblnf;
+ scalblnl;
scalbn;
scalbnf;
scalbnl;
signgam; # var
significand;
significandf;
- significandl; # introduced=21
+ significandl;
sin;
sincos;
sincosf;
@@ -244,20 +244,20 @@
sinf;
sinh;
sinhf;
- sinhl; # introduced=21
- sinl; # introduced=21
+ sinhl;
+ sinl;
sqrt;
sqrtf;
- sqrtl; # introduced=21
+ sqrtl;
tan;
tanf;
tanh;
tanhf;
- tanhl; # introduced=21
- tanl; # introduced=21
+ tanhl;
+ tanl;
tgamma;
- tgammaf; # introduced-arm=13 introduced-arm64=21 introduced-x86=9 introduced-x86_64=21
- tgammal; # introduced=21
+ tgammaf;
+ tgammal;
trunc;
truncf;
truncl;
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index 1b51fcd..ad60efd 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -228,10 +228,8 @@
return false;
}
-#if !defined(__LP64__)
// Map at most 1MiB which should cover most cases
map_size = std::min(map_size, static_cast<size_t>(1 * 1024 * 1024));
-#endif
if (!file_fragment_.Map(fd_, file_offset_, 0, map_size)) {
DL_ERR("\"%s\" header mmap failed: %m", name_.c_str());