Add bionic-unit-tests-gcc{32,64}, compiled with gcc.
* bionic-unit-tests{32,64} are compiled with clang/llvm.
* Skip one single test in __cxa_thread_atexit_test.cpp
when compiled with aarch64 clang/llvm.
Aarch64 clang/llvm generates relocation references to
"thread_local" symbols not supported by Android linker.
BUG: 25642296
Change-Id: Ia0497b79c4b335228afeb48a26e0592217909953
diff --git a/tests/__cxa_thread_atexit_test.cpp b/tests/__cxa_thread_atexit_test.cpp
index e388f3b..1432968 100644
--- a/tests/__cxa_thread_atexit_test.cpp
+++ b/tests/__cxa_thread_atexit_test.cpp
@@ -35,7 +35,12 @@
std::string message;
};
+#if defined(__clang__) && defined(__aarch64__)
+// b/25642296, aarch64 clang compiled "thread_local" does not link.
+static ClassWithDtor class_with_dtor;
+#else
static thread_local ClassWithDtor class_with_dtor;
+#endif
static void* thread_nop(void* arg) {
class_with_dtor.set_message(*static_cast<std::string*>(arg));
@@ -47,7 +52,12 @@
pthread_t t;
ASSERT_EQ(0, pthread_create(&t, nullptr, thread_nop, &msg));
ASSERT_EQ(0, pthread_join(t, nullptr));
+#if defined(__clang__) && defined(__aarch64__)
+ GTEST_LOG_(INFO) << "Skipping test, b/25642296, "
+ << "thread_local does not work with aarch64 clang/llvm.\n";
+#else
ASSERT_EQ("dtor called.", class_with_dtor_output);
+#endif
}
class ClassWithDtorForMainThread {
@@ -64,7 +74,13 @@
};
static void thread_atexit_main() {
+#if defined(__clang__) && defined(__aarch64__)
+ static ClassWithDtorForMainThread class_with_dtor_for_main_thread;
+ GTEST_LOG_(INFO) << "Skipping test, b/25642296, "
+ << "thread_local does not work with aarch64 clang/llvm.\n";
+#else
static thread_local ClassWithDtorForMainThread class_with_dtor_for_main_thread;
+#endif
class_with_dtor_for_main_thread.set_message("d-tor for main thread called.");
exit(0);
}