mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-12 14:21:18 +08:00
sysconf: Fix missing definition of UIO_MAXIOV on Linux [BZ #22321]
After commit 37f802f86400684c8d13403958b2c598721d6360 (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. (cherry picked from commit 63b4baa44e8d22501c433c4093aa3310f91b6aa2)
This commit is contained in:
parent
05155f0772
commit
2e78ea7a20
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-11 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #22078]
|
||||
|
1
NEWS
1
NEWS
@ -38,6 +38,7 @@ The following bugs are resolved with this release:
|
||||
[22146] Let fpclassify use the builtin when optimizing for size in C++ mode
|
||||
[22225] math: nearbyint arithmetic moved before feholdexcept
|
||||
[22235] Add C++ versions of iscanonical for ldbl-96 and ldbl-128ibm
|
||||
[22321] sysconf: Fix missing definition of UIO_MAXIOV on Linux
|
||||
|
||||
Version 2.26
|
||||
|
||||
|
@ -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).
|
||||
|
||||
@ -120,7 +120,11 @@ ifndef no_deps
|
||||
-include $(objpfx)bits/syscall.d
|
||||
endif
|
||||
generated += bits/syscall.h bits/syscall.d
|
||||
endif
|
||||
|
||||
# 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)
|
||||
sysdep_headers += sys/timex.h bits/timex.h
|
||||
|
27
sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c
Normal file
27
sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c
Normal file
@ -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;
|
||||
}
|
40
sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c
Normal file
40
sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c
Normal file
@ -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…
x
Reference in New Issue
Block a user