expose O_PATH if possible
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index d854474..344218c 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -1137,6 +1137,7 @@
O_DIRECTORY
O_NOFOLLOW
O_NOATIME
+ O_PATH
These constants are GNU extensions and not present if they are not defined by
the C library.
diff --git a/Misc/NEWS b/Misc/NEWS
index a2068b1..ddb39d4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -277,6 +277,8 @@
Library
-------
+- Expose the O_PATH constant in the os module if it is available.
+
- Issue #17368: Fix an off-by-one error in the Python JSON decoder that caused
a failure while decoding empty object literals when object_pairs_hook was
specified.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 0586da3..3ddeef4 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -10858,6 +10858,9 @@
#ifdef O_SEARCH
if (ins(d, "O_SEARCH", (long)O_SEARCH)) return -1;
#endif
+#ifdef O_PATH
+ if (ins(d, "O_PATH", (long)O_PATH)) return -1;
+#endif
#ifdef O_TTY_INIT
if (ins(d, "O_TTY_INIT", (long)O_TTY_INIT)) return -1;
#endif