diff options
author | duke <none@none> | 2007-12-01 00:00:00 +0000 |
---|---|---|
committer | duke <none@none> | 2007-12-01 00:00:00 +0000 |
commit | fa88c88cef63eb7f9083dccb60548d78635a44b1 (patch) | |
tree | 8376f6e5c41e70162b5867d9e1fea3f17f540473 /src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp | |
download | jdk8u_hotspot-fa88c88cef63eb7f9083dccb60548d78635a44b1.tar.gz |
Initial load
Diffstat (limited to 'src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp')
-rw-r--r-- | src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp b/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp new file mode 100644 index 000000000..1e8ed078d --- /dev/null +++ b/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp @@ -0,0 +1,78 @@ +/* + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +#ifdef AMD64 +typedef unsigned char UBYTE; + +#define UNW_FLAG_EHANDLER 0x01 +#define UNW_FLAG_UHANDLER 0x02 +#define UNW_FLAG_CHAININFO 0x04 + +// This structure is used to define an UNWIND_INFO that +// only has an ExceptionHandler. There are no UnwindCodes +// declared. +typedef struct _UNWIND_INFO_EH_ONLY { + UBYTE Version : 3; + UBYTE Flags : 5; + UBYTE SizeOfProlog; + UBYTE CountOfCodes; + UBYTE FrameRegister : 4; + UBYTE FrameOffset : 4; + union { + OPTIONAL ULONG ExceptionHandler; + OPTIONAL ULONG FunctionEntry; + }; + OPTIONAL ULONG ExceptionData[1]; +} UNWIND_INFO_EH_ONLY, *PUNWIND_INFO_EH_ONLY; + + +/* +typedef struct _RUNTIME_FUNCTION { + ULONG BeginAddress; + ULONG EndAddress; + ULONG UnwindData; +} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; +*/ + +typedef struct _DISPATCHER_CONTEXT { + ULONG64 ControlPc; + ULONG64 ImageBase; + PRUNTIME_FUNCTION FunctionEntry; + ULONG64 EstablisherFrame; + ULONG64 TargetIp; + PCONTEXT ContextRecord; +// PEXCEPTION_ROUTINE LanguageHandler; + char * LanguageHandler; // double dependency problem + PVOID HandlerData; +} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; + +typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN ULONG64 EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PDISPATCHER_CONTEXT DispatcherContext +); + +#endif // AMD64 |