Merge remote-tracking branch 'origin/GP-0_Dan_avertBuggyRegionUpdates' into Ghidra_11.1

This commit is contained in:
Ryan Kurtz 2024-05-24 12:50:32 -04:00
commit 4aa0dc0bbe

View file

@ -1637,7 +1637,32 @@ def ghidra_trace_put_environment(debugger, command, result, internal_dict):
put_environment()
def should_update_regions():
'''
It's possible some targets don't support regions.
There is also a bug in LLDB that can cause its gdb-remote client
to drop support. We need to account for this second case while
still ensuring we populate the full range for targets that
genuinely don't support it.
'''
# somewhat crappy heuristic to distinguish remote from local
tgt = util.get_target()
if tgt.GetNumModules() == 0:
# Target genuinely doesn't support regions.
# Will update with full_mem
return True
# Target does support it, but bug might be in play
# probe address 0. Should get the invalid region
proc = util.get_process()
info = lldb.SBMemoryRegionInfo()
result = proc.GetMemoryRegionInfo(0, info)
return result.Success()
def put_regions():
if not should_update_regions():
return
proc = util.get_process()
try:
regions = util.REGION_INFO_READER.get_regions()