Remove sick longjmp implementation via GetProcAddress ...


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@4045 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/crt/gccmain.c b/mingw-w64-crt/crt/gccmain.c
index c046e8d..a0e0483 100644
--- a/mingw-w64-crt/crt/gccmain.c
+++ b/mingw-w64-crt/crt/gccmain.c
@@ -12,13 +12,6 @@
 extern func_ptr __CTOR_LIST__[];
 extern func_ptr __DTOR_LIST__[];
 
-static HMODULE hMsvcrt = NULL;
-static int free_Msvcrt = 0;
-
-typedef void __cdecl flongjmp(jmp_buf _Buf,int _Value);
-
-flongjmp *fctMsvcrtLongJmp = NULL;
-
 void __do_global_dtors (void);
 void __do_global_ctors (void);
 void __main (void);
@@ -33,12 +26,6 @@
       (*(p)) ();
       p++;
     }
-  if (free_Msvcrt && hMsvcrt)
-    {
-      free_Msvcrt = 0;
-      FreeLibrary (hMsvcrt);
-      hMsvcrt = NULL;
-    }
 }
 
 void
@@ -47,19 +34,6 @@
   unsigned long nptrs = (unsigned long) (ptrdiff_t) __CTOR_LIST__[0];
   unsigned long i;
 
-  if (!hMsvcrt) {
-    hMsvcrt = GetModuleHandleA ("msvcr80.dll");
-    if (!hMsvcrt)
-      hMsvcrt = GetModuleHandleA ("msvcr70.dll");
-    if (!hMsvcrt)
-      hMsvcrt = GetModuleHandleA ("msvcrt.dll");
-    if (!hMsvcrt) {
-      hMsvcrt = LoadLibraryA ("msvcrt.dll");
-      free_Msvcrt = 1;
-    }
-    fctMsvcrtLongJmp = (flongjmp *) GetProcAddress( hMsvcrt, "longjmp");
-  }
-
   if (nptrs == (unsigned long) -1)
     {
       for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);
diff --git a/mingw-w64-crt/lib32/crtdll.def b/mingw-w64-crt/lib32/crtdll.def
index 594c581..05e640b 100644
--- a/mingw-w64-crt/lib32/crtdll.def
+++ b/mingw-w64-crt/lib32/crtdll.def
@@ -598,7 +598,7 @@
 ;_localtime32 = localtime
 log
 log10
-longjmp
+longjmp DATA
 malloc
 mblen
 mbstowcs
diff --git a/mingw-w64-crt/lib32/msvcr100.def b/mingw-w64-crt/lib32/msvcr100.def
index f891f23..d40a088 100644
--- a/mingw-w64-crt/lib32/msvcr100.def
+++ b/mingw-w64-crt/lib32/msvcr100.def
@@ -1749,7 +1749,7 @@
 localeconv
 log
 log10
-longjmp
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib32/msvcr80.def b/mingw-w64-crt/lib32/msvcr80.def
index 9be84da..752df0a 100644
--- a/mingw-w64-crt/lib32/msvcr80.def
+++ b/mingw-w64-crt/lib32/msvcr80.def
@@ -608,7 +608,7 @@
 ;_localtime32 = localtime
 log
 log10
-longjmp
+longjmp DATA
 malloc
 mblen
 mbstowcs
diff --git a/mingw-w64-crt/lib32/msvcr90.def b/mingw-w64-crt/lib32/msvcr90.def
index 1deb18d..970ad3c 100644
--- a/mingw-w64-crt/lib32/msvcr90.def
+++ b/mingw-w64-crt/lib32/msvcr90.def
@@ -1381,7 +1381,7 @@
 localeconv
 log
 log10
-longjmp 
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib32/msvcr90d.def b/mingw-w64-crt/lib32/msvcr90d.def
index b2502b6..b58c043 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def
+++ b/mingw-w64-crt/lib32/msvcr90d.def
@@ -1453,7 +1453,7 @@
 localeconv
 log
 log10
-longjmp 
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib32/msvcrt.def b/mingw-w64-crt/lib32/msvcrt.def
index d7ff249..dab789e 100644
--- a/mingw-w64-crt/lib32/msvcrt.def
+++ b/mingw-w64-crt/lib32/msvcrt.def
@@ -607,7 +607,7 @@
 ;_localtime32 = localtime
 log
 log10
-longjmp
+longjmp DATA
 malloc
 mblen
 mbstowcs
diff --git a/mingw-w64-crt/lib64/msvcr100.def b/mingw-w64-crt/lib64/msvcr100.def
index 33c76c9..2df4c9d 100644
--- a/mingw-w64-crt/lib64/msvcr100.def
+++ b/mingw-w64-crt/lib64/msvcr100.def
@@ -1708,7 +1708,7 @@
 log10
 log10f
 logf
-longjmp
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib64/msvcr90.def b/mingw-w64-crt/lib64/msvcr90.def
index 5a23b56..74084b7 100644
--- a/mingw-w64-crt/lib64/msvcr90.def
+++ b/mingw-w64-crt/lib64/msvcr90.def
@@ -1326,7 +1326,7 @@
 log10
 log10f
 logf
-longjmp
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib64/msvcr90d.def b/mingw-w64-crt/lib64/msvcr90d.def
index c7d5b58..43043b4 100644
--- a/mingw-w64-crt/lib64/msvcr90d.def
+++ b/mingw-w64-crt/lib64/msvcr90d.def
@@ -1392,7 +1392,7 @@
 log10
 log10f
 logf
-longjmp
+longjmp DATA
 malloc
 mblen
 mbrlen
diff --git a/mingw-w64-crt/lib64/ntdll.def b/mingw-w64-crt/lib64/ntdll.def
index d08f498..cc81a06 100644
--- a/mingw-w64-crt/lib64/ntdll.def
+++ b/mingw-w64-crt/lib64/ntdll.def
@@ -1963,7 +1963,7 @@
 isxdigit
 labs
 log
-longjmp
+longjmp DATA
 mbstowcs
 memchr
 memcmp
diff --git a/mingw-w64-crt/misc/mingw_getsp.S b/mingw-w64-crt/misc/mingw_getsp.S
index 69216d8..4d67379 100644
--- a/mingw-w64-crt/misc/mingw_getsp.S
+++ b/mingw-w64-crt/misc/mingw_getsp.S
@@ -30,8 +30,8 @@
   xorl %eax,%eax
   movl %eax, (%rcx)
 #endif
-  leaq __MINGW_USYMBOL(fctMsvcrtLongJmp)(%rip), %rax
+  leaq __imp_longjmp(%rip), %rax
   jmpq *(%rax)
 #else
-  jmp *__MINGW_USYMBOL(fctMsvcrtLongJmp)
+  jmp *__imp__longjmp
 #endif