msvcrt: Import longjmp from ntdll for PE builds.
This commit is contained in:
parent
d538432d79
commit
c51c257b06
16 changed files with 31 additions and 87 deletions
|
@ -434,7 +434,7 @@
|
|||
@ cdecl -arch=win64 localtime(ptr) _localtime64
|
||||
@ cdecl log(double)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbstowcs(ptr str long)
|
||||
|
|
|
@ -1054,7 +1054,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -1739,7 +1739,7 @@
|
|||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl -arch=!i386 log10f(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbrlen(ptr long ptr)
|
||||
|
|
|
@ -1411,7 +1411,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -2097,7 +2097,7 @@
|
|||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl -arch=!i386 log10f(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbrlen(ptr long ptr)
|
||||
|
|
|
@ -1422,7 +1422,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -2269,7 +2269,7 @@
|
|||
@ cdecl logb(double)
|
||||
@ cdecl logbf(float)
|
||||
@ cdecl logbl(double) logb
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl lrint(double)
|
||||
@ cdecl lrintf(float)
|
||||
@ cdecl lrintl(double) lrint
|
||||
|
|
|
@ -409,7 +409,7 @@
|
|||
@ cdecl _lock(long)
|
||||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -780,7 +780,7 @@
|
|||
@ cdecl -arch=win64 localtime(ptr) _localtime64
|
||||
@ cdecl log(double)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbstowcs(ptr str long)
|
||||
|
|
|
@ -404,7 +404,7 @@
|
|||
@ cdecl _lock(long)
|
||||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -776,7 +776,7 @@
|
|||
@ cdecl -arch=win64 localtime(ptr) _localtime64
|
||||
@ cdecl log(double)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbstowcs(ptr str long)
|
||||
|
|
|
@ -726,7 +726,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -1420,7 +1420,7 @@
|
|||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl -arch=!i386 log10f(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbrlen(ptr long ptr)
|
||||
|
|
|
@ -704,7 +704,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -1392,7 +1392,7 @@
|
|||
@ cdecl log10(double)
|
||||
@ cdecl -arch=!i386 log10f(float)
|
||||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbrlen(ptr long ptr)
|
||||
|
|
|
@ -105,27 +105,6 @@ unsigned int CDECL __CxxQueryExceptionSize(void)
|
|||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
* longjmp (MSVCRT.@)
|
||||
*/
|
||||
void __cdecl MSVCRT_longjmp(_JUMP_BUFFER *jmp, int retval)
|
||||
{
|
||||
EXCEPTION_RECORD rec;
|
||||
|
||||
if (!retval) retval = 1;
|
||||
if (jmp->Frame)
|
||||
{
|
||||
rec.ExceptionCode = STATUS_LONGJUMP;
|
||||
rec.ExceptionFlags = 0;
|
||||
rec.ExceptionRecord = NULL;
|
||||
rec.ExceptionAddress = NULL;
|
||||
rec.NumberParameters = 1;
|
||||
rec.ExceptionInformation[0] = (DWORD_PTR)jmp;
|
||||
RtlUnwind((void *)jmp->Frame, (void *)jmp->Pc, &rec, IntToPtr(retval));
|
||||
}
|
||||
__wine_longjmp( (__wine_jmp_buf *)jmp, retval );
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _fpieee_flt (MSVCRT.@)
|
||||
*/
|
||||
|
|
|
@ -111,26 +111,6 @@ unsigned int CDECL __CxxQueryExceptionSize(void)
|
|||
*/
|
||||
__ASM_GLOBAL_FUNC( _setjmp, "b _setjmpex" );
|
||||
|
||||
/*******************************************************************
|
||||
* longjmp (MSVCRT.@)
|
||||
*/
|
||||
void __cdecl MSVCRT_longjmp(_JUMP_BUFFER *jmp, int retval)
|
||||
{
|
||||
EXCEPTION_RECORD rec;
|
||||
|
||||
if (!retval) retval = 1;
|
||||
if (jmp->Frame)
|
||||
{
|
||||
rec.ExceptionCode = STATUS_LONGJUMP;
|
||||
rec.ExceptionFlags = 0;
|
||||
rec.ExceptionRecord = NULL;
|
||||
rec.ExceptionAddress = NULL;
|
||||
rec.NumberParameters = 1;
|
||||
rec.ExceptionInformation[0] = (DWORD_PTR)jmp;
|
||||
RtlUnwind((void *)jmp->Frame, (void *)jmp->Lr, &rec, IntToPtr(retval));
|
||||
}
|
||||
__wine_longjmp( (__wine_jmp_buf *)jmp, retval );
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _fpieee_flt (MSVCRT.@)
|
||||
|
|
|
@ -105,27 +105,6 @@ unsigned int CDECL __CxxQueryExceptionSize(void)
|
|||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
* longjmp (MSVCRT.@)
|
||||
*/
|
||||
void __cdecl MSVCRT_longjmp( _JUMP_BUFFER *jmp, int retval )
|
||||
{
|
||||
EXCEPTION_RECORD rec;
|
||||
|
||||
if (!retval) retval = 1;
|
||||
if (jmp->Frame)
|
||||
{
|
||||
rec.ExceptionCode = STATUS_LONGJUMP;
|
||||
rec.ExceptionFlags = 0;
|
||||
rec.ExceptionRecord = NULL;
|
||||
rec.ExceptionAddress = NULL;
|
||||
rec.NumberParameters = 1;
|
||||
rec.ExceptionInformation[0] = (DWORD_PTR)jmp;
|
||||
RtlUnwind( (void *)jmp->Frame, (void *)jmp->Rip, &rec, IntToPtr(retval) );
|
||||
}
|
||||
__wine_longjmp( (__wine_jmp_buf *)jmp, retval );
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _fpieee_flt (MSVCRT.@)
|
||||
*/
|
||||
|
|
|
@ -27,9 +27,11 @@
|
|||
|
||||
#ifdef __i386__
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
#include <fpieee.h>
|
||||
#define longjmp ms_longjmp /* avoid prototype mismatch */
|
||||
#include <setjmp.h>
|
||||
#undef longjmp
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
|
@ -1074,7 +1076,7 @@ int WINAPIV __regs__setjmp3(_JUMP_BUFFER *jmp, int nb_args, ...)
|
|||
/*********************************************************************
|
||||
* longjmp (MSVCRT.@)
|
||||
*/
|
||||
void CDECL MSVCRT_longjmp(_JUMP_BUFFER *jmp, int retval)
|
||||
void __cdecl longjmp(_JUMP_BUFFER *jmp, int retval)
|
||||
{
|
||||
unsigned long cur_frame = 0;
|
||||
|
||||
|
|
|
@ -20,9 +20,11 @@
|
|||
|
||||
#if defined(__x86_64__) && !defined(__arm64ec__)
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
#include <fpieee.h>
|
||||
#define longjmp ms_longjmp /* avoid prototype mismatch */
|
||||
#include <setjmp.h>
|
||||
#undef longjmp
|
||||
|
||||
#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
|
@ -700,7 +702,8 @@ unsigned int CDECL __CxxQueryExceptionSize(void)
|
|||
/*******************************************************************
|
||||
* longjmp (MSVCRT.@)
|
||||
*/
|
||||
void __cdecl MSVCRT_longjmp( _JUMP_BUFFER *jmp, int retval )
|
||||
#ifndef __WINE_PE_BUILD
|
||||
void __cdecl longjmp( _JUMP_BUFFER *jmp, int retval )
|
||||
{
|
||||
EXCEPTION_RECORD rec;
|
||||
|
||||
|
@ -717,6 +720,7 @@ void __cdecl MSVCRT_longjmp( _JUMP_BUFFER *jmp, int retval )
|
|||
}
|
||||
__wine_longjmp( (__wine_jmp_buf *)jmp, retval );
|
||||
}
|
||||
#endif
|
||||
|
||||
/*******************************************************************
|
||||
* _local_unwind (MSVCRT.@)
|
||||
|
|
|
@ -672,7 +672,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -1368,7 +1368,7 @@
|
|||
@ cdecl log10(double)
|
||||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl -arch=!i386 log10f(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbrlen(ptr long ptr)
|
||||
|
|
|
@ -386,7 +386,7 @@
|
|||
@ cdecl _lock(long)
|
||||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -733,7 +733,7 @@
|
|||
@ cdecl -arch=win64 localtime(ptr) _localtime64
|
||||
@ cdecl log(double)
|
||||
@ cdecl log10(double)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl malloc(long)
|
||||
@ cdecl mblen(ptr long)
|
||||
@ cdecl mbstowcs(ptr str long)
|
||||
|
|
|
@ -570,7 +570,7 @@
|
|||
@ cdecl _locking(long long long)
|
||||
@ cdecl _logb(double) logb
|
||||
@ cdecl -arch=!i386 _logbf(float) logbf
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
|
||||
@ cdecl -arch=i386 _longjmpex(ptr long) longjmp
|
||||
@ cdecl _lrotl(long long) MSVCRT__lrotl
|
||||
@ cdecl _lrotr(long long) MSVCRT__lrotr
|
||||
@ cdecl _lsearch(ptr ptr ptr long ptr)
|
||||
|
@ -2405,7 +2405,7 @@
|
|||
@ cdecl logbf(float)
|
||||
@ cdecl logbl(double) logb
|
||||
@ cdecl -arch=!i386 logf(float)
|
||||
@ cdecl longjmp(ptr long) MSVCRT_longjmp
|
||||
@ cdecl longjmp(ptr long)
|
||||
@ cdecl lrint(double)
|
||||
@ cdecl lrintf(float)
|
||||
@ cdecl lrintl(double) lrint
|
||||
|
|
Loading…
Add table
Reference in a new issue