[ros-diffs] [fireball] 28223: - Rename exception.c to except.c to avoid conflict with another exception.c in rtl project. - Fix WDK compatibility.

fireball at svn.reactos.org fireball at svn.reactos.org
Tue Aug 7 22:46:25 CEST 2007


Author: fireball
Date: Wed Aug  8 00:46:24 2007
New Revision: 28223

URL: http://svn.reactos.org/svn/reactos?rev=28223&view=rev
Log:
- Rename exception.c to except.c to avoid conflict with another exception.c in rtl project.
- Fix WDK compatibility.

Added:
    trunk/reactos/lib/rtl/i386/except.c
      - copied unchanged from r28215, trunk/reactos/lib/rtl/i386/exception.c
Removed:
    trunk/reactos/lib/rtl/i386/exception.c
Modified:
    trunk/reactos/lib/rtl/rtl.h
    trunk/reactos/lib/rtl/rtl.rbuild

Removed: trunk/reactos/lib/rtl/i386/exception.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/i386/exception.c?rev=28222&view=auto
==============================================================================
--- trunk/reactos/lib/rtl/i386/exception.c (original)
+++ trunk/reactos/lib/rtl/i386/exception.c (removed)
@@ -1,336 +1,0 @@
-/*
- * COPYRIGHT:         See COPYING in the top level directory
- * PROJECT:           ReactOS Run-Time Library
- * PURPOSE:           User-mode exception support for IA-32
- * FILE:              lib/rtl/i386/exception.c
- * PROGRAMERS:        Alex Ionescu (alex at relsoft.net)
- *                    Casper S. Hornstrup (chorns at users.sourceforge.net)
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <rtl.h>
-#define NDEBUG
-#include <debug.h>
-
-/* PUBLIC FUNCTIONS **********************************************************/
-
-/*
- * @unimplemented
- */
-VOID
-NTAPI
-RtlGetCallersAddress(OUT PVOID *CallersAddress,
-                     OUT PVOID *CallersCaller)
-{
-    UNIMPLEMENTED;
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
-                     IN PCONTEXT Context)
-{
-    PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, NestedFrame = NULL;
-    DISPATCHER_CONTEXT DispatcherContext;
-    EXCEPTION_RECORD ExceptionRecord2;
-    EXCEPTION_DISPOSITION Disposition;
-    ULONG_PTR StackLow, StackHigh;
-    ULONG_PTR RegistrationFrameEnd;
-
-    /* Get the current stack limits and registration frame */
-    RtlpGetStackLimits(&StackLow, &StackHigh);
-    RegistrationFrame = RtlpGetExceptionList();
-
-    /* Now loop every frame */
-    while (RegistrationFrame != EXCEPTION_CHAIN_END)
-    {
-        /* Find out where it ends */
-        RegistrationFrameEnd = (ULONG_PTR)RegistrationFrame +
-                                sizeof(EXCEPTION_REGISTRATION_RECORD);
-
-        /* Make sure the registration frame is located within the stack */
-        if ((RegistrationFrameEnd > StackHigh) ||
-            ((ULONG_PTR)RegistrationFrame < StackLow) ||
-            ((ULONG_PTR)RegistrationFrame & 0x3))
-        {
-            /* Check if this happened in the DPC Stack */
-            if (RtlpHandleDpcStackException(RegistrationFrame,
-                                            RegistrationFrameEnd,
-                                            &StackLow,
-                                            &StackHigh))
-            {
-                /* Use DPC Stack Limits and restart */
-                continue;
-            }
-
-            /* Set invalid stack and return false */
-            ExceptionRecord->ExceptionFlags |= EXCEPTION_STACK_INVALID;
-            return FALSE;
-        }
-
-        /* Check if logging is enabled */
-        RtlpCheckLogException(ExceptionRecord,
-                              Context,
-                              RegistrationFrame,
-                              sizeof(*RegistrationFrame));
-
-        /* Call the handler */
-        Disposition = RtlpExecuteHandlerForException(ExceptionRecord,
-                                                     RegistrationFrame,
-                                                     Context,
-                                                     &DispatcherContext,
-                                                     RegistrationFrame->
-                                                     Handler);
-
-        /* Check if this is a nested frame */
-        if (RegistrationFrame == NestedFrame)
-        {
-            /* Mask out the flag and the nested frame */
-            ExceptionRecord->ExceptionFlags &= ~EXCEPTION_NESTED_CALL;
-            NestedFrame = NULL;
-        }
-
-        /* Handle the dispositions */
-        switch (Disposition)
-        {
-            /* Continue searching */
-            case ExceptionContinueExecution:
-
-                /* Check if it was non-continuable */
-                if (ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE)
-                {
-                    /* Set up the exception record */
-                    ExceptionRecord2.ExceptionRecord = ExceptionRecord;
-                    ExceptionRecord2.ExceptionCode =
-                        STATUS_NONCONTINUABLE_EXCEPTION;
-                    ExceptionRecord2.ExceptionFlags = EXCEPTION_NONCONTINUABLE;
-                    ExceptionRecord2.NumberParameters = 0;
-
-                    /* Raise the exception */
-                    RtlRaiseException(&ExceptionRecord2);
-                }
-                else
-                {
-                    /* Return to caller */
-                    return TRUE;
-                }
-
-            /* Continue searching */
-            case ExceptionContinueSearch:
-                break;
-
-            /* Nested exception */
-            case ExceptionNestedException:
-
-                /* Turn the nested flag on */
-                ExceptionRecord->ExceptionFlags |= EXCEPTION_NESTED_CALL;
-
-                /* Update the current nested frame */
-                if (DispatcherContext.RegistrationPointer > NestedFrame)
-                {
-                    /* Get the frame from the dispatcher context */
-                    NestedFrame = DispatcherContext.RegistrationPointer;
-                }
-                break;
-
-            /* Anything else */
-            default:
-
-                /* Set up the exception record */
-                ExceptionRecord2.ExceptionRecord = ExceptionRecord;
-                ExceptionRecord2.ExceptionCode = STATUS_INVALID_DISPOSITION;
-                ExceptionRecord2.ExceptionFlags = EXCEPTION_NONCONTINUABLE;
-                ExceptionRecord2.NumberParameters = 0;
-
-                /* Raise the exception */
-                RtlRaiseException(&ExceptionRecord2);
-                break;
-        }
-
-        /* Go to the next frame */
-        RegistrationFrame = RegistrationFrame->Next;
-    }
-
-    /* Unhandled, return false */
-    return FALSE;
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-RtlUnwind(IN PVOID TargetFrame OPTIONAL,
-          IN PVOID TargetIp OPTIONAL,
-          IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
-          IN PVOID ReturnValue)
-{
-    PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, OldFrame;
-    DISPATCHER_CONTEXT DispatcherContext;
-    EXCEPTION_RECORD ExceptionRecord2, ExceptionRecord3;
-    EXCEPTION_DISPOSITION Disposition;
-    ULONG_PTR StackLow, StackHigh;
-    ULONG_PTR RegistrationFrameEnd;
-    CONTEXT LocalContext;
-    PCONTEXT Context;
-
-    /* Get the current stack limits */
-    RtlpGetStackLimits(&StackLow, &StackHigh);
-
-    /* Check if we don't have an exception record */
-    if (!ExceptionRecord)
-    {
-        /* Overwrite the argument */
-        ExceptionRecord = &ExceptionRecord3;
-
-        /* Setup a local one */
-        ExceptionRecord3.ExceptionFlags = 0;
-        ExceptionRecord3.ExceptionCode = STATUS_UNWIND;
-        ExceptionRecord3.ExceptionRecord = NULL;
-        ExceptionRecord3.ExceptionAddress = RtlpGetExceptionAddress();
-        ExceptionRecord3.NumberParameters = 0;
-    }
-
-    /* Check if we have a frame */
-    if (TargetFrame)
-    {
-        /* Set it as unwinding */
-        ExceptionRecord->ExceptionFlags |= EXCEPTION_UNWINDING;
-    }
-    else
-    {
-        /* Set the Exit Unwind flag as well */
-        ExceptionRecord->ExceptionFlags |= (EXCEPTION_UNWINDING |
-                                            EXCEPTION_EXIT_UNWIND);
-    }
-
-    /* Now capture the context */
-    Context = &LocalContext;
-    LocalContext.ContextFlags = CONTEXT_INTEGER |
-                                CONTEXT_CONTROL |
-                                CONTEXT_SEGMENTS;
-    RtlpCaptureContext(Context);
-
-    /* Pop the current arguments off */
-    Context->Esp += sizeof(TargetFrame) +
-                    sizeof(TargetIp) +
-                    sizeof(ExceptionRecord) +
-                    sizeof(ReturnValue);
-
-    /* Set the new value for EAX */
-    Context->Eax = (ULONG)ReturnValue;
-
-    /* Get the current frame */
-    RegistrationFrame = RtlpGetExceptionList();
-
-    /* Now loop every frame */
-    while (RegistrationFrame != EXCEPTION_CHAIN_END)
-    {
-        /* If this is the target */
-        if (RegistrationFrame == TargetFrame) ZwContinue(Context, FALSE);
-
-        /* Check if the frame is too low */
-        if ((TargetFrame) &&
-            ((ULONG_PTR)TargetFrame < (ULONG_PTR)RegistrationFrame))
-        {
-            /* Create an invalid unwind exception */
-            ExceptionRecord2.ExceptionCode = STATUS_INVALID_UNWIND_TARGET;
-            ExceptionRecord2.ExceptionFlags = EXCEPTION_NONCONTINUABLE;
-            ExceptionRecord2.ExceptionRecord = ExceptionRecord;
-            ExceptionRecord2.NumberParameters = 0;
-
-            /* Raise the exception */
-            RtlRaiseException(&ExceptionRecord2);
-        }
-
-        /* Find out where it ends */
-        RegistrationFrameEnd = (ULONG_PTR)RegistrationFrame +
-                               sizeof(EXCEPTION_REGISTRATION_RECORD);
-
-        /* Make sure the registration frame is located within the stack */
-        if ((RegistrationFrameEnd > StackHigh) ||
-            ((ULONG_PTR)RegistrationFrame < StackLow) ||
-            ((ULONG_PTR)RegistrationFrame & 0x3))
-        {
-            /* Check if this happened in the DPC Stack */
-            if (RtlpHandleDpcStackException(RegistrationFrame,
-                                            RegistrationFrameEnd,
-                                            &StackLow,
-                                            &StackHigh))
-            {
-                /* Use DPC Stack Limits and restart */
-                continue;
-            }
-
-            /* Create an invalid stack exception */
-            ExceptionRecord2.ExceptionCode = STATUS_BAD_STACK;
-            ExceptionRecord2.ExceptionFlags = EXCEPTION_NONCONTINUABLE;
-            ExceptionRecord2.ExceptionRecord = ExceptionRecord;
-            ExceptionRecord2.NumberParameters = 0;
-
-            /* Raise the exception */
-            RtlRaiseException(&ExceptionRecord2);
-        }
-        else
-        {
-            /* Call the handler */
-            Disposition = RtlpExecuteHandlerForUnwind(ExceptionRecord,
-                                                      RegistrationFrame,
-                                                      Context,
-                                                      &DispatcherContext,
-                                                      RegistrationFrame->
-                                                      Handler);
-            switch(Disposition)
-            {
-                /* Continue searching */
-                case ExceptionContinueSearch:
-                    break;
-
-                /* Collission */
-                case ExceptionCollidedUnwind :
-
-                    /* Get the original frame */
-                    RegistrationFrame = DispatcherContext.RegistrationPointer;
-                    break;
-
-                /* Anything else */
-                default:
-
-                    /* Set up the exception record */
-                    ExceptionRecord2.ExceptionRecord = ExceptionRecord;
-                    ExceptionRecord2.ExceptionCode = STATUS_INVALID_DISPOSITION;
-                    ExceptionRecord2.ExceptionFlags = EXCEPTION_NONCONTINUABLE;
-                    ExceptionRecord2.NumberParameters = 0;
-
-                    /* Raise the exception */
-                    RtlRaiseException(&ExceptionRecord2);
-                    break;
-            }
-
-            /* Go to the next frame */
-            OldFrame = RegistrationFrame;
-            RegistrationFrame = RegistrationFrame->Next;
-
-            /* Remove this handler */
-            RtlpSetExceptionList(OldFrame);
-        }
-    }
-
-    /* Check if we reached the end */
-    if (TargetFrame == EXCEPTION_CHAIN_END)
-    {
-        /* Unwind completed, so we don't exit */
-        ZwContinue(Context, FALSE);
-    }
-    else
-    {
-        /* This is an exit_unwind or the frame wasn't present in the list */
-        ZwRaiseException(ExceptionRecord, Context, FALSE);
-    }
-}
-
-/* EOF */

Modified: trunk/reactos/lib/rtl/rtl.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/rtl.h?rev=28223&r1=28222&r2=28223&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/rtl.h (original)
+++ trunk/reactos/lib/rtl/rtl.h Wed Aug  8 00:46:24 2007
@@ -24,11 +24,15 @@
 #include <ndk/ntndk.h>
 
 /* Internal RTL header */
-#include <reactos/helper.h>
 #include "rtlp.h"
 
+/* PSEH Support */
+#include <reactos/helper.h>
 #include <pseh/pseh.h>
+
+#ifndef _MSC_VER
 #include <intrin.h>
+#endif
 
 #endif /* RTL_H */
 

Modified: trunk/reactos/lib/rtl/rtl.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/rtl.rbuild?rev=28223&r1=28222&r2=28223&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/rtl.rbuild (original)
+++ trunk/reactos/lib/rtl/rtl.rbuild Wed Aug  8 00:46:24 2007
@@ -10,7 +10,7 @@
         <directory name="i386">
             <file>debug_asm.S</file>
             <file>except_asm.s</file>
-            <file>exception.c</file>
+            <file>except.c</file>
             <file>random_asm.S</file>
             <file>rtlswap.S</file>
             <file>rtlmem.s</file>




More information about the Ros-diffs mailing list