Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
345aff3f
Commit
345aff3f
authored
Dec 08, 2008
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
include: Added some definitions for x86_64 exception handling.
parent
f06d99f6
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
381 additions
and
6 deletions
+381
-6
winnt.h
include/winnt.h
+246
-0
winternl.h
include/winternl.h
+135
-6
No files found.
include/winnt.h
View file @
345aff3f
...
...
@@ -974,6 +974,13 @@ typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
DWORD64
LastExceptionFromRip
;
}
CONTEXT
;
typedef
struct
_RUNTIME_FUNCTION
{
DWORD
BeginAddress
;
DWORD
EndAddress
;
DWORD
UnwindData
;
}
RUNTIME_FUNCTION
,
*
PRUNTIME_FUNCTION
;
#endif
/* __x86_64__ */
/* Alpha context definitions */
...
...
@@ -1448,6 +1455,245 @@ typedef struct _CONTEXT
#endif
/* __sparc__ */
#ifdef __ia64__
#define CONTEXT_IA64 0x00080000
#define CONTEXT_CONTROL (CONTEXT_IA64 | 0x00000001)
#define CONTEXT_LOWER_FLOATING_POINT (CONTEXT_IA64 | 0x00000002)
#define CONTEXT_HIGHER_FLOATING_POINT (CONTEXT_IA64 | 0x00000004)
#define CONTEXT_INTEGER (CONTEXT_IA64 | 0x00000008)
#define CONTEXT_DEBUG (CONTEXT_IA64 | 0x00000010)
#define CONTEXT_IA32_CONTROL (CONTEXT_IA64 | 0x00000020)
#define CONTEXT_FLOATING_POINT (CONTEXT_LOWER_FLOATING_POINT | CONTEXT_HIGHER_FLOATING_POINT)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_IA32_CONTROL)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_DEBUG | CONTEXT_IA32_CONTROL)
#define CONTEXT_EXCEPTION_ACTIVE 0x8000000
#define CONTEXT_SERVICE_ACTIVE 0x10000000
#define CONTEXT_EXCEPTION_REQUEST 0x40000000
#define CONTEXT_EXCEPTION_REPORTING 0x80000000
typedef
struct
_CONTEXT
{
DWORD
ContextFlags
;
DWORD
Fill1
[
3
];
ULONGLONG
DbI0
;
ULONGLONG
DbI1
;
ULONGLONG
DbI2
;
ULONGLONG
DbI3
;
ULONGLONG
DbI4
;
ULONGLONG
DbI5
;
ULONGLONG
DbI6
;
ULONGLONG
DbI7
;
ULONGLONG
DbD0
;
ULONGLONG
DbD1
;
ULONGLONG
DbD2
;
ULONGLONG
DbD3
;
ULONGLONG
DbD4
;
ULONGLONG
DbD5
;
ULONGLONG
DbD6
;
ULONGLONG
DbD7
;
FLOAT128
FltS0
;
FLOAT128
FltS1
;
FLOAT128
FltS2
;
FLOAT128
FltS3
;
FLOAT128
FltT0
;
FLOAT128
FltT1
;
FLOAT128
FltT2
;
FLOAT128
FltT3
;
FLOAT128
FltT4
;
FLOAT128
FltT5
;
FLOAT128
FltT6
;
FLOAT128
FltT7
;
FLOAT128
FltT8
;
FLOAT128
FltT9
;
FLOAT128
FltS4
;
FLOAT128
FltS5
;
FLOAT128
FltS6
;
FLOAT128
FltS7
;
FLOAT128
FltS8
;
FLOAT128
FltS9
;
FLOAT128
FltS10
;
FLOAT128
FltS11
;
FLOAT128
FltS12
;
FLOAT128
FltS13
;
FLOAT128
FltS14
;
FLOAT128
FltS15
;
FLOAT128
FltS16
;
FLOAT128
FltS17
;
FLOAT128
FltS18
;
FLOAT128
FltS19
;
FLOAT128
FltF32
;
FLOAT128
FltF33
;
FLOAT128
FltF34
;
FLOAT128
FltF35
;
FLOAT128
FltF36
;
FLOAT128
FltF37
;
FLOAT128
FltF38
;
FLOAT128
FltF39
;
FLOAT128
FltF40
;
FLOAT128
FltF41
;
FLOAT128
FltF42
;
FLOAT128
FltF43
;
FLOAT128
FltF44
;
FLOAT128
FltF45
;
FLOAT128
FltF46
;
FLOAT128
FltF47
;
FLOAT128
FltF48
;
FLOAT128
FltF49
;
FLOAT128
FltF50
;
FLOAT128
FltF51
;
FLOAT128
FltF52
;
FLOAT128
FltF53
;
FLOAT128
FltF54
;
FLOAT128
FltF55
;
FLOAT128
FltF56
;
FLOAT128
FltF57
;
FLOAT128
FltF58
;
FLOAT128
FltF59
;
FLOAT128
FltF60
;
FLOAT128
FltF61
;
FLOAT128
FltF62
;
FLOAT128
FltF63
;
FLOAT128
FltF64
;
FLOAT128
FltF65
;
FLOAT128
FltF66
;
FLOAT128
FltF67
;
FLOAT128
FltF68
;
FLOAT128
FltF69
;
FLOAT128
FltF70
;
FLOAT128
FltF71
;
FLOAT128
FltF72
;
FLOAT128
FltF73
;
FLOAT128
FltF74
;
FLOAT128
FltF75
;
FLOAT128
FltF76
;
FLOAT128
FltF77
;
FLOAT128
FltF78
;
FLOAT128
FltF79
;
FLOAT128
FltF80
;
FLOAT128
FltF81
;
FLOAT128
FltF82
;
FLOAT128
FltF83
;
FLOAT128
FltF84
;
FLOAT128
FltF85
;
FLOAT128
FltF86
;
FLOAT128
FltF87
;
FLOAT128
FltF88
;
FLOAT128
FltF89
;
FLOAT128
FltF90
;
FLOAT128
FltF91
;
FLOAT128
FltF92
;
FLOAT128
FltF93
;
FLOAT128
FltF94
;
FLOAT128
FltF95
;
FLOAT128
FltF96
;
FLOAT128
FltF97
;
FLOAT128
FltF98
;
FLOAT128
FltF99
;
FLOAT128
FltF100
;
FLOAT128
FltF101
;
FLOAT128
FltF102
;
FLOAT128
FltF103
;
FLOAT128
FltF104
;
FLOAT128
FltF105
;
FLOAT128
FltF106
;
FLOAT128
FltF107
;
FLOAT128
FltF108
;
FLOAT128
FltF109
;
FLOAT128
FltF110
;
FLOAT128
FltF111
;
FLOAT128
FltF112
;
FLOAT128
FltF113
;
FLOAT128
FltF114
;
FLOAT128
FltF115
;
FLOAT128
FltF116
;
FLOAT128
FltF117
;
FLOAT128
FltF118
;
FLOAT128
FltF119
;
FLOAT128
FltF120
;
FLOAT128
FltF121
;
FLOAT128
FltF122
;
FLOAT128
FltF123
;
FLOAT128
FltF124
;
FLOAT128
FltF125
;
FLOAT128
FltF126
;
FLOAT128
FltF127
;
ULONGLONG
StFPSR
;
ULONGLONG
IntGp
;
ULONGLONG
IntT0
;
ULONGLONG
IntT1
;
ULONGLONG
IntS0
;
ULONGLONG
IntS1
;
ULONGLONG
IntS2
;
ULONGLONG
IntS3
;
ULONGLONG
IntV0
;
ULONGLONG
IntT2
;
ULONGLONG
IntT3
;
ULONGLONG
IntT4
;
ULONGLONG
IntSp
;
ULONGLONG
IntTeb
;
ULONGLONG
IntT5
;
ULONGLONG
IntT6
;
ULONGLONG
IntT7
;
ULONGLONG
IntT8
;
ULONGLONG
IntT9
;
ULONGLONG
IntT10
;
ULONGLONG
IntT11
;
ULONGLONG
IntT12
;
ULONGLONG
IntT13
;
ULONGLONG
IntT14
;
ULONGLONG
IntT15
;
ULONGLONG
IntT16
;
ULONGLONG
IntT17
;
ULONGLONG
IntT18
;
ULONGLONG
IntT19
;
ULONGLONG
IntT20
;
ULONGLONG
IntT21
;
ULONGLONG
IntT22
;
ULONGLONG
IntNats
;
ULONGLONG
Preds
;
ULONGLONG
BrRp
;
ULONGLONG
BrS0
;
ULONGLONG
BrS1
;
ULONGLONG
BrS2
;
ULONGLONG
BrS3
;
ULONGLONG
BrS4
;
ULONGLONG
BrT0
;
ULONGLONG
BrT1
;
ULONGLONG
ApUNAT
;
ULONGLONG
ApLC
;
ULONGLONG
ApEC
;
ULONGLONG
ApCCV
;
ULONGLONG
ApDCR
;
ULONGLONG
RsPFS
;
ULONGLONG
RsBSP
;
ULONGLONG
RsBSPSTORE
;
ULONGLONG
RsRSC
;
ULONGLONG
RsRNAT
;
ULONGLONG
StIPSR
;
ULONGLONG
StIIP
;
ULONGLONG
StIFS
;
ULONGLONG
StFCR
;
ULONGLONG
Eflag
;
ULONGLONG
SegCSD
;
ULONGLONG
SegSSD
;
ULONGLONG
Cflag
;
ULONGLONG
StFSR
;
ULONGLONG
StFIR
;
ULONGLONG
StFDR
;
ULONGLONG
UNUSEDPACK
;
}
CONTEXT
,
*
PCONTEXT
;
typedef
struct
_RUNTIME_FUNCTION
{
ULONG
BeginAddress
;
ULONG
EndAddress
;
ULONG
UnwindInfoAddress
;
}
RUNTIME_FUNCTION
,
*
PRUNTIME_FUNCTION
;
#endif
/* __ia64__ */
#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
#error You need to define a CONTEXT for your CPU
#endif
...
...
include/winternl.h
View file @
345aff3f
...
...
@@ -844,12 +844,6 @@ typedef struct _FRAME_POINTERS {
#define UNWIND_HISTORY_TABLE_SIZE 12
typedef
struct
_RUNTIME_FUNCTION
{
ULONG
BeginAddress
;
ULONG
EndAddress
;
ULONG
UnwindInfoAddress
;
}
RUNTIME_FUNCTION
,
*
PRUNTIME_FUNCTION
;
typedef
struct
_UNWIND_HISTORY_TABLE_ENTRY
{
ULONG64
ImageBase
;
ULONG64
Gp
;
...
...
@@ -864,9 +858,144 @@ typedef struct _UNWIND_HISTORY_TABLE {
UNWIND_HISTORY_TABLE_ENTRY
Entry
[
UNWIND_HISTORY_TABLE_SIZE
];
}
UNWIND_HISTORY_TABLE
,
*
PUNWIND_HISTORY_TABLE
;
typedef
struct
_KNONVOLATILE_CONTEXT_POINTERS
{
PFLOAT128
FltS0
;
PFLOAT128
FltS1
;
PFLOAT128
FltS2
;
PFLOAT128
FltS3
;
PFLOAT128
HighFloatingContext
[
10
];
PFLOAT128
FltS4
;
PFLOAT128
FltS5
;
PFLOAT128
FltS6
;
PFLOAT128
FltS7
;
PFLOAT128
FltS8
;
PFLOAT128
FltS9
;
PFLOAT128
FltS10
;
PFLOAT128
FltS11
;
PFLOAT128
FltS12
;
PFLOAT128
FltS13
;
PFLOAT128
FltS14
;
PFLOAT128
FltS15
;
PFLOAT128
FltS16
;
PFLOAT128
FltS17
;
PFLOAT128
FltS18
;
PFLOAT128
FltS19
;
PULONGLONG
IntS0
;
PULONGLONG
IntS1
;
PULONGLONG
IntS2
;
PULONGLONG
IntS3
;
PULONGLONG
IntSp
;
PULONGLONG
IntS0Nat
;
PULONGLONG
IntS1Nat
;
PULONGLONG
IntS2Nat
;
PULONGLONG
IntS3Nat
;
PULONGLONG
IntSpNat
;
PULONGLONG
Preds
;
PULONGLONG
BrRp
;
PULONGLONG
BrS0
;
PULONGLONG
BrS1
;
PULONGLONG
BrS2
;
PULONGLONG
BrS3
;
PULONGLONG
BrS4
;
PULONGLONG
ApUNAT
;
PULONGLONG
ApLC
;
PULONGLONG
ApEC
;
PULONGLONG
RsPFS
;
PULONGLONG
StFSR
;
PULONGLONG
StFIR
;
PULONGLONG
StFDR
;
PULONGLONG
Cflag
;
}
KNONVOLATILE_CONTEXT_POINTERS
,
*
PKNONVOLATILE_CONTEXT_POINTERS
;
ULONGLONG
WINAPI
RtlVirtualUnwind
(
ULONGLONG
,
ULONGLONG
,
RUNTIME_FUNCTION
*
,
CONTEXT
*
,
BOOLEAN
*
,
FRAME_POINTERS
*
,
KNONVOLATILE_CONTEXT_POINTERS
*
);
#endif
/* defined(__ia64__) */
/***********************************************************************
* x86-64 specific types and data structures
*/
#ifdef __x86_64__
#define UNWIND_HISTORY_TABLE_SIZE 12
typedef
struct
_UNWIND_HISTORY_TABLE_ENTRY
{
ULONG64
ImageBase
;
PRUNTIME_FUNCTION
FunctionEntry
;
}
UNWIND_HISTORY_TABLE_ENTRY
,
*
PUNWIND_HISTORY_TABLE_ENTRY
;
#define UNWIND_HISTORY_TABLE_NONE 0
#define UNWIND_HISTORY_TABLE_GLOBAL 1
#define UNWIND_HISTORY_TABLE_LOCAL 2
typedef
struct
_UNWIND_HISTORY_TABLE
{
ULONG
Count
;
UCHAR
Search
;
ULONG64
LowAddress
;
ULONG64
HighAddress
;
UNWIND_HISTORY_TABLE_ENTRY
Entry
[
UNWIND_HISTORY_TABLE_SIZE
];
}
UNWIND_HISTORY_TABLE
,
*
PUNWIND_HISTORY_TABLE
;
typedef
struct
_KNONVOLATILE_CONTEXT_POINTERS
{
union
{
PM128A
FloatingContext
[
16
];
struct
{
PM128A
Xmm0
;
PM128A
Xmm1
;
PM128A
Xmm2
;
PM128A
Xmm3
;
PM128A
Xmm4
;
PM128A
Xmm5
;
PM128A
Xmm6
;
PM128A
Xmm7
;
PM128A
Xmm8
;
PM128A
Xmm9
;
PM128A
Xmm10
;
PM128A
Xmm11
;
PM128A
Xmm12
;
PM128A
Xmm13
;
PM128A
Xmm14
;
PM128A
Xmm15
;
}
DUMMYSTRUCTNAME
;
}
DUMMYUNIONNAME1
;
union
{
PULONG64
IntegerContext
[
16
];
struct
{
PULONG64
Rax
;
PULONG64
Rcx
;
PULONG64
Rdx
;
PULONG64
Rbx
;
PULONG64
Rsp
;
PULONG64
Rbp
;
PULONG64
Rsi
;
PULONG64
Rdi
;
PULONG64
R8
;
PULONG64
R9
;
PULONG64
R10
;
PULONG64
R11
;
PULONG64
R12
;
PULONG64
R13
;
PULONG64
R14
;
PULONG64
R15
;
}
DUMMYSTRUCTNAME
;
}
DUMMYUNIONNAME2
;
}
KNONVOLATILE_CONTEXT_POINTERS
,
*
PKNONVOLATILE_CONTEXT_POINTERS
;
PVOID
WINAPI
RtlVirtualUnwind
(
ULONG
,
ULONG64
,
ULONG64
,
RUNTIME_FUNCTION
*
,
CONTEXT
*
,
PVOID
*
,
ULONG64
*
,
KNONVOLATILE_CONTEXT_POINTERS
*
);
#endif
/* __x86_64 */
/***********************************************************************
* Types and data structures
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment