misc/bits/select2.h: Clearly separate declaration from definitions

The __fdelt_chk declaration needs to be available so that
libc_hidden_proto can be used while not redefining __FD_ELT.
Thus, misc/bits/select-decl.h is created to hold the corresponding
prototypes.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
This commit is contained in:
Frédéric Bérat 2023-04-26 11:48:56 +02:00
parent b17d65ff92
commit d9a99272d2
6 changed files with 40 additions and 4 deletions

View File

@ -28,3 +28,4 @@ __fdelt_chk (long int d)
return d / __NFDBITS; return d / __NFDBITS;
} }
strong_alias (__fdelt_chk, __fdelt_warn) strong_alias (__fdelt_chk, __fdelt_warn)
libc_hidden_def (__fdelt_chk)

View File

@ -0,0 +1 @@
#include <misc/bits/select-decl.h>

View File

@ -3,6 +3,10 @@
#ifndef _ISOMAC #ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
#include <bits/select-decl.h>
libc_hidden_proto (__fdelt_chk)
# if __TIMESIZE == 64 # if __TIMESIZE == 64
# define __pselect64 __pselect # define __pselect64 __pselect
# define __select64 __select # define __select64 __select

View File

@ -68,6 +68,7 @@ headers := \
bits/syslog-ldbl.h \ bits/syslog-ldbl.h \
bits/syslog-path.h \ bits/syslog-path.h \
bits/error.h \ bits/error.h \
bits/select-decl.h \
bits/select2.h \ bits/select2.h \
bits/hwcap.h \ bits/hwcap.h \
sys/auxv.h \ sys/auxv.h \

31
misc/bits/select-decl.h Normal file
View File

@ -0,0 +1,31 @@
/* Checking routines for select functions. Declaration only.
Copyright (C) 2023 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
<https://www.gnu.org/licenses/>. */
#ifndef _BITS_SELECT_DECL_H
#define _BITS_SELECT_DECL_H 1
#ifndef _SYS_SELECT_H
# error "Never include <bits/select-decl.h> directly; use <sys/select.h> instead."
#endif
/* Helper functions to issue warnings and errors when needed. */
extern long int __fdelt_chk (long int __d);
extern long int __fdelt_warn (long int __d)
__warnattr ("bit outside of fd_set selected");
#endif

View File

@ -20,10 +20,8 @@
# error "Never include <bits/select2.h> directly; use <sys/select.h> instead." # error "Never include <bits/select2.h> directly; use <sys/select.h> instead."
#endif #endif
/* Helper functions to issue warnings and errors when needed. */ #include <bits/select-decl.h>
extern long int __fdelt_chk (long int __d);
extern long int __fdelt_warn (long int __d)
__warnattr ("bit outside of fd_set selected");
#undef __FD_ELT #undef __FD_ELT
#define __FD_ELT(d) \ #define __FD_ELT(d) \
__extension__ \ __extension__ \