diff --git a/backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch b/backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch new file mode 100755 index 0000000..e02e454 --- /dev/null +++ b/backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch @@ -0,0 +1,73 @@ +From 377c1b91e67af25613ccb72ee26449661cea8d8e Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka +Date: Thu, 8 Nov 2018 13:26:41 +0900 +Subject: [PATCH 12/18] w32: Use cast by uintptr_t for thread ID. + +* w32/npth.c (npth_init): Cast with uintptr_t. +(npth_setname_np, npth_create, npth_self): Likewise. + +-- + +In w32/npth.h, npth_t is unsigned long int type, which is 32-bit +for both of 32-bit machine and 64-bit machine. + +We use TlsSetValue, TlsGetValue and CreateThread API to handle +thread ID, which uses void * type, which is 64-bit on 64-bit +machine. + +Because the size is different on 64-bit machine, here, we use explicit +cast to integer type which has enough size to have pointer. + +Signed-off-by: NIIBE Yutaka +--- + w32/npth.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/w32/npth.c b/w32/npth.c +index 6ea6d19..41213c0 100644 +--- a/w32/npth.c ++++ b/w32/npth.c +@@ -351,7 +351,7 @@ npth_init (void) + thread = thread_table[thread_id]; + thread->handle = handle; + +- if (! TlsSetValue(tls_index, (LPVOID) thread_id)) ++ if (! TlsSetValue(tls_index, (LPVOID)(uintptr_t) thread_id)) + return map_error (GetLastError()); + + LEAVE(); +@@ -449,11 +449,11 @@ npth_setname_np (npth_t target_thread, const char *name) + static DWORD + thread_start (void *arg) + { +- npth_t thread_id = (npth_t) arg; ++ npth_t thread_id = (npth_t)(uintptr_t) arg; + npth_impl_t thread; + void *result; + +- if (! TlsSetValue(tls_index, (LPVOID) thread_id)) ++ if (! TlsSetValue(tls_index, (LPVOID)(uintptr_t) thread_id)) + /* FIXME: There is not much we can do here. */ + ; + +@@ -519,7 +519,7 @@ npth_create (npth_t *newthread, const npth_attr_t *user_attr, + + handle = CreateThread (NULL, 0, + (LPTHREAD_START_ROUTINE)thread_start, +- (void *) thread_id, CREATE_SUSPENDED, ++ (void *)(uintptr_t) thread_id, CREATE_SUSPENDED, + NULL); + if (handle == NULL) + { +@@ -556,7 +556,7 @@ npth_self (void) + if (thread_id == 0 && GetLastError() != ERROR_SUCCESS) + /* FIXME: Log the error. */ + ; +- return (npth_t) thread_id; ++ return (npth_t)(uintptr_t) thread_id; + } + + +-- +1.8.3.1 + diff --git a/npth.spec b/npth.spec index f2a23ce..705a7a1 100644 --- a/npth.spec +++ b/npth.spec @@ -1,6 +1,6 @@ Name: npth Version: 1.6 -Release: 1 +Release: 2 Summary: The New GNU Portable Threads library License: LGPLv2+ URL: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git @@ -19,6 +19,8 @@ stack, signal mask and errno variable. %package devel Summary: Development files for %{name} +Patch6000: backport-0001-w32-Use-cast-by-uintptr_t-for-thread-ID.patch + Requires: %{name}%{?_isa} = %{version}-%{release} %description devel @@ -55,7 +57,11 @@ make check %{_datadir}/aclocal/%{name}.m4 %changelog +* Mon Sep 28 2020 EulerOSWander <314264452@qq.com> - 1.6-2 +- Use cast by uintptr_t for thread ID. + * Thu Jul 23 2020 jinzhimin - 1.6-1 - Package update + * Tue Aug 13 2019 openEuler Buildteam - 1.5-7 - Package init