* commit '04d2a59544354802526584a38968069ac65e813e': Fix glibc 2.15 build.
This commit is contained in:
		@@ -15,13 +15,23 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef _GNU_SOURCE
 | 
					#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
 | 
					#if defined(__GLIBC__)
 | 
				
			||||||
// headers that don't work if you #undef _GNU_SOURCE, which makes it
 | 
					
 | 
				
			||||||
// impossible to build this test.
 | 
					// At the time of writing, libcxx -- which is dragged in by gtest -- assumes
 | 
				
			||||||
#include <features.h>
 | 
					// 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 <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <errno.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).
 | 
					  // The POSIX strerror_r sets errno to ERANGE (the GNU one doesn't).
 | 
				
			||||||
  ASSERT_EQ(ERANGE, errno);
 | 
					  ASSERT_EQ(ERANGE, errno);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					
 | 
				
			||||||
# if __GLIBC_PREREQ(2, 15)
 | 
					 | 
				
			||||||
#  error this test should work now
 | 
					 | 
				
			||||||
# endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,17 +18,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <sys/resource.h>
 | 
					#include <sys/resource.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__GLIBC__)
 | 
					 | 
				
			||||||
/* The host glibc we're currently building with doesn't have prlimit64 yet. */
 | 
					 | 
				
			||||||
static int prlimit64(pid_t, int resource, const struct rlimit64* new_limit, struct rlimit64* old_limit) {
 | 
					 | 
				
			||||||
  if (new_limit != NULL) {
 | 
					 | 
				
			||||||
    return setrlimit64(resource, new_limit);
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    return getrlimit64(resource, old_limit);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
TEST(sys_resource, smoke) {
 | 
					TEST(sys_resource, smoke) {
 | 
				
			||||||
#if defined(__LP64__) || defined(__GLIBC__)
 | 
					#if defined(__LP64__) || defined(__GLIBC__)
 | 
				
			||||||
  ASSERT_EQ(sizeof(rlimit), sizeof(rlimit64));
 | 
					  ASSERT_EQ(sizeof(rlimit), sizeof(rlimit64));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,6 @@
 | 
				
			|||||||
#include <sys/wait.h>
 | 
					#include <sys/wait.h>
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
TEST(unistd, sysconf_SC_MONOTONIC_CLOCK) {
 | 
					TEST(unistd, sysconf_SC_MONOTONIC_CLOCK) {
 | 
				
			||||||
  ASSERT_GT(sysconf(_SC_MONOTONIC_CLOCK), 0);
 | 
					  ASSERT_GT(sysconf(_SC_MONOTONIC_CLOCK), 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -250,8 +249,6 @@ TEST(unistd, getenv_unsetenv) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST(unistd, unsetenv_EINVAL) {
 | 
					TEST(unistd, unsetenv_EINVAL) {
 | 
				
			||||||
  EXPECT_EQ(-1, unsetenv(NULL));
 | 
					 | 
				
			||||||
  EXPECT_EQ(EINVAL, errno);
 | 
					 | 
				
			||||||
  EXPECT_EQ(-1, unsetenv(""));
 | 
					  EXPECT_EQ(-1, unsetenv(""));
 | 
				
			||||||
  EXPECT_EQ(EINVAL, errno);
 | 
					  EXPECT_EQ(EINVAL, errno);
 | 
				
			||||||
  EXPECT_EQ(-1, unsetenv("a=b"));
 | 
					  EXPECT_EQ(-1, unsetenv("a=b"));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user