* Fix version check of pydbmi
* bugfix in pypanda CI testcase
* Allow docker login in CI to fail
The login was introduced to work around rate limiting for docker pulls
on dockerhub. However, the required tokens/env variables are not present
for pull requests, resulting into the CI failing. Hence, we now allow
this to be failing, and may need to manually restart CI builds for PRs.
* fix typos
* skip executable check for pypanda target
* v1.4.4: Update Changelog and setup.py
Co-authored-by: sampl <[email protected]>
Some clients already configure logging and avatar2 will hijack the logging config leading to duplicate output. Give clients the option to disable this behavior.
* Check for active PyPanda target during shutdown
* Call super destructor for PyPanda target
Otherwise RemoteMemory /dev/mqueue items never get deleted.
* Conditional support for pc in remote memory accesses to pyperipherals
Only if all registered read and write handler support pc, it is
forwarded from the message
* black autoformatting
* qemu_target: logfile kwarg is absolute
* black autoformatting
* Update setup.py and changelog
* fix cached_property import according to pyversion
* allow inlining of pyperipherals into qemu via API
* unicorn_caller plugin
* wrapper for add_hook
* adjust unicorn_caller import path
* Flags for transfer state rather than absolute bools
* allow avatar-reference to be dictifyable
* added overwrite option to memory ranges
* working version of mr-overwriting
* bugfix for overwrite option
* Rename memory region on overwrite to shorter name
QEMU has a memory name limit of 255. Memory regions with many splits can
create names that exceed this, leading to conflicts.
* additional debugging output
* Add pypanda add_hook function and testcase
The CI test is currently not working due to a bug on PANDAs hooking
infrastructure, which is investigated in parallel. Once fixed, the CI
test should work as expected.
* Bump version and updated changelog
Co-authored-by: Grant Hernandez <[email protected]>
* bugfix: qemu_target list properties
* introduce local argument to laod_plugin
* fix: don't use bytes as objectname
* minor bugfixes for pypanda target
* Authenticate to docker service during CI build
* attempt to push to PyPI on tagged commits
* bump version and changelog.md
* Fix cpu at 100% spinning bug
Pygdbmis new API with multilevel timeout allows us to not spin at 100%
when waiting for responses, while not experience a performance degration
at the same time.
* move qemu_cmd_line init into __init__
* allow sublcassing for pandatarget
* refactor init to mulitple steps
* initial pypanda implementation
* use modern pypanda api
* add init watch
* add callback wrappers
* resolve qemutarget executable only if it is qemutarget
* Advancements in PyPandaTarget
* saner init of PandaTarget (for resolving executable)
* disable/enable callbacks
* high-performant memory read/write
* CI testcase
* Fix threading/signal issue
* Improved signal handling
Pygdbmis new API with multilevel timeout allows us to not spin at 100%
when waiting for responses, while not experience a performance degration
at the same time.
* Import MIPS support from angr branch (MIPS BE and LE, GDB request optimization)
* Adjust MIPS support and its definitions
Co-authored-by: Fedor Niskov <[email protected]>
* Make BreakpointHitMessage be two states
* Adjust synchronization to two tier breakpoint
* unroll changes of watchmen clear/set processing-callbacks Event
* Adjust wait to explicitly check if we are SYNCING
* Increase timeout for targetwait smoketest
The two-tiered breakpoint approach slows execution down, hence, we need
some more time.
Co-authored-by: Grant Hernandez <[email protected]>
* Fixed upstream API change in pygdbmi issue
* Fixes support for pre python3.5
* Python version >= 3.5 requires pygdbmi>=0.10.0.0
* Fixes python 3.5 not supported in pygdbmi 0.10.0.0
* guard waiting for watchmen via events
In rare occasions, a race can occure where watchmen callbacks are
running while the main-thread already consumes the update-state message.
This commit guards those callback by an additional event on which target
wait() is waiting for.
However, there may still be a small TOCTOU-window on that event, as the
waiting is using a timeout (for state-updates which are not generating
watchmen callbacks).
Hence, in the long run, the full code dealing with state updates could
benefit from refactoring.
* added smoketest for #54 (thanks @redfast00)
* Remove manual keystone-library copy from CI
It seems that keystone version 0.9.2 (as in pypi) has fixed the issues
regarding the installation path of keystone.
* Various fixes found by CI
* Add processing_callbacks to dictify-ignore list
Event()-Objects cannot be serialized, so it should either be private or
part of the ignore list. As the watchman are independently accessing
this Event, it's added to the ignore list
* Fix assert statement in smoketest to be py2-compliant
* Set environment variables for the smoketest
* Inception debugger target and protocol for cortex M3
See https://github.com/Inception-framework/debugger to build the debugger
* Add tests for read/write operations with the nucleo board example
* Add mockup tests for inception protocol
* PR improvment requests for the inception target
* Add pyusb to install requirement and adjust inception import
* gdb plugin!
* Advances in gdb plugin
* x86_64 implementation
* CI testscript
* introduce log_to_stdout kwarg to avatar
* minimal additions to gdbserver
* change plugin name to gdbserver
* support C-packet
* gdb_memory_map_loader: reformat
* gdb_memory_map_loader: add as target method
For compatibility sake, a compat wrapper is added to the avatar object
as well, so the following are equivalent:
avatar.load_memory_mappings(target)
target.load_memory_mappings()
* gdb_memory_map_loader: add integration test case
* added update functionality to load_memory_maps
This also allows to give avatar.add_memory_range() an interval_tree
as argument, which - if set - the range will be added to.
* added testcase for memory_map_loader to travis
* updated ref to qemu
* updated ref to panda
* modify panda-exec path for CI
* update panda-ref
* updated references to MAINLINED avatar changeds in panda
* fix pygdbmi version for python<3.5
pygdbmi droppsed support for python 2.7 and 3.x<3.5 with v0.9.0.3,
hence we fallback to 0.9.0.2 in those cases
* allow setting of target executable via env
* adjust testcases to use default-env
* Bugfix: init parent before resolve executable (panda_target)
* corrected qemu test path
Support for catching syscall, and various gdb-protocol test improvements
* experimental syscall catch support
* added gdb.quit()
* Improvements for testing gdb protocol
Don't spawn the subprocesses with shell=True, so that we can send
p.terminate() in the tear down function.
* Added parsing for gdbserver output.
Thanks. So far, I always made it explicit when I was waiting for an operation which could fail, but doing it as default may be the better strategy from a usability point of view.