Commit d30821a0 authored by Ulrich Weigand's avatar Ulrich Weigand Committed by Alexandre Julliard

Added _DebugOutput (KERNEL.328), LogApiThk (KERNEL.423), LogApiThkLSF

(KERNEL32.42), LogApiThkSL (KERNEL32.44), LogCBThkSL (KERNEL32.47), and SSConfirmSmallStack (KERNEL.704).
parent e99e844c
......@@ -269,7 +269,7 @@ file krnl386.exe
325 pascal16 LogParamError(word ptr ptr) LogParamError16
326 return IsRomFile 2 0
327 register K327() HandleParamError
328 stub _DebugOutput
328 pascal16 _DebugOutput() _DebugOutput
329 pascal16 K329(str word) DebugFillBuffer
332 long THHOOK(0 0 0 0 0 0 0 0)
334 pascal16 IsBadReadPtr(segptr word) IsBadReadPtr16
......@@ -335,7 +335,7 @@ file krnl386.exe
420 pascal GetFileAttributes(ptr) GetFileAttributes16
421 pascal16 SetFileAttributes(ptr long) SetFileAttributes16
422 pascal16 GetDiskFreeSpace(ptr ptr ptr ptr ptr) GetDiskFreeSpace16
423 stub LogApiThk
423 pascal16 LogApiThk(str) LogApiThk
431 pascal16 IsPeFormat(str word) IsPeFormat16
432 stub FileTimeToLocalFileTime
434 pascal16 UnicodeToAnsi(ptr ptr word) UnicodeToAnsi16
......@@ -510,7 +510,7 @@ file krnl386.exe
701 stub SSOnBigStack
702 stub SSCall
703 stub CallProc32WFix
704 stub SSConfirmSmallStack
704 register SSConfirmSmallStack() SSConfirmSmallStack
# Win95 krnl386.exe also exports ordinals 802-864,
......
......@@ -10,6 +10,8 @@
#include "winuser.h"
#include "ldt.h"
#include "stackframe.h"
#include "module.h"
#include "global.h"
#include "debug.h"
DEFAULT_DEBUG_CHANNEL(string)
......@@ -666,3 +668,45 @@ INT WINAPIV wsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec, ... )
va_end( valist );
return res;
}
/***********************************************************************
* _DebugOutput (KERNEL.328)
*/
void WINAPIV _DebugOutput( void )
{
VA_LIST16 valist;
WORD flags;
SEGPTR spec;
int i, nSeg = 0;
NE_MODULE *pModule;
char caller[101], temp[512];
/* Decode caller address */
pModule = NE_GetPtr( CURRENT_STACK16->cs );
if ( pModule )
{
SEGTABLEENTRY *pSeg = NE_SEG_TABLE( pModule );
for ( i = 0; i < pModule->seg_count; i++, pSeg++ )
if ( GlobalHandleToSel16( pSeg->hSeg ) == CURRENT_STACK16->cs )
{
nSeg = i+1;
break;
}
}
if ( nSeg )
sprintf( caller, "%s %02X:%04X", NE_MODULE_NAME( pModule ),
nSeg, CURRENT_STACK16->ip );
else
sprintf( caller, "%04X:%04X", CURRENT_STACK16->cs, CURRENT_STACK16->ip );
/* Build debug message string */
VA_START16( valist );
flags = VA_ARG16( valist, WORD );
spec = VA_ARG16( valist, SEGPTR );
wvsnprintf16( temp, sizeof(temp), (LPCSTR)PTR_SEG_TO_LIN(spec), valist );
/* Output */
DPRINTF( "_DebugOutput: %s %04X %s\n",
caller, flags, debugstr_an(temp, sizeof(temp)) );
}
......@@ -56,12 +56,12 @@ import ntdll.dll
39 register FreeMappedBuffer() FreeMappedBuffer
40 register OT_32ThkLSF() OT_32ThkLSF
41 stdcall ThunkInitLSF(long str long str str) ThunkInitLSF
42 stub LogApiThkLSF
42 register LogApiThkLSF() LogApiThkLSF
43 stdcall ThunkInitLS(long str long str str) ThunkInitLS
44 stub LogApiThkSL
44 register LogApiThkSL() LogApiThkSL
45 register Common32ThkLS() Common32ThkLS
46 stdcall ThunkInitSL(long str long str str) ThunkInitSL
47 stub LogCBThkSL
47 register LogCBThkSL() LogCBThkSL
48 stdcall ReleaseThunkLock(ptr) ReleaseThunkLock
49 stdcall RestoreThunkLock(long) RestoreThunkLock
50 stdcall AddAtomA(str) AddAtomA
......
......@@ -40,6 +40,47 @@ DECLARE_DEBUG_CHANNEL(win32)
***********************************************************************/
/***********************************************************************
* LogApiThk (KERNEL.423)
*/
void WINAPI LogApiThk( LPSTR func )
{
TRACE_(thunk)( "%s\n", func );
}
/***********************************************************************
* LogApiThkLSF (KERNEL32.42)
*
* NOTE: needs to preserve all registers!
*/
void WINAPI REGS_FUNC(LogApiThkLSF)( CONTEXT *context )
{
LPSTR func = (LPSTR)STACK32_POP( context );
TRACE_(thunk)( "%s\n", func );
}
/***********************************************************************
* LogApiThkSL (KERNEL32.44)
*
* NOTE: needs to preserve all registers!
*/
void WINAPI REGS_FUNC(LogApiThkSL)( CONTEXT *context )
{
LPSTR func = (LPSTR)STACK32_POP( context );
TRACE_(thunk)( "%s\n", func );
}
/***********************************************************************
* LogCBThkSL (KERNEL32.47)
*
* NOTE: needs to preserve all registers!
*/
void WINAPI REGS_FUNC(LogCBThkSL)( CONTEXT *context )
{
LPSTR func = (LPSTR)STACK32_POP( context );
TRACE_(thunk)( "%s\n", func );
}
/***********************************************************************
* Generates a FT_Prolog call.
*
* 0FB6D1 movzbl edx,cl
......@@ -812,6 +853,18 @@ BOOL WINAPI SSOnBigStack()
}
/**********************************************************************
* SSConfirmSmallStack KERNEL.704
*
* Abort if not on small stack.
*
* This must be a register routine as it has to preserve *all* registers.
*/
void WINAPI SSConfirmSmallStack( CONTEXT *context )
{
/* We are always on the small stack while in 16-bit code ... */
}
/**********************************************************************
* SSCall
* One of the real thunking functions. This one seems to be for 32<->32
* thunks. It should probably be capable of crossing processboundaries.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment