From 954922d0cd0fce0040d65ec048b939302a7f7a08 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 20 Aug 2011 19:04:55 +0000 Subject: [PATCH] [NTDLL] - Add exports for RtlInstallFunctionTableCallback and RtlRestoreContext (amd64 only) [KERNEL32] - Forward RtlCompareMemory, RtlCopyMemory, RtlDeleteFunctionTable and RtlInstallFunctionTableCallback to ntdll - Fix build with MSVC amd64 svn path=/trunk/; revision=53343 --- reactos/dll/ntdll/def/ntdll.spec | 2 ++ .../dll/win32/kernel32/client/amd64/fiber.S | 11 ++++++--- .../dll/win32/kernel32/client/amd64/thread.S | 9 ++++--- reactos/dll/win32/kernel32/kernel32.spec | 10 ++++---- reactos/lib/rtl/amd64/stubs.c | 24 +++++++++++++++++++ 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/reactos/dll/ntdll/def/ntdll.spec b/reactos/dll/ntdll/def/ntdll.spec index 891306e5ad3..29d5f7ac3ce 100644 --- a/reactos/dll/ntdll/def/ntdll.spec +++ b/reactos/dll/ntdll/def/ntdll.spec @@ -721,6 +721,7 @@ ;@ stdcall RtlInitializeStackTraceDataBase ; 5.1 SP2 and SP3, and 5.2 only @ stdcall RtlInsertElementGenericTable(ptr ptr long ptr) @ stdcall RtlInsertElementGenericTableAvl(ptr ptr long ptr) +@ stdcall -arch=x86_64 RtlInstallFunctionTableCallback(double double long ptr ptr ptr) @ stdcall RtlInt64ToUnicodeString(double long ptr) @ stdcall RtlIntegerToChar(long long long ptr) @ stdcall RtlIntegerToUnicodeString(long long ptr) @@ -855,6 +856,7 @@ @ stdcall RtlRemoveVectoredContinueHandler(ptr) @ stdcall RtlRemoveVectoredExceptionHandler(ptr) @ stdcall RtlResetRtlTranslations(ptr) +@ stdcall -arch=x86_64 RtlRestoreContext(ptr ptr) @ stdcall RtlRestoreLastWin32Error(long) RtlSetLastWin32Error ;@ stdcall RtlRevertMemoryStream @ stdcall RtlRunDecodeUnicodeString(long ptr) diff --git a/reactos/dll/win32/kernel32/client/amd64/fiber.S b/reactos/dll/win32/kernel32/client/amd64/fiber.S index 14fdfa5f713..9ff2728f5fa 100644 --- a/reactos/dll/win32/kernel32/client/amd64/fiber.S +++ b/reactos/dll/win32/kernel32/client/amd64/fiber.S @@ -8,20 +8,25 @@ #include +.code64 + PUBLIC BaseFiberStartup -.PROC BaseFiberStartup +FUNC BaseFiberStartup + .ENDPROLOG UNIMPLEMENTED BaseFiberStartup /* FIXME: TODO */ ret -.ENDP BaseFiberStartup +ENDFUNC BaseFiberStartup PUBLIC SwitchToFiber -SwitchToFiber: +FUNC SwitchToFiber + .ENDPROLOG UNIMPLEMENTED BaseFiberStartup /* FIXME: TODO */ ret +ENDFUNC SwitchToFiber END diff --git a/reactos/dll/win32/kernel32/client/amd64/thread.S b/reactos/dll/win32/kernel32/client/amd64/thread.S index 71ed562f816..8901689808f 100644 --- a/reactos/dll/win32/kernel32/client/amd64/thread.S +++ b/reactos/dll/win32/kernel32/client/amd64/thread.S @@ -7,16 +7,19 @@ */ #include +.code64 +EXTERN BaseThreadStartup:PROC +EXTERN BaseProcessStartup:PROC PUBLIC BaseThreadStartupThunk PUBLIC BaseProcessStartThunk BaseThreadStartupThunk: - + /* Start out fresh */ xor rbp, rbp - + push rbx /* lpParameter */ push rax /* lpStartAddress */ push 0 /* Return RIP */ @@ -26,7 +29,7 @@ BaseProcessStartThunk: /* Start out fresh */ xor rbp, rbp - + push rax /* lpStartAddress */ push 0 /* Return RIP */ jmp BaseProcessStartup diff --git a/reactos/dll/win32/kernel32/kernel32.spec b/reactos/dll/win32/kernel32/kernel32.spec index f43460966e7..c4a98a1d3c0 100644 --- a/reactos/dll/win32/kernel32/kernel32.spec +++ b/reactos/dll/win32/kernel32/kernel32.spec @@ -974,11 +974,11 @@ @ stdcall lstrlenA(str) @ stdcall lstrlenW(wstr) -@ cdecl -arch=x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable -@ stdcall -arch=x86_64 RtlCompareMemory(ptr ptr ptr) -@ stdcall -arch=x86_64 RtlCopyMemory(ptr ptr ptr) -@ stdcall -arch=x86_64 RtlDeleteFunctionTable(ptr) -@ stdcall -arch=x86_64 RtlInstallFunctionTableCallback(double double long ptr ptr ptr) +@ stdcall -arch=x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable +@ stdcall -arch=x86_64 RtlCompareMemory(ptr ptr ptr) ntdll.RtlCompareMemory +@ stdcall -arch=x86_64 RtlCopyMemory(ptr ptr ptr) ntdll.memcpy +@ stdcall -arch=x86_64 RtlDeleteFunctionTable(ptr) ntdll.RtlDeleteFunctionTable +@ stdcall -arch=x86_64 RtlInstallFunctionTableCallback(double double long ptr ptr ptr) ntdll.RtlInstallFunctionTableCallback @ stdcall -arch=x86_64 RtlLookupFunctionEntry(ptr ptr ptr) ntdll.RtlLookupFunctionEntry @ stdcall -arch=x86_64 RtlPcToFileHeader(ptr ptr) ntdll.RtlPcToFileHeader @ stdcall -arch=x86_64 RtlRaiseException(ptr) ntdll.RtlRaiseException diff --git a/reactos/lib/rtl/amd64/stubs.c b/reactos/lib/rtl/amd64/stubs.c index 6fae4e92aea..41110aaa4d5 100644 --- a/reactos/lib/rtl/amd64/stubs.c +++ b/reactos/lib/rtl/amd64/stubs.c @@ -51,3 +51,27 @@ RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, UNIMPLEMENTED; return FALSE; } + +NTSYSAPI +VOID +RtlRestoreContext( + PCONTEXT ContextRecord, + PEXCEPTION_RECORD ExceptionRecord) +{ + UNIMPLEMENTED; +} + +NTSYSAPI +BOOLEAN +RtlInstallFunctionTableCallback( + DWORD64 TableIdentifier, + DWORD64 BaseAddress, + DWORD Length, + PGET_RUNTIME_FUNCTION_CALLBACK Callback, + PVOID Context, + PCWSTR OutOfProcessCallbackDll) +{ + UNIMPLREMENTED; + return FALSE; +} +