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