Index: compiler-rt/trunk/test/builtins/Unit/compiler_rt_logb_test.c =================================================================== --- compiler-rt/trunk/test/builtins/Unit/compiler_rt_logb_test.c +++ compiler-rt/trunk/test/builtins/Unit/compiler_rt_logb_test.c @@ -36,6 +36,10 @@ }; int main() { + // Do not the run the compiler-rt logb test case if using GLIBC version + // < 2.23. Older versions might not compute to the same value as the + // compiler-rt value. +#if !defined(__GLIBC__) || (defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 23)) const unsigned N = sizeof(cases) / sizeof(cases[0]); unsigned i; for (i = 0; i < N; ++i) { @@ -57,6 +61,9 @@ if (test__compiler_rt_logb(fromRep(signBit ^ x))) return 1; x >>= 1; } +#else + printf("skipped\n"); +#endif return 0; } Index: compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/getpw_getgr.cc =================================================================== --- compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/getpw_getgr.cc +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/getpw_getgr.cc @@ -8,9 +8,8 @@ #include #include #include -#include -std::string any_group; +std::unique_ptr any_group; const int N = 123456; void Check(const char *str) { @@ -48,8 +47,11 @@ assert(result->gr_gid != N); for (char **mem = result->gr_mem; *mem; ++mem) Check(*mem); - if (any_group.empty()) - any_group = result->gr_name; + if (!any_group) { + auto length = strlen(result->gr_name); + any_group.reset(new char[length + 1]); + memcpy(any_group.get(), result->gr_name, length + 1); + } } template @@ -72,7 +74,7 @@ test(&getpwuid, 0); test(&getpwnam, "root"); test(&getgrgid, 0); - test(&getgrnam, any_group.c_str()); + test(&getgrnam, any_group.get()); #if !defined(__ANDROID__) setpwent(); @@ -91,7 +93,7 @@ test_r(&getpwnam_r, "root"); test_r(&getgrgid_r, 0); - test_r(&getgrnam_r, any_group.c_str()); + test_r(&getgrnam_r, any_group.get()); #if defined(__linux__) auto pwd_file = [] {