Mercurial > gnulib
changeset 30220:b7630b904ebd
Avoid test failure on glibc with LinuxThreads.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 28 Sep 2008 16:04:07 +0200 |
parents | 07394e5955a0 |
children | d638c278c6d6 |
files | ChangeLog tests/test-sigaction.c |
diffstat | 2 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sun Sep 28 14:59:52 2008 +0200 +++ b/ChangeLog Sun Sep 28 16:04:07 2008 +0200 @@ -1,3 +1,9 @@ +2008-09-28 Bruno Haible <bruno@clisp.org> + + * tests/test-sigaction.c (handler, main): Disable the check whether + SA_RESETHAND has reverted the installed handler to SIG_DFL. Needed on + glibc systems with LinuxThreads. + 2008-09-28 Bruno Haible <bruno@clisp.org> * doc/posix-functions/freopen.texi: Mention the trailing slash problem.
--- a/tests/test-sigaction.c Sun Sep 28 14:59:52 2008 +0200 +++ b/tests/test-sigaction.c Sun Sep 28 16:04:07 2008 +0200 @@ -76,7 +76,12 @@ ASSERT (sa.sa_handler == handler); break; case 1: + /* This assertion fails on glibc-2.3.6 systems with LinuxThreads, + when this program is linked with -lpthread, due to the sigaction() + override in libpthread.so. */ +#if !defined __GLIBC__ ASSERT (sa.sa_handler == SIG_DFL); +#endif break; default: ASSERT (0); @@ -89,24 +94,31 @@ struct sigaction sa; struct sigaction old_sa; sa.sa_handler = handler; + sa.sa_flags = 0; ASSERT (sigemptyset (&sa.sa_mask) == 0); ASSERT (sigaction (SIGABRT, &sa, NULL) == 0); ASSERT (raise (SIGABRT) == 0); + sa.sa_flags = SA_RESETHAND | SA_NODEFER; ASSERT (sigaction (SIGABRT, &sa, &old_sa) == 0); ASSERT ((old_sa.sa_flags & MASK_SA_FLAGS) == 0); ASSERT (old_sa.sa_handler == handler); ASSERT (raise (SIGABRT) == 0); + sa.sa_handler = SIG_DFL; ASSERT (sigaction (SIGABRT, &sa, &old_sa) == 0); ASSERT ((old_sa.sa_flags & SA_SIGINFO) == 0); +#if !defined __GLIBC__ /* see above */ ASSERT (old_sa.sa_handler == SIG_DFL); +#endif + sa.sa_handler = SIG_IGN; ASSERT (sigaction (SIGABRT, &sa, NULL) == 0); ASSERT (raise (SIGABRT) == 0); ASSERT (sigaction (SIGABRT, NULL, &old_sa) == 0); ASSERT (old_sa.sa_handler == SIG_IGN); ASSERT (raise (SIGABRT) == 0); + return 0; }