From 2f1c5a22a5a03f0ede45bf8b0417901bde43aa7d Mon Sep 17 00:00:00 2001 From: belliash Date: Sat, 25 Feb 2023 23:01:13 +0100 Subject: [PATCH] Add __C_specific_handler() and _except_handler3() stubs allowing to use '__try {} __except() {}' (SEH) constructions --- xtoskrnl/CMakeLists.txt | 3 ++- xtoskrnl/rtl/amd64/exsup.c | 36 ++++++++++++++++++++++++++++++++++++ xtoskrnl/rtl/i686/exsup.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 xtoskrnl/rtl/amd64/exsup.c create mode 100644 xtoskrnl/rtl/i686/exsup.c diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index 1927736..63d35ee 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -35,7 +35,8 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/rtl/plist.c ${XTOSKRNL_SOURCE_DIR}/rtl/string.c ${XTOSKRNL_SOURCE_DIR}/rtl/widestr.c - ${XTOSKRNL_SOURCE_DIR}/rtl/${ARCH}/dispatch.c) + ${XTOSKRNL_SOURCE_DIR}/rtl/${ARCH}/dispatch.c + ${XTOSKRNL_SOURCE_DIR}/rtl/${ARCH}/exsup.c) # Set module definition SPEC file set_specfile(xtoskrnl.spec) diff --git a/xtoskrnl/rtl/amd64/exsup.c b/xtoskrnl/rtl/amd64/exsup.c new file mode 100644 index 0000000..b861b86 --- /dev/null +++ b/xtoskrnl/rtl/amd64/exsup.c @@ -0,0 +1,36 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/rtl/amd64/exsup.c + * DESCRIPTION: Exception handling for AMD64 architecture + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +XTAPI +EXCEPTION_DISPOSITION +__C_specific_handler(IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PVOID DispatcherContext) +{ + UNIMPLEMENTED; + + /* Continue execution */ + return ExceptionContinueExecution; +} + +XTCDECL +INT +_except_handler3(PEXCEPTION_RECORD ExceptionRecord, + PVOID Registration, + PCONTEXT Context, + PVOID Dispatcher) +{ + UNIMPLEMENTED; + + /* Handler not found */ + return 0; +} diff --git a/xtoskrnl/rtl/i686/exsup.c b/xtoskrnl/rtl/i686/exsup.c new file mode 100644 index 0000000..e9398ce --- /dev/null +++ b/xtoskrnl/rtl/i686/exsup.c @@ -0,0 +1,36 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/rtl/i686/exsup.c + * DESCRIPTION: Exception handling for i686 architecture + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +XTCDECL +EXCEPTION_DISPOSITION +__C_specific_handler(IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PVOID DispatcherContext) +{ + UNIMPLEMENTED; + + /* Continue execution */ + return ExceptionContinueExecution; +} + +XTCDECL +INT +_except_handler3(PEXCEPTION_RECORD ExceptionRecord, + PVOID Registration, + PCONTEXT Context, + PVOID Dispatcher) +{ + UNIMPLEMENTED; + + /* Handler not found */ + return 0; +}