mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
44829b3ddb
No bug. This commit adds support for __memcmpeq() as a new ABI for all targets. In this commit __memcmpeq() is implemented only as an alias to the corresponding targets memcmp() implementation. __memcmpeq() is added as a new symbol starting with GLIBC_2.35 and defined in string.h with comments explaining its behavior. Basic tests that it is callable and works where added in string/tester.c As discussed in the proposal "Add new ABI '__memcmpeq()' to libc" __memcmpeq() is essentially a reserved namespace for bcmp(). The means is shares the same specifications as memcmp() except the return value for non-equal byte sequences is any non-zero value. This is less strict than memcmp()'s return value specification and can be better optimized when a boolean return is all that is needed. __memcmpeq() is meant to only be called by compilers if they can prove that the return value of a memcmp() call is only used for its boolean value. All tests in string/tester.c passed. As well build succeeds on x86_64-linux-gnu target.
96 lines
2.0 KiB
Plaintext
96 lines
2.0 KiB
Plaintext
libc {
|
|
GLIBC_2.0 {
|
|
# functions with required interface outside normal name space
|
|
__argz_count; __argz_stringify; __argz_next;
|
|
|
|
# functions used in inline functions or macros
|
|
__bzero; __strtok_r;
|
|
|
|
# functions used in other libraries
|
|
__ffs; __mempcpy; __stpncpy; __stpcpy; __strcasecmp; __strdup;
|
|
__strerror_r;
|
|
|
|
# a*
|
|
argz_add; argz_add_sep; argz_append; argz_count; argz_create;
|
|
argz_create_sep; argz_delete; argz_extract; argz_insert; argz_next;
|
|
argz_replace; argz_stringify;
|
|
|
|
# b*
|
|
basename; bcmp; bcopy; bzero;
|
|
|
|
# e*
|
|
envz_add; envz_entry; envz_get; envz_merge; envz_remove;
|
|
envz_strip;
|
|
|
|
# f*
|
|
ffs;
|
|
|
|
# i*
|
|
index;
|
|
|
|
# m*
|
|
memccpy; memchr; memcmp; memcpy; memfrob; memmem; memmove; memset;
|
|
|
|
# r*
|
|
rindex;
|
|
|
|
# s*
|
|
stpcpy; stpncpy; strcasecmp; strcat; strchr; strcmp; strcoll; strcpy;
|
|
strcspn; strdup; strerror; strerror_r; strfry; strlen; strncasecmp;
|
|
strncat; strncmp; strncpy; strndup; strnlen; strpbrk; strrchr; strsep;
|
|
strsignal; strspn; strstr; strtok; strtok_r; strxfrm; swab;
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in macros and other libraries
|
|
__rawmemchr; __strcasestr;
|
|
|
|
# f*
|
|
ffsl; ffsll;
|
|
|
|
# m*
|
|
mempcpy;
|
|
|
|
# r*
|
|
rawmemchr;
|
|
|
|
# s*
|
|
strcasestr; strverscmp;
|
|
}
|
|
GLIBC_2.1.1 {
|
|
# extern inline functions used by <bits/string2.h>
|
|
__mempcpy_small; __stpcpy_small; __strcspn_c1; __strcspn_c2; __strcspn_c3;
|
|
__strcpy_small; __strspn_c1; __strspn_c2; __strspn_c3; __strpbrk_c2;
|
|
__strpbrk_c3; __strsep_1c; __strsep_2c; __strsep_3c; __strsep_g;
|
|
__strtok_r_1c;
|
|
|
|
# s*
|
|
strchrnul; __strverscmp;
|
|
}
|
|
GLIBC_2.2 {
|
|
# functions used in macros.
|
|
__strndup;
|
|
|
|
# m*
|
|
memrchr;
|
|
}
|
|
GLIBC_2.3.4 {
|
|
# x*
|
|
__xpg_strerror_r;
|
|
}
|
|
GLIBC_2.6 {
|
|
strerror_l;
|
|
}
|
|
GLIBC_2.24 {
|
|
}
|
|
GLIBC_2.25 {
|
|
explicit_bzero;
|
|
}
|
|
GLIBC_2.32 {
|
|
sigdescr_np; sigabbrev_np;
|
|
strerrordesc_np; strerrorname_np;
|
|
}
|
|
GLIBC_2.35 {
|
|
__memcmpeq;
|
|
}
|
|
}
|