Fix glibc 2.15 build.

glibc 2.15 has prlimit64, has an unsetenv that's declared nonnull,
and hasn't fixed the problems we were having trying to use the
POSIX strerror_r in C++ code.

Change-Id: I834356a385e5ae55500bd86781691b6c1c9c8300
This commit is contained in:
Elliott Hughes
2014-11-12 19:22:48 -08:00
parent 468f84107a
commit fb50057138
3 changed files with 16 additions and 23 deletions

View File

@@ -15,13 +15,23 @@
*/
#undef _GNU_SOURCE
#include <features.h> // Get __BIONIC__ or __GLIBC__ so we can tell what we're using.
// Old versions of glibc (like our current host prebuilt sysroot one) have
// headers that don't work if you #undef _GNU_SOURCE, which makes it
// impossible to build this test.
#include <features.h>
#if defined(__GLIBC__)
// At the time of writing, libcxx -- which is dragged in by gtest -- assumes
// declarations from glibc of things that aren't available without __USE_GNU.
// This means we can't even build this test (which is a problem because that
// means it doesn't get included in CTS).
// For glibc 2.15, the symbols in question are:
// at_quick_exit, quick_exit, vasprintf, strtoll_l, strtoull_l, and strtold_l.
# if __GLIBC_PREREQ(2, 19)
# error check whether we can build this now...
# endif
#else
#if !defined(__GLIBC__)
#include <string.h>
#include <errno.h>
@@ -50,8 +60,5 @@ TEST(string, posix_strerror_r) {
// The POSIX strerror_r sets errno to ERANGE (the GNU one doesn't).
ASSERT_EQ(ERANGE, errno);
}
#else
# if __GLIBC_PREREQ(2, 15)
# error this test should work now
# endif
#endif