summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/memory-region
AgeCommit message (Collapse)Author
2025-02-28[lldb] fix(lldb/**.py): fix invalid escape sequences (#94034)Eisuke Kawashima
Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
2024-02-16[lldb] Replace assertRegexpMatches with assertRegex (NFC) (#82074)Jonas Devlieghere
assertRegexpMatches is a deprecated alias for assertRegex and has been removed in Python 3.12. This wasn't an issue previously because we used a vendored version of the unittest module. Now that we use the built-in version this gets updated together with the Python version used to run the test suite.
2023-05-25[NFC][Py Reformat] Reformat python files in lldbJonas Devlieghere
This is an ongoing series of commits that are reformatting our Python code. Reformatting is done with `black` (23.1.0). If you end up having problems merging this commit because you have made changes to a python file, the best way to handle that is to run `git checkout --ours <yourfile>` and then reformat it with black. RFC: https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style Differential revision: https://reviews.llvm.org/D151460
2022-09-23[LLDB] Fix "memory region --all" when there is no ABI pluginDavid Spickett
There are two conditions for the loop exit. Either we hit LLDB_INVALID_ADDRESS or the ABI tells us we are beyond mappable memory. I made a mistake in that second part that meant if you had no ABI plugin --all would stop on the first loop and return nothing. If there's no ABI plugin we should only check for LLDB_INVALID_ADDRESS. Depends on D134029 Reviewed By: labath Differential Revision: https://reviews.llvm.org/D134030
2022-09-23[LLDB] Properly return errors from "memory region --all"David Spickett
When I wrote the initial version I forgot that a region being unmapped is not an error. There are real errors that we don't want to hide, such as the remote not supporting the qMemoryRegionInfo packet (gdbserver does not). Reviewed By: labath Differential Revision: https://reviews.llvm.org/D134029
2022-08-09@skipIfAsan for the other long test in TestMemoryRegion.pyJim Ingham
These two tests were each of them too long when running under ASAN, so we have to skip both to get a clean ASAN bot run.
2022-08-09The memory region tests have been consistently timing on the ASANJim Ingham
bot. This happens because they are building a long result into a Python string, and the asan checker is making that very slow. The last two tests here are both slow, but the 'test_command' is the really slow one. I'm going to start disabling just that one and see if that gets the ASAN bots clean.
2022-07-07[lldb][Windows] Fixup overlapping memory regions testsDavid Spickett
As suggested in post-commit review on https://reviews.llvm.org/D129272. * Rename the test case. * Simplify the overlap check. * Correct assertion.
2022-07-07[lldb][Windows] Fix memory region base addresses when a range is splitDavid Spickett
Previously we recorded AllocationBase as the base address of the region we get from VirtualQueryEx. However, this is the base of the allocation, which can later be split into more regions. So you got stuff like: [0x00007fff377c0000-0x00007fff377c1000) r-- PECOFF header [0x00007fff377c0000-0x00007fff37840000) r-x .text [0x00007fff377c0000-0x00007fff37870000) r-- .rdata Where all the base addresses were the same. Instead, use BaseAddress as the base of the region. So we get: [0x00007fff377c0000-0x00007fff377c1000) r-- PECOFF header [0x00007fff377c1000-0x00007fff37840000) r-x .text [0x00007fff37840000-0x00007fff37870000) r-- .rdata https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-memory_basic_information The added test checks for any overlapping regions which means if we get the base or size wrong it'll fail. This logic applies to any OS so the test isn't restricted to Windows. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D129272
2022-06-17[lldb][tests] Automatically call compute_mydir (NFC)Dave Lee
Eliminate boilerplate of having each test manually assign to `mydir` by calling `compute_mydir` in lldbtest.py. Differential Revision: https://reviews.llvm.org/D128077
2022-05-19Reland "[lldb] Add --all option to "memory region""David Spickett
This reverts commit 3e928c4b9dfb01efd2cb968795e605760828e873. This fixes an issue seen on Windows where we did not properly get the section names of regions if they overlapped. Windows has regions like: [0x00007fff928db000-0x00007fff949a0000) --- [0x00007fff949a0000-0x00007fff949a1000) r-- PECOFF header [0x00007fff949a0000-0x00007fff94a3d000) r-x .hexpthk [0x00007fff949a0000-0x00007fff94a85000) r-- .rdata [0x00007fff949a0000-0x00007fff94a88000) rw- .data [0x00007fff949a0000-0x00007fff94a94000) r-- .pdata [0x00007fff94a94000-0x00007fff95250000) --- I assumed that you could just resolve the address and get the section name using the start of the region but here you'd always get "PECOFF header" because they all have the same start point. The usual command repeating loop used the end address of the previous region when requesting the next, or getting the section name. So I've matched this in the --all scenario. In the example above, somehow asking for the region at 0x00007fff949a1000 would get you a region that starts at 0x00007fff949a0000 but has a different end point. Using the load address you get (what I assume is) the correct section name.
2022-05-18Revert "[lldb] Add --all option to "memory region""David Spickett
This reverts commit 8e648f195c3d57e573fdd8023edcfd80e0516c61 due to test failures on Windows: https://lab.llvm.org/buildbot/#/builders/83/builds/19094
2022-05-18[lldb] Add --all option to "memory region"David Spickett
This adds an option to the memory region command to print all regions at once. Like you can do by starting at address 0 and repeating the command manually. memory region [-a] [<address-expression>] (lldb) memory region --all [0x0000000000000000-0x0000000000400000) --- [0x0000000000400000-0x0000000000401000) r-x <...>/a.out PT_LOAD[0] <...> [0x0000fffffffdf000-0x0001000000000000) rw- [stack] [0x0001000000000000-0xffffffffffffffff) --- The output matches exactly what you'd get from repeating the command. Including that it shows unmapped areas between the mapped regions. (this is why Process GetMemoryRegions is not used, that skips unmapped areas) Help text has been updated to show that you can have an address or --all but not both. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D111791
2020-12-17[lldb] [POSIX-DYLD] Add libraries from initial rendezvous brkpt hitMichał Górny
Explicitly consider the libraries reported on the initial rendezvous breakpoint hit added. This is necessary on FreeBSD since the dynamic loader issues only a single 'consistent' state rendezvous breakpoint hit for all the libraries present in DT_NEEDED. It is also helpful on Linux where it ensures that ld-linux is considered loaded as well as the shared system libraries reported afterwards. Reenable memory maps on FreeBSD since this fixed the issue triggered by them. Differential Revision: https://reviews.llvm.org/D92187
2020-12-07Revert "[lldb] [POSIX-DYLD] Add libraries from initial eTakeSnapshot action"Michał Górny
This reverts commit 09b08833f301ea375137931d26b7193101f82ceb. This code is wrong on Linux, and causes ld-linux and linux-vdso to be reported twice. I need to work on it more.
2020-12-07[lldb] [POSIX-DYLD] Add libraries from initial eTakeSnapshot actionMichał Górny
Explicitly consider the libraries reported on the initial eTakeSnapshot action added, through adding them to the added soentry list in DYLDRendezvous::SaveSOEntriesFromRemote(). This is necessary on FreeBSD since the dynamic loader issues only a single 'consistent' state rendezvous breakpoint hit for all the libraries present in DT_NEEDED (while Linux issues an added-consistent event pair). Reenable memory maps on FreeBSD since this fixed the issue triggered by them. Differential Revision: https://reviews.llvm.org/D92187
2020-11-03[lldb] [test] Update XFAILs/skips for FreeBSDMichał Górny
Update expected failures and test skips based on common results for the old and new FreeBSD plugins.
2020-10-05Reland "[lldb] Don't send invalid region addresses to lldb server"David Spickett
This reverts commit c65627a1fe3be7521fc232d633bb6df577f55269. The test immediately after the new invalid symbol test was failing on Windows. This was because when we called VirtualQueryEx to get the region info for 0x0, even if it succeeded we would call GetLastError. Which must have picked up the last error that was set while trying to lookup "not_an_address". Which happened to be 2. ("The system cannot find the file specified.") To fix this only call GetLastError when we know VirtualQueryEx has failed. (when it returns 0, which we were also checking for anyway) Also convert memory region to an early return style to make the logic clearer. Reviewed By: labath, stella.stamenova Differential Revision: https://reviews.llvm.org/D88229
2020-09-17Revert "[lldb] Don't send invalid region addresses to lldb server"David Spickett
This reverts commit c687af0c30b4dbdc9f614d5e061c888238e0f9c5 due to a test failure on Windows.
2020-09-17[lldb] Don't send invalid region addresses to lldb serverDavid Spickett
Previously when <addr> in "memory region <addr>" didn't parse correctly, we'd print an error then also ask lldb-server for a region containing LLDB_INVALID_ADDRESS. (lldb) memory region not_an_address error: invalid address argument "not_an_address"... error: Server returned invalid range Only send the command to lldb-server if the address parsed correctly. (lldb) memory region not_an_address error: invalid address argument "not_an_address"... Reviewed By: labath Differential Revision: https://reviews.llvm.org/D87694
2020-02-11[lldb][test] Remove symlink for API tests.Jordan Rupprecht
Summary: Moves lldbsuite tests to lldb/test/API. This is a largely mechanical change, moved with the following steps: ``` rm lldb/test/API/testcases mkdir -p lldb/test/API/{test_runner/test,tools/lldb-{server,vscode}} mv lldb/packages/Python/lldbsuite/test/test_runner/test lldb/test/API/test_runner for d in $(find lldb/packages/Python/lldbsuite/test/* -maxdepth 0 -type d | egrep -v "make|plugins|test_runner|tools"); do mv $d lldb/test/API; done for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-vscode -maxdepth 1 -mindepth 1 | grep -v ".py"); do mv $d lldb/test/API/tools/lldb-vscode; done for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-server -maxdepth 1 -mindepth 1 | egrep -v "gdbremote_testcase.py|lldbgdbserverutils.py|socket_packet_pump.py"); do mv $d lldb/test/API/tools/lldb-server; done ``` lldb/packages/Python/lldbsuite/__init__.py and lldb/test/API/lit.cfg.py were also updated with the new directory structure. Reviewers: labath, JDevlieghere Tags: #lldb Differential Revision: https://reviews.llvm.org/D71151