# HG changeset patch # User Volker Grabsch # Date 1274307386 -7200 # Node ID 05c8ebf4681d1993d44236909ef7fdad47652797 # Parent e55bb62b2970775bf572d85c9148d53620617112 add the autostatic patch to package pthreads diff -r e55bb62b2970 -r 05c8ebf4681d src/pthreads-1-autostatic.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pthreads-1-autostatic.patch Thu May 20 00:16:26 2010 +0200 @@ -0,0 +1,150 @@ +This file is part of mingw-cross-env. +See doc/index.html for further information. + +This patch has been taken from: +http://sourceware.org/ml/pthreads-win32/2010/msg00006.html + +diff -ur pthreads-win32-20091019.orig/GNUmakefile pthreads-win32-20091019/GNUmakefile +--- pthreads-win32-20091019.orig/GNUmakefile 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/GNUmakefile 2010-02-01 14:45:28.471432337 -0200 +@@ -63,7 +63,6 @@ + XOPT = + + RCFLAGS = --include-dir=. +-LFLAGS = -lwsock32 + + # ---------------------------------------------------------------------- + # The library can be built with some alternative behaviour to +diff -ur pthreads-win32-20091019.orig/pthread.c pthreads-win32-20091019/pthread.c +--- pthreads-win32-20091019.orig/pthread.c 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/pthread.c 2010-02-01 14:26:48.601487556 -0200 +@@ -49,6 +49,7 @@ + #include "condvar.c" + #include "create.c" + #include "dll.c" ++#include "autostatic.c" + #include "errno.c" + #include "exit.c" + #include "fork.c" +diff -ur pthreads-win32-20091019.orig/pthread_getspecific.c pthreads-win32-20091019/pthread_getspecific.c +--- pthreads-win32-20091019.orig/pthread_getspecific.c 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/pthread_getspecific.c 2010-02-01 14:28:36.603981857 -0200 +@@ -72,12 +72,10 @@ + else + { + int lasterror = GetLastError (); +- int lastWSAerror = WSAGetLastError (); + + ptr = TlsGetValue (key->key); + + SetLastError (lasterror); +- WSASetLastError (lastWSAerror); + } + + return ptr; +diff -ur pthreads-win32-20091019.orig/pthread.h pthreads-win32-20091019/pthread.h +--- pthreads-win32-20091019.orig/pthread.h 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/pthread.h 2010-02-02 16:51:05.047931915 -0200 +@@ -533,7 +533,7 @@ + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +-#ifndef PTW32_STATIC_LIB ++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__) + # ifdef PTW32_BUILD + # define PTW32_DLLPORT __declspec (dllexport) + # else +diff -ur pthreads-win32-20091019.orig/sched.h pthreads-win32-20091019/sched.h +--- pthreads-win32-20091019.orig/sched.h 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/sched.h 2010-02-02 16:51:00.665887720 -0200 +@@ -76,7 +76,7 @@ + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +-#ifndef PTW32_STATIC_LIB ++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__) + # ifdef PTW32_BUILD + # define PTW32_DLLPORT __declspec (dllexport) + # else +diff -ur pthreads-win32-20091019.orig/semaphore.h pthreads-win32-20091019/semaphore.h +--- pthreads-win32-20091019.orig/semaphore.h 2009-10-19 08:07:32.000000000 -0200 ++++ pthreads-win32-20091019/semaphore.h 2010-02-02 16:50:45.916576916 -0200 +@@ -75,7 +75,7 @@ + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +-#ifndef PTW32_STATIC_LIB ++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__) + # ifdef PTW32_BUILD + # define PTW32_DLLPORT __declspec (dllexport) + # else +--- /dev/null 2010-01-29 12:57:37.677072272 -0200 ++++ pthreads-win32-20091019/autostatic.c 2010-02-01 14:26:48.601487556 -0200 +@@ -0,0 +1,67 @@ ++/* ++ * autostatic.c ++ * ++ * Description: ++ * This translation unit implements static library initialisation. ++ * ++ * -------------------------------------------------------------------------- ++ * ++ * Pthreads-win32 - POSIX Threads Library for Win32 ++ * Copyright(C) 1998 John E. Bossom ++ * Copyright(C) 1999,2005 Pthreads-win32 contributors ++ * ++ * Contact Email: rpj@callisto.canberra.edu.au ++ * ++ * The current list of contributors is contained ++ * in the file CONTRIBUTORS included with the source ++ * code distribution. The list can also be seen at the ++ * following World Wide Web location: ++ * http://sources.redhat.com/pthreads-win32/contributors.html ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library in the file COPYING.LIB; ++ * if not, write to the Free Software Foundation, Inc., ++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef PTW32_STATIC_LIB ++ ++#include "pthread.h" ++#include "implement.h" ++ ++static void on_process_init(void) ++{ ++ pthread_win32_process_attach_np (); ++} ++ ++static void on_process_exit(void) ++{ ++ pthread_win32_thread_detach_np (); ++ pthread_win32_process_detach_np (); ++} ++ ++#ifdef __MINGW32__ ++# define attribute_section(a) __attribute__((section(a))) ++#elif defined(_MSC_VER) ++# define attribute_section(a) __pragma(section(a,long,read)); __declspec(allocate(a)) ++#else ++#error compiler not supported! ++#endif ++ ++attribute_section(".CRT$XCU") void *msc_ctor = on_process_init; ++attribute_section(".CRT$XPU") void *msc_dtor = on_process_exit; ++ ++attribute_section(".ctors" ) void *gcc_ctor = on_process_init; ++attribute_section(".dtors" ) void *gcc_dtor = on_process_exit; ++ ++#endif /* PTW32_STATIC_LIB */