* Fix xnu_wait stopping prematurely (#7744)
* Use task_swap_exception_ports (instead of *get* then *set*)
* Add new debugger stop reason for user-initiated breaks
* Stop the inferior when `dw` is interrupted (#7744)
* Stop the inferior after attaching
* Use double quotes to make .dmm* work on Windows
* Fix r2pipe.cmdj('dmmj') command on Windows. Report correct path when listing modules ('dmm')
* Removed unused local variable
* Added 'dce' command for windows
* Escape backslashes for JSON output only
* Do not include r_debug_native_continue() for __CYGWIN__ builds. Removed unnecessary memset.
* Added exception for CYGWIN to not escape backslashes in path
* Escape backslashes in both file paths and map names. Use map name for 'f mod.%s' instead of file path
* Added more exceptions for CYGWIN
* Validate escaped strings
* Fix bits_ranges memory leak in anal.c
* Fix anal->reg memory leak and prevent use after free in plugin.c
* Fix reg->allregs memory leak in reg.c
* Fix dbg->plugins memory leak in debug.c
* Fix io->plugin_default memory leak in io.c
* Fix plugin_free not deallocating plugin in bin.c
* Adapt to style guidelines
* Fix memory leak in r_bin_object_free and resolve double free
* Fix o->kv memory leak in r_bin_object_set_items
* Fix memory leak pushing arena on reg init
* Fix io->plugin_default memory leak in io.c
* Adapt to style guidelines
* Fix pfile memory leak in radare2.c
* Add braces to if in bin.c
As the comment says, we need to pretend to satisfy the caller. For some reason
I also restored the breakpoints here. I cannot for the life of me figure out
why since it should be ok with in all cases.
For swstep=false, the step will stop right away (regardless of any breakpoints)
and thus need to remove breakpoints anyway.
For swstep=true, a breakpoint is created on the next instruction and would stop
too and thus need to remove breakpoints anyway.
So yeah, don't do this. Thanks for the report skuater!
To accomplish this, we add a new debug stop reason R_DEBUG_REASON_TRACEPOINT
and return it from r_debug_wait whenever a tracing breakpoint is hit. Then, in
r_debug_continue_kill, we recognize this state and do the old r_debug_step
trick to progress the session. Previous rework of r_debug_recoil takes care of
the heavy lifting and we continue on our way.