diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 7915b22..d70d45a 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -1014,6 +1014,8 @@
    * :data:`stat.UF_APPEND`
    * :data:`stat.UF_OPAQUE`
    * :data:`stat.UF_NOUNLINK`
+   * :data:`stat.UF_COMPRESSED`
+   * :data:`stat.UF_HIDDEN`
    * :data:`stat.SF_ARCHIVED`
    * :data:`stat.SF_IMMUTABLE`
    * :data:`stat.SF_APPEND`
diff --git a/Doc/library/stat.rst b/Doc/library/stat.rst
index f11d21f..c9c399e 100644
--- a/Doc/library/stat.rst
+++ b/Doc/library/stat.rst
@@ -304,13 +304,21 @@
 
    The file may only be appended to.
 
+.. data:: UF_OPAQUE
+
+   The directory is opaque when viewed through a union stack.
+
 .. data:: UF_NOUNLINK
 
    The file may not be renamed or deleted.
 
-.. data:: UF_OPAQUE
+.. data:: UF_COMPRESSED
 
-   The directory is opaque when viewed through a union stack.
+   The file is stored compressed (Mac OS X 10.6+).
+
+.. data:: UF_HIDDEN
+
+   The file should not be displayed in a GUI (Mac OS X 10.5+).
 
 .. data:: SF_ARCHIVED
 
diff --git a/Lib/stat.py b/Lib/stat.py
index 4a9d30c..abed5c9 100644
--- a/Lib/stat.py
+++ b/Lib/stat.py
@@ -87,6 +87,8 @@
 UF_APPEND    = 0x00000004
 UF_OPAQUE    = 0x00000008
 UF_NOUNLINK  = 0x00000010
+UF_COMPRESSED = 0x00000020  # OS X: file is hfs-compressed
+UF_HIDDEN    = 0x00008000   # OS X: file should not be displayed
 SF_ARCHIVED  = 0x00010000
 SF_IMMUTABLE = 0x00020000
 SF_APPEND    = 0x00040000
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index a5db21e..3b9bc20 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -11,10 +11,12 @@
 import os
 import pwd
 import shutil
+import stat
 import sys
 import unittest
 import warnings
 
+_DUMMY_SYMLINK = '%s/dummy-symlink' % os.getenv('TMPDIR', '/tmp')
 
 warnings.filterwarnings('ignore', '.* potential security risk .*',
                         RuntimeWarning)
@@ -25,9 +27,11 @@
         # create empty file
         fp = open(test_support.TESTFN, 'w+')
         fp.close()
+        self.teardown_files = [ test_support.TESTFN ]
 
     def tearDown(self):
-        os.unlink(test_support.TESTFN)
+        for teardown_file in self.teardown_files:
+            os.unlink(teardown_file)
 
     def testNoArgFunctions(self):
         # test posix functions which take no arguments and have
@@ -258,7 +262,7 @@
     def test_lchown(self):
         os.unlink(test_support.TESTFN)
         # create a symlink
-        os.symlink('/tmp/dummy-symlink-target', test_support.TESTFN)
+        os.symlink(_DUMMY_SYMLINK, test_support.TESTFN)
         self._test_all_chown_common(posix.lchown, test_support.TESTFN)
 
     def test_chdir(self):
@@ -315,17 +319,49 @@
             posix.utime(test_support.TESTFN, (int(now), int(now)))
             posix.utime(test_support.TESTFN, (now, now))
 
-    def test_chflags(self):
-        if hasattr(posix, 'chflags'):
-            st = os.stat(test_support.TESTFN)
-            if hasattr(st, 'st_flags'):
-                posix.chflags(test_support.TESTFN, st.st_flags)
+    def _test_chflags_regular_file(self, chflags_func, target_file):
+        st = os.stat(target_file)
+        self.assertTrue(hasattr(st, 'st_flags'))
+        chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
+        try:
+            new_st = os.stat(target_file)
+            self.assertEqual(st.st_flags | stat.UF_IMMUTABLE, new_st.st_flags)
+            try:
+                fd = open(target_file, 'w+')
+            except IOError as e:
+                self.assertEqual(e.errno, errno.EPERM)
+        finally:
+            posix.chflags(target_file, st.st_flags)
 
-    def test_lchflags(self):
-        if hasattr(posix, 'lchflags'):
-            st = os.stat(test_support.TESTFN)
-            if hasattr(st, 'st_flags'):
-                posix.lchflags(test_support.TESTFN, st.st_flags)
+    @unittest.skipUnless(hasattr(posix, 'chflags'), 'test needs os.chflags()')
+    def test_chflags(self):
+        self._test_chflags_regular_file(posix.chflags, test_support.TESTFN)
+
+    @unittest.skipUnless(hasattr(posix, 'lchflags'), 'test needs os.lchflags()')
+    def test_lchflags_regular_file(self):
+        self._test_chflags_regular_file(posix.lchflags, test_support.TESTFN)
+
+    @unittest.skipUnless(hasattr(posix, 'lchflags'), 'test needs os.lchflags()')
+    def test_lchflags_symlink(self):
+        testfn_st = os.stat(test_support.TESTFN)
+
+        self.assertTrue(hasattr(testfn_st, 'st_flags'))
+
+        os.symlink(test_support.TESTFN, _DUMMY_SYMLINK)
+        self.teardown_files.append(_DUMMY_SYMLINK)
+        dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
+
+        posix.lchflags(_DUMMY_SYMLINK,
+                       dummy_symlink_st.st_flags | stat.UF_IMMUTABLE)
+        try:
+            new_testfn_st = os.stat(test_support.TESTFN)
+            new_dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
+
+            self.assertEqual(testfn_st.st_flags, new_testfn_st.st_flags)
+            self.assertEqual(dummy_symlink_st.st_flags | stat.UF_IMMUTABLE,
+                             new_dummy_symlink_st.st_flags)
+        finally:
+            posix.lchflags(_DUMMY_SYMLINK, dummy_symlink_st.st_flags)
 
     def test_getcwd_long_pathnames(self):
         if hasattr(posix, 'getcwd'):
diff --git a/Misc/ACKS b/Misc/ACKS
index 4cdf5f4..709ded3 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -162,6 +162,7 @@
 Juan José Conti
 Matt Conway
 David M. Cooke
+Garrett Cooper
 Greg Copeland
 Aldo Cortesi
 David Costanzo
diff --git a/Misc/NEWS b/Misc/NEWS
index ac383e0..b1742b0 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -53,9 +53,20 @@
   constructor has failed, e.g. because of an undeclared keyword argument. Patch
   written by Oleg Oshmyan.
 
+Build
+-----
+
+- Issue #8746: Correct faulty configure checks so that os.chflags() and
+  os.lchflags() are once again built on systems that support these
+  functions (*BSD and OS X).  Also add new stat file flags for OS X
+  (UF_HIDDEN and UF_COMPRESSED).
+
 Tests
 -----
 
+- Issue #8746: Add additional tests for os.chflags() and os.lchflags().
+  Patch by Garrett Cooper.
+
 - Issue #10736: Fix test_ttk test_widgets failures with Cocoa Tk 8.5.9
   on Mac OS X.  (Patch by Ronald Oussoren)
 
diff --git a/configure b/configure
index 29ce00c..4a60b10 100755
--- a/configure
+++ b/configure
@@ -10073,7 +10073,7 @@
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-[
+
 #include <sys/stat.h>
 #include <unistd.h>
 int main(int argc, char*argv[])
@@ -10082,7 +10082,7 @@
     return 1;
   return 0;
 }
-]
+
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_have_chflags=yes
@@ -10122,7 +10122,7 @@
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-[
+
 #include <sys/stat.h>
 #include <unistd.h>
 int main(int argc, char*argv[])
@@ -10131,7 +10131,7 @@
     return 1;
   return 0;
 }
-]
+
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_have_lchflags=yes
diff --git a/configure.in b/configure.in
index ea106b5..9749e79 100644
--- a/configure.in
+++ b/configure.in
@@ -2839,7 +2839,7 @@
 # On Tru64, chflags seems to be present, but calling it will
 # exit Python
 AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
-AC_RUN_IFELSE([AC_LANG_SOURCE([[[
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <sys/stat.h>
 #include <unistd.h>
 int main(int argc, char*argv[])
@@ -2848,7 +2848,7 @@
     return 1;
   return 0;
 }
-]]])],
+]])],
 [ac_cv_have_chflags=yes],
 [ac_cv_have_chflags=no],
 [ac_cv_have_chflags=cross])
@@ -2857,11 +2857,11 @@
   AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
 fi
 if test "$ac_cv_have_chflags" = yes ; then
-  AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
+  AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
 fi
 
 AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
-AC_RUN_IFELSE([AC_LANG_SOURCE([[[
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <sys/stat.h>
 #include <unistd.h>
 int main(int argc, char*argv[])
@@ -2870,13 +2870,13 @@
     return 1;
   return 0;
 }
-]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
+]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
 ])
 if test "$ac_cv_have_lchflags" = cross ; then
   AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
 fi
 if test "$ac_cv_have_lchflags" = yes ; then
-  AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
+  AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
 fi
 
 dnl Check if system zlib has *Copy() functions
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 65ad7ac..9d340f6 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -100,7 +100,7 @@
 /* Define this if you have the type _Bool. */
 #undef HAVE_C99_BOOL
 
-/* Define to 1 if you have the `chflags' function. */
+/* Define to 1 if you have the 'chflags' function. */
 #undef HAVE_CHFLAGS
 
 /* Define to 1 if you have the `chown' function. */
@@ -391,7 +391,7 @@
    Solaris and Linux, the necessary defines are already defined.) */
 #undef HAVE_LARGEFILE_SUPPORT
 
-/* Define to 1 if you have the `lchflags' function. */
+/* Define to 1 if you have the 'lchflags' function. */
 #undef HAVE_LCHFLAGS
 
 /* Define to 1 if you have the `lchmod' function. */
@@ -1137,6 +1137,9 @@
 /* This must be defined on some systems to enable large file support. */
 #undef _LARGEFILE_SOURCE
 
+/* This must be defined on AIX systems to enable large file support. */
+#undef _LARGE_FILES
+
 /* Define to 1 if on MINIX. */
 #undef _MINIX
 
