Build bionic unit tests for musl
Modify bionic unit tests that are built for glibc so that they also
build against musl. They don't all pass though:
With glibc:
2 SLOW TESTS
4 TIMEOUT TESTS
313 FAILED TESTS
YOU HAVE 2 DISABLED TESTS
With musl:
11 SLOW TESTS
11 TIMEOUT TESTS
363 FAILED TESTS
YOU HAVE 2 DISABLED TESTS
Bug: 190084016
Test: m bionic-unit-tests-glibc with musl
Test: atest bionic-unit-tests-static
Test: atest --host bionic-unit-tests-glibc with glibc
Change-Id: I79b6eab04fed3cc4392450df5eef2579412edfe1
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index 9f7e65b..c53741c 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -201,7 +201,7 @@
}
TEST(MATH_TEST, __fpclassifyd) {
-#if defined(__GLIBC__)
+#if defined(__GLIBC__) || defined(MUSL)
#define __fpclassifyd __fpclassify
#endif
ASSERT_EQ(FP_INFINITE, __fpclassifyd(HUGE_VAL));
@@ -246,6 +246,8 @@
TEST(MATH_TEST, __isfinite) {
#if defined(__GLIBC__)
#define __isfinite __finite
+#elif defined(MUSL)
+#define __isfinite isfinite
#endif
ASSERT_TRUE(__isfinite(123.0));
ASSERT_FALSE(__isfinite(HUGE_VAL));
@@ -255,6 +257,8 @@
TEST(MATH_TEST, __isfinitef) {
#if defined(__GLIBC__)
#define __isfinitef __finitef
+#elif defined(MUSL)
+#define __isfinitef isfinite
#endif
ASSERT_TRUE(__isfinitef(123.0f));
ASSERT_FALSE(__isfinitef(HUGE_VALF));
@@ -264,6 +268,8 @@
TEST(MATH_TEST, isfinitef) {
#if defined(__GLIBC__)
#define isfinitef __finitef
+#elif defined(MUSL)
+#define isfinitef isfinite
#endif
ASSERT_TRUE(isfinitef(123.0f));
ASSERT_FALSE(isfinitef(HUGE_VALF));
@@ -273,6 +279,8 @@
TEST(MATH_TEST, __isfinitel) {
#if defined(__GLIBC__)
#define __isfinitel __finitel
+#elif defined(MUSL)
+#define __isfinitel isfinite
#endif
ASSERT_TRUE(__isfinitel(123.0L));
ASSERT_FALSE(__isfinitel(HUGE_VALL));
@@ -282,6 +290,8 @@
TEST(MATH_TEST, isfinitel) {
#if defined(__GLIBC__)
#define isfinitel __finitel
+#elif defined(MUSL)
+#define isfinitel isfinite
#endif
ASSERT_TRUE(isfinitel(123.0L));
ASSERT_FALSE(isfinitel(HUGE_VALL));
@@ -309,30 +319,45 @@
extern "C" int isinfl(long double);
TEST(MATH_TEST, __isinf) {
+#if defined(MUSL)
+#define __isinf isinf
+#endif
ASSERT_FALSE(__isinf(123.0));
ASSERT_TRUE(__isinf(HUGE_VAL));
ASSERT_TRUE(__isinf(-HUGE_VAL));
}
TEST(MATH_TEST, __isinff) {
+#if defined(MUSL)
+#define __isinff isinf
+#endif
ASSERT_FALSE(__isinff(123.0f));
ASSERT_TRUE(__isinff(HUGE_VALF));
ASSERT_TRUE(__isinff(-HUGE_VALF));
}
TEST(MATH_TEST, isinff) {
+#if defined(MUSL)
+#define isinff isinf
+#endif
ASSERT_FALSE(isinff(123.0f));
ASSERT_TRUE(isinff(HUGE_VALF));
ASSERT_TRUE(isinff(-HUGE_VALF));
}
TEST(MATH_TEST, __isinfl) {
+#if defined(MUSL)
+#define __isinfl isinf
+#endif
ASSERT_FALSE(__isinfl(123.0L));
ASSERT_TRUE(__isinfl(HUGE_VALL));
ASSERT_TRUE(__isinfl(-HUGE_VALL));
}
TEST(MATH_TEST, isinfl) {
+#if defined(MUSL)
+#define isinfl isinf
+#endif
ASSERT_FALSE(isinfl(123.0L));
ASSERT_TRUE(isinfl(HUGE_VALL));
ASSERT_TRUE(isinfl(-HUGE_VALL));
@@ -352,26 +377,41 @@
extern "C" int isnanl(long double);
TEST(MATH_TEST, __isnan) {
+#if defined(MUSL)
+#define __isnan isnan
+#endif
ASSERT_FALSE(__isnan(123.0));
ASSERT_TRUE(__isnan(nan("")));
}
TEST(MATH_TEST, __isnanf) {
+#if defined(MUSL)
+#define __isnanf isnan
+#endif
ASSERT_FALSE(__isnanf(123.0f));
ASSERT_TRUE(__isnanf(nanf("")));
}
TEST(MATH_TEST, isnanf) {
+#if defined(MUSL)
+#define isnanf isnan
+#endif
ASSERT_FALSE(isnanf(123.0f));
ASSERT_TRUE(isnanf(nanf("")));
}
TEST(MATH_TEST, __isnanl) {
+#if defined(MUSL)
+#define __isnanl isnan
+#endif
ASSERT_FALSE(__isnanl(123.0L));
ASSERT_TRUE(__isnanl(nanl("")));
}
TEST(MATH_TEST, isnanl) {
+#if defined(MUSL)
+#define isnanl isnan
+#endif
ASSERT_FALSE(isnanl(123.0L));
ASSERT_TRUE(isnanl(nanl("")));
}
@@ -1345,11 +1385,16 @@
}
TEST(MATH_TEST, significandl) {
+#if !defined(MUSL)
ASSERT_DOUBLE_EQ(0.0L, significandl(0.0L));
ASSERT_DOUBLE_EQ(1.2L, significandl(1.2L));
ASSERT_DOUBLE_EQ(1.53125L, significandl(12.25L));
+#else
+ GTEST_SKIP() << "musl doesn't have significandl";
+#endif
}
+
TEST(MATH_TEST, scalb) {
ASSERT_DOUBLE_EQ(12.0, scalb(3.0, 2.0));
}
@@ -1383,11 +1428,19 @@
}
TEST(MATH_TEST, gamma) {
+#if !defined(MUSL)
ASSERT_DOUBLE_EQ(log(24.0), gamma(5.0));
+#else
+ GTEST_SKIP() << "musl doesn't have gamma";
+#endif
}
TEST(MATH_TEST, gammaf) {
+#if !defined(MUSL)
ASSERT_FLOAT_EQ(logf(24.0f), gammaf(5.0f));
+#else
+ GTEST_SKIP() << "musl doesn't have gammaf";
+#endif
}
TEST(MATH_TEST, gamma_r) {