"""
Test the 'memory region' command.
"""

import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
from lldbsuite.test.gdbclientutils import MockGDBServerResponder
from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase


class MemoryCommandRegion(TestBase):
    NO_DEBUG_INFO_TESTCASE = True

    def setUp(self):
        TestBase.setUp(self)
        # Find the line number to break for main.c.
        self.line = line_number(
            "main.cpp", "// Run here before printing memory regions"
        )

    def test_help(self):
        """Test that help shows you must have one of address or --all, not both."""
        self.expect(
            "help memory region",
            substrs=["memory region <address-expression>", "memory region -a"],
        )

    def setup_program(self):
        self.build()

        # Set breakpoint in main and run
        self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
        lldbutil.run_break_set_by_file_and_line(
            self, "main.cpp", self.line, num_expected_locations=-1, loc_exact=True
        )

        self.runCmd("run", RUN_SUCCEEDED)

    # This test and the next build a large result string in such a way that
    # when run under ASAN the test always times out.  Most of the time is in the asan
    # checker under PyUnicode_Append.
    # This seems to be a worst-case scenario for ASAN performance.
    @skipIfAsan
    def test_command(self):
        self.setup_program()

        interp = self.dbg.GetCommandInterpreter()
        result = lldb.SBCommandReturnObject()

        # Test that the first 'memory region' command prints the usage.
        interp.HandleCommand("memory region", result)
        self.assertFalse(result.Succeeded())
        self.assertEqual(
            result.GetError(),
            'error: No next region address set: one address expression argument or "--all" option required:\n'
            "Usage: memory region <address-expression> (or --all)\n",
        )

        # We allow --all or an address argument, not both
        interp.HandleCommand("memory region --all 0", result)
        self.assertFalse(result.Succeeded())
        self.assertRegex(
            result.GetError(),
            'The "--all" option cannot be used when an address argument is given',
        )

        # Test that when the address fails to parse, we show an error and do not continue
        interp.HandleCommand("memory region not_an_address", result)
        self.assertFalse(result.Succeeded())
        self.assertEqual(
            result.GetError(),
            'error: invalid address argument "not_an_address": address expression "not_an_address" evaluation failed\n',
        )

        # Accumulate the results to compare with the --all output
        all_regions = ""

        # Now let's print the memory region starting at 0 which should always work.
        interp.HandleCommand("memory region 0x0", result)
        self.assertTrue(result.Succeeded())
        self.assertRegex(result.GetOutput(), "\\[0x0+-")
        all_regions += result.GetOutput()

        # Keep printing memory regions until we printed all of them.
        while True:
            interp.HandleCommand("memory region", result)
            if not result.Succeeded():
                break
            all_regions += result.GetOutput()

        # Now that we reached the end, 'memory region' should again print the usage.
        interp.HandleCommand("memory region", result)
        self.assertFalse(result.Succeeded())
        self.assertRegex(
            result.GetError(),
            r"Usage: memory region <address\-expression> \(or \-\-all\)",
        )

        # --all should match what repeating the command gives you
        interp.HandleCommand("memory region --all", result)
        self.assertTrue(result.Succeeded())
        self.assertEqual(result.GetOutput(), all_regions)

    @skipIfAsan
    def test_no_overlapping_regions(self):
        # In the past on Windows we were recording AllocationBase as the base address
        # of the current region, not BaseAddress. So if a range of pages was split
        # into regions you would see several regions with the same base address.
        # This checks that this no longer happens (and it shouldn't happen on any
        # other OS either).
        self.setup_program()

        regions = self.process().GetMemoryRegions()
        num_regions = regions.GetSize()

        if num_regions:
            region = lldb.SBMemoryRegionInfo()
            regions.GetMemoryRegionAtIndex(0, region)
            previous_base = region.GetRegionBase()
            previous_end = region.GetRegionEnd()

            for idx in range(1, regions.GetSize()):
                regions.GetMemoryRegionAtIndex(idx, region)

                # Check that it does not overlap the previous region.
                # This could happen if we got the base addresses or size wrong.
                # Also catches the base addresses being the same.
                region_base = region.GetRegionBase()
                region_end = region.GetRegionEnd()

                self.assertFalse(
                    (region_base < previous_end) and (previous_base < region_end),
                    "Unexpected overlapping memory region found.",
                )

                previous_base = region_base
                previous_end = region_end


class MemoryCommandRegionAll(GDBRemoteTestBase):
    NO_DEBUG_INFO_TESTCASE = True

    def test_all_error(self):
        # The --all option should keep looping until the end of the memory range.
        # If there is an error it should be reported as if you were just asking
        # for one region. In this case the error is the remote not supporting
        # qMemoryRegionInfo.
        # (a region being unmapped is not an error, we just get a result
        # describing an unmapped range)
        class MyResponder(MockGDBServerResponder):
            def qMemoryRegionInfo(self, addr):
                # Empty string means unsupported.
                return ""

        self.server.responder = MyResponder()
        target = self.dbg.CreateTarget("")
        if self.TraceOn():
            self.runCmd("log enable gdb-remote packets")
            self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets"))

        process = self.connect(target)
        lldbutil.expect_state_changes(
            self, self.dbg.GetListener(), process, [lldb.eStateStopped]
        )

        interp = self.dbg.GetCommandInterpreter()
        result = lldb.SBCommandReturnObject()
        interp.HandleCommand("memory region --all ", result)
        self.assertFalse(result.Succeeded())
        self.assertEqual(
            result.GetError(), "error: qMemoryRegionInfo is not supported\n"
        )

    @skipIfAsan
    def test_all_no_abi_plugin(self):
        # There are two conditions for breaking the all loop. Either we get to
        # LLDB_INVALID_ADDRESS, or the ABI plugin tells us we have got beyond
        # the mappable range. If we don't have an ABI plugin, the option should still
        # work and only check the first condition.

        class MyResponder(MockGDBServerResponder):
            def qMemoryRegionInfo(self, addr):
                if addr == 0:
                    return "start:0;size:100000000;"
                # Goes until the end of memory.
                if addr == 0x100000000:
                    return "start:100000000;size:fffffffeffffffff;"

        self.server.responder = MyResponder()
        target = self.dbg.CreateTarget("")
        if self.TraceOn():
            self.runCmd("log enable gdb-remote packets")
            self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets"))

        process = self.connect(target)
        lldbutil.expect_state_changes(
            self, self.dbg.GetListener(), process, [lldb.eStateStopped]
        )

        interp = self.dbg.GetCommandInterpreter()
        result = lldb.SBCommandReturnObject()
        interp.HandleCommand("memory region --all ", result)
        self.assertTrue(result.Succeeded())
        self.assertEqual(
            result.GetOutput(),
            "[0x0000000000000000-0x0000000100000000) ---\n"
            "[0x0000000100000000-0xffffffffffffffff) ---\n",
        )
