diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
index 9ac8b2e..fee2b42 100644
--- a/include/MacportsLegacySupport.h
+++ b/include/MacportsLegacySupport.h
@@ -350,4 +350,8 @@
                                                             || __MPLS_TARGET_OSVER == 1090 \
                                                             || __MPLS_TARGET_OSVER <  1060)
 
+/* pthread_?chdir_np */
+#define __MPLS_SDK_SUPPORT_PTHREAD_CHDIR_NP__   (__MPLS_SDK_MAJOR < 101200)
+#define __MPLS_LIB_SUPPORT_PTHREAD_CHDIR_NP__   (__MPLS_TARGET_OSVER < 101200)
+
 #endif /* _MACPORTS_LEGACYSUPPORTDEFS_H_ */
diff --git a/src/add_symbols.c b/src/add_symbols.c
index 2243728..62af0fc 100644
--- a/src/add_symbols.c
+++ b/src/add_symbols.c
@@ -88,3 +88,23 @@ extern const char pthread_get_stacksize_np_tmp5 __asm("$ld$add$os10.5$_pthread_g
 extern const char pthread_get_stacksize_np_tmp9 __asm("$ld$add$os10.9$_pthread_get_stacksize_np"); __attribute__((visibility("default"))) const char pthread_get_stacksize_np_tmp9 = 0;
 extern const char pthread_get_stacksize_np_tmp10 __asm("$ld$add$os10.10$_pthread_get_stacksize_np"); __attribute__((visibility("default"))) const char pthread_get_stacksize_np_tmp10 = 0;
 #endif
+
+#if !(__MPLS_LIB_SUPPORT_PTHREAD_CHDIR_NP__)
+extern const char pthread_chdir_np_tmp4 __asm("$ld$add$os10.4$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp4 = 0;
+extern const char pthread_fchdir_np_tmp4 __asm("$ld$add$os10.4$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp4 = 0;
+extern const char pthread_chdir_np_tmp5 __asm("$ld$add$os10.5$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp5 = 0;
+extern const char pthread_fchdir_np_tmp5 __asm("$ld$add$os10.5$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp5 = 0;
+extern const char pthread_chdir_np_tmp6 __asm("$ld$add$os10.6$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp7 = 0;
+extern const char pthread_fchdir_np_tmp6 __asm("$ld$add$os10.6$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp6 = 0;
+extern const char pthread_chdir_np_tmp7 __asm("$ld$add$os10.7$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp7 = 0;
+extern const char pthread_fchdir_np_tmp7 __asm("$ld$add$os10.7$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp7 = 0;
+extern const char pthread_chdir_np_tmp8 __asm("$ld$add$os10.8$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp8 = 0;
+extern const char pthread_fchdir_np_tmp8 __asm("$ld$add$os10.8$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp8 = 0;
+extern const char pthread_chdir_np_tmp9 __asm("$ld$add$os10.9$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp9 = 0;
+extern const char pthread_fchdir_np_tmp9 __asm("$ld$add$os10.9$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp9 = 0;
+extern const char pthread_chdir_np_tmp10 __asm("$ld$add$os10.10$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp10 = 0;
+extern const char pthread_fchdir_np_tmp10 __asm("$ld$add$os10.10$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp10 = 0;
+extern const char pthread_chdir_np_tmp11 __asm("$ld$add$os10.11$_pthread_chdir_np"); __attribute__((visibility("default"))) const char pthread_chdir_np_tmp11 = 0;
+extern const char pthread_fchdir_np_tmp11 __asm("$ld$add$os10.11$_pthread_fchdir_np"); __attribute__((visibility("default"))) const char pthread_fchdir_np_tmp11 = 0;
+#endif
+
diff --git a/src/pthread_chdir_np.c b/src/pthread_chdir_np.c
new file mode 100644
index 0000000..07f750e
--- /dev/null
+++ b/src/pthread_chdir_np.c
@@ -0,0 +1,27 @@
+/* MP support header */
+#include "MacportsLegacySupport.h"
+
+#if __MPLS_LIB_SUPPORT_PTHREAD_CHDIR_NP__
+
+#include <sys/syscall.h>
+#include <unistd.h>
+
+int pthread_chdir_np(const char *path) {
+#if __MPLS_TARGET_OSVER >= 1050
+  return syscall(SYS___pthread_chdir, path);
+#else
+  // the pthread_?chdir syscalls are available since 10.5
+  return -1;
+#endif
+}
+
+int pthread_fchdir_np(int fd) {
+#if __MPLS_TARGET_OSVER >= 1050
+  return syscall(SYS___pthread_fchdir, fd);
+#else
+  // the pthread_?chdir syscalls are available since 10.5
+  return -1;
+#endif
+}
+
+#endif /* __MPLS_LIB_SUPPORT_PTHREAD_CHDIR_NP__ */
