Skip to content

Commit

Permalink
Only declare __sigpause in installed signal.h when necessary.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Joseph Myers committed Nov 14, 2014
1 parent cf7246d commit a473381
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 5 deletions.
11 changes: 11 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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>

* sysdeps/sparc/sparc64/rtld-memcpy.c (NO_MEMPCPY_STPCPY_REDIRECT):
Expand Down
3 changes: 0 additions & 3 deletions conform/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -326,19 +326,16 @@ test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes

# Unsorted expected failures.
test-xfail-ISO/math.h/linknamespace = yes
test-xfail-ISO/signal.h/linknamespace = yes
test-xfail-ISO/stdio.h/linknamespace = yes
test-xfail-ISO/time.h/linknamespace = yes
test-xfail-ISO99/complex.h/linknamespace = yes
test-xfail-ISO99/ctype.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/tgmath.h/linknamespace = yes
test-xfail-ISO11/complex.h/linknamespace = yes
test-xfail-ISO11/ctype.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/tgmath.h/linknamespace = yes
test-xfail-XPG3/ctype.h/linknamespace = yes
Expand Down
2 changes: 1 addition & 1 deletion include/signal.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ libc_hidden_proto (sigfillset)
libc_hidden_proto (sigaddset)
libc_hidden_proto (sigdelset)
libc_hidden_proto (sigismember)
extern int __sigpause (int sig_or_mask, int is_sig);
libc_hidden_proto (__sigpause)
libc_hidden_proto (raise)
libc_hidden_proto (__libc_current_sigrtmin)
Expand Down Expand Up @@ -49,7 +50,6 @@ extern int __libc_sigaction (int sig, const struct sigaction *act,
struct sigaction *oact);
libc_hidden_proto (__libc_sigaction)

extern int __sigpause (int sig_or_mask, int is_sig);
extern int __default_sigpause (int mask);
extern int __xpg_sigpause (int sig);

Expand Down
2 changes: 1 addition & 1 deletion signal/signal.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
__THROW. */
extern int __sigpause (int __sig_or_mask, int __is_sig);

#ifdef __USE_XOPEN
# ifdef __GNUC__
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
# else
extern int __sigpause (int __sig_or_mask, int __is_sig);
/* Remove a signal from the signal mask and suspend the process. */
# define sigpause(sig) __sigpause ((sig), 1)
# endif
Expand Down

0 comments on commit a473381

Please sign in to comment.