mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-11-14 02:03:27 -08:00
sketch out linux non-host layer, for mapping numeric exception codes to metadata on debugger frontend. also do not always call XQueryKeymap/XQueryPointer; these are very expensive and we only use them in scenarios where we can take the most recently cached value from events.
This commit is contained in:
1 parent
8c1c35508a
commit
a256e5c48a
19 files changed
+503
-90
No files matched your search
@@ -211,79 +211,3 @@ D_ExceptionCodeKindTable:
|
||||
`0`;
|
||||
@expand(D_ExceptionCodeKindTable a) `$(a.default)`;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Exception Sub-Codes
|
||||
|
||||
@table(name, value)
|
||||
DL_ExceptionSubCodeKindTable:
|
||||
{
|
||||
{ W32_FAST_FAIL_LEGACY_GS_VIOLATION 0 }
|
||||
{ W32_FAST_FAIL_VTGUARD_CHECK_FAILURE 1 }
|
||||
{ W32_FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 }
|
||||
{ W32_FAST_FAIL_CORRUPT_LIST_ENTRY 3 }
|
||||
{ W32_FAST_FAIL_INCORRECT_STACK 4 }
|
||||
{ W32_FAST_FAIL_INVALID_ARG 5 }
|
||||
{ W32_FAST_FAIL_GS_COOKIE_INIT 6 }
|
||||
{ W32_FAST_FAIL_FATAL_APP_EXIT 7 }
|
||||
{ W32_FAST_FAIL_RANGE_CHECK_FAILURE 8 }
|
||||
{ W32_FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10 }
|
||||
{ W32_FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11 }
|
||||
{ W32_FAST_FAIL_INVALID_FIBER_SWITCH 12 }
|
||||
{ W32_FAST_FAIL_INVALID_SET_OF_CONTEXT 13 }
|
||||
{ W32_FAST_FAIL_INVALID_REFERENCE_COUNT 14 }
|
||||
{ W32_FAST_FAIL_INVALID_JUMP_BUFFER 18 }
|
||||
{ W32_FAST_FAIL_MRDATA_MODIFIED 19 }
|
||||
{ W32_FAST_FAIL_CERTIFICATION_FAILURE 20 }
|
||||
{ W32_FAST_FAIL_INVALID_EXCEPTION_CHAIN 21 }
|
||||
{ W32_FAST_FAIL_CRYPTO_LIBRARY 22 }
|
||||
{ W32_FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 23 }
|
||||
{ W32_FAST_FAIL_INVALID_IMAGE_BASE 24 }
|
||||
{ W32_FAST_FAIL_DLOAD_PROTECTION_FAILURE 25 }
|
||||
{ W32_FAST_FAIL_UNSAFE_EXTENSION_CALL 26 }
|
||||
{ W32_FAST_FAIL_DEPRECATED_SERVICE_INVOKED 27 }
|
||||
{ W32_FAST_FAIL_INVALID_BUFFER_ACCESS 28 }
|
||||
{ W32_FAST_FAIL_INVALID_BALANCED_TREE 29 }
|
||||
{ W32_FAST_FAIL_INVALID_NEXT_THREAD 30 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED 31 }
|
||||
{ W32_FAST_FAIL_APCS_DISABLED 32 }
|
||||
{ W32_FAST_FAIL_INVALID_IDLE_STATE 33 }
|
||||
{ W32_FAST_FAIL_MRDATA_PROTECTION_FAILURE 34 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION 35 }
|
||||
{ W32_FAST_FAIL_INVALID_LOCK_STATE 36 }
|
||||
{ W32_FAST_FAIL_GUARD_JUMPTABLE 37 }
|
||||
{ W32_FAST_FAIL_INVALID_LONGJUMP_TARGET 38 }
|
||||
{ W32_FAST_FAIL_INVALID_DISPATCH_CONTEXT 39 }
|
||||
{ W32_FAST_FAIL_INVALID_THREAD 40 }
|
||||
{ W32_FAST_FAIL_INVALID_SYSCALL_NUMBER 41 }
|
||||
{ W32_FAST_FAIL_INVALID_FILE_OPERATION 42 }
|
||||
{ W32_FAST_FAIL_LPAC_ACCESS_DENIED 43 }
|
||||
{ W32_FAST_FAIL_GUARD_SS_FAILURE 44 }
|
||||
{ W32_FAST_FAIL_LOADER_CONTINUITY_FAILURE 45 }
|
||||
{ W32_FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE 46 }
|
||||
{ W32_FAST_FAIL_INVALID_CONTROL_STACK 47 }
|
||||
{ W32_FAST_FAIL_SET_CONTEXT_DENIED 48 }
|
||||
{ W32_FAST_FAIL_INVALID_IAT 49 }
|
||||
{ W32_FAST_FAIL_HEAP_METADATA_CORRUPTION 50 }
|
||||
{ W32_FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION 51 }
|
||||
{ W32_FAST_FAIL_LOW_LABEL_ACCESS_DENIED 52 }
|
||||
{ W32_FAST_FAIL_ENCLAVE_CALL_FAILURE 53 }
|
||||
{ W32_FAST_FAIL_UNHANDLED_LSS_EXCEPTON 54 }
|
||||
{ W32_FAST_FAIL_ADMINLESS_ACCESS_DENIED 55 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_CALL 56 }
|
||||
{ W32_FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS 57 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR 58 }
|
||||
{ W32_FAST_FAIL_FLAGS_CORRUPTION 59 }
|
||||
{ W32_FAST_FAIL_VEH_CORRUPTION 60 }
|
||||
{ W32_FAST_FAIL_ETW_CORRUPTION 61 }
|
||||
{ W32_FAST_FAIL_RIO_ABORT 62 }
|
||||
{ W32_FAST_FAIL_INVALID_PFN 63 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE_XFG 64 }
|
||||
{ W32_FAST_FAIL_CAST_GUARD 65 }
|
||||
{ W32_FAST_FAIL_HOST_VISIBILITY_CHANGE 66 }
|
||||
{ W32_FAST_FAIL_KERNEL_CET_SHADOW_STACK_ASSIST 67 }
|
||||
{ W32_FAST_FAIL_PATCH_CALLBACK_FAILED 68 }
|
||||
{ W32_FAST_FAIL_NTDLL_PATCH_FAILED 69 }
|
||||
{ W32_FAST_FAIL_INVALID_FLS_DATA 70 }
|
||||
}
|
||||
@@ -1339,6 +1339,7 @@ d_entity_store_apply_events(D_EntityCtxRWStore *store, D_EventList *list)
|
||||
if(process != &d_entity_nil)
|
||||
{
|
||||
D_Entity *thread = d_entity_alloc(store, process, D_EntityKind_Thread, event->arch, event->entity, (U64)event->entity_id);
|
||||
thread->os = process->os;
|
||||
D_Entity *first_thread = d_entity_child_from_kind(process, D_EntityKind_Thread);
|
||||
if(first_thread == thread)
|
||||
{
|
||||
@@ -1369,7 +1370,6 @@ d_entity_store_apply_events(D_EntityCtxRWStore *store, D_EventList *list)
|
||||
thread->stack_base = event->stack_base;
|
||||
thread->tls_root_vaddr = event->tls_root;
|
||||
}
|
||||
//d_cached_ip_from_thread(&store->ctx, event->entity);
|
||||
}break;
|
||||
case D_EventKind_EndThread:
|
||||
{
|
||||
@@ -1446,6 +1446,7 @@ d_entity_store_apply_events(D_EntityCtxRWStore *store, D_EventList *list)
|
||||
d_entity_equip_string(store, module, event->string);
|
||||
module->timestamp = event->timestamp;
|
||||
module->vaddr_range = event->vaddr_rng;
|
||||
module->os = process->os;
|
||||
D_Entity *first_module = d_entity_child_from_kind(process, D_EntityKind_Module);
|
||||
if(first_module == module && process->string.size == 0)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
//- GENERATED CODE
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
//- GENERATED CODE
|
||||
|
||||
#ifndef LINUX_META_H
|
||||
#define LINUX_META_H
|
||||
|
||||
#endif // LINUX_META_H
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#include "linux/generated/linux.meta.c"
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef LINUX_H
|
||||
#define LINUX_H
|
||||
|
||||
#include "linux/generated/linux.meta.h"
|
||||
|
||||
#endif // LINUX_H
|
||||
@@ -0,0 +1,38 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
@table(name code repeatable) LNX_SignalCodeTable:
|
||||
{
|
||||
{ SIGHUP 1 1 }
|
||||
{ SIGINT 2 1 }
|
||||
{ SIGQUIT 3 1 }
|
||||
{ SIGILL 4 1 }
|
||||
{ SIGTRAP 5 1 }
|
||||
{ SIGABRT 6 1 }
|
||||
{ SIGIOT 6 1 }
|
||||
{ SIGBUS 7 1 }
|
||||
{ SIGFPE 8 1 }
|
||||
{ SIGKILL 9 1 }
|
||||
{ SIGUSR1 10 1 }
|
||||
{ SIGSEGV 11 1 }
|
||||
{ SIGUSR2 12 1 }
|
||||
{ SIGPIPE 13 1 }
|
||||
{ SIGALRM 14 1 }
|
||||
{ SIGTERM 15 1 }
|
||||
{ SIGSTKFLT 16 1 }
|
||||
{ SIGCHLD 17 0 }
|
||||
{ SIGCONT 18 0 }
|
||||
{ SIGSTOP 19 1 }
|
||||
{ SIGTSTP 20 1 }
|
||||
{ SIGTTIN 21 1 }
|
||||
{ SIGTTOU 22 1 }
|
||||
{ SIGURG 23 0 }
|
||||
{ SIGXCPU 24 1 }
|
||||
{ SIGXFSZ 25 1 }
|
||||
{ SIGVTALRM 26 1 }
|
||||
{ SIGPROF 27 1 }
|
||||
{ SIGWINCH 28 0 }
|
||||
{ SIGIO 29 1 }
|
||||
{ SIGPWR 30 1 }
|
||||
{ SIGSYS 31 1 }
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#include "linux.c"
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef LINUX_INC_H
|
||||
#define LINUX_INC_H
|
||||
|
||||
#include "linux.h"
|
||||
|
||||
#endif // LINUX_INC_H
|
||||
@@ -1231,6 +1231,18 @@ wm_get_events(Arena *arena, B32 wait)
|
||||
B32 is_right_sided = 0;
|
||||
WM_Key key = lnx_wm_key_from_keysym(keysym, &is_right_sided);
|
||||
|
||||
// rjf: update modifier / key down state
|
||||
if(evt.type == KeyPress)
|
||||
{
|
||||
lnx_wm_state->modifier_state |= modifiers;
|
||||
lnx_wm_state->key_down_state[key/64] |= (1ull<<(key%64));
|
||||
}
|
||||
else
|
||||
{
|
||||
lnx_wm_state->modifier_state &= ~modifiers;
|
||||
lnx_wm_state->key_down_state[key/64] &= ~(1ull<<(key%64));
|
||||
}
|
||||
|
||||
// rjf: push text event
|
||||
if(evt.type == KeyPress && text_size != 0)
|
||||
{
|
||||
@@ -1465,25 +1477,14 @@ wm_get_events(Arena *arena, B32 wait)
|
||||
internal WM_Modifiers
|
||||
wm_get_modifiers(void)
|
||||
{
|
||||
WM_Modifiers mods = 0;
|
||||
if(wm_key_is_down(WM_Key_Shift)) { mods |= WM_Modifier_Shift; }
|
||||
if(wm_key_is_down(WM_Key_Alt)) { mods |= WM_Modifier_Alt; }
|
||||
if(wm_key_is_down(WM_Key_Ctrl)) { mods |= WM_Modifier_Ctrl; }
|
||||
WM_Modifiers mods = lnx_wm_state->modifier_state;
|
||||
return mods;
|
||||
}
|
||||
|
||||
internal B32
|
||||
wm_key_is_down(WM_Key key)
|
||||
{
|
||||
B32 result = 0;
|
||||
{
|
||||
char keys[32];
|
||||
XQueryKeymap(lnx_wm_state->display, keys);
|
||||
KeySym sym = lnx_wm_keysym_from_key(key);
|
||||
KeyCode code = XKeysymToKeycode(lnx_wm_state->display, sym);
|
||||
B32 is_down = !!(keys[code/8] & (1u<<(code%8)));
|
||||
result = is_down;
|
||||
}
|
||||
B32 result = !!(lnx_wm_state->key_down_state[key/64] & (1ull<<(key%64)));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,6 +95,8 @@ struct LNX_WM_State
|
||||
LNX_WM_WindowClientArea *free_client_area;
|
||||
long *icon_image_data;
|
||||
U64 icon_image_data_count;
|
||||
WM_Modifiers modifier_state;
|
||||
U64 key_down_state[(WM_Key_COUNT+63)/64];
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
@@ -403,6 +403,7 @@
|
||||
#include "base/base_inc.h"
|
||||
#include "x64/x64_inc.h"
|
||||
#include "win32/win32_inc.h"
|
||||
#include "linux/linux_inc.h"
|
||||
#include "linker/base_ext/base_bit_array.h"
|
||||
#include "artifact_cache/artifact_cache.h"
|
||||
#include "rdi/rdi_local.h"
|
||||
@@ -465,6 +466,7 @@
|
||||
#include "base/base_inc.c"
|
||||
#include "x64/x64.c"
|
||||
#include "win32/win32_inc.c"
|
||||
#include "linux/linux_inc.c"
|
||||
#include "linker/base_ext/base_bit_array.c"
|
||||
#include "artifact_cache/artifact_cache.c"
|
||||
#include "rdi/rdi_local.c"
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
//- GENERATED CODE
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
U32 w32_exception_code_kind_code_table[38] =
|
||||
{
|
||||
0,
|
||||
0x40010005,
|
||||
0x40010008,
|
||||
0x40080201,
|
||||
0x40080202,
|
||||
0x0000071a,
|
||||
0x80000002,
|
||||
0xc0000005,
|
||||
0xc0000006,
|
||||
0xc0000008,
|
||||
0xc0000017,
|
||||
0xc000001d,
|
||||
0xc0000025,
|
||||
0xc0000026,
|
||||
0xc000008c,
|
||||
0xc000008d,
|
||||
0xc000008e,
|
||||
0xc000008f,
|
||||
0xc0000090,
|
||||
0xc0000091,
|
||||
0xc0000092,
|
||||
0xc0000093,
|
||||
0xc0000094,
|
||||
0xc0000095,
|
||||
0xc0000096,
|
||||
0xc00000fd,
|
||||
0xc0000135,
|
||||
0xc0000138,
|
||||
0xc0000139,
|
||||
0xc0000142,
|
||||
0xc00002b4,
|
||||
0xc00002b5,
|
||||
0xc0000420,
|
||||
0xc06d007e,
|
||||
0xc06d007f,
|
||||
0xe073616e,
|
||||
0xe0736171,
|
||||
0x0000087a,
|
||||
};
|
||||
|
||||
String8 w32_exception_code_kind_display_string_table[38] =
|
||||
{
|
||||
{0},
|
||||
str8_lit_comp("Control-C"),
|
||||
str8_lit_comp("Control-Break"),
|
||||
str8_lit_comp("WinRT Originate Error"),
|
||||
str8_lit_comp("WinRT Transform Error"),
|
||||
str8_lit_comp("RPC Call Cancelled"),
|
||||
str8_lit_comp("Data Type Misalignment"),
|
||||
str8_lit_comp("Access Violation"),
|
||||
str8_lit_comp("In Page Error"),
|
||||
str8_lit_comp("Invalid Handle Specified"),
|
||||
str8_lit_comp("Not Enough Quota"),
|
||||
str8_lit_comp("Illegal Instruction"),
|
||||
str8_lit_comp("Cannot Continue From Exception"),
|
||||
str8_lit_comp("Invalid Exception Disposition Returned By Handler"),
|
||||
str8_lit_comp("Array Bounds Exceeded"),
|
||||
str8_lit_comp("Floating-Point Denormal Operand"),
|
||||
str8_lit_comp("Floating-Point Division By Zero"),
|
||||
str8_lit_comp("Floating-Point Inexact Result"),
|
||||
str8_lit_comp("Floating-Point Invalid Operation"),
|
||||
str8_lit_comp("Floating-Point Overflow"),
|
||||
str8_lit_comp("Floating-Point Stack Check"),
|
||||
str8_lit_comp("Floating-Point Underflow"),
|
||||
str8_lit_comp("Integer Division By Zero"),
|
||||
str8_lit_comp("Integer Overflow"),
|
||||
str8_lit_comp("Privileged Instruction"),
|
||||
str8_lit_comp("Stack Overflow"),
|
||||
str8_lit_comp("Unable To Locate DLL"),
|
||||
str8_lit_comp("Ordinal Not Found"),
|
||||
str8_lit_comp("Entry Point Not Found"),
|
||||
str8_lit_comp("DLL Initialization Failed"),
|
||||
str8_lit_comp("Floating Point SSE Multiple Faults"),
|
||||
str8_lit_comp("Floating Point SSE Multiple Traps"),
|
||||
str8_lit_comp("Assertion Failed"),
|
||||
str8_lit_comp("Module Not Found"),
|
||||
str8_lit_comp("Procedure Not Found"),
|
||||
str8_lit_comp("Sanitizer Error Detected"),
|
||||
str8_lit_comp("Sanitizer Raw Access Violation"),
|
||||
str8_lit_comp("DirectX Debug Layer"),
|
||||
};
|
||||
|
||||
String8 w32_exception_code_kind_lowercase_code_string_table[38] =
|
||||
{
|
||||
{0},
|
||||
str8_lit_comp("ctrl_c"),
|
||||
str8_lit_comp("ctrl_break"),
|
||||
str8_lit_comp("win_rt_originate_error"),
|
||||
str8_lit_comp("win_rt_transform_error"),
|
||||
str8_lit_comp("rpc_call_cancelled"),
|
||||
str8_lit_comp("datatype_misalignment"),
|
||||
str8_lit_comp("access_violation"),
|
||||
str8_lit_comp("in_page_error"),
|
||||
str8_lit_comp("invalid_handle"),
|
||||
str8_lit_comp("not_enough_quota"),
|
||||
str8_lit_comp("illegal_instruction"),
|
||||
str8_lit_comp("cannot_continue_exception"),
|
||||
str8_lit_comp("invalid_exception_disposition"),
|
||||
str8_lit_comp("array_bounds_exceeded"),
|
||||
str8_lit_comp("floating_point_denormal_operand"),
|
||||
str8_lit_comp("floating_point_division_by_zero"),
|
||||
str8_lit_comp("floating_point_inexact_result"),
|
||||
str8_lit_comp("floating_point_invalid_operation"),
|
||||
str8_lit_comp("floating_point_overflow"),
|
||||
str8_lit_comp("floating_point_stack_check"),
|
||||
str8_lit_comp("floating_point_underflow"),
|
||||
str8_lit_comp("integer_division_by_zero"),
|
||||
str8_lit_comp("integer_overflow"),
|
||||
str8_lit_comp("privileged_instruction"),
|
||||
str8_lit_comp("stack_overflow"),
|
||||
str8_lit_comp("unable_to_locate_dll"),
|
||||
str8_lit_comp("ordinal_not_found"),
|
||||
str8_lit_comp("entry_point_not_found"),
|
||||
str8_lit_comp("dll_initialization_failed"),
|
||||
str8_lit_comp("floating_point_sse_multiple_faults"),
|
||||
str8_lit_comp("floating_point_sse_multiple_traps"),
|
||||
str8_lit_comp("assertion_failed"),
|
||||
str8_lit_comp("module_not_found"),
|
||||
str8_lit_comp("procedure_not_found"),
|
||||
str8_lit_comp("sanitizer_error_detected"),
|
||||
str8_lit_comp("sanitizer_raw_access_violation"),
|
||||
str8_lit_comp("directx_debug_layer"),
|
||||
};
|
||||
|
||||
B8 w32_exception_code_kind_default_enable_table[38] =
|
||||
{
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
};
|
||||
|
||||
C_LINKAGE_END
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
//- GENERATED CODE
|
||||
|
||||
#ifndef WIN32_META_H
|
||||
#define WIN32_META_H
|
||||
|
||||
typedef enum W32_ExceptionCodeKind
|
||||
{
|
||||
W32_ExceptionCodeKind_Null,
|
||||
W32_ExceptionCodeKind_CtrlC,
|
||||
W32_ExceptionCodeKind_CtrlBreak,
|
||||
W32_ExceptionCodeKind_WinRTOriginateError,
|
||||
W32_ExceptionCodeKind_WinRTTransformError,
|
||||
W32_ExceptionCodeKind_RPCCallCancelled,
|
||||
W32_ExceptionCodeKind_DatatypeMisalignment,
|
||||
W32_ExceptionCodeKind_AccessViolation,
|
||||
W32_ExceptionCodeKind_InPageError,
|
||||
W32_ExceptionCodeKind_InvalidHandle,
|
||||
W32_ExceptionCodeKind_NotEnoughQuota,
|
||||
W32_ExceptionCodeKind_IllegalInstruction,
|
||||
W32_ExceptionCodeKind_CannotContinueException,
|
||||
W32_ExceptionCodeKind_InvalidExceptionDisposition,
|
||||
W32_ExceptionCodeKind_ArrayBoundsExceeded,
|
||||
W32_ExceptionCodeKind_FloatingPointDenormalOperand,
|
||||
W32_ExceptionCodeKind_FloatingPointDivisionByZero,
|
||||
W32_ExceptionCodeKind_FloatingPointInexactResult,
|
||||
W32_ExceptionCodeKind_FloatingPointInvalidOperation,
|
||||
W32_ExceptionCodeKind_FloatingPointOverflow,
|
||||
W32_ExceptionCodeKind_FloatingPointStackCheck,
|
||||
W32_ExceptionCodeKind_FloatingPointUnderflow,
|
||||
W32_ExceptionCodeKind_IntegerDivisionByZero,
|
||||
W32_ExceptionCodeKind_IntegerOverflow,
|
||||
W32_ExceptionCodeKind_PrivilegedInstruction,
|
||||
W32_ExceptionCodeKind_StackOverflow,
|
||||
W32_ExceptionCodeKind_UnableToLocateDLL,
|
||||
W32_ExceptionCodeKind_OrdinalNotFound,
|
||||
W32_ExceptionCodeKind_EntryPointNotFound,
|
||||
W32_ExceptionCodeKind_DLLInitializationFailed,
|
||||
W32_ExceptionCodeKind_FloatingPointSSEMultipleFaults,
|
||||
W32_ExceptionCodeKind_FloatingPointSSEMultipleTraps,
|
||||
W32_ExceptionCodeKind_AssertionFailed,
|
||||
W32_ExceptionCodeKind_ModuleNotFound,
|
||||
W32_ExceptionCodeKind_ProcedureNotFound,
|
||||
W32_ExceptionCodeKind_SanitizerErrorDetected,
|
||||
W32_ExceptionCodeKind_SanitizerRawAccessViolation,
|
||||
W32_ExceptionCodeKind_DirectXDebugLayer,
|
||||
W32_ExceptionCodeKind_COUNT,
|
||||
} W32_ExceptionCodeKind;
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
extern U32 w32_exception_code_kind_code_table[38];
|
||||
extern String8 w32_exception_code_kind_display_string_table[38];
|
||||
extern String8 w32_exception_code_kind_lowercase_code_string_table[38];
|
||||
extern B8 w32_exception_code_kind_default_enable_table[38];
|
||||
|
||||
C_LINKAGE_END
|
||||
|
||||
#endif // WIN32_META_H
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#include "win32/generated/win32.meta.c"
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef WIN32_H
|
||||
#define WIN32_H
|
||||
|
||||
#include "win32/generated/win32.meta.h"
|
||||
|
||||
#endif // WIN32_H
|
||||
@@ -0,0 +1,154 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Exception Codes
|
||||
|
||||
@table(name lower_name code default display_string)
|
||||
W32_ExceptionCodeKindTable:
|
||||
{
|
||||
{CtrlC ctrl_c 0x40010005 1 "Control-C" }
|
||||
{CtrlBreak ctrl_break 0x40010008 1 "Control-Break" }
|
||||
{WinRTOriginateError win_rt_originate_error 0x40080201 0 "WinRT Originate Error" }
|
||||
{WinRTTransformError win_rt_transform_error 0x40080202 0 "WinRT Transform Error" }
|
||||
{RPCCallCancelled rpc_call_cancelled 0x0000071a 0 "RPC Call Cancelled" }
|
||||
{DatatypeMisalignment datatype_misalignment 0x80000002 0 "Data Type Misalignment" }
|
||||
{AccessViolation access_violation 0xc0000005 1 "Access Violation" }
|
||||
{InPageError in_page_error 0xc0000006 0 "In Page Error" }
|
||||
{InvalidHandle invalid_handle 0xc0000008 1 "Invalid Handle Specified" }
|
||||
{NotEnoughQuota not_enough_quota 0xc0000017 0 "Not Enough Quota" }
|
||||
{IllegalInstruction illegal_instruction 0xc000001d 0 "Illegal Instruction" }
|
||||
{CannotContinueException cannot_continue_exception 0xc0000025 0 "Cannot Continue From Exception" }
|
||||
{InvalidExceptionDisposition invalid_exception_disposition 0xc0000026 0 "Invalid Exception Disposition Returned By Handler" }
|
||||
{ArrayBoundsExceeded array_bounds_exceeded 0xc000008c 0 "Array Bounds Exceeded" }
|
||||
{FloatingPointDenormalOperand floating_point_denormal_operand 0xc000008d 0 "Floating-Point Denormal Operand" }
|
||||
{FloatingPointDivisionByZero floating_point_division_by_zero 0xc000008e 0 "Floating-Point Division By Zero" }
|
||||
{FloatingPointInexactResult floating_point_inexact_result 0xc000008f 0 "Floating-Point Inexact Result" }
|
||||
{FloatingPointInvalidOperation floating_point_invalid_operation 0xc0000090 0 "Floating-Point Invalid Operation" }
|
||||
{FloatingPointOverflow floating_point_overflow 0xc0000091 0 "Floating-Point Overflow" }
|
||||
{FloatingPointStackCheck floating_point_stack_check 0xc0000092 0 "Floating-Point Stack Check" }
|
||||
{FloatingPointUnderflow floating_point_underflow 0xc0000093 0 "Floating-Point Underflow" }
|
||||
{IntegerDivisionByZero integer_division_by_zero 0xc0000094 0 "Integer Division By Zero" }
|
||||
{IntegerOverflow integer_overflow 0xc0000095 0 "Integer Overflow" }
|
||||
{PrivilegedInstruction privileged_instruction 0xc0000096 0 "Privileged Instruction" }
|
||||
{StackOverflow stack_overflow 0xc00000fd 0 "Stack Overflow" }
|
||||
{UnableToLocateDLL unable_to_locate_dll 0xc0000135 0 "Unable To Locate DLL" }
|
||||
{OrdinalNotFound ordinal_not_found 0xc0000138 0 "Ordinal Not Found" }
|
||||
{EntryPointNotFound entry_point_not_found 0xc0000139 0 "Entry Point Not Found" }
|
||||
{DLLInitializationFailed dll_initialization_failed 0xc0000142 0 "DLL Initialization Failed" }
|
||||
{FloatingPointSSEMultipleFaults floating_point_sse_multiple_faults 0xc00002b4 0 "Floating Point SSE Multiple Faults" }
|
||||
{FloatingPointSSEMultipleTraps floating_point_sse_multiple_traps 0xc00002b5 0 "Floating Point SSE Multiple Traps" }
|
||||
{AssertionFailed assertion_failed 0xc0000420 1 "Assertion Failed" }
|
||||
{ModuleNotFound module_not_found 0xc06d007e 0 "Module Not Found" }
|
||||
{ProcedureNotFound procedure_not_found 0xc06d007f 0 "Procedure Not Found" }
|
||||
{SanitizerErrorDetected sanitizer_error_detected 0xe073616e 1 "Sanitizer Error Detected" }
|
||||
{SanitizerRawAccessViolation sanitizer_raw_access_violation 0xe0736171 0 "Sanitizer Raw Access Violation" }
|
||||
{DirectXDebugLayer directx_debug_layer 0x0000087a 1 "DirectX Debug Layer" }
|
||||
}
|
||||
|
||||
@enum W32_ExceptionCodeKind:
|
||||
{
|
||||
Null,
|
||||
@expand(W32_ExceptionCodeKindTable a) `$(a.name)`,
|
||||
COUNT,
|
||||
}
|
||||
|
||||
@data(U32) w32_exception_code_kind_code_table:
|
||||
{
|
||||
`0`;
|
||||
@expand(W32_ExceptionCodeKindTable a) `$(a.code)`;
|
||||
}
|
||||
|
||||
@data(String8) w32_exception_code_kind_display_string_table:
|
||||
{
|
||||
`{0}`;
|
||||
@expand(W32_ExceptionCodeKindTable a) `str8_lit_comp("$(a.display_string)")`;
|
||||
}
|
||||
|
||||
@data(String8) w32_exception_code_kind_lowercase_code_string_table:
|
||||
{
|
||||
`{0}`;
|
||||
@expand(W32_ExceptionCodeKindTable a) `str8_lit_comp("$(a.lower_name)")`;
|
||||
}
|
||||
|
||||
@data(B8) w32_exception_code_kind_default_enable_table:
|
||||
{
|
||||
`0`;
|
||||
@expand(W32_ExceptionCodeKindTable a) `$(a.default)`;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Exception Sub-Codes
|
||||
|
||||
@table(name, value)
|
||||
W32_ExceptionSubCodeKindTable:
|
||||
{
|
||||
{ W32_FAST_FAIL_LEGACY_GS_VIOLATION 0 }
|
||||
{ W32_FAST_FAIL_VTGUARD_CHECK_FAILURE 1 }
|
||||
{ W32_FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 }
|
||||
{ W32_FAST_FAIL_CORRUPT_LIST_ENTRY 3 }
|
||||
{ W32_FAST_FAIL_INCORRECT_STACK 4 }
|
||||
{ W32_FAST_FAIL_INVALID_ARG 5 }
|
||||
{ W32_FAST_FAIL_GS_COOKIE_INIT 6 }
|
||||
{ W32_FAST_FAIL_FATAL_APP_EXIT 7 }
|
||||
{ W32_FAST_FAIL_RANGE_CHECK_FAILURE 8 }
|
||||
{ W32_FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10 }
|
||||
{ W32_FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11 }
|
||||
{ W32_FAST_FAIL_INVALID_FIBER_SWITCH 12 }
|
||||
{ W32_FAST_FAIL_INVALID_SET_OF_CONTEXT 13 }
|
||||
{ W32_FAST_FAIL_INVALID_REFERENCE_COUNT 14 }
|
||||
{ W32_FAST_FAIL_INVALID_JUMP_BUFFER 18 }
|
||||
{ W32_FAST_FAIL_MRDATA_MODIFIED 19 }
|
||||
{ W32_FAST_FAIL_CERTIFICATION_FAILURE 20 }
|
||||
{ W32_FAST_FAIL_INVALID_EXCEPTION_CHAIN 21 }
|
||||
{ W32_FAST_FAIL_CRYPTO_LIBRARY 22 }
|
||||
{ W32_FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 23 }
|
||||
{ W32_FAST_FAIL_INVALID_IMAGE_BASE 24 }
|
||||
{ W32_FAST_FAIL_DLOAD_PROTECTION_FAILURE 25 }
|
||||
{ W32_FAST_FAIL_UNSAFE_EXTENSION_CALL 26 }
|
||||
{ W32_FAST_FAIL_DEPRECATED_SERVICE_INVOKED 27 }
|
||||
{ W32_FAST_FAIL_INVALID_BUFFER_ACCESS 28 }
|
||||
{ W32_FAST_FAIL_INVALID_BALANCED_TREE 29 }
|
||||
{ W32_FAST_FAIL_INVALID_NEXT_THREAD 30 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED 31 }
|
||||
{ W32_FAST_FAIL_APCS_DISABLED 32 }
|
||||
{ W32_FAST_FAIL_INVALID_IDLE_STATE 33 }
|
||||
{ W32_FAST_FAIL_MRDATA_PROTECTION_FAILURE 34 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION 35 }
|
||||
{ W32_FAST_FAIL_INVALID_LOCK_STATE 36 }
|
||||
{ W32_FAST_FAIL_GUARD_JUMPTABLE 37 }
|
||||
{ W32_FAST_FAIL_INVALID_LONGJUMP_TARGET 38 }
|
||||
{ W32_FAST_FAIL_INVALID_DISPATCH_CONTEXT 39 }
|
||||
{ W32_FAST_FAIL_INVALID_THREAD 40 }
|
||||
{ W32_FAST_FAIL_INVALID_SYSCALL_NUMBER 41 }
|
||||
{ W32_FAST_FAIL_INVALID_FILE_OPERATION 42 }
|
||||
{ W32_FAST_FAIL_LPAC_ACCESS_DENIED 43 }
|
||||
{ W32_FAST_FAIL_GUARD_SS_FAILURE 44 }
|
||||
{ W32_FAST_FAIL_LOADER_CONTINUITY_FAILURE 45 }
|
||||
{ W32_FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE 46 }
|
||||
{ W32_FAST_FAIL_INVALID_CONTROL_STACK 47 }
|
||||
{ W32_FAST_FAIL_SET_CONTEXT_DENIED 48 }
|
||||
{ W32_FAST_FAIL_INVALID_IAT 49 }
|
||||
{ W32_FAST_FAIL_HEAP_METADATA_CORRUPTION 50 }
|
||||
{ W32_FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION 51 }
|
||||
{ W32_FAST_FAIL_LOW_LABEL_ACCESS_DENIED 52 }
|
||||
{ W32_FAST_FAIL_ENCLAVE_CALL_FAILURE 53 }
|
||||
{ W32_FAST_FAIL_UNHANDLED_LSS_EXCEPTON 54 }
|
||||
{ W32_FAST_FAIL_ADMINLESS_ACCESS_DENIED 55 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_CALL 56 }
|
||||
{ W32_FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS 57 }
|
||||
{ W32_FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR 58 }
|
||||
{ W32_FAST_FAIL_FLAGS_CORRUPTION 59 }
|
||||
{ W32_FAST_FAIL_VEH_CORRUPTION 60 }
|
||||
{ W32_FAST_FAIL_ETW_CORRUPTION 61 }
|
||||
{ W32_FAST_FAIL_RIO_ABORT 62 }
|
||||
{ W32_FAST_FAIL_INVALID_PFN 63 }
|
||||
{ W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE_XFG 64 }
|
||||
{ W32_FAST_FAIL_CAST_GUARD 65 }
|
||||
{ W32_FAST_FAIL_HOST_VISIBILITY_CHANGE 66 }
|
||||
{ W32_FAST_FAIL_KERNEL_CET_SHADOW_STACK_ASSIST 67 }
|
||||
{ W32_FAST_FAIL_PATCH_CALLBACK_FAILED 68 }
|
||||
{ W32_FAST_FAIL_NTDLL_PATCH_FAILED 69 }
|
||||
{ W32_FAST_FAIL_INVALID_FLS_DATA 70 }
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#include "win32/win32.c"
|
||||
#if defined(X64_H)
|
||||
# include "win32/x64/win32_x64.c"
|
||||
#endif
|
||||
@@ -4,6 +4,7 @@
|
||||
#ifndef WIN32_INC_H
|
||||
#define WIN32_INC_H
|
||||
|
||||
#include "win32/win32.h"
|
||||
#if defined(X64_H)
|
||||
# include "win32/x64/win32_x64.h"
|
||||
#endif
|
||||
|
||||
Reference in new issue
Block a user