Author: fireball Date: Wed Aug 8 00:11:21 2007 New Revision: 28221
URL: http://svn.reactos.org/svn/reactos?rev=28221&view=rev Log: - Add RtlUnwind to headers, and make list.h MSVC-compatible. - Rename framebased.asm to framebased.S and write in GAS compatible assembly, instead of using nasmw. - Fix WDK compatibility.
Added: trunk/reactos/lib/pseh/i386/framebased.S - copied, changed from r28215, trunk/reactos/lib/pseh/i386/framebased.asm Removed: trunk/reactos/lib/pseh/i386/framebased.asm Modified: trunk/reactos/include/psdk/winnt.h trunk/reactos/include/reactos/wine/list.h trunk/reactos/lib/pseh/framebased.c trunk/reactos/lib/pseh/pseh.rbuild
Modified: trunk/reactos/include/psdk/winnt.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=28... ============================================================================== --- trunk/reactos/include/psdk/winnt.h (original) +++ trunk/reactos/include/psdk/winnt.h Wed Aug 8 00:11:21 2007 @@ -2885,6 +2885,16 @@ } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; #endif
+NTSYSAPI +VOID +NTAPI +RtlUnwind ( + IN PVOID TargetFrame OPTIONAL, + IN PVOID TargetIp OPTIONAL, + IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL, + IN PVOID ReturnValue + ); + #define RTL_SRWLOCK_INIT {0} typedef struct _RTL_SRWLOCK {
Modified: trunk/reactos/include/reactos/wine/list.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/wine/list.h... ============================================================================== --- trunk/reactos/include/reactos/wine/list.h (original) +++ trunk/reactos/include/reactos/wine/list.h Wed Aug 8 00:11:21 2007 @@ -140,7 +140,7 @@ }
/* count the elements of a list */ -inline static unsigned int list_count( const struct list *list ) +__inline static unsigned int list_count( const struct list *list ) { unsigned count = 0; const struct list *ptr;
Modified: trunk/reactos/lib/pseh/framebased.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/framebased.c?rev=2... ============================================================================== --- trunk/reactos/lib/pseh/framebased.c (original) +++ trunk/reactos/lib/pseh/framebased.c Wed Aug 8 00:11:21 2007 @@ -20,6 +20,7 @@ DEALINGS IN THE SOFTWARE. */
+#define _NTSYSTEM_ #define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h> @@ -281,7 +282,7 @@ extern _SEHRegistration_t * __cdecl _SEHCurrentRegistration(void);
/* Borland C++ uses a different decoration (i.e. none) for stdcall functions */ -extern void __stdcall RtlUnwind(void *, void *, void *, void *); +extern void __stdcall RtlUnwind(void *, void *, PEXCEPTION_RECORD, void *); void const * _SEHRtlUnwind = RtlUnwind;
static void __stdcall _SEHLocalUnwind
Copied: trunk/reactos/lib/pseh/i386/framebased.S (from r28215, trunk/reactos/lib/pseh/i386/framebased.asm) URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/i386/framebased.S?... ============================================================================== --- trunk/reactos/lib/pseh/i386/framebased.asm (original) +++ trunk/reactos/lib/pseh/i386/framebased.S Wed Aug 8 00:11:21 2007 @@ -1,36 +1,37 @@ -; Copyright (c) 2004/2005 KJK::Hyperion +// Copyright (c) 2004/2005 KJK::Hyperion
-; Permission is hereby granted, free of charge, to any person obtaining a copy -; of this software and associated documentation files (the "Software"), to deal -; in the Software without restriction, including without limitation the rights -; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -; copies of the Software, and to permit persons to whom the Software is -; furnished to dos so, subject to the following conditions: +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to dos so, subject to the following conditions:
-; The above copyright notice and this permission notice shall be included in all -; copies or substantial portions of the Software. +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software.
-; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -; SOFTWARE. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE.
-segment .text use32 +.text +.intel_syntax noprefix
-global __SEHCleanHandlerEnvironment +.globl __SEHCleanHandlerEnvironment __SEHCleanHandlerEnvironment: cld ret
-global __SEHCurrentRegistration +.globl __SEHCurrentRegistration __SEHCurrentRegistration: mov eax, [fs:0] ret
-global __SEHRegisterFrame +.globl __SEHRegisterFrame __SEHRegisterFrame: mov ecx, [esp+4] mov eax, [fs:0] @@ -38,28 +39,28 @@ mov [fs:0], ecx ret
-global __SEHUnregisterFrame +.globl __SEHUnregisterFrame __SEHUnregisterFrame: mov ecx, [fs:0] mov ecx, [ecx+0] mov [fs:0], ecx ret
-global __SEHGlobalUnwind +.globl __SEHGlobalUnwind __SEHGlobalUnwind:
- extern __SEHRtlUnwind +.extern __SEHRtlUnwind
-; RtlUnwind clobbers all the "don't clobber" registers, so we save them +// RtlUnwind clobbers all the "don't clobber" registers, so we save them push ebx mov ebx, [esp+8] push esi push edi
- push dword 0x0 ; ReturnValue - push dword 0x0 ; ExceptionRecord - push dword .RestoreRegisters ; TargetIp - push ebx ; TargetFrame + push 0 // ReturnValue + push 0 // ExceptionRecord + push .RestoreRegisters // TargetIp + push ebx // TargetFrame call [__SEHRtlUnwind]
.RestoreRegisters: @@ -69,4 +70,4 @@
ret
-; EOF +// EOF
Removed: trunk/reactos/lib/pseh/i386/framebased.asm URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/i386/framebased.as... ============================================================================== --- trunk/reactos/lib/pseh/i386/framebased.asm (original) +++ trunk/reactos/lib/pseh/i386/framebased.asm (removed) @@ -1,72 +1,0 @@ -; Copyright (c) 2004/2005 KJK::Hyperion - -; Permission is hereby granted, free of charge, to any person obtaining a copy -; of this software and associated documentation files (the "Software"), to deal -; in the Software without restriction, including without limitation the rights -; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -; copies of the Software, and to permit persons to whom the Software is -; furnished to dos so, subject to the following conditions: - -; The above copyright notice and this permission notice shall be included in all -; copies or substantial portions of the Software. - -; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -; SOFTWARE. - -segment .text use32 - -global __SEHCleanHandlerEnvironment -__SEHCleanHandlerEnvironment: - cld - ret - -global __SEHCurrentRegistration -__SEHCurrentRegistration: - mov eax, [fs:0] - ret - -global __SEHRegisterFrame -__SEHRegisterFrame: - mov ecx, [esp+4] - mov eax, [fs:0] - mov [ecx+0], eax - mov [fs:0], ecx - ret - -global __SEHUnregisterFrame -__SEHUnregisterFrame: - mov ecx, [fs:0] - mov ecx, [ecx+0] - mov [fs:0], ecx - ret - -global __SEHGlobalUnwind -__SEHGlobalUnwind: - - extern __SEHRtlUnwind - -; RtlUnwind clobbers all the "don't clobber" registers, so we save them - push ebx - mov ebx, [esp+8] - push esi - push edi - - push dword 0x0 ; ReturnValue - push dword 0x0 ; ExceptionRecord - push dword .RestoreRegisters ; TargetIp - push ebx ; TargetFrame - call [__SEHRtlUnwind] - -.RestoreRegisters: - pop edi - pop esi - pop ebx - - ret - -; EOF
Modified: trunk/reactos/lib/pseh/pseh.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/pseh.rbuild?rev=28... ============================================================================== --- trunk/reactos/lib/pseh/pseh.rbuild (original) +++ trunk/reactos/lib/pseh/pseh.rbuild Wed Aug 8 00:11:21 2007 @@ -2,7 +2,7 @@ <define name="__USE_W32API" /> <if property="ARCH" value="i386"> <directory name="i386"> - <file>framebased.asm</file> + <file>framebased.S</file> </directory> </if> <file>framebased.c</file>