freebsd-dev/lib/libc
Ed Schouten af3c78886f Alter the prototype of qsort_r(3) to match POSIX, which adopted the
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
2022-09-30 15:26:30 -07:00
..
aarch64 Remove "All rights reserved" where I can in libc 2022-08-05 15:11:39 +01:00
amd64 amd64: Stop using REP MOVSB for backward memmove()s. 2022-06-16 14:51:50 -04:00
arm libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
capability Remove "All Rights Reserved" from FreeBSD Foundation libc copyrights 2022-07-21 09:53:31 -04:00
compat-43 libc: Add HISTORY sections to the manual pages 2022-05-05 18:46:32 +02:00
db libc: Add HISTORY sections to the manual pages 2022-05-05 18:46:32 +02:00
gdtoa libc: drop "All rights reserved" from Foundation copyrights 2022-08-04 16:57:50 -04:00
gen Alter the prototype of qsort_r(3) to match POSIX, which adopted the 2022-09-30 15:26:30 -07:00
gmon
i386 libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
iconv libc: iconv: add mb_cur_min for encoder traits 2022-08-11 11:42:17 -05:00
include libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
inet
isc
locale libc: drop "All rights reserved" from Foundation copyrights 2022-08-04 16:57:50 -04:00
md
nameser
net Update SEE ALSO sections for resolver.{3,5} and hosts.5 2022-09-15 15:24:28 +02:00
nls Implement strerror_l(). 2020-12-16 09:02:09 +00:00
posix1e acl_delete_entry(): remove write-only variable 2021-11-29 17:39:51 +02:00
powerpc libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
powerpc64 libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
powerpcspe [PowerPC] [PowerPCSPE] Fix multiple issues in fpsetmask(). 2021-02-28 21:11:29 -06:00
quad Add casts and L suffixes to libc quad support, to work around various 2020-02-17 20:14:59 +00:00
regex libc: drop "All rights reserved" from Foundation copyrights 2022-08-04 16:57:50 -04:00
resolv resolver(3): Fix a typo in a source code comment 2022-04-09 09:14:29 +02:00
riscv libc: Remove _get_tp() and _set_tp(). 2021-12-09 13:23:26 -08:00
rpc libc rpc: Fix mismatches in prototypes for array bounds. 2022-09-28 14:01:36 -07:00
secure libc: ssp: sprinkle around some __dead2 2021-09-30 23:55:17 -05:00
softfloat libc: use standard LF line endings, not CRLF 2021-04-03 16:20:07 -04:00
stdio libc/stdio: only roll FILE state back on EINTR 2022-09-03 04:06:41 +03:00
stdlib Alter the prototype of qsort_r(3) to match POSIX, which adopted the 2022-09-30 15:26:30 -07:00
stdtime libc: drop "All rights reserved" from Foundation copyrights 2022-08-04 16:57:50 -04:00
string libc: Add strverscmp(3) and versionsort(3) 2022-08-25 03:29:03 +03:00
sys ktrace: make ktr_tid a long not intptr_t (NFC) 2022-09-17 09:21:59 +01:00
tests Alter the prototype of qsort_r(3) to match POSIX, which adopted the 2022-09-30 15:26:30 -07:00
uuid uuid(3): Document return values 2021-11-19 03:58:34 -05:00
x86 Remove "All Rights Reserved" from FreeBSD Foundation libc copyrights 2022-07-21 09:53:31 -04:00
xdr typo: s/impelmentation/implementation/. 2020-02-07 15:14:29 +00:00
yp
libc_nossp.ldscript
libc.ldscript
Makefile src.conf: Introduce WITHOUT_MACHDEP knob. 2022-09-09 09:54:28 +03:00
Makefile.depend
Makefile.depend.options
Versions.def Create namespace for the symbols added during 14-CURRENT cycle. 2021-07-15 19:40:28 +03:00