diff --git a/tests/ScopedSignalHandler.h b/tests/ScopedSignalHandler.h
new file mode 100644
index 0000000..89a14a6
--- /dev/null
+++ b/tests/ScopedSignalHandler.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _BIONIC_TESTS_SCOPED_SIGNAL_HANDLER_H
+#define _BIONIC_TESTS_SCOPED_SIGNAL_HANDLER_H
+
+#include <signal.h>
+
+class ScopedSignalHandler {
+ public:
+  ScopedSignalHandler(int signal_number, void (*handler)(int)) : signal_number_(signal_number) {
+    sigemptyset(&action_.sa_mask);
+    action_.sa_flags = 0;
+    action_.sa_handler = handler;
+    sigaction(signal_number_, &action_, &old_action_);
+  }
+
+  ~ScopedSignalHandler() {
+    sigaction(signal_number_, &old_action_, NULL);
+  }
+
+ private:
+  struct sigaction action_;
+  struct sigaction old_action_;
+  const int signal_number_;
+};
+
+#endif // _BIONIC_TESTS_SCOPED_SIGNAL_HANDLER_H
diff --git a/tests/sched_test.cpp b/tests/sched_test.cpp
index ec48a4b..49f1642 100644
--- a/tests/sched_test.cpp
+++ b/tests/sched_test.cpp
@@ -21,6 +21,7 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
+#ifdef __BIONIC__
 static int child_fn(void* i_ptr) {
   *reinterpret_cast<int*>(i_ptr) = 42;
   return 123;
@@ -30,7 +31,7 @@
   void* child_stack[1024];
 
   int i = 0;
-  pid_t tid = clone(child_fn, &child_stack[1024], /*CLONE_FILES | CLONE_FS | */CLONE_VM/* | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM*/, &i);
+  pid_t tid = clone(child_fn, &child_stack[1024], CLONE_VM, &i);
 
   int status;
   ASSERT_EQ(tid, TEMP_FAILURE_RETRY(waitpid(tid, &status, __WCLONE)));
@@ -40,3 +41,12 @@
   ASSERT_TRUE(WIFEXITED(status));
   ASSERT_EQ(123, WEXITSTATUS(status));
 }
+#else
+// For glibc, any call to clone with CLONE_VM set will cause later pthread
+// calls in the same process to misbehave.
+// See https://sourceware.org/bugzilla/show_bug.cgi?id=10311 for more details.
+TEST(sched, clone) {
+  // In order to enumerate all possible tests for CTS, create an empty test.
+  GTEST_LOG_(INFO) << "This test does nothing.\n";
+}
+#endif
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 7705e2c..a7e5b9a 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -19,6 +19,8 @@
 #include <errno.h>
 #include <signal.h>
 
+#include "ScopedSignalHandler.h"
+
 static size_t SIGNAL_MIN() {
   return 1; // Signals start at 1 (SIGHUP), not 0.
 }
@@ -85,25 +87,6 @@
   ASSERT_EQ(0, errno);
 }
 
-class ScopedSignalHandler {
- public:
-  ScopedSignalHandler(int signal_number, void (*handler)(int)) : signal_number_(signal_number) {
-    sigemptyset(&action_.sa_mask);
-    action_.sa_flags = 0;
-    action_.sa_handler = handler;
-    sigaction(signal_number_, &action_, &old_action_);
-  }
-
-  ~ScopedSignalHandler() {
-    sigaction(signal_number_, &old_action_, NULL);
-  }
-
- private:
-  struct sigaction action_;
-  struct sigaction old_action_;
-  const int signal_number_;
-};
-
 TEST(signal, sigismember_invalid) {
   TestSigSet2(sigismember);
 }
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 2d9717f..11bd17f 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -273,7 +273,11 @@
 
   void* p = NULL;
   snprintf(buf, sizeof(buf), "a%d,%pz", 5, p);
+#if defined(__BIONIC__)
   EXPECT_STREQ("a5,0x0z", buf);
+#else
+  EXPECT_STREQ("a5,(nil)z", buf);
+#endif
 
   snprintf(buf, sizeof(buf), "a%lld,%d,%d,%dz", 0x1000000000LL, 6, 7, 8);
   EXPECT_STREQ("a68719476736,6,7,8z", buf);
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 7d0af7c..2308ad9 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -15,6 +15,7 @@
  */
 
 #include <gtest/gtest.h>
+#include "ScopedSignalHandler.h"
 #include "TemporaryFile.h"
 
 #include <stdint.h>
@@ -80,7 +81,8 @@
 }
 
 TEST(unistd, pause) {
-  signal(SIGALRM, PauseTestSignalHandler);
+  ScopedSignalHandler handler(SIGALRM, PauseTestSignalHandler);
+
   alarm(1);
   ASSERT_FALSE(gPauseTestFlag);
   ASSERT_EQ(-1, pause());
