1 # Bazaar merge directive format 2 (Bazaar 0.90)
2 # revision_id: dmitrij.ledkov@ubuntu.com-20100710232946-\
4 # target_branch: ../pthreads.bzr/
5 # testament_sha1: 521ee14bce6f871b77f9d6797b4460612a673359
6 # timestamp: 2010-07-11 02:10:15 +0100
8 # base_revision_id: git-v1:fe3f4b4cd92c4d6fc37139dd6cf8214c558676ca
11 === modified file 'GNUmakefile'
12 --- pthreadw32/GNUmakefile 2010-06-20 03:31:18 +0000
13 +++ pthreadw32/GNUmakefile 2010-07-10 23:29:46 +0000
16 # For cross compiling use e.g.
17 # make CROSS=i386-mingw32msvc- clean GC-inlined
21 -DLLTOOL = $(CROSS)dlltool
24 -RANLIB = $(CROSS)ranlib
29 +ifeq (,$(findstring x86_64, $(target)))
37 +DLLFLAG=-m i386:x86-64
38 +WINDRESFLAG=pe-x86-64
42 +DLLTOOL = $(target)dlltool $(DLLFLAG)
43 +CC = $(target)gcc $(BITNESS)
44 +CXX = $(target)g++ $(BITNESS)
45 +RANLIB = $(target)ranlib
46 +RC = $(target)windres -F $(WINDRESFLAG)
48 OPT = $(CLEANUP) -O3 -finline-functions
49 DOPT = $(CLEANUP) -g -O0
55 + pthreads_win32_config.h \
60 sync.o: sync.c $(SYNC_SRCS) $(INCL)
61 tsd.o: tsd.c $(TSD_SRCS) $(INCL)
62 version.o: version.rc $(INCL)
65 + install -d $(prefix)/$(target)/bin
66 + install -d $(prefix)/$(target)/lib
67 + install -d $(prefix)/$(target)/include
68 + install pthreadGC$(DLL_VER).dll $(prefix)/$(target)/bin/pthreadGC$(DLL_VER).dll
69 + install pthreadGC$(DLL_VER).dll $(prefix)/$(target)/lib/libpthread.a
70 + install pthreads_win32_config.h pthread.h sched.h semaphore.h $(prefix)/$(target)/include
72 === modified file 'context.h'
73 --- pthreadw32/context.h 2007-01-06 13:44:39 +0000
74 +++ pthreadw32/context.h 2010-07-10 23:05:44 +0000
79 -#if defined(_M_IX86) || defined(_X86_)
80 +#if defined(_M_IX86) || (defined(_X86_) && !defined(__amd64__))
81 #define PTW32_PROGCTR(Context) ((Context).Eip)
85 === modified file 'pthread.h'
86 --- pthreadw32/pthread.h 2010-06-20 03:31:18 +0000
87 +++ pthreadw32/pthread.h 2010-07-10 23:29:46 +0000
90 # define HAVE_STRUCT_TIMESPEC 1
91 # define HAVE_SIGNAL_H 1
92 -# undef HAVE_CONFIG_H
94 # pragma comment(lib, "pthread")
103 -#endif /* HAVE_CONFIG_H */
105 +#include "pthreads_win32_config.h"
109 +# include <_mingw.h>
110 +# ifdef __MINGW64_VERSION_MAJOR
111 + /* MinGW-w64 already has it: */
112 +# define HAVE_STRUCT_TIMESPEC 1
122 - * This is a duplicate of what is in the autoconf config.h,
123 + * This is a duplicate of what is in the autoconf pthreads_win32_config.h,
124 * which is only used when building the pthread-win32 libraries.
128 --- pthreadsw32/pthread_win32_attach_detach_np.c 2010-09-11 13:08:31.120188567 -0700
129 +++ xxx/pthread_win32_attach_detach_np.c 2010-09-11 13:08:40.209188369 -0700
131 * InterlockedCompareExchange routine in WIN64 is an intrinsic function.
132 * See PTW32_INTERLOCKED_COMPARE_EXCHANGE implement.h
134 + ptw32_interlocked_compare_exchange =
135 + (PTW32_INTERLOCKED_LONG (WINAPI *)
136 + (PTW32_INTERLOCKED_LPLONG, PTW32_INTERLOCKED_LONG,
137 + PTW32_INTERLOCKED_LONG)) InterlockedCompareExchange;
141 === modified file 'pthread_cancel.c'
142 --- pthreadw32/pthread_cancel.c 2010-06-20 03:31:18 +0000
143 +++ pthreadw32/pthread_cancel.c 2010-07-10 23:29:46 +0000
148 -ptw32_cancel_callback (DWORD unused)
149 +ptw32_cancel_callback (ULONG_PTR unused)
151 ptw32_throw (PTW32_EPS_CANCEL);
154 * this will result in a call to ptw32_RegisterCancelation and only
155 * the threadH arg will be used.
157 - ptw32_register_cancelation (ptw32_cancel_callback, threadH, 0);
158 + ptw32_register_cancelation ((PAPCFUNC)ptw32_cancel_callback, threadH, 0);
159 (void) pthread_mutex_unlock (&tp->cancelLock);
160 ResumeThread (threadH);
163 === modified file 'pthread_exit.c'
164 --- pthreadw32/pthread_exit.c 2007-05-15 13:46:42 +0000
165 +++ pthreadw32/pthread_exit.c 2010-07-10 23:05:44 +0000
169 #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__)
170 - _endthreadex ((unsigned) value_ptr);
171 + _endthreadex ((unsigned) (size_t) value_ptr);
176 === modified file 'pthread_spin_destroy.c'
177 --- pthreadw32/pthread_spin_destroy.c 2005-01-01 14:36:17 +0000
178 +++ pthreadw32/pthread_spin_destroy.c 2010-07-10 23:05:44 +0000
180 PTW32_INTERLOCKED_COMPARE_EXCHANGE ((PTW32_INTERLOCKED_LPLONG)
182 (PTW32_INTERLOCKED_LONG)
183 - PTW32_OBJECT_INVALID,
184 + (size_t)PTW32_OBJECT_INVALID,
185 (PTW32_INTERLOCKED_LONG)
186 - PTW32_SPIN_UNLOCKED))
187 + (size_t)PTW32_SPIN_UNLOCKED))
192 === modified file 'pthread_timechange_handler_np.c'
193 --- pthreadw32/pthread_timechange_handler_np.c 2005-01-01 14:36:17 +0000
194 +++ pthreadw32/pthread_timechange_handler_np.c 2010-07-10 23:05:44 +0000
197 LeaveCriticalSection (&ptw32_cond_list_lock);
199 - return (void *) (result != 0 ? EAGAIN : 0);
200 + return (void *) (size_t) (result != 0 ? EAGAIN : 0);
203 === renamed file 'config.h' => 'pthreads_win32_config.h'
204 === modified file 'ptw32_MCS_lock.c'
205 --- pthreadw32/ptw32_MCS_lock.c 2010-06-20 03:31:18 +0000
206 +++ pthreadw32/ptw32_MCS_lock.c 2010-07-10 23:29:46 +0000
207 @@ -101,10 +101,10 @@
209 ptw32_mcs_flag_set (LONG * flag)
211 - HANDLE e = (HANDLE)PTW32_INTERLOCKED_COMPARE_EXCHANGE(
212 + HANDLE e = (HANDLE)(size_t) PTW32_INTERLOCKED_COMPARE_EXCHANGE(
213 (PTW32_INTERLOCKED_LPLONG)flag,
214 - (PTW32_INTERLOCKED_LONG)-1,
215 - (PTW32_INTERLOCKED_LONG)0);
216 + (PTW32_INTERLOCKED_LONG)(size_t)-1,
217 + (PTW32_INTERLOCKED_LONG)(size_t)0);
220 /* another thread has already stored an event handle in the flag */
223 if (0 == PTW32_INTERLOCKED_COMPARE_EXCHANGE(
224 (PTW32_INTERLOCKED_LPLONG)flag,
225 - (PTW32_INTERLOCKED_LONG)e,
226 - (PTW32_INTERLOCKED_LONG)0))
227 + (PTW32_INTERLOCKED_LONG)(size_t)e,
228 + (PTW32_INTERLOCKED_LONG)(size_t)0))
230 /* stored handle in the flag. wait on it now. */
231 WaitForSingleObject(e, INFINITE);
233 node->next = 0; /* initially, no successor */
235 /* queue for the lock */
236 - pred = (ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_EXCHANGE((PTW32_INTERLOCKED_LPLONG)lock,
237 - (PTW32_INTERLOCKED_LONG)node);
238 + pred = (ptw32_mcs_local_node_t *)InterlockedExchangePointer((PVOID volatile *)lock,
243 @@ -184,17 +184,19 @@
245 ptw32_mcs_lock_t *lock = node->lock;
246 ptw32_mcs_local_node_t *next = (ptw32_mcs_local_node_t *)
247 - InterlockedExchangeAdd((LPLONG)&node->next,
248 - (LONG)0); /* MBR fence */
251 + InterlockedExchangeAdd((LPLONG)&node->next, 0); /* MBR fence */
253 + InterlockedExchangeAdd64((LONG64 *)&node->next, 0); /* MBR fence */
257 /* no known successor */
259 if (node == (ptw32_mcs_local_node_t *)
260 - PTW32_INTERLOCKED_COMPARE_EXCHANGE((PTW32_INTERLOCKED_LPLONG)lock,
261 - (PTW32_INTERLOCKED_LONG)0,
262 - (PTW32_INTERLOCKED_LONG)node))
263 + InterlockedCompareExchangePointer((LPVOID volatile *)lock,
267 /* no successor, lock is free now */
270 /* wait for successor */
271 ptw32_mcs_flag_wait(&node->nextFlag);
272 next = (ptw32_mcs_local_node_t *)
274 InterlockedExchangeAdd((LPLONG)&node->next, 0); /* MBR fence */
276 + InterlockedExchangeAdd64((LONG64 *)&node->next, 0); /* MBR fence */
282 === modified file 'ptw32_threadStart.c'
283 --- pthreadw32/ptw32_threadStart.c 2005-05-15 15:28:24 +0000
284 +++ pthreadw32/ptw32_threadStart.c 2010-07-10 23:05:44 +0000
288 #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__)
289 - _endthreadex ((unsigned) status);
290 + _endthreadex ((unsigned) (size_t) status);
297 #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__)
298 - return (unsigned) status;
299 + return (unsigned) (size_t) status;
302 } /* ptw32_threadStart */
304 === modified file 'ptw32_throw.c'
305 --- pthreadw32/ptw32_throw.c 2008-06-06 00:23:20 +0000
306 +++ pthreadw32/ptw32_throw.c 2010-07-10 23:05:44 +0000
310 case PTW32_EPS_CANCEL:
311 - exitCode = (unsigned) PTHREAD_CANCELED;
312 + exitCode = (unsigned) (size_t) PTHREAD_CANCELED;
317 - exitCode = (unsigned) sp->exitStatus;
318 + exitCode = (unsigned) (size_t) sp->exitStatus;
326 - return (DWORD) NULL;
327 + return (DWORD) (size_t) NULL;
332 === modified file 'tests/GNUmakefile'
333 --- pthreadw32/tests/GNUmakefile 2010-06-20 04:26:26 +0000
334 +++ pthreadw32/tests/GNUmakefile 2010-07-10 23:29:46 +0000
339 +# For cross compiling use, e.g. CROSS=x86_64-w64-mingw32msvc-
340 +# Although testing is supposed to be done on windows, this may still be
341 +# needed, because one may as well use an x86-hosted toolchain on an x64.
347 @@ -167,34 +172,34 @@
351 - $(MAKE) TEST=GC CC=gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass
352 + $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass
355 - $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass
356 + $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass
359 - $(MAKE) TEST=GC CC=g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass
360 + $(MAKE) TEST=GC CC=$(CROSS)g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass
363 - $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench
364 + $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench
367 - $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench
368 + $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench
371 - $(MAKE) TEST=GC CC=gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" DLL_VER="$(DLL_VER)d" all-pass
372 + $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" DLL_VER="$(DLL_VER)d" all-pass
375 - $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static
376 + $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static
379 $(ECHO) Stress tests can take a long time since they are trying to
380 $(ECHO) expose weaknesses that may be intermittant or statistically rare.
381 $(ECHO) A pass does not prove correctness, but may give greater confidence.
382 - $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress
383 + $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress
386 - $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress
387 + $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress
390 @ $(ECHO) ALL TESTS PASSED! Congratulations!
392 === modified file 'tests/barrier3.c'
393 --- pthreadw32/tests/barrier3.c 2005-01-01 14:36:17 +0000
394 +++ pthreadw32/tests/barrier3.c 2010-07-10 23:05:44 +0000
398 pthread_barrier_t barrier = NULL;
399 -static int result = 1;
400 +static DWORD_PTR result = 1;
402 void * func(void * arg)
405 === modified file 'tests/barrier5.c'
406 --- pthreadw32/tests/barrier5.c 2010-06-20 03:31:18 +0000
407 +++ pthreadw32/tests/barrier5.c 2010-07-10 23:29:46 +0000
414 int serialThreadsTotal;
416 pthread_t t[NUMTHREADS + 1];
418 for (i = 1; i <= j; i++)
420 assert(pthread_join(t[i], (void **) &result) == 0);
421 - serialThreadsTotal += result;
422 + serialThreadsTotal += (int)result;
425 assert(serialThreadsTotal == BARRIERMULTIPLE);
427 === modified file 'tests/cancel2.c'
428 --- pthreadw32/tests/cancel2.c 2005-01-01 14:36:17 +0000
429 +++ pthreadw32/tests/cancel2.c 2010-07-10 23:05:44 +0000
431 for (i = 1; i <= NUMTHREADS; i++)
435 + DWORD_PTR result = 0;
437 assert(pthread_join(t[i], (void **) &result) == 0);
438 fail = (result != (int) PTHREAD_CANCELED);
440 === modified file 'tests/cancel3.c'
441 --- pthreadw32/tests/cancel3.c 2010-06-22 01:19:08 +0000
442 +++ pthreadw32/tests/cancel3.c 2010-07-10 23:29:46 +0000
444 for (i = 1; i <= NUMTHREADS; i++)
448 + DWORD_PTR result = 0;
451 * The thread does not contain any cancelation points, so
453 === modified file 'tests/cancel4.c'
454 --- pthreadw32/tests/cancel4.c 2005-05-06 07:31:28 +0000
455 +++ pthreadw32/tests/cancel4.c 2010-07-10 23:05:44 +0000
460 - int result = ((int)PTHREAD_CANCELED + 1);
461 + int result = ((int)(size_t)PTHREAD_CANCELED + 1);
462 bag_t * bag = (bag_t *) arg;
464 assert(bag == &threadbag[bag->threadnum]);
466 for (bag->count = 0; bag->count < 20; bag->count++)
469 - return (void *) result;
470 + return (void *) (size_t)result;
475 for (i = 1; i <= NUMTHREADS; i++)
479 + DWORD_PTR result = 0;
482 * The thread does not contain any cancelation points, so
485 assert(pthread_join(t[i], (void **) &result) == 0);
487 - fail = (result == (int) PTHREAD_CANCELED);
488 + fail = (result == (int) (size_t) PTHREAD_CANCELED);
493 === modified file 'tests/cancel5.c'
494 --- pthreadw32/tests/cancel5.c 2005-01-01 14:36:17 +0000
495 +++ pthreadw32/tests/cancel5.c 2010-07-10 23:05:44 +0000
497 for (i = 1; i <= NUMTHREADS; i++)
501 + DWORD_PTR result = 0;
504 * The thread does not contain any cancelation points, so
506 === modified file 'tests/cancel6a.c'
507 --- pthreadw32/tests/cancel6a.c 2004-11-03 01:08:41 +0000
508 +++ pthreadw32/tests/cancel6a.c 2010-07-10 23:05:44 +0000
513 - int result = ((int)PTHREAD_CANCELED + 1);
514 + int result = ((int)(size_t)PTHREAD_CANCELED + 1);
515 bag_t * bag = (bag_t *) arg;
517 assert(bag == &threadbag[bag->threadnum]);
519 for (bag->count = 0; bag->count < 100; bag->count++)
522 - return (void *) result;
523 + return (void *) (size_t)result;
528 for (i = 1; i <= NUMTHREADS; i++)
532 + DWORD_PTR result = 0;
535 * The thread does not contain any cancelation points, so
538 assert(pthread_join(t[i], (void **) &result) == 0);
540 - fail = (result != (int) PTHREAD_CANCELED);
541 + fail = (result != (int) (size_t) PTHREAD_CANCELED);
546 === modified file 'tests/cancel6d.c'
547 --- pthreadw32/tests/cancel6d.c 2004-11-03 01:08:41 +0000
548 +++ pthreadw32/tests/cancel6d.c 2010-07-10 23:05:44 +0000
553 - int result = ((int)PTHREAD_CANCELED + 1);
554 + int result = ((int) (size_t) PTHREAD_CANCELED + 1);
555 bag_t * bag = (bag_t *) arg;
557 assert(bag == &threadbag[bag->threadnum]);
559 pthread_testcancel();
562 - return (void *) result;
563 + return (void *) (size_t) result;
567 @@ -165,11 +165,11 @@
568 for (i = 1; i <= NUMTHREADS; i++)
572 + DWORD_PTR result = 0;
574 assert(pthread_join(t[i], (void **) &result) == 0);
576 - fail = (result != (int) PTHREAD_CANCELED);
577 + fail = (result != (int) (size_t) PTHREAD_CANCELED);
582 === modified file 'tests/cancel8.c'
583 --- pthreadw32/tests/cancel8.c 2005-01-01 14:36:17 +0000
584 +++ pthreadw32/tests/cancel8.c 2010-07-10 23:05:44 +0000
586 assert(threadbag[i].self.p != NULL);
587 assert(pthread_kill(threadbag[i].self, 0) == ESRCH);
589 - fail = (result != (int) PTHREAD_CANCELED);
590 + fail = (result != (int) (size_t) PTHREAD_CANCELED);
595 === modified file 'tests/cleanup0.c'
596 --- pthreadw32/tests/cleanup0.c 2005-04-06 02:16:29 +0000
597 +++ pthreadw32/tests/cleanup0.c 2010-07-10 23:05:44 +0000
599 for (i = 1; i <= NUMTHREADS; i++)
603 + DWORD_PTR result = 0;
605 assert(pthread_join(t[i], (void **) &result) == 0);
608 === modified file 'tests/cleanup1.c'
609 --- pthreadw32/tests/cleanup1.c 2005-04-06 02:16:29 +0000
610 +++ pthreadw32/tests/cleanup1.c 2010-07-10 23:05:44 +0000
612 for (i = 1; i <= NUMTHREADS; i++)
616 + DWORD_PTR result = 0;
618 assert(pthread_join(t[i], (void **) &result) == 0);
621 === modified file 'tests/cleanup2.c'
622 --- pthreadw32/tests/cleanup2.c 2005-04-06 02:16:29 +0000
623 +++ pthreadw32/tests/cleanup2.c 2010-07-10 23:05:44 +0000
625 for (i = 1; i <= NUMTHREADS; i++)
629 + DWORD_PTR result = 0;
631 assert(pthread_join(t[i], (void **) &result) == 0);
634 === modified file 'tests/cleanup3.c'
635 --- pthreadw32/tests/cleanup3.c 2005-04-06 02:16:29 +0000
636 +++ pthreadw32/tests/cleanup3.c 2010-07-10 23:05:44 +0000
638 for (i = 1; i <= NUMTHREADS; i++)
642 + DWORD_PTR result = 0;
644 assert(pthread_join(t[i], (void **) &result) == 0);
647 === modified file 'tests/condvar1_2.c'
648 --- pthreadw32/tests/condvar1_2.c 2005-01-01 14:36:17 +0000
649 +++ pthreadw32/tests/condvar1_2.c 2010-07-10 23:05:44 +0000
655 + DWORD_PTR result = -1;
658 for (k = 0; k < NUM_LOOPS; k++)
660 === modified file 'tests/condvar2.c'
661 --- pthreadw32/tests/condvar2.c 2005-05-06 07:31:28 +0000
662 +++ pthreadw32/tests/condvar2.c 2010-07-10 23:05:44 +0000
664 /* get current system time */
665 _ftime(&currSysTime);
667 - abstime.tv_sec = currSysTime.time;
668 + abstime.tv_sec = (long)currSysTime.time;
669 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
673 assert(pthread_mutex_unlock(&mutex) == 0);
676 - int result = pthread_cond_destroy(&cv);
677 + DWORD_PTR result = pthread_cond_destroy(&cv);
680 fprintf(stderr, "Result = %s\n", error_string[result]);
682 === modified file 'tests/condvar2_1.c'
683 --- pthreadw32/tests/condvar2_1.c 2005-01-01 14:36:17 +0000
684 +++ pthreadw32/tests/condvar2_1.c 2010-07-10 23:05:44 +0000
688 pthread_t t[NUMTHREADS + 1];
690 + DWORD_PTR result = 0;
691 struct _timeb currSysTime;
692 const DWORD NANOSEC_PER_MILLISEC = 1000000;
695 /* get current system time */
696 _ftime(&currSysTime);
698 - abstime.tv_sec = currSysTime.time;
699 + abstime.tv_sec = (long)currSysTime.time;
700 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
704 === modified file 'tests/condvar3.c'
705 --- pthreadw32/tests/condvar3.c 2005-04-25 14:42:37 +0000
706 +++ pthreadw32/tests/condvar3.c 2010-07-10 23:05:44 +0000
708 /* get current system time */
709 _ftime(&currSysTime);
711 - abstime.tv_sec = currSysTime.time;
712 + abstime.tv_sec = (long)currSysTime.time;
713 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
715 assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0);
717 === modified file 'tests/condvar3_1.c'
718 --- pthreadw32/tests/condvar3_1.c 2005-04-25 14:42:37 +0000
719 +++ pthreadw32/tests/condvar3_1.c 2010-07-10 23:05:44 +0000
723 pthread_t t[NUMTHREADS + 1];
725 + DWORD_PTR result = 0;
726 struct _timeb currSysTime;
727 const DWORD NANOSEC_PER_MILLISEC = 1000000;
730 /* get current system time */
731 _ftime(&currSysTime);
733 - abstime.tv_sec = currSysTime.time;
734 + abstime.tv_sec = (long)currSysTime.time;
735 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
739 === modified file 'tests/condvar3_2.c'
740 --- pthreadw32/tests/condvar3_2.c 2005-04-25 14:42:37 +0000
741 +++ pthreadw32/tests/condvar3_2.c 2010-07-10 23:05:44 +0000
745 pthread_t t[NUMTHREADS + 1];
747 + DWORD_PTR result = 0;
748 struct _timeb currSysTime;
749 const DWORD NANOSEC_PER_MILLISEC = 1000000;
752 /* get current system time */
753 _ftime(&currSysTime);
755 - abstime.tv_sec = abstime.tv_sec = currSysTime.time + 5;
756 + abstime.tv_sec = abstime.tv_sec = (long)currSysTime.time + 5;
757 abstime.tv_nsec = abstime2.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
759 assert(pthread_mutex_lock(&mutex) == 0);
761 === modified file 'tests/condvar3_3.c'
762 --- pthreadw32/tests/condvar3_3.c 2005-04-25 14:42:37 +0000
763 +++ pthreadw32/tests/condvar3_3.c 2010-07-10 23:05:44 +0000
765 /* get current system time */
766 _ftime(&currSysTime);
768 - abstime.tv_sec = currSysTime.time;
769 + abstime.tv_sec = (long)currSysTime.time;
770 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
775 assert(pthread_mutex_lock(&mtx) == 0);
777 - abstime.tv_sec = currSysTime.time;
778 + abstime.tv_sec = (long)currSysTime.time;
779 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
783 === modified file 'tests/condvar4.c'
784 --- pthreadw32/tests/condvar4.c 2005-04-25 14:42:37 +0000
785 +++ pthreadw32/tests/condvar4.c 2010-07-10 23:05:44 +0000
787 /* get current system time */
788 _ftime(&currSysTime);
790 - abstime.tv_sec = currSysTime.time;
791 + abstime.tv_sec = (long)currSysTime.time;
792 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
797 _ftime(&currSysTime);
799 - abstime.tv_sec = currSysTime.time;
800 + abstime.tv_sec = (long)currSysTime.time;
801 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
805 === modified file 'tests/condvar5.c'
806 --- pthreadw32/tests/condvar5.c 2005-04-25 14:42:37 +0000
807 +++ pthreadw32/tests/condvar5.c 2010-07-10 23:05:44 +0000
809 /* get current system time */
810 _ftime(&currSysTime);
812 - abstime.tv_sec = currSysTime.time;
813 + abstime.tv_sec = (long)currSysTime.time;
814 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
819 _ftime(&currSysTime);
821 - abstime.tv_sec = currSysTime.time;
822 + abstime.tv_sec = (long)currSysTime.time;
823 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
827 === modified file 'tests/condvar6.c'
828 --- pthreadw32/tests/condvar6.c 2005-04-25 14:42:37 +0000
829 +++ pthreadw32/tests/condvar6.c 2010-07-10 23:05:44 +0000
832 _ftime(&currSysTime);
834 - abstime.tv_sec = currSysTime.time;
835 + abstime.tv_sec = (long)currSysTime.time;
836 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
840 === modified file 'tests/condvar7.c'
841 --- pthreadw32/tests/condvar7.c 2005-04-25 14:42:37 +0000
842 +++ pthreadw32/tests/condvar7.c 2010-07-10 23:05:44 +0000
845 _ftime(&currSysTime);
847 - abstime.tv_sec = currSysTime.time;
848 + abstime.tv_sec = (long)currSysTime.time;
849 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
851 abstime.tv_sec += 10;
853 === modified file 'tests/condvar8.c'
854 --- pthreadw32/tests/condvar8.c 2005-04-25 14:42:37 +0000
855 +++ pthreadw32/tests/condvar8.c 2010-07-10 23:05:44 +0000
858 _ftime(&currSysTime);
860 - abstime.tv_sec = currSysTime.time;
861 + abstime.tv_sec = (long)currSysTime.time;
862 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
864 abstime.tv_sec += 10;
866 === modified file 'tests/condvar9.c'
867 --- pthreadw32/tests/condvar9.c 2005-04-25 14:42:37 +0000
868 +++ pthreadw32/tests/condvar9.c 2010-07-10 23:05:44 +0000
871 _ftime(&currSysTime);
873 - abstime.tv_sec = currSysTime.time;
874 + abstime.tv_sec = (long)currSysTime.time;
875 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
879 === modified file 'tests/delay2.c'
880 --- pthreadw32/tests/delay2.c 2005-01-01 14:36:17 +0000
881 +++ pthreadw32/tests/delay2.c 2010-07-10 23:05:44 +0000
883 main(int argc, char * argv[])
887 + DWORD_PTR result = 0;
889 assert(pthread_mutex_lock(&mx) == 0);
892 === modified file 'tests/exception1.c'
893 --- pthreadw32/tests/exception1.c 2005-01-01 14:36:17 +0000
894 +++ pthreadw32/tests/exception1.c 2010-07-10 23:05:44 +0000
896 for (i = 0; i < NUMTHREADS; i++)
900 + DWORD_PTR result = 0;
902 /* Canceled thread */
903 assert(pthread_join(ct[i], (void **) &result) == 0);
905 === modified file 'tests/inherit1.c'
906 --- pthreadw32/tests/inherit1.c 2005-01-01 14:36:17 +0000
907 +++ pthreadw32/tests/inherit1.c 2010-07-10 23:05:44 +0000
909 struct sched_param param;
911 assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0);
912 - return (void *) param.sched_priority;
913 + return (void *) (size_t) param.sched_priority;
918 assert(pthread_attr_setschedparam(&attr, ¶m) == 0);
919 assert(pthread_create(&t, &attr, func, NULL) == 0);
920 pthread_join(t, &result);
921 - assert((int) result == mainParam.sched_priority);
922 + assert((int) (size_t)result == mainParam.sched_priority);
927 === modified file 'tests/join0.c'
928 --- pthreadw32/tests/join0.c 2005-05-15 15:28:24 +0000
929 +++ pthreadw32/tests/join0.c 2010-07-10 23:05:44 +0000
931 main(int argc, char * argv[])
937 /* Create a single thread and wait for it to exit. */
938 assert(pthread_create(&id, NULL, func, (void *) 123) == 0);
940 === modified file 'tests/join1.c'
941 --- pthreadw32/tests/join1.c 2005-05-15 15:28:24 +0000
942 +++ pthreadw32/tests/join1.c 2010-07-10 23:05:44 +0000
950 /* Create a few threads and then exit. */
951 for (i = 0; i < 4; i++)
953 === modified file 'tests/join2.c'
954 --- pthreadw32/tests/join2.c 2005-05-15 15:28:24 +0000
955 +++ pthreadw32/tests/join2.c 2010-07-10 23:05:44 +0000
963 /* Create a few threads and then exit. */
964 for (i = 0; i < 4; i++)
966 === modified file 'tests/join3.c'
967 --- pthreadw32/tests/join3.c 2005-05-15 15:28:24 +0000
968 +++ pthreadw32/tests/join3.c 2010-07-10 23:05:44 +0000
976 /* Create a few threads and then exit. */
977 for (i = 0; i < 4; i++)
979 === modified file 'tests/mutex6e.c'
980 --- pthreadw32/tests/mutex6e.c 2005-01-01 14:36:17 +0000
981 +++ pthreadw32/tests/mutex6e.c 2010-07-10 23:05:44 +0000
987 + DWORD_PTR result = 0;
990 assert(pthread_mutexattr_init(&mxAttr) == 0);
992 === modified file 'tests/mutex6es.c'
993 --- pthreadw32/tests/mutex6es.c 2005-01-01 14:36:17 +0000
994 +++ pthreadw32/tests/mutex6es.c 2010-07-10 23:05:44 +0000
1000 + DWORD_PTR result = 0;
1002 assert(mutex == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER);
1005 === modified file 'tests/mutex6r.c'
1006 --- pthreadw32/tests/mutex6r.c 2005-01-01 14:36:17 +0000
1007 +++ pthreadw32/tests/mutex6r.c 2010-07-10 23:05:44 +0000
1013 + DWORD_PTR result = 0;
1016 assert(pthread_mutexattr_init(&mxAttr) == 0);
1018 === modified file 'tests/mutex6rs.c'
1019 --- pthreadw32/tests/mutex6rs.c 2005-01-01 14:36:17 +0000
1020 +++ pthreadw32/tests/mutex6rs.c 2010-07-10 23:05:44 +0000
1026 + DWORD_PTR result = 0;
1028 assert(mutex == PTHREAD_RECURSIVE_MUTEX_INITIALIZER);
1031 === modified file 'tests/mutex7e.c'
1032 --- pthreadw32/tests/mutex7e.c 2005-01-01 14:36:17 +0000
1033 +++ pthreadw32/tests/mutex7e.c 2010-07-10 23:05:44 +0000
1039 + DWORD_PTR result = 0;
1042 assert(pthread_mutexattr_init(&mxAttr) == 0);
1044 === modified file 'tests/mutex7r.c'
1045 --- pthreadw32/tests/mutex7r.c 2005-01-01 14:36:17 +0000
1046 +++ pthreadw32/tests/mutex7r.c 2010-07-10 23:05:44 +0000
1052 + DWORD_PTR result = 0;
1055 assert(pthread_mutexattr_init(&mxAttr) == 0);
1057 === modified file 'tests/mutex8.c'
1058 --- pthreadw32/tests/mutex8.c 2002-02-20 04:39:56 +0000
1059 +++ pthreadw32/tests/mutex8.c 2010-07-10 23:05:44 +0000
1062 _ftime(&currSysTime);
1064 - abstime.tv_sec = currSysTime.time;
1065 + abstime.tv_sec = (long)currSysTime.time;
1066 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1068 abstime.tv_sec += 1;
1070 === modified file 'tests/mutex8e.c'
1071 --- pthreadw32/tests/mutex8e.c 2002-02-20 04:39:56 +0000
1072 +++ pthreadw32/tests/mutex8e.c 2010-07-10 23:05:44 +0000
1075 _ftime(&currSysTime);
1077 - abstime.tv_sec = currSysTime.time;
1078 + abstime.tv_sec = (long)currSysTime.time;
1079 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1081 abstime.tv_sec += 1;
1083 === modified file 'tests/mutex8n.c'
1084 --- pthreadw32/tests/mutex8n.c 2002-02-20 04:39:56 +0000
1085 +++ pthreadw32/tests/mutex8n.c 2010-07-10 23:05:44 +0000
1088 _ftime(&currSysTime);
1090 - abstime.tv_sec = currSysTime.time;
1091 + abstime.tv_sec = (long)currSysTime.time;
1092 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1094 abstime.tv_sec += 1;
1096 === modified file 'tests/mutex8r.c'
1097 --- pthreadw32/tests/mutex8r.c 2002-02-20 04:39:56 +0000
1098 +++ pthreadw32/tests/mutex8r.c 2010-07-10 23:05:44 +0000
1101 _ftime(&currSysTime);
1103 - abstime.tv_sec = currSysTime.time;
1104 + abstime.tv_sec = (long)currSysTime.time;
1105 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1107 abstime.tv_sec += 1;
1109 === modified file 'tests/priority1.c'
1110 --- pthreadw32/tests/priority1.c 2005-01-01 14:36:17 +0000
1111 +++ pthreadw32/tests/priority1.c 2010-07-10 23:05:44 +0000
1114 assert(pthread_getschedparam(threadID, &policy, ¶m) == 0);
1115 assert(policy == SCHED_OTHER);
1116 - return (void *) (param.sched_priority);
1117 + return (void *) (size_t) (param.sched_priority);
1123 assert(pthread_join(t, &result) == 0);
1125 - assert(param.sched_priority == (int) result);
1126 - printf("%10d %10d %10d\n", param.sched_priority, (int) result, prio);
1127 + assert(param.sched_priority == (int) (size_t) result);
1128 + printf("%10d %10d %10d\n", param.sched_priority, (int) (size_t) result, prio);
1133 === modified file 'tests/priority2.c'
1134 --- pthreadw32/tests/priority2.c 2005-01-01 14:36:17 +0000
1135 +++ pthreadw32/tests/priority2.c 2010-07-10 23:05:44 +0000
1137 assert(policy == SCHED_OTHER);
1138 result = pthread_barrier_wait(&endBarrier);
1139 assert(result == 0 || result == PTHREAD_BARRIER_SERIAL_THREAD);
1140 - return (void *) param.sched_priority;
1141 + return (void *) (size_t) param.sched_priority;
1146 assert(GetThreadPriority(pthread_getw32threadhandle_np(t)) ==
1147 validPriorities[param.sched_priority+(PTW32TEST_MAXPRIORITIES/2)]);
1148 pthread_join(t, &result);
1149 - assert(param.sched_priority == (int)result);
1150 + assert(param.sched_priority == (int)(size_t)result);
1155 === modified file 'tests/rwlock2_t.c'
1156 --- pthreadw32/tests/rwlock2_t.c 2005-01-01 14:36:17 +0000
1157 +++ pthreadw32/tests/rwlock2_t.c 2010-07-10 23:05:44 +0000
1160 _ftime(&currSysTime);
1162 - abstime.tv_sec = currSysTime.time;
1163 + abstime.tv_sec = (long)currSysTime.time;
1164 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1166 abstime.tv_sec += 1;
1168 === modified file 'tests/rwlock3_t.c'
1169 --- pthreadw32/tests/rwlock3_t.c 2005-01-01 14:36:17 +0000
1170 +++ pthreadw32/tests/rwlock3_t.c 2010-07-10 23:05:44 +0000
1173 _ftime(&currSysTime);
1175 - abstime.tv_sec = currSysTime.time;
1176 + abstime.tv_sec = (long)currSysTime.time;
1177 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1179 abstime.tv_sec += 1;
1181 === modified file 'tests/rwlock4_t.c'
1182 --- pthreadw32/tests/rwlock4_t.c 2005-01-01 14:36:17 +0000
1183 +++ pthreadw32/tests/rwlock4_t.c 2010-07-10 23:05:44 +0000
1186 _ftime(&currSysTime);
1188 - abstime.tv_sec = currSysTime.time;
1189 + abstime.tv_sec = (long)currSysTime.time;
1190 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1192 abstime.tv_sec += 1;
1194 === modified file 'tests/rwlock5_t.c'
1195 --- pthreadw32/tests/rwlock5_t.c 2005-01-01 14:36:17 +0000
1196 +++ pthreadw32/tests/rwlock5_t.c 2010-07-10 23:05:44 +0000
1199 _ftime(&currSysTime);
1201 - abstime.tv_sec = currSysTime.time;
1202 + abstime.tv_sec = (long)currSysTime.time;
1203 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1205 abstime.tv_sec += 1;
1207 === modified file 'tests/rwlock6.c'
1208 --- pthreadw32/tests/rwlock6.c 2005-01-01 14:36:17 +0000
1209 +++ pthreadw32/tests/rwlock6.c 2010-07-10 23:05:44 +0000
1214 - int wr1Result = 0;
1215 - int wr2Result = 0;
1217 + DWORD_PTR wr1Result = 0;
1218 + DWORD_PTR wr2Result = 0;
1219 + DWORD_PTR rdResult = 0;
1224 === modified file 'tests/rwlock6_t.c'
1225 --- pthreadw32/tests/rwlock6_t.c 2005-01-01 14:36:17 +0000
1226 +++ pthreadw32/tests/rwlock6_t.c 2010-07-10 23:05:44 +0000
1229 assert(pthread_rwlock_unlock(&rwlock1) == 0);
1231 - return ((void *) bankAccount);
1232 + return ((void *) (size_t) bankAccount);
1235 void * rdfunc(void * arg)
1238 _ftime(&currSysTime);
1240 - abstime.tv_sec = currSysTime.time;
1241 + abstime.tv_sec = (long)currSysTime.time;
1242 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1245 - if ((int) arg == 1)
1246 + if ((int) ((size_t) arg) == 1)
1248 abstime.tv_sec += 1;
1249 assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT);
1252 - else if ((int) arg == 2)
1253 + else if ((int) ((size_t) arg) == 2)
1255 abstime.tv_sec += 3;
1256 assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == 0);
1258 assert(pthread_rwlock_unlock(&rwlock1) == 0);
1261 - return ((void *) ba);
1262 + return ((void *) (size_t) ba);
1270 - int wr1Result = 0;
1271 - int wr2Result = 0;
1272 - int rd1Result = 0;
1273 - int rd2Result = 0;
1274 + DWORD_PTR wr1Result = 0;
1275 + DWORD_PTR wr2Result = 0;
1276 + DWORD_PTR rd1Result = 0;
1277 + DWORD_PTR rd2Result = 0;
1282 === modified file 'tests/rwlock6_t2.c'
1283 --- pthreadw32/tests/rwlock6_t2.c 2005-01-01 14:36:17 +0000
1284 +++ pthreadw32/tests/rwlock6_t2.c 2010-07-10 23:05:44 +0000
1288 result = pthread_rwlock_timedwrlock(&rwlock1, &abstime);
1289 - if ((int) arg == 1)
1290 + if ((int) ((size_t)arg) == 1)
1292 assert(result == 0);
1295 assert(pthread_rwlock_unlock(&rwlock1) == 0);
1296 - return ((void *) bankAccount);
1297 + return ((void *) (size_t) bankAccount);
1299 - else if ((int) arg == 2)
1300 + else if ((int) ((size_t)arg) == 2)
1302 assert(result == ETIMEDOUT);
1303 - return ((void *) 100);
1304 + return ((void *) (size_t) 100);
1307 - return ((void *) -1);
1308 + return ((void *) (size_t) -1);
1311 void * rdfunc(void * arg)
1314 assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT);
1316 - return ((void *) ba);
1317 + return ((void *) (size_t) ba);
1325 - int wr1Result = 0;
1326 - int wr2Result = 0;
1328 + DWORD_PTR wr1Result = 0;
1329 + DWORD_PTR wr2Result = 0;
1330 + DWORD_PTR rdResult = 0;
1331 struct _timeb currSysTime;
1332 const DWORD NANOSEC_PER_MILLISEC = 1000000;
1334 _ftime(&currSysTime);
1336 - abstime.tv_sec = currSysTime.time;
1337 + abstime.tv_sec = (long)currSysTime.time;
1338 abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
1340 abstime.tv_sec += 1;
1342 === modified file 'tests/semaphore1.c'
1343 --- pthreadw32/tests/semaphore1.c 2005-05-08 16:52:50 +0000
1344 +++ pthreadw32/tests/semaphore1.c 2010-07-10 23:05:44 +0000
1352 assert(pthread_create(&t, NULL, thr, NULL) == 0);
1353 assert(pthread_join(t, (void **)&result) == 0);
1355 === modified file 'tests/semaphore4.c'
1356 --- pthreadw32/tests/semaphore4.c 2005-01-01 14:36:17 +0000
1357 +++ pthreadw32/tests/semaphore4.c 2010-07-10 23:05:44 +0000
1359 //printf("value = %d\n", -value); fflush(stdout);
1360 assert(pthread_cancel(t[50]) == 0);
1364 assert(pthread_join(t[50], (void **) &result) == 0);
1365 // printf("result = %d\n", result); fflush(stdout);
1368 === modified file 'tests/spin3.c'
1369 --- pthreadw32/tests/spin3.c 2005-01-01 14:36:17 +0000
1370 +++ pthreadw32/tests/spin3.c 2010-07-10 23:05:44 +0000
1373 void * unlocker(void * arg)
1375 - int expectedResult = (int) arg;
1376 + int expectedResult = (int) (size_t) arg;
1379 assert(pthread_spin_unlock(&spin) == expectedResult);
1381 === modified file 'tests/spin4.c'
1382 --- pthreadw32/tests/spin4.c 2005-01-01 14:36:17 +0000
1383 +++ pthreadw32/tests/spin4.c 2010-07-10 23:05:44 +0000
1389 + DWORD_PTR result = 0;
1392 struct _timeb sysTime;
1394 === modified file 'tests/stress1.c'
1395 --- pthreadw32/tests/stress1.c 2010-06-20 03:31:18 +0000
1396 +++ pthreadw32/tests/stress1.c 2010-07-10 23:29:46 +0000
1399 masterThread (void * arg)
1401 - int dither = (int) arg;
1402 + int dither = (int) (size_t)arg;
1404 - timeout = (int) arg;
1405 + timeout = (int) (size_t)arg;
1407 pthread_barrier_wait(&startBarrier);
1410 assert(pthread_barrier_init(&readyBarrier, NULL, 3) == 0);
1411 assert(pthread_barrier_init(&holdBarrier, NULL, 3) == 0);
1413 - assert(pthread_create(&master, NULL, masterThread, (void *) timeout) == 0);
1414 + assert(pthread_create(&master, NULL, masterThread, (void *) (size_t)timeout) == 0);
1415 assert(pthread_create(&slave, NULL, slaveThread, NULL) == 0);
1419 === modified file 'tests/tsd1.c'
1420 --- pthreadw32/tests/tsd1.c 2005-05-08 16:52:50 +0000
1421 +++ pthreadw32/tests/tsd1.c 2010-07-10 23:05:44 +0000
1424 for (i = 1; i < NUM_THREADS; i++)
1427 + DWORD_PTR result = 0;
1429 assert(pthread_join(thread[i], (void **) &result) == 0);
1432 === modified file 'tests/tsd2.c'
1433 --- pthreadw32/tests/tsd2.c 2005-05-08 16:52:50 +0000
1434 +++ pthreadw32/tests/tsd2.c 2010-07-10 23:05:44 +0000
1437 for (i = 1; i < NUM_THREADS; i++)
1440 + DWORD_PTR result = 0;
1442 assert(pthread_join(thread[i], (void **) &result) == 0);
1445 === modified file 'version.rc'
1446 --- pthreadw32/version.rc 2005-05-19 04:19:35 +0000
1447 +++ pthreadw32/version.rc 2010-07-10 23:05:44 +0000
1452 - VALUE "FileDescription", "POSIX Threads for Windows32 Library\0"
1453 + VALUE "FileDescription", "POSIX Threads for Windows Library\0"
1454 VALUE "ProductVersion", PTW32_VERSION_STRING
1455 VALUE "FileVersion", PTW32_VERSION_STRING
1456 VALUE "InternalName", PTW32_VERSIONINFO_NAME