mirror of git://sourceware.org/git/glibc.git
sysconf: Fix missing definition of UIO_MAXIOV on Linux [BZ #22321]
After commit 37f802f864
(Remove
__need_IOV_MAX and __need_FOPEN_MAX), UIO_MAXIOV is no longer supplied
(indirectly) through <bits/stdio_lim.h>, so sysdeps/posix/sysconf.c no
longer sees the definition.
This commit is contained in:
parent
95ccb619f5
commit
63b4baa44e
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2017-10-20 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #22321]
|
||||
sysconf: Fix missing definition of UIO_MAXIOV on Linux.
|
||||
* sysdeps/posix/sysconf.c: Include <sys/uio.h>.
|
||||
* sysdeps/unix/sysv/linux/Makefile (tests): Add tst-sysconf-iov_max.
|
||||
(tst-sysconf-iov_max): Link with tst-sysconf-iov_max-uapi.o.
|
||||
* sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c: Likewise.
|
||||
|
||||
2017-10-19 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/i386/fpu/libm-test-ulps: Regenerated.
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <sys/stat.h>
|
||||
#include <sys/sysinfo.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <regex.h>
|
||||
|
||||
#define NEED_SPEC_ARRAY 0
|
||||
|
|
|
@ -50,7 +50,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
|||
bits/siginfo-arch.h bits/siginfo-consts-arch.h
|
||||
|
||||
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
|
||||
tst-quota tst-sync_file_range test-errno-linux
|
||||
tst-quota tst-sync_file_range test-errno-linux tst-sysconf-iov_max
|
||||
|
||||
# Generate the list of SYS_* macros for the system calls (__NR_*
|
||||
# macros). The file syscall-names.list contains all possible system
|
||||
|
@ -95,6 +95,9 @@ $(objpfx)tst-syscall-list.out: \
|
|||
$(objpfx)tst-syscall-list-sys.list
|
||||
$(BASH) $^ $(AWK) > $@; $(evaluate-test)
|
||||
|
||||
# Separate object file for access to the constant from the UAPI header.
|
||||
$(objpfx)tst-sysconf-iov_max: $(objpfx)tst-sysconf-iov_max-uapi.o
|
||||
|
||||
endif # $(subdir) == misc
|
||||
|
||||
ifeq ($(subdir),time)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/* Check IOV_MAX definition: Helper function to capture UAPI header value.
|
||||
Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Use a separate function to avoid header compatibility issues. */
|
||||
|
||||
#include <linux/uio.h>
|
||||
|
||||
long
|
||||
uio_maxiov_value (void)
|
||||
{
|
||||
return UIO_MAXIOV;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
/* Check IOV_MAX definition for consistency (bug 22321).
|
||||
Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Defined in tst-sysconf-iov_max-uapi.c. */
|
||||
long uio_maxiov_value (void);
|
||||
|
||||
|
||||
#include <limits.h>
|
||||
#include <support/check.h>
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
TEST_VERIFY (_XOPEN_IOV_MAX == 16); /* Value required by POSIX. */
|
||||
TEST_VERIFY (uio_maxiov_value () >= _XOPEN_IOV_MAX);
|
||||
TEST_VERIFY (IOV_MAX == uio_maxiov_value ());
|
||||
TEST_VERIFY (UIO_MAXIOV == uio_maxiov_value ());
|
||||
TEST_VERIFY (sysconf (_SC_UIO_MAXIOV) == uio_maxiov_value ());
|
||||
TEST_VERIFY (sysconf (_SC_IOV_MAX) == uio_maxiov_value ());
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
Loading…
Reference in New Issue