Only declare __sigpause in installed signal.h when necessary.

This patch makes the installed signal.h declare __sigpause only when
necessary (when a macro definition of sigpause makes use of
__sigpause), rather than unconditionally.  This fixes false positives
in the linknamespace tests by making it visible to those tests that no
use of ISO C functionality will actually bring in the definition of
__sigpause and so bring in the other symbols defined in the same
object.  There is no bug filed in Bugzilla because this is fixing
false positives rather than any user-visible bug.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by this patch).

	* signal/signal.h (__sigpause): Only declare if [__USE_XOPEN &&
	!__GNUC__].
	* include/signal.h (__sigpause): Move declaration above call to
	libc_hidden_proto.
	* conform/Makefile (test-xfail-ISO/signal.h/linknamespace): Remove
	variable.
	(test-xfail-ISO99/signal.h/linknamespace): Likewise.
	(test-xfail-ISO11/signal.h/linknamespace): Likewise.
This commit is contained in:
Joseph Myers 2014-11-14 18:35:42 +00:00
parent cf7246ddf5
commit a473381208
4 changed files with 13 additions and 5 deletions

View File

@ -1,3 +1,14 @@
2014-11-14 Joseph Myers <joseph@codesourcery.com>
* signal/signal.h (__sigpause): Only declare if [__USE_XOPEN &&
!__GNUC__].
* include/signal.h (__sigpause): Move declaration above call to
libc_hidden_proto.
* conform/Makefile (test-xfail-ISO/signal.h/linknamespace): Remove
variable.
(test-xfail-ISO99/signal.h/linknamespace): Likewise.
(test-xfail-ISO11/signal.h/linknamespace): Likewise.
2014-11-14 David S. Miller <davem@davemloft.net> 2014-11-14 David S. Miller <davem@davemloft.net>
* sysdeps/sparc/sparc64/rtld-memcpy.c (NO_MEMPCPY_STPCPY_REDIRECT): * sysdeps/sparc/sparc64/rtld-memcpy.c (NO_MEMPCPY_STPCPY_REDIRECT):

View File

@ -326,19 +326,16 @@ test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
# Unsorted expected failures. # Unsorted expected failures.
test-xfail-ISO/math.h/linknamespace = yes test-xfail-ISO/math.h/linknamespace = yes
test-xfail-ISO/signal.h/linknamespace = yes
test-xfail-ISO/stdio.h/linknamespace = yes test-xfail-ISO/stdio.h/linknamespace = yes
test-xfail-ISO/time.h/linknamespace = yes test-xfail-ISO/time.h/linknamespace = yes
test-xfail-ISO99/complex.h/linknamespace = yes test-xfail-ISO99/complex.h/linknamespace = yes
test-xfail-ISO99/ctype.h/linknamespace = yes test-xfail-ISO99/ctype.h/linknamespace = yes
test-xfail-ISO99/math.h/linknamespace = yes test-xfail-ISO99/math.h/linknamespace = yes
test-xfail-ISO99/signal.h/linknamespace = yes
test-xfail-ISO99/stdio.h/linknamespace = yes test-xfail-ISO99/stdio.h/linknamespace = yes
test-xfail-ISO99/tgmath.h/linknamespace = yes test-xfail-ISO99/tgmath.h/linknamespace = yes
test-xfail-ISO11/complex.h/linknamespace = yes test-xfail-ISO11/complex.h/linknamespace = yes
test-xfail-ISO11/ctype.h/linknamespace = yes test-xfail-ISO11/ctype.h/linknamespace = yes
test-xfail-ISO11/math.h/linknamespace = yes test-xfail-ISO11/math.h/linknamespace = yes
test-xfail-ISO11/signal.h/linknamespace = yes
test-xfail-ISO11/stdio.h/linknamespace = yes test-xfail-ISO11/stdio.h/linknamespace = yes
test-xfail-ISO11/tgmath.h/linknamespace = yes test-xfail-ISO11/tgmath.h/linknamespace = yes
test-xfail-XPG3/ctype.h/linknamespace = yes test-xfail-XPG3/ctype.h/linknamespace = yes

View File

@ -10,6 +10,7 @@ libc_hidden_proto (sigfillset)
libc_hidden_proto (sigaddset) libc_hidden_proto (sigaddset)
libc_hidden_proto (sigdelset) libc_hidden_proto (sigdelset)
libc_hidden_proto (sigismember) libc_hidden_proto (sigismember)
extern int __sigpause (int sig_or_mask, int is_sig);
libc_hidden_proto (__sigpause) libc_hidden_proto (__sigpause)
libc_hidden_proto (raise) libc_hidden_proto (raise)
libc_hidden_proto (__libc_current_sigrtmin) libc_hidden_proto (__libc_current_sigrtmin)
@ -49,7 +50,6 @@ extern int __libc_sigaction (int sig, const struct sigaction *act,
struct sigaction *oact); struct sigaction *oact);
libc_hidden_proto (__libc_sigaction) libc_hidden_proto (__libc_sigaction)
extern int __sigpause (int sig_or_mask, int is_sig);
extern int __default_sigpause (int mask); extern int __default_sigpause (int mask);
extern int __xpg_sigpause (int sig); extern int __xpg_sigpause (int sig);

View File

@ -164,12 +164,12 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
This function is a cancellation point and therefore not marked with This function is a cancellation point and therefore not marked with
__THROW. */ __THROW. */
extern int __sigpause (int __sig_or_mask, int __is_sig);
#ifdef __USE_XOPEN #ifdef __USE_XOPEN
# ifdef __GNUC__ # ifdef __GNUC__
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
# else # else
extern int __sigpause (int __sig_or_mask, int __is_sig);
/* Remove a signal from the signal mask and suspend the process. */ /* Remove a signal from the signal mask and suspend the process. */
# define sigpause(sig) __sigpause ((sig), 1) # define sigpause(sig) __sigpause ((sig), 1)
# endif # endif