Go to file
Joseph Myers 0e31b18ca2 Fix __ASSUME_RECVMMSG issues (bug 16610).
Similar to the issues for accept4, __ASSUME_RECVMMSG is also confused
about whether it relates to function availability or socketcall
operation availability; this is now bug 16610.

Nothing actually tests __ASSUME_RECVMMSG for function availability,
but implicit in the definition in kernel-features.h is the idea that
it makes sense when the syscall is available and socketcall is not
being used.  As with accept4, there are architectures where the
syscall was added later than the socketcall operation, meaning that
assuming glibc is built with recent enough kernel headers, it does not
attempt to use socketcall for these operations and __ASSUME_RECVMMSG
gets defined for kernels >= 2.6.33 even when the syscall was only
added later.

This patch splits the macro into separate macros like those used for
accept4; having similar macro structure in both cases (and for
sendmmsg once I've dealt with that) seems likely to be less confusing
than having a different structure on the basis of nothing actually
needing to assume the recvmmsg function works.  Appropriate
definitions are added for all architectures.

Architecture-specific note: Tile's kernel-features.h says "TILE glibc
support starts with 2.6.36", which is accurate in that 2.6.36 was the
first kernel version with Tile support, and on that basis I've made
that header define __ASSUME_RECVMMSG_SYSCALL unconditionally.
However, Tile's configure.ac has arch_minimum_kernel=2.6.32.  Since
arch_minimum_kernel is meant to reflect only kernel.org kernel
versions, I think that should change to 2.6.36.  (If using glibc with
kernel versions from before a port went in kernel.org, it's your
responsibility to change arch_minimum_kernel in a local patch, and at
the same time to adjust any __ASSUME_* definitions that may not be
correct for your older kernel; for developing the official glibc it
should only ever be necessary to consider what official kernel.org
releases support.)

Tested x86_64, including that disassembly of the installed shared
libraries is unchanged by this patch.

	[BZ #16610]
	* sysdeps/unix/sysv/linux/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621 && __ASSUME_SOCKETCALL]
	(__ASSUME_RECVMMSG_SOCKETCALL): Define.
	[(__LINUX_KERNEL_VERSION >= 0x020621 && (__i386__ || __x86_64__ ||
	__sparc__)) || (__LINUX_KERNEL_VERSION >= 0x020625 && (__powerpc__
	|| __sh__))] (__ASSUME_RECVMMSG_SYSCALL): Likewise.
	[__i386__ || __sparc__]
	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	[__ASSUME_RECVMMSG_SOCKETCALL || __ASSUME_RECVMMSG_SYSCALL]
	(__ASSUME_RECVMMSG): Define instead of using previous
	[__LINUX_KERNEL_VERSION >= 0x020621] condition.
	* sysdeps/unix/sysv/linux/aarch64/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL): Define.
	* sysdeps/unix/sysv/linux/alpha/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_RECVMMSG_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/arm/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_RECVMMSG_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_RECVMMSG_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/internal_recvmmsg.S [__ASSUME_SOCKETCALL
	&& !__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL &&
	!__ASSUME_RECVMMSG_SYSCALL] (__NR_recvmmsg): Undefine.
	[__ASSUME_RECVMMSG]: Change condition to
	[__ASSUME_RECVMMSG_SOCKETCALL].
	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_RECVMMSG_SYSCALL):
	Define.
	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	* sysdeps/unix/sysv/linux/mips/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_RECVMMSG_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/recvmmsg.c [__ASSUME_SOCKETCALL &&
	!__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL &&
	!__ASSUME_RECVMMSG_SYSCALL] (__NR_recvmmsg): Undefine.
	[!__ASSUME_RECVMMSG]: Change condition to
	[!__ASSUME_RECVMMSG_SOCKETCALL].
	* sysdeps/unix/sysv/linux/tile/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL): Define.

	* sysdeps/unix/sysv/linux/hppa/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020622] (__ASSUME_RECVMMSG_SYSCALL):
	Define.
2014-02-20 17:53:08 +00:00
argp Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
assert Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
benchtests Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
bits Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
catgets Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
conf
conform Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
crypt Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
csu Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
ctype Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
debug Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
dirent Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
dlfcn Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
elf Split up rules for tests that compare output with baselines. 2014-02-14 13:42:44 +00:00
gmon Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
gnulib Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
grp Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
gshadow Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
hesiod Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
hurd Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
iconv Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
iconvdata Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
include Properly fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer 2014-02-19 14:39:21 +01:00
inet Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
intl Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
io Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
libidn Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
libio Split up rules for tests using mtrace and something else. 2014-02-14 13:45:14 +00:00
locale Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
localedata Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
login Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
mach Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
malloc malloc/mtrace.c: Cosmetic cleanup. 2014-02-11 10:02:57 +00:00
manual Remove _BSD_SOURCE and _SVID_SOURCE. 2014-02-11 23:40:07 +00:00
math Move tests of clog10 from libm-test.inc to auto-libm-test-in. 2014-02-19 14:26:29 +00:00
misc Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
nis Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
nptl Split up rules for tests that compare output with baselines. 2014-02-14 13:42:44 +00:00
nptl_db Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
nscd Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
nss Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
po Update Slovenian translations 2014-02-03 10:12:05 +10:00
ports Fix __ASSUME_RECVMMSG issues (bug 16610). 2014-02-20 17:53:08 +00:00
posix Split up rules for tests using mtrace and something else. 2014-02-14 13:45:14 +00:00
pwd Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
resolv Properly fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer 2014-02-19 14:39:21 +01:00
resource Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
rt Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
scripts Generate .test-result files for ordinary tests. 2014-02-15 01:04:57 +00:00
setjmp Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
shadow Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
signal Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
socket Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
soft-fp soft-fp: support after-rounding tininess detection. 2014-02-12 18:27:12 +00:00
stdio-common Split up rules for tests that compare output with baselines. 2014-02-14 13:42:44 +00:00
stdlib Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
streams Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
string Split up rules for tests that compare output with baselines. 2014-02-14 13:42:44 +00:00
sunrpc Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
sysdeps Fix __ASSUME_RECVMMSG issues (bug 16610). 2014-02-20 17:53:08 +00:00
sysvipc Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
termios Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
time Clean up trivially redundant __USE_MISC conditionals. 2014-02-13 22:07:53 +00:00
timezone tzselect: stop requiring ksh 2014-02-08 06:47:58 -05:00
wcsmbs Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
wctype Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
.gitattributes
.gitignore ignore gdb related files 2013-12-27 16:30:50 -05:00
abi-tags
aclocal.m4 rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
BUGS
CANCEL-FCT-WAIVE
CANCEL-FILE-WAIVE
ChangeLog Fix __ASSUME_RECVMMSG issues (bug 16610). 2014-02-20 17:53:08 +00:00
ChangeLog.1
ChangeLog.2
ChangeLog.3
ChangeLog.4
ChangeLog.5
ChangeLog.6
ChangeLog.7
ChangeLog.8
ChangeLog.9
ChangeLog.10
ChangeLog.11
ChangeLog.12
ChangeLog.13
ChangeLog.14
ChangeLog.15
ChangeLog.16 Fix typo in name 2012-06-21 16:45:27 +02:00
ChangeLog.17 Revert "Sun agreed to a change of the license for the RPC code to a BSD-like license." 2010-06-27 19:34:03 -07:00
config.h.in tst-fanotify: switch to AC_DEFINE 2014-01-04 08:34:01 -05:00
config.make.in Remove --disable-versioning. 2013-09-04 15:25:42 +00:00
configure Set AUTOCONF variable when maintainer-mode is not used 2013-12-16 21:45:27 +10:00
configure.ac Set AUTOCONF variable when maintainer-mode is not used 2013-12-16 21:45:27 +10:00
CONFORMANCE Move __STDC_* predefined macros from features.h to stdc-predef.h. 2012-02-22 12:53:04 +00:00
COPYING Update to latest versions of GPL-2.0 and LGPL-2.1 2013-09-09 12:52:48 +10:00
COPYING.LIB Update to latest versions of GPL-2.0 and LGPL-2.1 2013-09-09 12:52:48 +10:00
cppflags-iterator.mk
extra-lib.mk Remove --disable-versioning. 2013-09-04 15:25:42 +00:00
extra-modules.mk
INSTALL Stop partial menu generation in INSTALL file 2013-12-19 11:54:06 +10:00
libc-abis A few more archs have IFUNC support. 2010-03-17 02:43:12 -07:00
LICENSES Expand LICENSES file. 2012-12-05 21:56:15 +00:00
Makeconfig Generate .test-result files for ordinary tests. 2014-02-15 01:04:57 +00:00
Makefile Remove reference to subdir_lint.out. 2014-02-12 23:37:13 +00:00
Makefile.in Add target bench-clean 2013-04-16 14:07:21 +05:30
Makerules Generate .test-result files for ordinary tests. 2014-02-15 01:04:57 +00:00
NAMESPACE
NEWS Fix __ASSUME_RECVMMSG issues (bug 16610). 2014-02-20 17:53:08 +00:00
o-iterator.mk
PROJECTS
README [MicroBlaze]: Move MicroBlaze from ports to sysdeps. 2014-02-17 11:08:21 +10:00
Rules Generate .test-result files for ordinary tests. 2014-02-15 01:04:57 +00:00
shlib-versions PowerPC: Change powerpc64le start ABI to 2.17. 2014-02-04 09:49:08 -02:00
test-skeleton.c tests: unify fortification handler logic 2014-02-08 06:58:43 -05:00
version.h Open development for 2.20 2014-02-08 08:10:29 +10:00
Versions.def S/390: Make jmp_buf extendible. 2014-01-07 09:36:31 +01:00
WUR-REPORT * posix/unistd.h (setuid, setreuid, seteuid, setresuid): 2012-08-01 18:12:58 +02:00

This directory contains the sources of the GNU C Library.
See the file "version.h" for what release version you have.

The GNU C Library is the standard system C library for all GNU systems,
and is an important part of what makes up a GNU system.  It provides the
system API for all programs written in C and C-compatible languages such
as C++ and Objective C; the runtime facilities of other programming
languages use the C library to access the underlying operating system.

In GNU/Linux systems, the C library works with the Linux kernel to
implement the operating system behavior seen by user applications.
In GNU/Hurd systems, it works with a microkernel and Hurd servers.

The GNU C Library implements much of the POSIX.1 functionality in the
GNU/Hurd system, using configurations i[4567]86-*-gnu.  The current
GNU/Hurd support requires out-of-tree patches that will eventually be
incorporated into an official GNU C Library release.

When working with Linux kernels, this version of the GNU C Library
requires Linux kernel version 2.6.16 or later.

Also note that the shared version of the libgcc_s library must be
installed for the pthread library to work correctly.

The GNU C Library supports these configurations for using Linux kernels:

	aarch64*-*-linux-gnu
	alpha*-*-linux-gnu
	arm-*-linux-gnueabi
	i[4567]86-*-linux-gnu
	x86_64-*-linux-gnu	Can build either x86_64 or x32
	ia64-*-linux-gnu
	m68k-*-linux-gnu
	microblaze*-*-linux-gnu
	mips-*-linux-gnu
	mips64-*-linux-gnu
	powerpc-*-linux-gnu	Hardware or software floating point, BE only.
	powerpc64*-*-linux-gnu	Big-endian and little-endian.
	s390-*-linux-gnu
	s390x-*-linux-gnu
	sh[34]-*-linux-gnu
	sparc*-*-linux-gnu
	sparc64*-*-linux-gnu
	tilegx-*-linux-gnu
	tilepro-*-linux-gnu

The code for other CPU configurations supported by volunteers outside of
the core glibc maintenance effort is contained in the `ports' add-on,
located in the `ports' subdirectory of the source tree.

	hppa-*-linux-gnu	Not currently functional without patches.

If you are interested in doing a port, please contact the glibc
maintainers; see http://www.gnu.org/software/libc/ for more
information.

See the file INSTALL to find out how to configure, build, and install
the GNU C Library.  You might also consider reading the WWW pages for
the C library at http://www.gnu.org/software/libc/.

The GNU C Library is (almost) completely documented by the Texinfo manual
found in the `manual/' subdirectory.  The manual is still being updated
and contains some known errors and omissions; we regret that we do not
have the resources to work on the manual as much as we would like.  For
corrections to the manual, please file a bug in the `manual' component,
following the bug-reporting instructions below.  Please be sure to check
the manual in the current development sources to see if your problem has
already been corrected.

Please see http://www.gnu.org/software/libc/bugs.html for bug reporting
information.  We are now using the Bugzilla system to track all bug reports.
This web page gives detailed information on how to report bugs properly.

The GNU C Library is free software.  See the file COPYING.LIB for copying
conditions, and LICENSES for notices about a few contributions that require
these additional notices to be distributed.  License copyright years may be
listed using range notation, e.g., 2000-2013, indicating that every year in
the range, inclusive, is a copyrightable year that would otherwise be listed
individually.