--- a/auth-pam.c
+++ b/auth-pam.c
@@ -159,7 +159,7 @@ sshpam_sigchld_handler(int sig)
 	}
 	if (WIFSIGNALED(sshpam_thread_status) &&
 	    WTERMSIG(sshpam_thread_status) == SIGTERM)
-		return;	/* terminated by pthread_cancel */
+		return;	/* terminated by pthread2_cancel */
 	if (!WIFEXITED(sshpam_thread_status))
 		sigdie("PAM: authentication thread exited unexpectedly");
 	if (WEXITSTATUS(sshpam_thread_status) != 0)
@@ -168,14 +168,14 @@ sshpam_sigchld_handler(int sig)
 
 /* ARGSUSED */
 static void
-pthread_exit(void *value)
+pthread2_exit(void *value)
 {
 	_exit(0);
 }
 
 /* ARGSUSED */
 static int
-pthread_create(sp_pthread_t *thread, const void *attr,
+pthread2_create(sp_pthread_t *thread, const void *attr,
     void *(*thread_start)(void *), void *arg)
 {
 	pid_t pid;
@@ -201,7 +201,7 @@ pthread_create(sp_pthread_t *thread, con
 }
 
 static int
-pthread_cancel(sp_pthread_t thread)
+pthread2_cancel(sp_pthread_t thread)
 {
 	signal(SIGCHLD, sshpam_oldsig);
 	return (kill(thread, SIGTERM));
@@ -209,7 +209,7 @@ pthread_cancel(sp_pthread_t thread)
 
 /* ARGSUSED */
 static int
-pthread_join(sp_pthread_t thread, void **value)
+pthread2_join(sp_pthread_t thread, void **value)
 {
 	int status;
 
@@ -509,7 +509,7 @@ sshpam_thread(void *ctxtp)
 	/* XXX - can't do much about an error here */
 	ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer);
 	buffer_free(&buffer);
-	pthread_exit(NULL);
+	pthread2_exit(NULL);
 
  auth_fail:
 	buffer_put_cstring(&buffer,
@@ -520,7 +520,7 @@ sshpam_thread(void *ctxtp)
 	else
 		ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer);
 	buffer_free(&buffer);
-	pthread_exit(NULL);
+	pthread2_exit(NULL);
 
 	return (NULL); /* Avoid warning for non-pthread case */
 }
@@ -532,8 +532,8 @@ sshpam_thread_cleanup(void)
 
 	debug3("PAM: %s entering", __func__);
 	if (ctxt != NULL && ctxt->pam_thread != 0) {
-		pthread_cancel(ctxt->pam_thread);
-		pthread_join(ctxt->pam_thread, NULL);
+		pthread2_cancel(ctxt->pam_thread);
+		pthread2_join(ctxt->pam_thread, NULL);
 		close(ctxt->pam_psock);
 		close(ctxt->pam_csock);
 		memset(ctxt, 0, sizeof(*ctxt));
@@ -698,7 +698,7 @@ sshpam_init_ctx(Authctxt *authctxt)
 	}
 	ctxt->pam_psock = socks[0];
 	ctxt->pam_csock = socks[1];
-	if (pthread_create(&ctxt->pam_thread, NULL, sshpam_thread, ctxt) == -1) {
+	if (pthread2_create(&ctxt->pam_thread, NULL, sshpam_thread, ctxt) == -1) {
 		error("PAM: failed to start authentication thread: %s",
 		    strerror(errno));
 		close(socks[0]);