Commit Graph
3609 Commits
Author SHA1 Message Date
Nikita Smith 7d0e168f8f typoes 2025-12-12 12:16:28 -08:00
Nikita Smith 7947d4dc55 outline DWARF expression evaluator 2025-12-11 16:43:21 -08:00
Nikita Smith 5b6ffd5a49 clean up instrumentation inherited during fork 2025-12-09 16:08:19 -08:00
Nikita Smith 094370c028 bugfix last string query 2025-12-09 14:02:06 -08:00
Nikita Smith 962f0e30ae WIP fork 2025-12-09 09:56:43 -08:00
Nikita Smith c221286ab8 WIP process attaching 2025-12-08 13:29:24 -08:00
Nikita Smith 9659ab4ad2 remove privileged registers 2025-12-05 17:03:05 -08:00
Nikita Smith 8005c31276 remove x86 register code 2025-12-05 16:39:02 -08:00
Nikita Smith ce77442d37 fix x87 register layout 2025-12-05 16:36:46 -08:00
Nikita Smith f4ceaecf75 set flags in xstate_bv for updated registers 2025-12-05 13:35:10 -08:00
Nikita Smith 38dbcde3f4 debug info path entity is needed otherwise unwinder fails to map key to RDI 2025-12-02 17:00:05 -08:00
Nikita Smith 81f08a01bc inline anonymous members 2025-12-02 14:39:36 -08:00
Nikita Smith f8f3f95d33 set trace options in PTRACE_SEIZE and remove unnecessary PTRACE_SETOPTIONS 2025-11-27 15:45:36 -08:00
Nikita Smith 1602a9e6ea runtime target OS handling 2025-11-27 11:17:47 -08:00
Nikita Smith 7f701dd806 minor fix 2025-11-26 20:31:34 -08:00
Nikita Smith f9561cb618 add support for CFA in the eval system
Canonical Frame Address is a DWARF-only concept encoded in the unwind info.
Debugger must store this data for each call frame and provide it to
the eval system based on selected stack frame.

To abstract over format details, we introduce a "Frame Unwind Context".
For DWARF, this context maintains the intermediate unwind state and exposes
the CFA, whereas for PE, it remains empty.
2025-11-26 15:42:40 -08:00
Nikita Smith 2a6d0d737c add CFA op to the bytecode 2025-11-26 15:13:24 -08:00
Nikita Smith a1884aaf5f WIP handle abnormal process initialization 2025-11-25 16:24:57 -08:00
Nikita Smith 0565fdef0a WIP add support for GNU LibC TLS model
Unlike on Windows, TLS index isn't part of the module format. glibc stores
it in the opaque link_map struct. There are many different heuristics
a debugger can use to locate it but most of them are unreliable and
prone to errors, or don't work when debugger attaches to a process.
We adopt the newer approach of looking for special symbols
in glibc that provide TLS index offset. These symbols were added in
2021, so programs linked with older glibc won't have TLS support.
2025-11-21 16:41:35 -08:00
Nikita Smith 7347d2f1bc pipe DW_ExprOp_FormTlsAddress through DW_ExprOp_GNU_PushTlsAddress 2025-11-21 16:11:16 -08:00
Nikita Smith 6fa71607e2 do not emit global vars for decls 2025-11-21 16:10:28 -08:00
Nikita Smith 533e7431e7 WIP switch to special mutex for syncing halts 2025-11-19 13:01:25 -08:00
Nikita Smith b7fb4fe04d WIP improved signal handling in multi-threaded programs 2025-11-19 11:38:22 -08:00
Nikita Smith 597ea44337 handle empty hash table case 2025-11-19 11:25:54 -08:00
Nikita Smith e0d0cf6e29 helper marco for dealing with syscalls that are interrupted 2025-11-19 11:25:16 -08:00
Nikita Smith a82cba0c87 cache env strings on startup 2025-11-19 11:24:11 -08:00
Nikita Smith 08f794527c updated hashing libraries 2025-11-13 11:45:34 -08:00
Nikita Smith 7cafde3376 revert DWARF changes to commit bda3a71379 2025-11-13 10:53:29 -08:00
Ryan Fleury 2a76093e17 form value resolution; line table header parsing 2025-11-11 17:24:12 -08:00
Ryan Fleury faee02f763 simplified dwarf parsing checkpoint: pull out form value reading, line table header parsing 2025-11-11 16:27:16 -08:00
Ryan Fleury b8a8ec31c7 checkpoint on simplified / stripped down dwarf -> rdi, and dwarf parsing helpers 2025-11-11 15:10:16 -08:00
Ryan Fleury 17ec73d752 dwarf cleanup checkpoint 2025-11-10 17:41:01 -08:00
Ryan Fleury 08642d2745 next checkpoint on dwarf cleanup 2025-11-10 16:37:23 -08:00
Ryan Fleury f396b2eaa3 start dwarf -> rdi cleanup; eliminate some assertions-as-validation, remove incorrect assumption that line info addresses are vaddrs (they seem to be voffs) 2025-11-10 15:06:52 -08:00
Ryan Fleury efb4731ace respect leading slashes in bake file path tree lookup 2025-11-07 16:53:30 -08:00
Ryan Fleury ed57428602 flip meta check in build.sh 2025-11-07 16:38:46 -08:00
Nikita SmithandRyan Fleury 1196de6916 move sys/wait.h to os_core_linux 2025-11-07 16:37:45 -08:00
Ryan Fleury 035e72306d o_cloexec; preserve leading slashes in root-level paths 2025-11-07 16:37:30 -08:00
Ryan Fleury d4d2159389 eliminate process array join api, no longer needed 2025-11-07 15:54:41 -08:00
Ryan Fleury 4ea3c5a0e4 artifact cache cancellation mutex -> semaphore (fixes cancellation thread on linux - we cannot take/drop across threads with mutexes); flip no_meta -> meta 2025-11-07 15:47:15 -08:00
Ryan Fleury 85778910c6 radbin build.sh 2025-11-07 15:47:15 -08:00
Nikita SmithandRyan Fleury 32bdd14d8e image base for a dynamic ELF is always zero 2025-11-07 15:47:15 -08:00
Nikita SmithandRyan Fleury ddc57a0ac4 WIP changed backend to use ptrace seize and interrupt 2025-11-07 15:47:15 -08:00
Ryan Fleury 80ccfba3c6 fix metagen build on linux 2025-11-07 14:57:41 -08:00
Ryan Fleury af423b142e gl shear 2025-11-07 14:47:14 -08:00
Nikita SmithandRyan Fleury 920a3ab3b7 discard unknown FDEs 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury b00d3d9041 print out call stacks on crashes 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury 69fe51ec94 set permissions on shared memory 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury 1cb1522931 minor cleanup 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury 90c4e1604e implement semaphore open and clsoe 2025-11-07 14:39:46 -08:00