summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2008-09-28 16:04:07 +0200
committerBruno Haible <bruno@clisp.org>2008-09-28 16:04:07 +0200
commite6bf8b0764b43ff4ce477b80187a3765b6d2135b (patch)
tree48021477816c886c23e0e313ab655a309130e1fb /tests
parent4fd7cdb11eef025a6c83c056cad3f29ed5d3161c (diff)
downloadgnulib-e6bf8b0764b43ff4ce477b80187a3765b6d2135b.tar.gz
Avoid test failure on glibc with LinuxThreads.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-sigaction.c12
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;
}