hawkinsw created this revision.
hawkinsw added reviewers: teemperor, JDevlieghere.
Herald added a project: All.
hawkinsw requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.

After changing the "fallback" behavior when a user sets a breakpoint
without specifying a module the bad-address-breakpoint test case failed
incorrectly. This patch updates that test case in order to more
thoroughly discover an illegal address and use that as the means for
testing whether a breakpoint set at an illegal address fails to resolve.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D126109

Files:
  
lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py


Index: 
lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py
===================================================================
--- 
lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py
+++ 
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:


Index: lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py
===================================================================
--- lldb/test/API/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py
+++ 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:
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to