mirror of
https://github.com/opnsense/src.git
synced 2026-02-15 16:48:36 -05:00
glibc-based interface. Unfortunately, the glibc maintainers, despite knowing the existence of the FreeBSD qsort_r(3) interface in 2004 and refused to add the same interface to glibc based on grounds of the lack of standardization and portability concerns, has decided it was a good idea to introduce their own qsort_r(3) interface in 2007 as a GNU extension with a slightly different and incompatible interface. With the adoption of their interface as POSIX standard, let's switch to the same prototype, there is no need to remain incompatible. C++ and C applications written for the historical FreeBSD interface get source level compatibility when building in C++ mode, or when building with a C compiler with C11 generics support, provided that the caller passes a fifth parameter of qsort_r() that exactly matches the historical FreeBSD comparator function pointer type and does not redefine the historical qsort_r(3) prototype in their source code. Symbol versioning is used to keep old binaries working. MFC: never Relnotes: yes Reviewed by: cem, imp, hps, pauamma Differential revision: https://reviews.freebsd.org/D17083
141 lines
1.4 KiB
Text
141 lines
1.4 KiB
Text
/*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
FBSD_1.0 {
|
|
_Exit;
|
|
a64l;
|
|
abort;
|
|
abs;
|
|
atexit;
|
|
__cxa_atexit;
|
|
__cxa_finalize;
|
|
atof;
|
|
atoi;
|
|
atol;
|
|
atoll;
|
|
bsearch;
|
|
div;
|
|
__isthreaded;
|
|
exit;
|
|
getenv;
|
|
opterr;
|
|
optind;
|
|
optopt;
|
|
optreset;
|
|
optarg;
|
|
getopt;
|
|
getopt_long;
|
|
getopt_long_only;
|
|
suboptarg;
|
|
getsubopt;
|
|
grantpt;
|
|
ptsname;
|
|
unlockpt;
|
|
hcreate;
|
|
hdestroy;
|
|
hsearch;
|
|
heapsort;
|
|
imaxabs;
|
|
imaxdiv;
|
|
insque;
|
|
l64a;
|
|
l64a_r;
|
|
labs;
|
|
ldiv;
|
|
llabs;
|
|
lldiv;
|
|
lsearch;
|
|
lfind;
|
|
mergesort;
|
|
putenv;
|
|
qsort;
|
|
radixsort;
|
|
sradixsort;
|
|
rand_r;
|
|
srandom;
|
|
srandomdev;
|
|
initstate;
|
|
setstate;
|
|
random;
|
|
reallocf;
|
|
realpath;
|
|
remque;
|
|
setenv;
|
|
unsetenv;
|
|
strfmon;
|
|
strtoimax;
|
|
strtol;
|
|
strtoll;
|
|
strtonum;
|
|
strtoq;
|
|
strtoul;
|
|
strtoull;
|
|
strtoumax;
|
|
strtouq;
|
|
system;
|
|
tdelete;
|
|
tfind;
|
|
tsearch;
|
|
twalk;
|
|
};
|
|
|
|
FBSD_1.3 {
|
|
at_quick_exit;
|
|
atof_l;
|
|
atoi_l;
|
|
atol_l;
|
|
atoll_l;
|
|
quick_exit;
|
|
strtod_l;
|
|
strtof_l;
|
|
strtoimax_l;
|
|
strtol_l;
|
|
strtold_l;
|
|
strtoll_l;
|
|
strtoq_l;
|
|
strtoul_l;
|
|
strtoull_l;
|
|
strtoumax_l;
|
|
strtouq_l;
|
|
};
|
|
|
|
FBSD_1.4 {
|
|
atexit_b;
|
|
bsearch_b;
|
|
heapsort_b;
|
|
mergesort_b;
|
|
qsort_b;
|
|
hcreate_r;
|
|
hdestroy_r;
|
|
hsearch_r;
|
|
reallocarray;
|
|
};
|
|
|
|
FBSD_1.5 {
|
|
__cxa_thread_atexit;
|
|
__cxa_thread_atexit_impl;
|
|
abort_handler_s;
|
|
ignore_handler_s;
|
|
set_constraint_handler_s;
|
|
};
|
|
|
|
FBSD_1.6 {
|
|
ptsname_r;
|
|
qsort_s;
|
|
rand;
|
|
srand;
|
|
};
|
|
|
|
FBSD_1.7 {
|
|
clearenv;
|
|
qsort_r;
|
|
};
|
|
|
|
FBSDprivate_1.0 {
|
|
__system;
|
|
_system;
|
|
__libc_system;
|
|
__cxa_thread_call_dtors;
|
|
__libc_atexit;
|
|
};
|