Upstream-status: Taken from . This is needed for the 64bit Hurd statically linked tar non to hang when issuing a warning. since the move of libpthread functions to libc, glibc dropped the use of __libc_ptf_call. But htl hasn't made the move yet, so we have to use __libc_ptf_call there for now. Index: glibc-2.36/misc/error.c =================================================================== --- glibc-2.36.orig/misc/error.c +++ glibc-2.36/misc/error.c @@ -240,7 +240,8 @@ __error_internal (int status, int errnum /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; - __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); + __libc_ptf_call (__pthread_setcancelstate, + (PTHREAD_CANCEL_DISABLE, &state), 0); #endif flush_stdout (); @@ -262,7 +263,7 @@ __error_internal (int status, int errnum #ifdef _LIBC _IO_funlockfile (stderr); - __pthread_setcancelstate (state, NULL); + __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); #endif } @@ -306,7 +307,9 @@ __error_at_line_internal (int status, in /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; - __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); + __libc_ptf_call (__pthread_setcancelstate, + (PTHREAD_CANCEL_DISABLE, &state), + 0); #endif flush_stdout (); @@ -336,7 +339,7 @@ __error_at_line_internal (int status, in #ifdef _LIBC _IO_funlockfile (stderr); - __pthread_setcancelstate (state, NULL); + __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); #endif } Index: glibc-2.36/libio/iopopen.c =================================================================== --- glibc-2.36.orig/libio/iopopen.c +++ glibc-2.36/libio/iopopen.c @@ -281,9 +281,10 @@ _IO_new_proc_close (FILE *fp) do { int state; - __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); + __libc_ptf_call (__pthread_setcancelstate, + (PTHREAD_CANCEL_DISABLE, &state), 0); wait_pid = __waitpid (((_IO_proc_file *) fp)->pid, &wstatus, 0); - __pthread_setcancelstate (state, NULL); + __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); } while (wait_pid == -1 && errno == EINTR); if (wait_pid == -1) Index: glibc-2.36/stdlib/fmtmsg.c =================================================================== --- glibc-2.36.orig/stdlib/fmtmsg.c +++ glibc-2.36/stdlib/fmtmsg.c @@ -124,7 +124,8 @@ fmtmsg (long int classification, const c /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; - __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); + __libc_ptf_call (__pthread_setcancelstate, + (PTHREAD_CANCEL_DISABLE, &state), 0); __libc_lock_lock (lock); @@ -193,7 +194,7 @@ fmtmsg (long int classification, const c __libc_lock_unlock (lock); - __pthread_setcancelstate (state, NULL); + __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); return result; }