From cc9951b5ef4cca70a384a4d6c9dc28a77132e55b Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 1 Oct 2026 11:49:53 -0700 Subject: [PATCH] linux signal codes, user settings to enable breaking on them, feed into debug engine --- src/dbg_engine/dbg_engine.mdesk | 64 ++--- src/dbg_engine/generated/dbg_engine.meta.c | 279 ++++++++++++++++++--- src/dbg_engine/generated/dbg_engine.meta.h | 40 ++- src/linux/linux.mdesk | 65 +++-- src/raddbg/generated/raddbg.meta.c | 2 +- src/raddbg/raddbg.mdesk | 142 ++++++++--- src/raddbg/raddbg_main.c | 5 + src/torture/torture_main.c | 6 +- 8 files changed, 437 insertions(+), 166 deletions(-) diff --git a/src/dbg_engine/dbg_engine.mdesk b/src/dbg_engine/dbg_engine.mdesk index 13cd3753..cbcf517e 100644 --- a/src/dbg_engine/dbg_engine.mdesk +++ b/src/dbg_engine/dbg_engine.mdesk @@ -139,75 +139,45 @@ D_EntityKindTable: //////////////////////////////// //~ rjf: Exception Codes -@table(name lower_name code default display_string) -D_ExceptionCodeKindTable: -{ - {Win32CtrlC win32_ctrl_c 0x40010005 1 "(Win32) Control-C" } - {Win32CtrlBreak win32_ctrl_break 0x40010008 1 "(Win32) Control-Break" } - {Win32WinRTOriginateError win32_win_rt_originate_error 0x40080201 0 "(Win32) WinRT Originate Error" } - {Win32WinRTTransformError win32_win_rt_transform_error 0x40080202 0 "(Win32) WinRT Transform Error" } - {Win32RPCCallCancelled win32_rpc_call_cancelled 0x0000071a 0 "(Win32) RPC Call Cancelled" } - {Win32DatatypeMisalignment win32_datatype_misalignment 0x80000002 0 "(Win32) Data Type Misalignment" } - {Win32AccessViolation win32_access_violation 0xc0000005 1 "(Win32) Access Violation" } - {Win32InPageError win32_in_page_error 0xc0000006 0 "(Win32) In Page Error" } - {Win32InvalidHandle win32_invalid_handle 0xc0000008 1 "(Win32) Invalid Handle Specified" } - {Win32NotEnoughQuota win32_not_enough_quota 0xc0000017 0 "(Win32) Not Enough Quota" } - {Win32IllegalInstruction win32_illegal_instruction 0xc000001d 0 "(Win32) Illegal Instruction" } - {Win32CannotContinueException win32_cannot_continue_exception 0xc0000025 0 "(Win32) Cannot Continue From Exception" } - {Win32InvalidExceptionDisposition win32_invalid_exception_disposition 0xc0000026 0 "(Win32) Invalid Exception Disposition Returned By Handler" } - {Win32ArrayBoundsExceeded win32_array_bounds_exceeded 0xc000008c 0 "(Win32) Array Bounds Exceeded" } - {Win32FloatingPointDenormalOperand win32_floating_point_denormal_operand 0xc000008d 0 "(Win32) Floating-Point Denormal Operand" } - {Win32FloatingPointDivisionByZero win32_floating_point_division_by_zero 0xc000008e 0 "(Win32) Floating-Point Division By Zero" } - {Win32FloatingPointInexactResult win32_floating_point_inexact_result 0xc000008f 0 "(Win32) Floating-Point Inexact Result" } - {Win32FloatingPointInvalidOperation win32_floating_point_invalid_operation 0xc0000090 0 "(Win32) Floating-Point Invalid Operation" } - {Win32FloatingPointOverflow win32_floating_point_overflow 0xc0000091 0 "(Win32) Floating-Point Overflow" } - {Win32FloatingPointStackCheck win32_floating_point_stack_check 0xc0000092 0 "(Win32) Floating-Point Stack Check" } - {Win32FloatingPointUnderflow win32_floating_point_underflow 0xc0000093 0 "(Win32) Floating-Point Underflow" } - {Win32IntegerDivisionByZero win32_integer_division_by_zero 0xc0000094 0 "(Win32) Integer Division By Zero" } - {Win32IntegerOverflow win32_integer_overflow 0xc0000095 0 "(Win32) Integer Overflow" } - {Win32PrivilegedInstruction win32_privileged_instruction 0xc0000096 0 "(Win32) Privileged Instruction" } - {Win32StackOverflow win32_stack_overflow 0xc00000fd 0 "(Win32) Stack Overflow" } - {Win32UnableToLocateDLL win32_unable_to_locate_dll 0xc0000135 0 "(Win32) Unable To Locate DLL" } - {Win32OrdinalNotFound win32_ordinal_not_found 0xc0000138 0 "(Win32) Ordinal Not Found" } - {Win32EntryPointNotFound win32_entry_point_not_found 0xc0000139 0 "(Win32) Entry Point Not Found" } - {Win32DLLInitializationFailed win32_dll_initialization_failed 0xc0000142 0 "(Win32) DLL Initialization Failed" } - {Win32FloatingPointSSEMultipleFaults win32_floating_point_sse_multiple_faults 0xc00002b4 0 "(Win32) Floating Point SSE Multiple Faults" } - {Win32FloatingPointSSEMultipleTraps win32_floating_point_sse_multiple_traps 0xc00002b5 0 "(Win32) Floating Point SSE Multiple Traps" } - {Win32AssertionFailed win32_assertion_failed 0xc0000420 1 "(Win32) Assertion Failed" } - {Win32ModuleNotFound win32_module_not_found 0xc06d007e 0 "(Win32) Module Not Found" } - {Win32ProcedureNotFound win32_procedure_not_found 0xc06d007f 0 "(Win32) Procedure Not Found" } - {Win32SanitizerErrorDetected win32_sanitizer_error_detected 0xe073616e 1 "(Win32) Sanitizer Error Detected" } - {Win32SanitizerRawAccessViolation win32_sanitizer_raw_access_violation 0xe0736171 0 "(Win32) Sanitizer Raw Access Violation" } - {Win32DirectXDebugLayer win32_directx_debug_layer 0x0000087a 1 "(Win32) DirectX Debug Layer" } -} - @enum D_ExceptionCodeKind: { Null, - @expand(D_ExceptionCodeKindTable a) `$(a.name)`, + @expand(W32_ExceptionCodeKindTable a) `Win32$(a.name)`, + @expand(LNX_SignalCodeTable a) `Linux$(a.name)`, COUNT, } @data(U32) d_exception_code_kind_code_table: { `0`; - @expand(D_ExceptionCodeKindTable a) `$(a.code)`; + @expand(W32_ExceptionCodeKindTable a) `$(a.code)`; + @expand(LNX_SignalCodeTable a) `$(a.code)`, +} + +@data(OperatingSystem) d_exception_code_kind_os_table: +{ + `OperatingSystem_Null`; + @expand(W32_ExceptionCodeKindTable a) `OperatingSystem_Windows`; + @expand(LNX_SignalCodeTable a) `OperatingSystem_Linux`, } @data(String8) d_exception_code_kind_display_string_table: { `{0}`; - @expand(D_ExceptionCodeKindTable a) `str8_lit_comp("$(a.display_string)")`; + @expand(W32_ExceptionCodeKindTable a) `str8_lit_comp("$(a.display_string)")`; + @expand(LNX_SignalCodeTable a) `str8_lit_comp("$(a.name) ($(a.desc))")`, } @data(String8) d_exception_code_kind_lowercase_code_string_table: { `{0}`; - @expand(D_ExceptionCodeKindTable a) `str8_lit_comp("$(a.lower_name)")`; + @expand(W32_ExceptionCodeKindTable a) `str8_lit_comp("win32_$(a.lower_name)")`; + @expand(LNX_SignalCodeTable a) `str8_lit_comp("linux_$(a.name_lower)")`, } @data(B8) d_exception_code_kind_default_enable_table: { `0`; - @expand(D_ExceptionCodeKindTable a) `$(a.default)`; + @expand(W32_ExceptionCodeKindTable a) `$(a.default)`; + @expand(LNX_SignalCodeTable a) `$(a.break_default)`; } diff --git a/src/dbg_engine/generated/dbg_engine.meta.c b/src/dbg_engine/generated/dbg_engine.meta.c index e322fded..c7a54839 100644 --- a/src/dbg_engine/generated/dbg_engine.meta.c +++ b/src/dbg_engine/generated/dbg_engine.meta.c @@ -38,7 +38,7 @@ str8_lit_comp("Breakpoint"), str8_lit_comp("AddressRangeAnnotation"), }; -U32 d_exception_code_kind_code_table[38] = +U32 d_exception_code_kind_code_table[69] = { 0, 0x40010005, @@ -78,51 +78,186 @@ U32 d_exception_code_kind_code_table[38] = 0xe073616e, 0xe0736171, 0x0000087a, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25, +26, +27, +28, +29, +30, +31, }; -String8 d_exception_code_kind_display_string_table[38] = +OperatingSystem d_exception_code_kind_os_table[69] = +{ +OperatingSystem_Null, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Windows, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +OperatingSystem_Linux, +}; + +String8 d_exception_code_kind_display_string_table[69] = { {0}, -str8_lit_comp("(Win32) Control-C"), -str8_lit_comp("(Win32) Control-Break"), -str8_lit_comp("(Win32) WinRT Originate Error"), -str8_lit_comp("(Win32) WinRT Transform Error"), -str8_lit_comp("(Win32) RPC Call Cancelled"), -str8_lit_comp("(Win32) Data Type Misalignment"), -str8_lit_comp("(Win32) Access Violation"), -str8_lit_comp("(Win32) In Page Error"), -str8_lit_comp("(Win32) Invalid Handle Specified"), -str8_lit_comp("(Win32) Not Enough Quota"), -str8_lit_comp("(Win32) Illegal Instruction"), -str8_lit_comp("(Win32) Cannot Continue From Exception"), -str8_lit_comp("(Win32) Invalid Exception Disposition Returned By Handler"), -str8_lit_comp("(Win32) Array Bounds Exceeded"), -str8_lit_comp("(Win32) Floating-Point Denormal Operand"), -str8_lit_comp("(Win32) Floating-Point Division By Zero"), -str8_lit_comp("(Win32) Floating-Point Inexact Result"), -str8_lit_comp("(Win32) Floating-Point Invalid Operation"), -str8_lit_comp("(Win32) Floating-Point Overflow"), -str8_lit_comp("(Win32) Floating-Point Stack Check"), -str8_lit_comp("(Win32) Floating-Point Underflow"), -str8_lit_comp("(Win32) Integer Division By Zero"), -str8_lit_comp("(Win32) Integer Overflow"), -str8_lit_comp("(Win32) Privileged Instruction"), -str8_lit_comp("(Win32) Stack Overflow"), -str8_lit_comp("(Win32) Unable To Locate DLL"), -str8_lit_comp("(Win32) Ordinal Not Found"), -str8_lit_comp("(Win32) Entry Point Not Found"), -str8_lit_comp("(Win32) DLL Initialization Failed"), -str8_lit_comp("(Win32) Floating Point SSE Multiple Faults"), -str8_lit_comp("(Win32) Floating Point SSE Multiple Traps"), -str8_lit_comp("(Win32) Assertion Failed"), -str8_lit_comp("(Win32) Module Not Found"), -str8_lit_comp("(Win32) Procedure Not Found"), -str8_lit_comp("(Win32) Sanitizer Error Detected"), -str8_lit_comp("(Win32) Sanitizer Raw Access Violation"), -str8_lit_comp("(Win32) DirectX Debug Layer"), +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"), +str8_lit_comp("SIGHUP (Hangup detected on controlling terminal or death of controlling process)"), +str8_lit_comp("SIGINT (Interrupt from keyboard)"), +str8_lit_comp("SIGQUIT (Quit from keyboard)"), +str8_lit_comp("SIGILL (Illegal Instruction)"), +str8_lit_comp("SIGTRAP (Trace/breakpoint trap)"), +str8_lit_comp("SIGABRT (Abort signal)"), +str8_lit_comp("SIGBUS (Bus error (bad address))"), +str8_lit_comp("SIGFPE (Erroneous arithmetic operation)"), +str8_lit_comp("SIGKILL (Kill signal)"), +str8_lit_comp("SIGUSR1 (User-defined signal 1)"), +str8_lit_comp("SIGSEGV (Invalid memory reference)"), +str8_lit_comp("SIGUSR2 (User-defined signal 2)"), +str8_lit_comp("SIGPIPE (Broken pipe; write to pipe with no readers)"), +str8_lit_comp("SIGALRM (Timer signal)"), +str8_lit_comp("SIGTERM (Termination signal)"), +str8_lit_comp("SIGSTKFLT (Stack fault on coprocessor)"), +str8_lit_comp("SIGCHLD (Child stopped, terminated, or continued)"), +str8_lit_comp("SIGCONT (Continue if stopped)"), +str8_lit_comp("SIGSTOP (Stop process)"), +str8_lit_comp("SIGTSTP (Stop typed at terminal)"), +str8_lit_comp("SIGTTIN (Terminal input for background process)"), +str8_lit_comp("SIGTTOU (Terminal output for background process)"), +str8_lit_comp("SIGURG (Urgent condition on socket)"), +str8_lit_comp("SIGXCPU (CPU time limit exceeded)"), +str8_lit_comp("SIGXFSZ (File size limit exceeded)"), +str8_lit_comp("SIGVTALRM (Virtual alarm clock)"), +str8_lit_comp("SIGPROF (Profiling timer expired)"), +str8_lit_comp("SIGWINCH (Window resize signal)"), +str8_lit_comp("SIGIO (I/O now possible)"), +str8_lit_comp("SIGPWR (Power failure)"), +str8_lit_comp("SIGSYS (Bad system call)"), }; -String8 d_exception_code_kind_lowercase_code_string_table[38] = +String8 d_exception_code_kind_lowercase_code_string_table[69] = { {0}, str8_lit_comp("win32_ctrl_c"), @@ -162,9 +297,40 @@ str8_lit_comp("win32_procedure_not_found"), str8_lit_comp("win32_sanitizer_error_detected"), str8_lit_comp("win32_sanitizer_raw_access_violation"), str8_lit_comp("win32_directx_debug_layer"), +str8_lit_comp("linux_sighup"), +str8_lit_comp("linux_sigint"), +str8_lit_comp("linux_sigquit"), +str8_lit_comp("linux_sigill"), +str8_lit_comp("linux_sigtrap"), +str8_lit_comp("linux_sigabrt"), +str8_lit_comp("linux_sigbus"), +str8_lit_comp("linux_sigfpe"), +str8_lit_comp("linux_sigkill"), +str8_lit_comp("linux_sigusr1"), +str8_lit_comp("linux_sigsegv"), +str8_lit_comp("linux_sigusr2"), +str8_lit_comp("linux_sigpipe"), +str8_lit_comp("linux_sigalrm"), +str8_lit_comp("linux_sigterm"), +str8_lit_comp("linux_sigstkflt"), +str8_lit_comp("linux_sigchld"), +str8_lit_comp("linux_sigcont"), +str8_lit_comp("linux_sigstop"), +str8_lit_comp("linux_sigtstp"), +str8_lit_comp("linux_sigttin"), +str8_lit_comp("linux_sigttou"), +str8_lit_comp("linux_sigurg"), +str8_lit_comp("linux_sigxcpu"), +str8_lit_comp("linux_sigxfsz"), +str8_lit_comp("linux_sigvtalrm"), +str8_lit_comp("linux_sigprof"), +str8_lit_comp("linux_sigwinch"), +str8_lit_comp("linux_sigio"), +str8_lit_comp("linux_sigpwr"), +str8_lit_comp("linux_sigsys"), }; -B8 d_exception_code_kind_default_enable_table[38] = +B8 d_exception_code_kind_default_enable_table[69] = { 0, 1, @@ -204,6 +370,37 @@ B8 d_exception_code_kind_default_enable_table[38] = 1, 0, 1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +0, +1, +1, +0, +0, +0, +1, +1, +0, +0, +0, +0, +1, +1, }; C_LINKAGE_END diff --git a/src/dbg_engine/generated/dbg_engine.meta.h b/src/dbg_engine/generated/dbg_engine.meta.h index 87e6284a..2391d4d2 100644 --- a/src/dbg_engine/generated/dbg_engine.meta.h +++ b/src/dbg_engine/generated/dbg_engine.meta.h @@ -106,6 +106,37 @@ D_ExceptionCodeKind_Win32ProcedureNotFound, D_ExceptionCodeKind_Win32SanitizerErrorDetected, D_ExceptionCodeKind_Win32SanitizerRawAccessViolation, D_ExceptionCodeKind_Win32DirectXDebugLayer, +D_ExceptionCodeKind_LinuxSIGHUP, +D_ExceptionCodeKind_LinuxSIGINT, +D_ExceptionCodeKind_LinuxSIGQUIT, +D_ExceptionCodeKind_LinuxSIGILL, +D_ExceptionCodeKind_LinuxSIGTRAP, +D_ExceptionCodeKind_LinuxSIGABRT, +D_ExceptionCodeKind_LinuxSIGBUS, +D_ExceptionCodeKind_LinuxSIGFPE, +D_ExceptionCodeKind_LinuxSIGKILL, +D_ExceptionCodeKind_LinuxSIGUSR1, +D_ExceptionCodeKind_LinuxSIGSEGV, +D_ExceptionCodeKind_LinuxSIGUSR2, +D_ExceptionCodeKind_LinuxSIGPIPE, +D_ExceptionCodeKind_LinuxSIGALRM, +D_ExceptionCodeKind_LinuxSIGTERM, +D_ExceptionCodeKind_LinuxSIGSTKFLT, +D_ExceptionCodeKind_LinuxSIGCHLD, +D_ExceptionCodeKind_LinuxSIGCONT, +D_ExceptionCodeKind_LinuxSIGSTOP, +D_ExceptionCodeKind_LinuxSIGTSTP, +D_ExceptionCodeKind_LinuxSIGTTIN, +D_ExceptionCodeKind_LinuxSIGTTOU, +D_ExceptionCodeKind_LinuxSIGURG, +D_ExceptionCodeKind_LinuxSIGXCPU, +D_ExceptionCodeKind_LinuxSIGXFSZ, +D_ExceptionCodeKind_LinuxSIGVTALRM, +D_ExceptionCodeKind_LinuxSIGPROF, +D_ExceptionCodeKind_LinuxSIGWINCH, +D_ExceptionCodeKind_LinuxSIGIO, +D_ExceptionCodeKind_LinuxSIGPWR, +D_ExceptionCodeKind_LinuxSIGSYS, D_ExceptionCodeKind_COUNT, } D_ExceptionCodeKind; @@ -133,10 +164,11 @@ struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] = C_LINKAGE_BEGIN extern String8 d_entity_kind_code_name_table[13]; extern String8 d_entity_kind_display_string_table[13]; -extern U32 d_exception_code_kind_code_table[38]; -extern String8 d_exception_code_kind_display_string_table[38]; -extern String8 d_exception_code_kind_lowercase_code_string_table[38]; -extern B8 d_exception_code_kind_default_enable_table[38]; +extern U32 d_exception_code_kind_code_table[69]; +extern OperatingSystem d_exception_code_kind_os_table[69]; +extern String8 d_exception_code_kind_display_string_table[69]; +extern String8 d_exception_code_kind_lowercase_code_string_table[69]; +extern B8 d_exception_code_kind_default_enable_table[69]; C_LINKAGE_END diff --git a/src/linux/linux.mdesk b/src/linux/linux.mdesk index 4bcee0fc..b510bb4f 100644 --- a/src/linux/linux.mdesk +++ b/src/linux/linux.mdesk @@ -1,38 +1,37 @@ // Copyright (c) Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -@table(name code repeatable) LNX_SignalCodeTable: +@table(name name_lower code repeatable break_default desc) 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 } + { SIGHUP sighup 1 1 1 "Hangup detected on controlling terminal or death of controlling process" } + { SIGINT sigint 2 1 1 "Interrupt from keyboard"} + { SIGQUIT sigquit 3 1 1 "Quit from keyboard"} + { SIGILL sigill 4 1 1 "Illegal Instruction"} + { SIGTRAP sigtrap 5 1 1 "Trace/breakpoint trap"} + { SIGABRT sigabrt 6 1 1 "Abort signal"} + { SIGBUS sigbus 7 1 1 "Bus error (bad address)"} + { SIGFPE sigfpe 8 1 1 "Erroneous arithmetic operation"} + { SIGKILL sigkill 9 1 1 "Kill signal"} + { SIGUSR1 sigusr1 10 1 1 "User-defined signal 1"} + { SIGSEGV sigsegv 11 1 1 "Invalid memory reference"} + { SIGUSR2 sigusr2 12 1 1 "User-defined signal 2"} + { SIGPIPE sigpipe 13 1 1 "Broken pipe; write to pipe with no readers"} + { SIGALRM sigalrm 14 1 1 "Timer signal"} + { SIGTERM sigterm 15 1 1 "Termination signal"} + { SIGSTKFLT sigstkflt 16 1 1 "Stack fault on coprocessor"} + { SIGCHLD sigchld 17 0 1 "Child stopped, terminated, or continued"} + { SIGCONT sigcont 18 0 0 "Continue if stopped"} + { SIGSTOP sigstop 19 1 1 "Stop process"} + { SIGTSTP sigtstp 20 1 1 "Stop typed at terminal"} + { SIGTTIN sigttin 21 1 0 "Terminal input for background process"} + { SIGTTOU sigttou 22 1 0 "Terminal output for background process"} + { SIGURG sigurg 23 0 0 "Urgent condition on socket"} + { SIGXCPU sigxcpu 24 1 1 "CPU time limit exceeded"} + { SIGXFSZ sigxfsz 25 1 1 "File size limit exceeded"} + { SIGVTALRM sigvtalrm 26 1 0 "Virtual alarm clock"} + { SIGPROF sigprof 27 1 0 "Profiling timer expired"} + { SIGWINCH sigwinch 28 0 0 "Window resize signal"} + { SIGIO sigio 29 1 0 "I/O now possible"} + { SIGPWR sigpwr 30 1 1 "Power failure"} + { SIGSYS sigsys 31 1 1 "Bad system call"} } diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index 7a9d7690..fa347d9d 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -439,7 +439,7 @@ RD_VocabInfo rd_vocab_info_table[370] = RD_NameSchemaInfo rd_name_schema_info_table[39] = { {str8_lit_comp("user"), 0, str8_lit_comp("@expand_commands(edit_user_theme) x:\n{\n //- rjf: animations\n @display_name('Animations') @description(\"Enables animations.\")\n @default(1) 'animations': bool,\n @display_name('Scrolling Animations') @description(\"Enables scrolling animations.\")\n @expand_if(\"$.animations\") @default(1) 'scrolling_animations': bool,\n @display_name('Tooltip Animations') @description(\"Enables tooltip animations.\")\n @expand_if(\"$.animations\") @default(1) 'tooltip_animations': bool,\n @display_name('Menu Animations') @description(\"Enables menu animations.\")\n @expand_if(\"$.animations\") @default(1) 'menu_animations': bool,\n\n //- rjf: fonts\n @display_name('Use Alternative Font For UI') @description(\"Uses an alternative font for non-code UI elements.\")\n @default(1) 'use_alternative_font_for_ui': bool,\n @expand_if(\"$.use_alternative_font_for_ui\") @display_name('UI Font') @description(\"The name of, or path to, the font used when displaying non-code UI elements.\")\n @default('') 'main_font': string,\n @expand_if(\"$.use_alternative_font_for_ui\") @display_name('Code Font') @description(\"The name of, or path to, the font used when displaying code.\")\n @default('') 'code_font': string,\n @expand_if(\"!$.use_alternative_font_for_ui\") @display_name('Font') @description(\"The name of, or path to, the font used in all UI.\")\n @default('') 'font': string,\n\n //- rjf: theme\n @default(\"Default (Dark)\") @display_name('User Theme')\n @description(\"The user's theme, which describes all colors used throughout the UI.\")\n 'theme': string,\n @no_expand @display_name('User Theme')\n 'theme_colors': set,\n\n //- rjf: auto eval\n @display_name('Show Auto Watches In Source / Disassembly') @description(\"Enables the display of auto watch expressions inline in source and disassembly views.\") @default(1)\n 'show_autos_in_src_and_disasm': bool,\n\n //- rjf: autocompletion\n @display_name('Autocompletion Lister') @description(\"Enables the autocompletion lister while typing expressions.\") @default(1)\n 'autocompletion_lister': bool,\n @display_name('View Call Argument Helper') @description(\"Enables the view call argument helper, which shows view arguments and documentation, while typing expressions.\") @default(1)\n 'view_call_argument_helper': bool,\n\n //- rjf: scope decorations\n @default(1) @display_name('Cursor Scope Lines') @description(\"Controls whether or not scopes containing the cursor in text views are drawn.\")\n 'cursor_scope_lines': bool,\n @default(1) @display_name('Cursor Scope End Annotations') @description(\"Controls whether or not ending annotations for scopes containing the cursor are drawn.\")\n 'cursor_scope_end_annotations': bool,\n\n //- rjf: cursor decorations\n @default(1) @display_name('Cursor Trail') @expand_if(\"$.animations\") @description(\"Controls whether or not a movement trail animation of the cursor is drawn.\")\n 'cursor_trail': bool,\n\n //- rjf: thread & breakpoint decorations\n @default(1) @display_name('Thread Lines') @description(\"Controls whether or not a long horizontal line is drawn before the next line or instruction that the selected thread will execute in source and disassembly views.\")\n 'thread_lines': bool,\n @default(1) @display_name('Thread Glow') @description(\"Controls whether or not a glowing effect is drawn on the selected thread in source and disassembly views.\")\n 'thread_glow': bool,\n @default(1) @display_name('Breakpoint Lines') @description(\"Controls whether or not a long horizontal line is drawn before the line or instruction at which a breakpoint is placed, in source and disassembly views.\")\n 'breakpoint_lines': bool,\n @default(1) @display_name('Breakpoint Glow') @description(\"Controls whether or not a glowing effect is drawn on breakpoints in source and disassembly views.\")\n 'breakpoint_glow': bool,\n\n //- rjf: occluding background settings\n @default(0) @display_name('Opaque Backgrounds') @description(\"Controls whether or not all floating background colors are forced to be fully opaque.\")\n 'opaque_backgrounds': bool,\n @default(1) @display_name('Background Blur') @description(\"Controls whether or not occluded regions behind floating elements are blurred.\")\n 'background_blur': bool,\n\n //- rjf: appearance settings\n @default(1) @display_name('Drop Shadows') @description(\"Controls whether or not drop shadows are drawn.\")\n 'drop_shadows': bool,\n @default(1.f) @display_name('Rounded Corner Amount') @description(\"Controls the degree to which UI corners are rounded.\")\n 'rounded_corner_amount': @range[0, 1] f32,\n\n //- rjf: code formatting settings\n @default(2) @display_name('User Tab Width') 'tab_width': @range[1, 32] u64,\n\n //- rjf: windows style menu bar\n @default(1) @display_name('Focus Menu Bar With Alt') @description(\"Mimics standard Windows behavior of focusing the menu bar using the Alt key.\")\n 'focus_menu_bar_with_alt': bool,\n\n //- rjf: native filesystem dialogues\n @default(0) @display_name('Use Native File System Dialog') @description(\"Uses the operating system's file system dialog box, rather than the debugger's built-in UI.\")\n 'use_native_file_system_dialog': bool,\n\n //- rjf: transient tabs\n @default(1) @display_name('Transient Tabs') @description(\"When snapping to source code locations, opens new files in a 'transient' tab if they are not already open. Transient tabs are replaced on subsequent snaps automatically.\")\n 'transient_tabs': bool,\n\n //- rjf: auto-load last project\n @default(0) @display_name('Auto Load Last Project') @description(\"Enables loading the most recently opened project, if one is not specified from the command line.\")\n 'auto_load_last_project': bool,\n\n //- rjf: symbol server\n @default(0) @display_name('Auto Download Debug Info') @description(\"Automatically tries to download missing debug info from symbol server(s).\")\n 'auto_download_debug_info': bool,\n\n //- rjf: breakpoint behavior\n @default(0) @display_name('Lock New Breakpoints To Selected Thread') @description(\"When placing breakpoints, locks them to the selected thread by default.\")\n 'lock_new_breakpoints_to_selected_thread': bool,\n\n //- rjf: update check\n @default(1) @display_name('Check For Updates') @description(\"Enables a small network request to check if there is a newer release version available.\")\n 'check_for_updates': bool,\n\n //- rjf: system installation\n @display_name('Install To System') @description(\"Controls whether or not associated installation files are created on the system, for tighter integration with the operating system shell.\") 'install_to_system': bool,\n}\n")}, -{str8_lit_comp("project"), 0, str8_lit_comp("@expand_commands(edit_project_theme) x:\n{\n @display_name('Project Name') 'name': string,\n @default(2) @display_name('Project Tab Width') 'tab_width': @range[1, 32] u64,\n\n //- rjf: visualizers\n @display_name('Display Pointer Addresses Before Contents') @description(\"When visualizing pointers, always shows the address first, before showing contents at the pointer's address.\")\n @default(0) display_pointer_addresses_before_contents: bool,\n @display_name('Use Default C++ STL Type Visualizers') @description(\"Enables the built-in type views for C++ STL types.\")\n @default(1) use_default_stl_type_views: bool,\n @display_name('Use Default Unreal Engine Type Visualizers') @description(\"Enables the built-in type views for Unreal Engine types.\")\n @default(1) use_default_ue_type_views: bool,\n\n //- rjf: theme\n @default(\"None\") @display_name('Project Theme') @description(\"The project's theme, which describes all colors used throughout the UI, and can override the user's theme.\")\n 'theme': string,\n @no_expand @display_name('Project Theme') @description(\"The project's theme, which describes all colors used throughout the UI, and can override the user's theme.\")\n 'theme_colors': set,\n\n //- rjf: exception settings\n @default(1) @display_name(\"Break On Win32 Control-C Exceptions\") @description(\"Code: 0x40010005\")\n win32_ctrl_c: bool;\n @default(1) @display_name(\"Break On Win32 Control-Break Exceptions\") @description(\"Code: 0x40010008\")\n win32_ctrl_break: bool;\n @default(0) @display_name(\"Break On Win32 WinRT Originate Error Exceptions\") @description(\"Code: 0x40080201\")\n win32_win_rt_originate_error: bool;\n @default(0) @display_name(\"Break On Win32 WinRT Transform Error Exceptions\") @description(\"Code: 0x40080202\")\n win32_win_rt_transform_error: bool;\n @default(0) @display_name(\"Break On Win32 RPC Call Cancelled Exceptions\") @description(\"Code: 0x0000071a\")\n win32_rpc_call_cancelled: bool;\n @default(0) @display_name(\"Break On Win32 Data Type Misalignment Exceptions\") @description(\"Code: 0x80000002\")\n win32_datatype_misalignment: bool;\n @default(1) @display_name(\"Break On Win32 Access Violation Exceptions\") @description(\"Code: 0xc0000005\")\n win32_access_violation: bool;\n @default(0) @display_name(\"Break On Win32 In Page Error Exceptions\") @description(\"Code: 0xc0000006\")\n win32_in_page_error: bool;\n @default(1) @display_name(\"Break On Win32 Invalid Handle Specified Exceptions\") @description(\"Code: 0xc0000008\")\n win32_invalid_handle: bool;\n @default(0) @display_name(\"Break On Win32 Not Enough Quota Exceptions\") @description(\"Code: 0xc0000017\")\n win32_not_enough_quota: bool;\n @default(0) @display_name(\"Break On Win32 Illegal Instruction Exceptions\") @description(\"Code: 0xc000001d\")\n win32_illegal_instruction: bool;\n @default(0) @display_name(\"Break On Win32 Cannot Continue From Exception Exceptions\") @description(\"Code: 0xc0000025\")\n win32_cannot_continue_exception: bool;\n @default(0) @display_name(\"Break On Win32 Invalid Exception Disposition Returned By Handler Exceptions\") @description(\"Code: 0xc0000026\")\n win32_invalid_exception_disposition: bool;\n @default(0) @display_name(\"Break On Win32 Array Bounds Exceeded Exceptions\") @description(\"Code: 0xc000008c\")\n win32_array_bounds_exceeded: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Denormal Operand Exceptions\") @description(\"Code: 0xc000008d\")\n win32_floating_point_denormal_operand: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Division By Zero Exceptions\") @description(\"Code: 0xc000008e\")\n win32_floating_point_division_by_zero: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Inexact Result Exceptions\") @description(\"Code: 0xc000008f\")\n win32_floating_point_inexact_result: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Invalid Operation Exceptions\") @description(\"Code: 0xc0000090\")\n win32_floating_point_invalid_operation: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Overflow Exceptions\") @description(\"Code: 0xc0000091\")\n win32_floating_point_overflow: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Stack Check Exceptions\") @description(\"Code: 0xc0000092\")\n win32_floating_point_stack_check: bool;\n @default(0) @display_name(\"Break On Win32 Floating-Point Underflow Exceptions\") @description(\"Code: 0xc0000093\")\n win32_floating_point_underflow: bool;\n @default(0) @display_name(\"Break On Win32 Integer Division By Zero Exceptions\") @description(\"Code: 0xc0000094\")\n win32_integer_division_by_zero: bool;\n @default(0) @display_name(\"Break On Win32 Integer Overflow Exceptions\") @description(\"Code: 0xc0000095\")\n win32_integer_overflow: bool;\n @default(0) @display_name(\"Break On Win32 Privileged Instruction Exceptions\") @description(\"Code: 0xc0000096\")\n win32_privileged_instruction: bool;\n @default(0) @display_name(\"Break On Win32 Stack Overflow Exceptions\") @description(\"Code: 0xc00000fd\")\n win32_stack_overflow: bool;\n @default(0) @display_name(\"Break On Win32 Unable To Locate DLL Exceptions\") @description(\"Code: 0xc0000135\")\n win32_unable_to_locate_dll: bool;\n @default(0) @display_name(\"Break On Win32 Ordinal Not Found Exceptions\") @description(\"Code: 0xc0000138\")\n win32_ordinal_not_found: bool;\n @default(0) @display_name(\"Break On Win32 Entry Point Not Found Exceptions\") @description(\"Code: 0xc0000139\")\n win32_entry_point_not_found: bool;\n @default(0) @display_name(\"Break On Win32 DLL Initialization Failed Exceptions\") @description(\"Code: 0xc0000142\")\n win32_dll_initialization_failed: bool;\n @default(0) @display_name(\"Break On Win32 Floating Point SSE Multiple Faults Exceptions\") @description(\"Code: 0xc00002b4\")\n win32_floating_point_sse_multiple_faults: bool;\n @default(0) @display_name(\"Break On Win32 Floating Point SSE Multiple Traps Exceptions\") @description(\"Code: 0xc00002b5\")\n win32_floating_point_sse_multiple_traps: bool;\n @default(1) @display_name(\"Break On Win32 Assertion Failed Exceptions\") @description(\"Code: 0xc0000420\")\n win32_assertion_failed: bool;\n @default(0) @display_name(\"Break On Win32 Module Not Found Exceptions\") @description(\"Code: 0xc06d007e\")\n win32_module_not_found: bool;\n @default(0) @display_name(\"Break On Win32 Procedure Not Found Exceptions\") @description(\"Code: 0xc06d007f\")\n win32_procedure_not_found: bool;\n @default(1) @display_name(\"Break On Win32 Sanitizer Error Detected Exceptions\") @description(\"Code: 0xe073616e\")\n win32_sanitizer_error_detected: bool;\n @default(0) @display_name(\"Break On Win32 Sanitizer Raw Access Violation Exceptions\") @description(\"Code: 0xe0736171\")\n win32_sanitizer_raw_access_violation: bool;\n @default(1) @display_name(\"Break On Win32 DirectX Debug Layer Exceptions\") @description(\"Code: 0x0000087a\")\n win32_directx_debug_layer: bool;\n}\n")}, +{str8_lit_comp("project"), 0, str8_lit_comp("@expand_commands(edit_project_theme) x:\n{\n @display_name('Project Name') 'name': string,\n @default(2) @display_name('Project Tab Width') 'tab_width': @range[1, 32] u64,\n\n //- rjf: visualizers\n @display_name('Display Pointer Addresses Before Contents') @description(\"When visualizing pointers, always shows the address first, before showing contents at the pointer's address.\")\n @default(0) display_pointer_addresses_before_contents: bool,\n @display_name('Use Default C++ STL Type Visualizers') @description(\"Enables the built-in type views for C++ STL types.\")\n @default(1) use_default_stl_type_views: bool,\n @display_name('Use Default Unreal Engine Type Visualizers') @description(\"Enables the built-in type views for Unreal Engine types.\")\n @default(1) use_default_ue_type_views: bool,\n\n //- rjf: theme\n @default(\"None\") @display_name('Project Theme') @description(\"The project's theme, which describes all colors used throughout the UI, and can override the user's theme.\")\n 'theme': string,\n @no_expand @display_name('Project Theme') @description(\"The project's theme, which describes all colors used throughout the UI, and can override the user's theme.\")\n 'theme_colors': set,\n\n //- rjf: win32 exception settings\n @default(1) @display_name(\"Break on Win32 Control-C Exceptions\") @description(\"Code: 0x40010005\")\n win32_ctrl_c: bool;\n @default(1) @display_name(\"Break on Win32 Control-Break Exceptions\") @description(\"Code: 0x40010008\")\n win32_ctrl_break: bool;\n @default(0) @display_name(\"Break on Win32 WinRT Originate Error Exceptions\") @description(\"Code: 0x40080201\")\n win32_win_rt_originate_error: bool;\n @default(0) @display_name(\"Break on Win32 WinRT Transform Error Exceptions\") @description(\"Code: 0x40080202\")\n win32_win_rt_transform_error: bool;\n @default(0) @display_name(\"Break on Win32 RPC Call Cancelled Exceptions\") @description(\"Code: 0x0000071a\")\n win32_rpc_call_cancelled: bool;\n @default(0) @display_name(\"Break on Win32 Data Type Misalignment Exceptions\") @description(\"Code: 0x80000002\")\n win32_datatype_misalignment: bool;\n @default(1) @display_name(\"Break on Win32 Access Violation Exceptions\") @description(\"Code: 0xc0000005\")\n win32_access_violation: bool;\n @default(0) @display_name(\"Break on Win32 In Page Error Exceptions\") @description(\"Code: 0xc0000006\")\n win32_in_page_error: bool;\n @default(1) @display_name(\"Break on Win32 Invalid Handle Specified Exceptions\") @description(\"Code: 0xc0000008\")\n win32_invalid_handle: bool;\n @default(0) @display_name(\"Break on Win32 Not Enough Quota Exceptions\") @description(\"Code: 0xc0000017\")\n win32_not_enough_quota: bool;\n @default(0) @display_name(\"Break on Win32 Illegal Instruction Exceptions\") @description(\"Code: 0xc000001d\")\n win32_illegal_instruction: bool;\n @default(0) @display_name(\"Break on Win32 Cannot Continue From Exception Exceptions\") @description(\"Code: 0xc0000025\")\n win32_cannot_continue_exception: bool;\n @default(0) @display_name(\"Break on Win32 Invalid Exception Disposition Returned By Handler Exceptions\") @description(\"Code: 0xc0000026\")\n win32_invalid_exception_disposition: bool;\n @default(0) @display_name(\"Break on Win32 Array Bounds Exceeded Exceptions\") @description(\"Code: 0xc000008c\")\n win32_array_bounds_exceeded: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Denormal Operand Exceptions\") @description(\"Code: 0xc000008d\")\n win32_floating_point_denormal_operand: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Division By Zero Exceptions\") @description(\"Code: 0xc000008e\")\n win32_floating_point_division_by_zero: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Inexact Result Exceptions\") @description(\"Code: 0xc000008f\")\n win32_floating_point_inexact_result: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Invalid Operation Exceptions\") @description(\"Code: 0xc0000090\")\n win32_floating_point_invalid_operation: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Overflow Exceptions\") @description(\"Code: 0xc0000091\")\n win32_floating_point_overflow: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Stack Check Exceptions\") @description(\"Code: 0xc0000092\")\n win32_floating_point_stack_check: bool;\n @default(0) @display_name(\"Break on Win32 Floating-Point Underflow Exceptions\") @description(\"Code: 0xc0000093\")\n win32_floating_point_underflow: bool;\n @default(0) @display_name(\"Break on Win32 Integer Division By Zero Exceptions\") @description(\"Code: 0xc0000094\")\n win32_integer_division_by_zero: bool;\n @default(0) @display_name(\"Break on Win32 Integer Overflow Exceptions\") @description(\"Code: 0xc0000095\")\n win32_integer_overflow: bool;\n @default(0) @display_name(\"Break on Win32 Privileged Instruction Exceptions\") @description(\"Code: 0xc0000096\")\n win32_privileged_instruction: bool;\n @default(0) @display_name(\"Break on Win32 Stack Overflow Exceptions\") @description(\"Code: 0xc00000fd\")\n win32_stack_overflow: bool;\n @default(0) @display_name(\"Break on Win32 Unable To Locate DLL Exceptions\") @description(\"Code: 0xc0000135\")\n win32_unable_to_locate_dll: bool;\n @default(0) @display_name(\"Break on Win32 Ordinal Not Found Exceptions\") @description(\"Code: 0xc0000138\")\n win32_ordinal_not_found: bool;\n @default(0) @display_name(\"Break on Win32 Entry Point Not Found Exceptions\") @description(\"Code: 0xc0000139\")\n win32_entry_point_not_found: bool;\n @default(0) @display_name(\"Break on Win32 DLL Initialization Failed Exceptions\") @description(\"Code: 0xc0000142\")\n win32_dll_initialization_failed: bool;\n @default(0) @display_name(\"Break on Win32 Floating Point SSE Multiple Faults Exceptions\") @description(\"Code: 0xc00002b4\")\n win32_floating_point_sse_multiple_faults: bool;\n @default(0) @display_name(\"Break on Win32 Floating Point SSE Multiple Traps Exceptions\") @description(\"Code: 0xc00002b5\")\n win32_floating_point_sse_multiple_traps: bool;\n @default(1) @display_name(\"Break on Win32 Assertion Failed Exceptions\") @description(\"Code: 0xc0000420\")\n win32_assertion_failed: bool;\n @default(0) @display_name(\"Break on Win32 Module Not Found Exceptions\") @description(\"Code: 0xc06d007e\")\n win32_module_not_found: bool;\n @default(0) @display_name(\"Break on Win32 Procedure Not Found Exceptions\") @description(\"Code: 0xc06d007f\")\n win32_procedure_not_found: bool;\n @default(1) @display_name(\"Break on Win32 Sanitizer Error Detected Exceptions\") @description(\"Code: 0xe073616e\")\n win32_sanitizer_error_detected: bool;\n @default(0) @display_name(\"Break on Win32 Sanitizer Raw Access Violation Exceptions\") @description(\"Code: 0xe0736171\")\n win32_sanitizer_raw_access_violation: bool;\n @default(1) @display_name(\"Break on Win32 DirectX Debug Layer Exceptions\") @description(\"Code: 0x0000087a\")\n win32_directx_debug_layer: bool;\n\n //- rjf: linux exception settings\n @display_name(\"Break on Linux SIGHUP\") @default(1) @description(\"Hangup detected on controlling terminal or death of controlling process (Code: 1)\")\n linux_sighup: bool,\n @display_name(\"Break on Linux SIGINT\") @default(1) @description(\"Interrupt from keyboard (Code: 2)\")\n linux_sigint: bool,\n @display_name(\"Break on Linux SIGQUIT\") @default(1) @description(\"Quit from keyboard (Code: 3)\")\n linux_sigquit: bool,\n @display_name(\"Break on Linux SIGILL\") @default(1) @description(\"Illegal Instruction (Code: 4)\")\n linux_sigill: bool,\n @display_name(\"Break on Linux SIGTRAP\") @default(1) @description(\"Trace/breakpoint trap (Code: 5)\")\n linux_sigtrap: bool,\n @display_name(\"Break on Linux SIGABRT\") @default(1) @description(\"Abort signal (Code: 6)\")\n linux_sigabrt: bool,\n @display_name(\"Break on Linux SIGBUS\") @default(1) @description(\"Bus error (bad address) (Code: 7)\")\n linux_sigbus: bool,\n @display_name(\"Break on Linux SIGFPE\") @default(1) @description(\"Erroneous arithmetic operation (Code: 8)\")\n linux_sigfpe: bool,\n @display_name(\"Break on Linux SIGKILL\") @default(1) @description(\"Kill signal (Code: 9)\")\n linux_sigkill: bool,\n @display_name(\"Break on Linux SIGUSR1\") @default(1) @description(\"User-defined signal 1 (Code: 10)\")\n linux_sigusr1: bool,\n @display_name(\"Break on Linux SIGSEGV\") @default(1) @description(\"Invalid memory reference (Code: 11)\")\n linux_sigsegv: bool,\n @display_name(\"Break on Linux SIGUSR2\") @default(1) @description(\"User-defined signal 2 (Code: 12)\")\n linux_sigusr2: bool,\n @display_name(\"Break on Linux SIGPIPE\") @default(1) @description(\"Broken pipe; write to pipe with no readers (Code: 13)\")\n linux_sigpipe: bool,\n @display_name(\"Break on Linux SIGALRM\") @default(1) @description(\"Timer signal (Code: 14)\")\n linux_sigalrm: bool,\n @display_name(\"Break on Linux SIGTERM\") @default(1) @description(\"Termination signal (Code: 15)\")\n linux_sigterm: bool,\n @display_name(\"Break on Linux SIGSTKFLT\") @default(1) @description(\"Stack fault on coprocessor (Code: 16)\")\n linux_sigstkflt: bool,\n @display_name(\"Break on Linux SIGCHLD\") @default(1) @description(\"Child stopped, terminated, or continued (Code: 17)\")\n linux_sigchld: bool,\n @display_name(\"Break on Linux SIGCONT\") @default(1) @description(\"Continue if stopped (Code: 18)\")\n linux_sigcont: bool,\n @display_name(\"Break on Linux SIGSTOP\") @default(1) @description(\"Stop process (Code: 19)\")\n linux_sigstop: bool,\n @display_name(\"Break on Linux SIGTSTP\") @default(1) @description(\"Stop typed at terminal (Code: 20)\")\n linux_sigtstp: bool,\n @display_name(\"Break on Linux SIGTTIN\") @default(1) @description(\"Terminal input for background process (Code: 21)\")\n linux_sigttin: bool,\n @display_name(\"Break on Linux SIGTTOU\") @default(1) @description(\"Terminal output for background process (Code: 22)\")\n linux_sigttou: bool,\n @display_name(\"Break on Linux SIGURG\") @default(1) @description(\"Urgent condition on socket (Code: 23)\")\n linux_sigurg: bool,\n @display_name(\"Break on Linux SIGXCPU\") @default(1) @description(\"CPU time limit exceeded (Code: 24)\")\n linux_sigxcpu: bool,\n @display_name(\"Break on Linux SIGXFSZ\") @default(1) @description(\"File size limit exceeded (Code: 25)\")\n linux_sigxfsz: bool,\n @display_name(\"Break on Linux SIGVTALRM\") @default(1) @description(\"Virtual alarm clock (Code: 26)\")\n linux_sigvtalrm: bool,\n @display_name(\"Break on Linux SIGPROF\") @default(1) @description(\"Profiling timer expired (Code: 27)\")\n linux_sigprof: bool,\n @display_name(\"Break on Linux SIGWINCH\") @default(1) @description(\"Window resize signal (Code: 28)\")\n linux_sigwinch: bool,\n @display_name(\"Break on Linux SIGIO\") @default(1) @description(\"I/O now possible (Code: 29)\")\n linux_sigio: bool,\n @display_name(\"Break on Linux SIGPWR\") @default(1) @description(\"Power failure (Code: 30)\")\n linux_sigpwr: bool,\n @display_name(\"Break on Linux SIGSYS\") @default(1) @description(\"Bad system call (Code: 31)\")\n linux_sigsys: bool,\n}\n")}, {str8_lit_comp("theme_color"), 0, str8_lit_comp("@collection_commands(add_theme_color, fork_theme, save_theme, save_and_set_theme)\n@row_commands(duplicate_cfg, remove_cfg)\nx:\n{\n @display_name('Tags') tags: string,\n @display_name('Value') value: @color @hex u32,\n}\n")}, {str8_lit_comp("window"), 0, str8_lit_comp("x:\n{\n //- rjf: text rasterization settings\n @default(1) @display_name('Smooth UI Text') @description(\"Controls whether or not UI text is fully anti-aliased, for a smoother appearance.\")\n 'smooth_ui_text': bool,\n @default(1) @display_name('Hint UI Text') @description(\"Controls whether or not UI text is hinted, for better text readability at small sizes.\")\n 'hint_ui_text': bool,\n @default(0) @display_name('Smooth Code Text') @description(\"Controls whether or not code text is fully anti-aliased, for a smoother appearance.\")\n 'smooth_code_text': bool,\n @default(1) @display_name('Hint Code Text') @description(\"Controls whether or not code text is hinted, for better text readability at small sizes.\")\n 'hint_code_text': bool,\n @default(11) @display_name('Window Font Size') @description(\"Controls the window's default font size. Does not apply to tabs with their own font size set.\")\n 'font_size': @range[6, 72] u64,\n\n //- rjf: size settings\n @default(3.f) @display_name('Window Row Height') @description(\"Controls the window's default row height, in multiples of the font size. Does not apply to tabs with their own row height set.\")\n 'row_height': @range[1.75f, 5.f] f32,\n @default(3.f) @description(\"Controls the height of tabs, in multiples of the font size.\")\n 'tab_height': @range[1.75f, 5.f] f32,\n\n //- rjf: theme settings\n @default(1) @display_name('Use Project Theme') @description(\"Prefer using the project theme for this window, if any. If off, only the user's theme settings will be used.\")\n 'use_project_theme': bool,\n}\n")}, {str8_lit_comp("tab"), 0, str8_lit_comp("@row_commands(@file copy_tab_full_path, @file show_file_in_explorer, duplicate_tab, close_tab)\nx:\n{\n @override @display_name('Tab Font Size') @description(\"Controls the tab's font size.\") @no_callee_helper\n 'font_size': @range[6, 72] u64,\n}\n")}, diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 2c9d75a8..6d970676 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -329,7 +329,7 @@ RD_VocabTable: //- rjf: breakpoint behavior @default(0) @display_name('Lock New Breakpoints To Selected Thread') @description("When placing breakpoints, locks them to the selected thread by default.") 'lock_new_breakpoints_to_selected_thread': bool, - + //- rjf: update check @default(1) @display_name('Check For Updates') @description("Enables a small network request to check if there is a newer release version available.") 'check_for_updates': bool, @@ -368,81 +368,145 @@ RD_VocabTable: @no_expand @display_name('Project Theme') @description("The project's theme, which describes all colors used throughout the UI, and can override the user's theme.") 'theme_colors': set, - //- rjf: exception settings - @default(1) @display_name("Break On Win32 Control-C Exceptions") @description("Code: 0x40010005") + //- rjf: win32 exception settings + @default(1) @display_name("Break on Win32 Control-C Exceptions") @description("Code: 0x40010005") win32_ctrl_c: bool; - @default(1) @display_name("Break On Win32 Control-Break Exceptions") @description("Code: 0x40010008") + @default(1) @display_name("Break on Win32 Control-Break Exceptions") @description("Code: 0x40010008") win32_ctrl_break: bool; - @default(0) @display_name("Break On Win32 WinRT Originate Error Exceptions") @description("Code: 0x40080201") + @default(0) @display_name("Break on Win32 WinRT Originate Error Exceptions") @description("Code: 0x40080201") win32_win_rt_originate_error: bool; - @default(0) @display_name("Break On Win32 WinRT Transform Error Exceptions") @description("Code: 0x40080202") + @default(0) @display_name("Break on Win32 WinRT Transform Error Exceptions") @description("Code: 0x40080202") win32_win_rt_transform_error: bool; - @default(0) @display_name("Break On Win32 RPC Call Cancelled Exceptions") @description("Code: 0x0000071a") + @default(0) @display_name("Break on Win32 RPC Call Cancelled Exceptions") @description("Code: 0x0000071a") win32_rpc_call_cancelled: bool; - @default(0) @display_name("Break On Win32 Data Type Misalignment Exceptions") @description("Code: 0x80000002") + @default(0) @display_name("Break on Win32 Data Type Misalignment Exceptions") @description("Code: 0x80000002") win32_datatype_misalignment: bool; - @default(1) @display_name("Break On Win32 Access Violation Exceptions") @description("Code: 0xc0000005") + @default(1) @display_name("Break on Win32 Access Violation Exceptions") @description("Code: 0xc0000005") win32_access_violation: bool; - @default(0) @display_name("Break On Win32 In Page Error Exceptions") @description("Code: 0xc0000006") + @default(0) @display_name("Break on Win32 In Page Error Exceptions") @description("Code: 0xc0000006") win32_in_page_error: bool; - @default(1) @display_name("Break On Win32 Invalid Handle Specified Exceptions") @description("Code: 0xc0000008") + @default(1) @display_name("Break on Win32 Invalid Handle Specified Exceptions") @description("Code: 0xc0000008") win32_invalid_handle: bool; - @default(0) @display_name("Break On Win32 Not Enough Quota Exceptions") @description("Code: 0xc0000017") + @default(0) @display_name("Break on Win32 Not Enough Quota Exceptions") @description("Code: 0xc0000017") win32_not_enough_quota: bool; - @default(0) @display_name("Break On Win32 Illegal Instruction Exceptions") @description("Code: 0xc000001d") + @default(0) @display_name("Break on Win32 Illegal Instruction Exceptions") @description("Code: 0xc000001d") win32_illegal_instruction: bool; - @default(0) @display_name("Break On Win32 Cannot Continue From Exception Exceptions") @description("Code: 0xc0000025") + @default(0) @display_name("Break on Win32 Cannot Continue From Exception Exceptions") @description("Code: 0xc0000025") win32_cannot_continue_exception: bool; - @default(0) @display_name("Break On Win32 Invalid Exception Disposition Returned By Handler Exceptions") @description("Code: 0xc0000026") + @default(0) @display_name("Break on Win32 Invalid Exception Disposition Returned By Handler Exceptions") @description("Code: 0xc0000026") win32_invalid_exception_disposition: bool; - @default(0) @display_name("Break On Win32 Array Bounds Exceeded Exceptions") @description("Code: 0xc000008c") + @default(0) @display_name("Break on Win32 Array Bounds Exceeded Exceptions") @description("Code: 0xc000008c") win32_array_bounds_exceeded: bool; - @default(0) @display_name("Break On Win32 Floating-Point Denormal Operand Exceptions") @description("Code: 0xc000008d") + @default(0) @display_name("Break on Win32 Floating-Point Denormal Operand Exceptions") @description("Code: 0xc000008d") win32_floating_point_denormal_operand: bool; - @default(0) @display_name("Break On Win32 Floating-Point Division By Zero Exceptions") @description("Code: 0xc000008e") + @default(0) @display_name("Break on Win32 Floating-Point Division By Zero Exceptions") @description("Code: 0xc000008e") win32_floating_point_division_by_zero: bool; - @default(0) @display_name("Break On Win32 Floating-Point Inexact Result Exceptions") @description("Code: 0xc000008f") + @default(0) @display_name("Break on Win32 Floating-Point Inexact Result Exceptions") @description("Code: 0xc000008f") win32_floating_point_inexact_result: bool; - @default(0) @display_name("Break On Win32 Floating-Point Invalid Operation Exceptions") @description("Code: 0xc0000090") + @default(0) @display_name("Break on Win32 Floating-Point Invalid Operation Exceptions") @description("Code: 0xc0000090") win32_floating_point_invalid_operation: bool; - @default(0) @display_name("Break On Win32 Floating-Point Overflow Exceptions") @description("Code: 0xc0000091") + @default(0) @display_name("Break on Win32 Floating-Point Overflow Exceptions") @description("Code: 0xc0000091") win32_floating_point_overflow: bool; - @default(0) @display_name("Break On Win32 Floating-Point Stack Check Exceptions") @description("Code: 0xc0000092") + @default(0) @display_name("Break on Win32 Floating-Point Stack Check Exceptions") @description("Code: 0xc0000092") win32_floating_point_stack_check: bool; - @default(0) @display_name("Break On Win32 Floating-Point Underflow Exceptions") @description("Code: 0xc0000093") + @default(0) @display_name("Break on Win32 Floating-Point Underflow Exceptions") @description("Code: 0xc0000093") win32_floating_point_underflow: bool; - @default(0) @display_name("Break On Win32 Integer Division By Zero Exceptions") @description("Code: 0xc0000094") + @default(0) @display_name("Break on Win32 Integer Division By Zero Exceptions") @description("Code: 0xc0000094") win32_integer_division_by_zero: bool; - @default(0) @display_name("Break On Win32 Integer Overflow Exceptions") @description("Code: 0xc0000095") + @default(0) @display_name("Break on Win32 Integer Overflow Exceptions") @description("Code: 0xc0000095") win32_integer_overflow: bool; - @default(0) @display_name("Break On Win32 Privileged Instruction Exceptions") @description("Code: 0xc0000096") + @default(0) @display_name("Break on Win32 Privileged Instruction Exceptions") @description("Code: 0xc0000096") win32_privileged_instruction: bool; - @default(0) @display_name("Break On Win32 Stack Overflow Exceptions") @description("Code: 0xc00000fd") + @default(0) @display_name("Break on Win32 Stack Overflow Exceptions") @description("Code: 0xc00000fd") win32_stack_overflow: bool; - @default(0) @display_name("Break On Win32 Unable To Locate DLL Exceptions") @description("Code: 0xc0000135") + @default(0) @display_name("Break on Win32 Unable To Locate DLL Exceptions") @description("Code: 0xc0000135") win32_unable_to_locate_dll: bool; - @default(0) @display_name("Break On Win32 Ordinal Not Found Exceptions") @description("Code: 0xc0000138") + @default(0) @display_name("Break on Win32 Ordinal Not Found Exceptions") @description("Code: 0xc0000138") win32_ordinal_not_found: bool; - @default(0) @display_name("Break On Win32 Entry Point Not Found Exceptions") @description("Code: 0xc0000139") + @default(0) @display_name("Break on Win32 Entry Point Not Found Exceptions") @description("Code: 0xc0000139") win32_entry_point_not_found: bool; - @default(0) @display_name("Break On Win32 DLL Initialization Failed Exceptions") @description("Code: 0xc0000142") + @default(0) @display_name("Break on Win32 DLL Initialization Failed Exceptions") @description("Code: 0xc0000142") win32_dll_initialization_failed: bool; - @default(0) @display_name("Break On Win32 Floating Point SSE Multiple Faults Exceptions") @description("Code: 0xc00002b4") + @default(0) @display_name("Break on Win32 Floating Point SSE Multiple Faults Exceptions") @description("Code: 0xc00002b4") win32_floating_point_sse_multiple_faults: bool; - @default(0) @display_name("Break On Win32 Floating Point SSE Multiple Traps Exceptions") @description("Code: 0xc00002b5") + @default(0) @display_name("Break on Win32 Floating Point SSE Multiple Traps Exceptions") @description("Code: 0xc00002b5") win32_floating_point_sse_multiple_traps: bool; - @default(1) @display_name("Break On Win32 Assertion Failed Exceptions") @description("Code: 0xc0000420") + @default(1) @display_name("Break on Win32 Assertion Failed Exceptions") @description("Code: 0xc0000420") win32_assertion_failed: bool; - @default(0) @display_name("Break On Win32 Module Not Found Exceptions") @description("Code: 0xc06d007e") + @default(0) @display_name("Break on Win32 Module Not Found Exceptions") @description("Code: 0xc06d007e") win32_module_not_found: bool; - @default(0) @display_name("Break On Win32 Procedure Not Found Exceptions") @description("Code: 0xc06d007f") + @default(0) @display_name("Break on Win32 Procedure Not Found Exceptions") @description("Code: 0xc06d007f") win32_procedure_not_found: bool; - @default(1) @display_name("Break On Win32 Sanitizer Error Detected Exceptions") @description("Code: 0xe073616e") + @default(1) @display_name("Break on Win32 Sanitizer Error Detected Exceptions") @description("Code: 0xe073616e") win32_sanitizer_error_detected: bool; - @default(0) @display_name("Break On Win32 Sanitizer Raw Access Violation Exceptions") @description("Code: 0xe0736171") + @default(0) @display_name("Break on Win32 Sanitizer Raw Access Violation Exceptions") @description("Code: 0xe0736171") win32_sanitizer_raw_access_violation: bool; - @default(1) @display_name("Break On Win32 DirectX Debug Layer Exceptions") @description("Code: 0x0000087a") + @default(1) @display_name("Break on Win32 DirectX Debug Layer Exceptions") @description("Code: 0x0000087a") win32_directx_debug_layer: bool; + + //- rjf: linux exception settings + @display_name("Break on Linux SIGHUP") @default(1) @description("Hangup detected on controlling terminal or death of controlling process (Code: 1)") + linux_sighup: bool, + @display_name("Break on Linux SIGINT") @default(1) @description("Interrupt from keyboard (Code: 2)") + linux_sigint: bool, + @display_name("Break on Linux SIGQUIT") @default(1) @description("Quit from keyboard (Code: 3)") + linux_sigquit: bool, + @display_name("Break on Linux SIGILL") @default(1) @description("Illegal Instruction (Code: 4)") + linux_sigill: bool, + @display_name("Break on Linux SIGTRAP") @default(1) @description("Trace/breakpoint trap (Code: 5)") + linux_sigtrap: bool, + @display_name("Break on Linux SIGABRT") @default(1) @description("Abort signal (Code: 6)") + linux_sigabrt: bool, + @display_name("Break on Linux SIGBUS") @default(1) @description("Bus error (bad address) (Code: 7)") + linux_sigbus: bool, + @display_name("Break on Linux SIGFPE") @default(1) @description("Erroneous arithmetic operation (Code: 8)") + linux_sigfpe: bool, + @display_name("Break on Linux SIGKILL") @default(1) @description("Kill signal (Code: 9)") + linux_sigkill: bool, + @display_name("Break on Linux SIGUSR1") @default(1) @description("User-defined signal 1 (Code: 10)") + linux_sigusr1: bool, + @display_name("Break on Linux SIGSEGV") @default(1) @description("Invalid memory reference (Code: 11)") + linux_sigsegv: bool, + @display_name("Break on Linux SIGUSR2") @default(1) @description("User-defined signal 2 (Code: 12)") + linux_sigusr2: bool, + @display_name("Break on Linux SIGPIPE") @default(1) @description("Broken pipe; write to pipe with no readers (Code: 13)") + linux_sigpipe: bool, + @display_name("Break on Linux SIGALRM") @default(1) @description("Timer signal (Code: 14)") + linux_sigalrm: bool, + @display_name("Break on Linux SIGTERM") @default(1) @description("Termination signal (Code: 15)") + linux_sigterm: bool, + @display_name("Break on Linux SIGSTKFLT") @default(1) @description("Stack fault on coprocessor (Code: 16)") + linux_sigstkflt: bool, + @display_name("Break on Linux SIGCHLD") @default(1) @description("Child stopped, terminated, or continued (Code: 17)") + linux_sigchld: bool, + @display_name("Break on Linux SIGCONT") @default(1) @description("Continue if stopped (Code: 18)") + linux_sigcont: bool, + @display_name("Break on Linux SIGSTOP") @default(1) @description("Stop process (Code: 19)") + linux_sigstop: bool, + @display_name("Break on Linux SIGTSTP") @default(1) @description("Stop typed at terminal (Code: 20)") + linux_sigtstp: bool, + @display_name("Break on Linux SIGTTIN") @default(1) @description("Terminal input for background process (Code: 21)") + linux_sigttin: bool, + @display_name("Break on Linux SIGTTOU") @default(1) @description("Terminal output for background process (Code: 22)") + linux_sigttou: bool, + @display_name("Break on Linux SIGURG") @default(1) @description("Urgent condition on socket (Code: 23)") + linux_sigurg: bool, + @display_name("Break on Linux SIGXCPU") @default(1) @description("CPU time limit exceeded (Code: 24)") + linux_sigxcpu: bool, + @display_name("Break on Linux SIGXFSZ") @default(1) @description("File size limit exceeded (Code: 25)") + linux_sigxfsz: bool, + @display_name("Break on Linux SIGVTALRM") @default(1) @description("Virtual alarm clock (Code: 26)") + linux_sigvtalrm: bool, + @display_name("Break on Linux SIGPROF") @default(1) @description("Profiling timer expired (Code: 27)") + linux_sigprof: bool, + @display_name("Break on Linux SIGWINCH") @default(1) @description("Window resize signal (Code: 28)") + linux_sigwinch: bool, + @display_name("Break on Linux SIGIO") @default(1) @description("I/O now possible (Code: 29)") + linux_sigio: bool, + @display_name("Break on Linux SIGPWR") @default(1) @description("Power failure (Code: 30)") + linux_sigpwr: bool, + @display_name("Break on Linux SIGSYS") @default(1) @description("Bad system call (Code: 31)") + linux_sigsys: bool, } ``` } diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index 753b0150..339b38a7 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -5,6 +5,11 @@ //~ rjf: linux TODO notes // // post initial alpha: +// [ ] 0x1b (SIGPROF) - need to ignore by default +// [ ] line stepping over function epilogue seems to end up just resuming in some cases +// [ ] function breakpoint resolution racing +// [ ] conditional breakpoint evaluation bug +// // [ ] windowing // [ ] wayland // [ ] support diff --git a/src/torture/torture_main.c b/src/torture/torture_main.c index a555e1ac..5bec4b84 100644 --- a/src/torture/torture_main.c +++ b/src/torture/torture_main.c @@ -21,6 +21,8 @@ #include "base/base_inc.h" #include "x64/x64_inc.h" +#include "win32/win32_inc.h" +#include "linux/linux_inc.h" #include "linker/hash_table.h" #include "linker/lf_hash_table.h" #include "linker/base_ext/base_bit_array.h" @@ -105,7 +107,9 @@ #include "torture.h" #include "base/base_inc.c" -#include "x64/x64.c" +#include "x64/x64_inc.c" +#include "win32/win32_inc.c" +#include "linux/linux_inc.c" #include "linker/hash_table.c" #include "linker/lf_hash_table.c" #include "linker/base_ext/base_bit_array.c"