diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 50afd05..f0aeb09 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -517,137 +517,287 @@
   ASSERT_TRUE(rc > 0 && powerof2(rc));
 }
 
-#define verifySysconf(name, ret) \
-{\
-  errno = 0;\
-  ret = sysconf(name);\
-  ASSERT_TRUE((0 == errno) && (-1 != ret)) << "name=" << #name << ", ret=" << ret << ", Error Message: " << strerror(errno);\
-}\
+
+TEST(unistd, _POSIX_macros_smoke) {
+  // Make a tight verification of _POSIX_* / _POSIX2_* / _XOPEN_* macros, to prevent change by mistake.
+  // Verify according to POSIX.1-2008.
+  EXPECT_EQ(200809L, _POSIX_VERSION);
+
+  EXPECT_GT(_POSIX_AIO_LISTIO_MAX, 0);
+  EXPECT_GT(_POSIX_AIO_MAX, 0);
+  EXPECT_GT(_POSIX_ARG_MAX, 0);
+  EXPECT_GT(_POSIX_CHILD_MAX, 0);
+  EXPECT_NE(_POSIX_CHOWN_RESTRICTED, -1);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_CLOCK_SELECTION);
+  EXPECT_GT(_POSIX_DELAYTIMER_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_FSYNC);
+  EXPECT_GT(_POSIX_HOST_NAME_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_IPV6);
+  EXPECT_GT(_POSIX_JOB_CONTROL, 0);
+  EXPECT_GT(_POSIX_LINK_MAX, 0);
+  EXPECT_GT(_POSIX_LOGIN_NAME_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MAPPED_FILES);
+  EXPECT_GT(_POSIX_MAX_CANON, 0);
+  EXPECT_GT(_POSIX_MAX_INPUT, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMLOCK);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMLOCK_RANGE);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_MEMORY_PROTECTION);
+  EXPECT_EQ(0, _POSIX_MONOTONIC_CLOCK);
+  EXPECT_GT(_POSIX_MQ_OPEN_MAX, 0);
+  EXPECT_GT(_POSIX_MQ_PRIO_MAX, 0);
+  EXPECT_GT(_POSIX_NAME_MAX, 0);
+  EXPECT_GT(_POSIX_NGROUPS_MAX, 0);
+  EXPECT_GT(_POSIX_NO_TRUNC, 0);
+  EXPECT_GT(_POSIX_OPEN_MAX, 0);
+  EXPECT_GT(_POSIX_PATH_MAX, 0);
+  EXPECT_GT(_POSIX_PIPE_BUF, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_PRIORITY_SCHEDULING);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_RAW_SOCKETS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_READER_WRITER_LOCKS);
+  EXPECT_GT(_POSIX_REGEXP, 0);
+  EXPECT_GT(_POSIX_RE_DUP_MAX, 0);
+  EXPECT_GT(_POSIX_SAVED_IDS, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_SEMAPHORES);
+  EXPECT_GT(_POSIX_SEM_NSEMS_MAX, 0);
+  EXPECT_GT(_POSIX_SEM_VALUE_MAX, 0);
+  EXPECT_GT(_POSIX_SHELL, 0);
+  EXPECT_GT(_POSIX_SIGQUEUE_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_SPORADIC_SERVER);
+  EXPECT_GT(_POSIX_SSIZE_MAX, 0);
+  EXPECT_GT(_POSIX_STREAM_MAX, 0);
+  EXPECT_GT(_POSIX_SYMLINK_MAX, 0);
+  EXPECT_GT(_POSIX_SYMLOOP_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_SYNCHRONIZED_IO);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREADS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_ATTR_STACKADDR);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_ATTR_STACKSIZE);
+  EXPECT_TRUE(_POSIX_VERSION ==  _POSIX_THREAD_CPUTIME || 0 == _POSIX_THREAD_CPUTIME);
+  EXPECT_GT(_POSIX_THREAD_DESTRUCTOR_ITERATIONS, 0);
+  EXPECT_GT(_POSIX_THREAD_KEYS_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIORITY_SCHEDULING);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIO_INHERIT);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIO_PROTECT);
+  EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_PROTECT);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_SAFE_FUNCTIONS);
+  EXPECT_EQ(-1, _POSIX_THREAD_SPORADIC_SERVER);
+  EXPECT_GT(_POSIX_THREAD_THREADS_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMEOUTS);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMERS);
+  EXPECT_GT(_POSIX_TIMER_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_TRACE);
+  EXPECT_EQ(-1, _POSIX_TRACE_EVENT_FILTER);
+  EXPECT_EQ(-1, _POSIX_TRACE_INHERIT);
+  EXPECT_EQ(-1, _POSIX_TRACE_LOG);
+  EXPECT_GT(_POSIX_TTY_NAME_MAX, 0);
+  EXPECT_EQ(-1, _POSIX_TYPED_MEMORY_OBJECTS);
+  EXPECT_GT(_POSIX_TZNAME_MAX, 0);
+  EXPECT_NE(-1, _POSIX_VDISABLE);
+
+  EXPECT_GT(_POSIX2_BC_BASE_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_DIM_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_SCALE_MAX, 0);
+  EXPECT_GT(_POSIX2_BC_STRING_MAX, 0);
+  EXPECT_GT(_POSIX2_CHARCLASS_NAME_MAX, 0);
+  EXPECT_GT(_POSIX2_COLL_WEIGHTS_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX2_C_BIND);
+  EXPECT_GT(_POSIX2_EXPR_NEST_MAX, 0);
+  EXPECT_GT(_POSIX2_LINE_MAX, 0);
+  EXPECT_GT(_POSIX2_RE_DUP_MAX, 0);
+
+  EXPECT_EQ(700, _XOPEN_VERSION);
+  EXPECT_GT(_XOPEN_IOV_MAX, 0);
+  EXPECT_GT(_XOPEN_UNIX, 0);
+
+#if defined(__BIONIC__)
+  // These tests only pass on bionic, as bionic and glibc has different support on these macros.
+  // Macros like _POSIX_ADVISORY_INFO are not supported on bionic yet.
+  EXPECT_EQ(-1, _POSIX_ADVISORY_INFO);
+  EXPECT_EQ(-1, _POSIX_ASYNCHRONOUS_IO);
+  EXPECT_EQ(-1, _POSIX_BARRIERS);
+  EXPECT_EQ(-1, _POSIX_CPUTIME);
+  EXPECT_EQ(-1, _POSIX_MESSAGE_PASSING);
+  EXPECT_EQ(-1, _POSIX_PRIORITIZED_IO);
+  EXPECT_EQ(-1, _POSIX_REALTIME_SIGNALS);
+  EXPECT_EQ(-1, _POSIX_SHARED_MEMORY_OBJECTS);
+  EXPECT_EQ(-1, _POSIX_SPAWN);
+  EXPECT_EQ(-1, _POSIX_SPIN_LOCKS);
+  EXPECT_EQ(-1, _POSIX_THREAD_PROCESS_SHARED);
+  EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_INHERIT);
+
+  EXPECT_EQ(-1, _POSIX2_VERSION);
+  EXPECT_EQ(-1, _POSIX2_CHAR_TERM);
+  EXPECT_EQ(-1, _POSIX2_C_DEV);
+  EXPECT_EQ(-1, _POSIX2_LOCALEDEF);
+  EXPECT_EQ(-1, _POSIX2_SW_DEV);
+  EXPECT_EQ(-1, _POSIX2_UPE);
+
+  EXPECT_EQ(-1, _XOPEN_ENH_I18N);
+  EXPECT_EQ(-1, _XOPEN_CRYPT);
+  EXPECT_EQ(-1, _XOPEN_LEGACY);
+  EXPECT_EQ(-1, _XOPEN_REALTIME);
+  EXPECT_EQ(-1, _XOPEN_REALTIME_THREADS);
+  EXPECT_EQ(-1, _XOPEN_SHM);
+
+#endif // defined(__BIONIC__)
+}
+
+#define VERIFY_SYSCONF_NOT_SUPPORT(name) VerifySysconf(name, #name, [](long v){return v == -1;})
+
+// sysconf() means unlimited when it returns -1 with errno unchanged.
+#define VERIFY_SYSCONF_POSITIVE(name) \
+  VerifySysconf(name, #name, [](long v){return (v > 0 || v == -1);})
+
+#define VERIFY_SYSCONF_POSIX_VERSION(name) \
+  VerifySysconf(name, #name, [](long v){return v == _POSIX_VERSION;})
+
+static void VerifySysconf(int option, const char *option_name, bool (*verify)(long)) {
+  errno = 0;
+  long ret = sysconf(option);
+  EXPECT_TRUE(0 == errno && verify(ret)) << "name = " << option_name << ", ret = "
+      << ret <<", Error Message: " << strerror(errno);
+}
 
 TEST(unistd, sysconf) {
-  long ret;
+  VERIFY_SYSCONF_POSITIVE(_SC_ARG_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_BASE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_DIM_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_BC_SCALE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_CHILD_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_CLK_TCK);
+  VERIFY_SYSCONF_POSITIVE(_SC_COLL_WEIGHTS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_EXPR_NEST_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_LINE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_NGROUPS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_OPEN_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_PASS_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_2_C_BIND);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_FORT_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_FORT_RUN);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_UPE);
+  VERIFY_SYSCONF_POSITIVE(_SC_JOB_CONTROL);
+  VERIFY_SYSCONF_POSITIVE(_SC_SAVED_IDS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_VERSION);
+  VERIFY_SYSCONF_POSITIVE(_SC_RE_DUP_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_STREAM_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TZNAME_MAX);
+  VerifySysconf(_SC_XOPEN_VERSION, "_SC_XOPEN_VERSION", [](long v){return v == _XOPEN_VERSION;});
+  VERIFY_SYSCONF_POSITIVE(_SC_ATEXIT_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_IOV_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_PAGESIZE);
+  VERIFY_SYSCONF_POSITIVE(_SC_PAGE_SIZE);
+  VERIFY_SYSCONF_POSITIVE(_SC_XOPEN_UNIX);
+  VERIFY_SYSCONF_POSITIVE(_SC_AIO_LISTIO_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_AIO_MAX);
+  VerifySysconf(_SC_AIO_PRIO_DELTA_MAX, "_SC_AIO_PRIO_DELTA_MAX", [](long v){return v >= 0;});
+  VERIFY_SYSCONF_POSITIVE(_SC_DELAYTIMER_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_MQ_OPEN_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_MQ_PRIO_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_RTSIG_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_SEM_NSEMS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_SEM_VALUE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TIMER_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_FSYNC);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MAPPED_FILES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMLOCK);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMLOCK_RANGE);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MEMORY_PROTECTION);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_PRIORITY_SCHEDULING);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_SEMAPHORES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_SYNCHRONIZED_IO);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_TIMERS);
+  VERIFY_SYSCONF_POSITIVE(_SC_GETGR_R_SIZE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_GETPW_R_SIZE_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_LOGIN_NAME_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_DESTRUCTOR_ITERATIONS);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_KEYS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_STACK_MIN);
+  VERIFY_SYSCONF_POSITIVE(_SC_THREAD_THREADS_MAX);
+  VERIFY_SYSCONF_POSITIVE(_SC_TTY_NAME_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREADS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_ATTR_STACKADDR);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_ATTR_STACKSIZE);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIORITY_SCHEDULING);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIO_INHERIT);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_PRIO_PROTECT);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_SAFE_FUNCTIONS);
+  VERIFY_SYSCONF_POSITIVE(_SC_NPROCESSORS_CONF);
+  VERIFY_SYSCONF_POSITIVE(_SC_NPROCESSORS_ONLN);
+  VERIFY_SYSCONF_POSITIVE(_SC_PHYS_PAGES);
+  VERIFY_SYSCONF_POSITIVE(_SC_AVPHYS_PAGES);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_MONOTONIC_CLOCK);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_ACCOUNTING);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_CHECKPOINT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_LOCATE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_MESSAGE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_PBS_TRACK);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_CLOCK_SELECTION);
+  VERIFY_SYSCONF_POSITIVE(_SC_HOST_NAME_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_IPV6);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_RAW_SOCKETS);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_READER_WRITER_LOCKS);
+  VERIFY_SYSCONF_POSITIVE(_SC_REGEXP);
+  VERIFY_SYSCONF_POSITIVE(_SC_SHELL);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPORADIC_SERVER);
+  VERIFY_SYSCONF_POSITIVE(_SC_SYMLOOP_MAX);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_CPUTIME);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_SPORADIC_SERVER);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_TIMEOUTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_EVENT_FILTER);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_EVENT_NAME_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_INHERIT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_LOG);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_NAME_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_SYS_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TRACE_USER_EVENT_MAX);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_TYPED_MEMORY_OBJECTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_STREAMS);
 
-  verifySysconf(_SC_MONOTONIC_CLOCK, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_ARG_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_CHILD_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_CLK_TCK, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_LINE_MAX, ret);
-  ASSERT_GT(ret, 1);
-  verifySysconf(_SC_NGROUPS_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_OPEN_MAX, ret);
-  ASSERT_GT(ret, 1);
-  verifySysconf(_SC_2_C_BIND, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_2_C_VERSION, ret);
-  verifySysconf(_SC_JOB_CONTROL, ret);
-  ASSERT_EQ(1, ret);
-  verifySysconf(_SC_SAVED_IDS, ret);
-  ASSERT_EQ(1, ret);
-  verifySysconf(_SC_VERSION, ret);
-  verifySysconf(_SC_RE_DUP_MAX, ret);
-  verifySysconf(_SC_STREAM_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_TZNAME_MAX, ret);
-  verifySysconf(_SC_XOPEN_VERSION, ret);
-  verifySysconf(_SC_ATEXIT_MAX, ret);
-  ASSERT_GT(ret, 1);
-  verifySysconf(_SC_IOV_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_PAGESIZE, ret);
-  ASSERT_GE(ret, 1);
-  verifySysconf(_SC_PAGE_SIZE, ret);
-  ASSERT_GE(ret, 1);
-  verifySysconf(_SC_XOPEN_UNIX, ret);
-  verifySysconf(_SC_DELAYTIMER_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_MQ_OPEN_MAX, ret);
-  verifySysconf(_SC_MQ_PRIO_MAX, ret);
-  ASSERT_GT(ret ,0);
-  verifySysconf(_SC_RTSIG_MAX, ret);
-  verifySysconf(_SC_SEM_NSEMS_MAX, ret);
-  verifySysconf(_SC_SEM_VALUE_MAX, ret);
-  verifySysconf(_SC_SIGQUEUE_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_TIMER_MAX, ret);
-  verifySysconf(_SC_FSYNC, ret);
-  verifySysconf(_SC_MAPPED_FILES, ret);
-  verifySysconf(_SC_PRIORITY_SCHEDULING, ret);
-  verifySysconf(_SC_SEMAPHORES, ret);
-  verifySysconf(_SC_SYNCHRONIZED_IO, ret);
-  verifySysconf(_SC_TIMERS, ret);
-  verifySysconf(_SC_GETGR_R_SIZE_MAX, ret);
-  verifySysconf(_SC_GETPW_R_SIZE_MAX, ret);
-  verifySysconf(_SC_LOGIN_NAME_MAX, ret);
-  verifySysconf(_SC_THREAD_DESTRUCTOR_ITERATIONS, ret);
-  verifySysconf(_SC_THREAD_KEYS_MAX, ret);
-  verifySysconf(_SC_THREAD_STACK_MIN, ret);
-  verifySysconf(_SC_THREAD_THREADS_MAX, ret);
-  verifySysconf(_SC_TTY_NAME_MAX, ret);
-  ASSERT_GT(ret, 0);
-  verifySysconf(_SC_THREADS, ret);
-  verifySysconf(_SC_THREAD_PRIO_INHERIT, ret);
-  verifySysconf(_SC_THREAD_PRIO_PROTECT, ret);
-  verifySysconf(_SC_NPROCESSORS_CONF, ret);
-  verifySysconf(_SC_NPROCESSORS_ONLN, ret);
-  verifySysconf(_SC_PHYS_PAGES, ret);
-  verifySysconf(_SC_AVPHYS_PAGES, ret);
+#if defined(__LP64__)
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFF32);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFFBIG);
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_LP64_OFF64);
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_LPBIG_OFFBIG);
+#else
+  VERIFY_SYSCONF_POSITIVE(_SC_V7_ILP32_OFF32);
+#if defined(__BIONIC__)
+  // bionic does not support 64 bits off_t type on 32bit machine.
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_ILP32_OFFBIG);
+#endif
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_LP64_OFF64);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_V7_LPBIG_OFFBIG);
+#endif
 
-  //  TODO: keep following names check here
-  //  so that we can enable them when the error fixed
+#if defined(__BIONIC__)
+  // Tests can only run on bionic, as bionic and glibc have different support for these options.
+  // Below options are not supported on bionic yet.
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_ADVISORY_INFO);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_ASYNCHRONOUS_IO);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_BARRIERS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_CPUTIME);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_MESSAGE_PASSING);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_PRIORITIZED_IO);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_REALTIME_SIGNALS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SHARED_MEMORY_OBJECTS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPAWN);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_SPIN_LOCKS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_PROCESS_SHARED);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_ROBUST_PRIO_INHERIT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_THREAD_ROBUST_PRIO_PROTECT);
 
-  /* when call sysconf with following name,
-     the system call will report error "Function not implemented"
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_C_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_CHAR_TERM);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_LOCALEDEF);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_SW_DEV);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_2_VERSION);
 
-  verifySysconf(_SC_BC_BASE_MAX, ret);
-  verifySysconf(_SC_BC_DIM_MAX, ret);
-  verifySysconf(_SC_BC_SCALE_MAX, ret);
-  verifySysconf(_SC_BC_STRING_MAX, ret);
-  verifySysconf(_SC_COLL_WEIGHTS_MAX, ret);
-  verifySysconf(_SC_EXPR_NEST_MAX, ret);
-  verifySysconf(_SC_XOPEN_SHM, ret);
-  verifySysconf(_SC_XBS5_ILP32_OFF32, ret);
-  verifySysconf(_SC_XBS5_ILP32_OFFBIG, ret);
-  verifySysconf(_SC_XBS5_LP64_OFF64, ret);
-  verifySysconf(_SC_XBS5_LPBIG_OFFBIG, ret);
-  verifySysconf(_SC_AIO_LISTIO_MAX, ret);
-  verifySysconf(_SC_AIO_MAX, ret);
-  verifySysconf(_SC_AIO_PRIO_DELTA_MAX, ret);
-  verifySysconf(_SC_ASYNCHRONOUS_IO, ret);
-  verifySysconf(_SC_MEMLOCK, ret);
-  verifySysconf(_SC_MEMLOCK_RANGE, ret);
-  verifySysconf(_SC_MEMORY_PROTECTION, ret);
-  verifySysconf(_SC_MESSAGE_PASSING, ret);
-  verifySysconf(_SC_PRIORITIZED_IO, ret);
-  verifySysconf(_SC_SHARED_MEMORY_OBJECTS, ret);
-  verifySysconf(_SC_THREAD_SAFE_FUNCTIONS, ret);
-
-  */
-
-  /* when following names are checked,
-     the return value of sysconf is -1,
-     which means following name are invalid.
-
-  verifySysconf(_SC_2_C_DEV, ret);
-  verifySysconf(_SC_2_FORT_DEV, ret);
-  verifySysconf(_SC_2_FORT_RUN, ret);
-  verifySysconf(_SC_2_LOCALEDEF, ret);
-  verifySysconf(_SC_2_SW_DEV, ret);
-  verifySysconf(_SC_2_UPE, ret);
-  verifySysconf(_SC_2_VERSION, ret);
-  verifySysconf(_SC_XOPEN_CRYPT, ret);
-  verifySysconf(_SC_XOPEN_ENH_I18N, ret);
-  verifySysconf(_SC_XOPEN_XCU_VERSION, ret);
-  verifySysconf(_SC_XOPEN_REALTIME, ret);
-  verifySysconf(_SC_XOPEN_REALTIME_THREADS, ret);
-  verifySysconf(_SC_XOPEN_LEGACY, ret);
-  verifySysconf(_SC_THREAD_ATTR_STACKADDR, ret);
-  verifySysconf(_SC_THREAD_ATTR_STACKSIZE, ret);
-  verifySysconf(_SC_REALTIME_SIGNALS, ret);
-
-  */
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_CRYPT);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_ENH_I18N);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_LEGACY);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_REALTIME);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_REALTIME_THREADS);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_SHM);
+  VERIFY_SYSCONF_NOT_SUPPORT(_SC_XOPEN_UUCP);
+#endif // defined(__BIONIC__)
 }
