diff --git a/lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py b/lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py --- a/lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py +++ b/lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py @@ -27,14 +27,25 @@ "Set a breakpoint here", lldb.SBFileSpec("main.c")) - # Now see if we can read from 0. If I can't do that, I don't - # have a good way to know what an illegal address is... + + + illegal_address = 0x0 error = lldb.SBError() - ptr = process.ReadPointerFromMemory(0x0, error) + # Walk through all the memory regions in the process and + # find an address that is invalid. + ptr = process.ReadPointerFromMemory(illegal_address, error) + regions = process.GetMemoryRegions() + for region_idx in range(regions.GetSize()): + region = lldb.SBMemoryRegionInfo() + regions.GetMemoryRegionAtIndex(region_idx, region) + if region.GetRegionEnd() > illegal_address: + illegal_address = region.GetRegionEnd() if not error.Success(): - bkpt = target.BreakpointCreateByAddress(0x0) + # Now, set a breakpoint at the address we know is illegal. + bkpt = target.BreakpointCreateByAddress(illegal_address) + # Verify that breakpoint is not resolved. for bp_loc in bkpt: self.assertEquals(bp_loc.IsResolved(), False) else: