diff options
author | Bruno Haible <bruno@clisp.org> | 2008-09-28 16:04:07 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2008-09-28 16:04:07 +0200 |
commit | e6bf8b0764b43ff4ce477b80187a3765b6d2135b (patch) | |
tree | 48021477816c886c23e0e313ab655a309130e1fb /tests | |
parent | 4fd7cdb11eef025a6c83c056cad3f29ed5d3161c (diff) | |
download | gnulib-e6bf8b0764b43ff4ce477b80187a3765b6d2135b.tar.gz |
Avoid test failure on glibc with LinuxThreads.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-sigaction.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/test-sigaction.c b/tests/test-sigaction.c index 30c4744d1d..c06e6f7277 100644 --- a/tests/test-sigaction.c +++ b/tests/test-sigaction.c @@ -76,7 +76,12 @@ handler (int sig) 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 @@ main (int argc, char *argv[]) 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; } |