Commit Graph

3500 Commits

Author SHA1 Message Date
Ilia Kuklin
83381ba832 [LLDB] Add negative number parsing to DIL (#144557) 2025-06-19 18:10:56 +05:00
David Spickett
493a359237 [lldb][AArch64] Fix live process test for Linux's mte_ctrl register
I forgot to update this when I changed the presentation of the
"TCF" field.
2025-06-19 12:58:57 +00:00
Dmitry Vasilyev
3e795c60c7 [lldb] Disable TestTargetWatchAddress on Windows x86_64 (#144779)
See #144777 for details.
2025-06-19 11:12:34 +04:00
Chelsea Cassanova
e0933ab5ae Revert "[lldb][target] Add progress report for wait-attaching to process" (#144810)
This is breaking TestCreateAfterAttach.py on Ubuntu:

```
======================================================================
FAIL: test_create_after_attach_dwo (TestCreateAfterAttach.CreateAfterAttachTestCase.test_create_after_attach_dwo)
   Test thread creation after process attach.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 1804, in test_method
    return attrvalue(self)
           ^^^^^^^^^^^^^^^
  File "/home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 149, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py", line 36, in test_create_after_attach
    self.runCmd("process attach -p " + str(pid))
  File "/home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 1005, in runCmd
    self.assertTrue(self.res.Succeeded(), msg + output)
AssertionError: False is not true : Command 'process attach -p 1474309' did not return successfully
Error output:
error: attach failed: lost connection
```

on the buildbots for lldb-remote-linux-ubuntu, lldb-arm-ubuntu,
lldb-aarch64-ubuntu, lldb-arm-ubuntu.
2025-06-18 15:39:25 -07:00
Ebuka Ezike
51aa6a4993 [lldb-dap] Use protocol types for ReadMemory request (#144552)
Read memory from process instead of target.
2025-06-18 22:48:24 +01:00
Chelsea Cassanova
03bdc0a1f6 [lldb][target] Add progress report for wait-attaching to process (#144768)
This commit adds a progress report when wait-attaching to a process as
well as a test for this.
2025-06-18 13:51:59 -07:00
Chelsea Cassanova
a630ca6f6c [lldb][breakpoint] Grey out disabled breakpoints (#91404)
This commit adds colour settings to the list of breakpoints in order to
grey out breakpoints that have been disabled.
2025-06-18 13:06:20 -07:00
John Harrison
cb63b75e32 Revert "[lldb-dap] Refactoring DebugCommunication to improve test consistency. (#143818)
This reverts commit 362b9d78b4.

Buildbots using python3.10 are running into errors from this change.
2025-06-17 16:01:40 -07:00
John Harrison
362b9d78b4 [lldb-dap] Refactoring DebugCommunication to improve test consistency. (#143818)
In DebugCommunication, we currently are using 2 thread to drive
lldb-dap. At the moment, they make an attempt at only synchronizing the
`recv_packets` between the reader thread and the main test thread. Other
stateful properties of the debug session are not guarded by a
locks/mutex.

To mitigate this, I am moving any state updates to the main thread
inside the `_recv_packet` method to ensure that between calls to
`_recv_packet` the state does not change out from under us in a test.

This does mean the precise timing of events has changed slightly as a
result and I've updated the existing tests that fail for me locally with
this new behavior.

I think this should result in overall more predictable behavior, even if
the test is slow due to the host workload or architecture differences.

---------

Co-authored-by: Ebuka Ezike <yerimyah1@gmail.com>
2025-06-17 14:42:06 -07:00
David Peixotto
c677a11c8d [lldb] Add support to list/enable/disable remaining plugin types. (#143970)
In #134418 we added support to list/enable/disable `SystemRuntime` and
`InstrumentationRuntime` plugins. We limited it to those two plugin
types to flesh out the idea with a smaller change.

This PR adds support for the remaining plugin types. We now support all
the plugins that can be registered directly with the plugin manager.
Plugins that are added by loading shared objects are still not
supported.
2025-06-17 13:47:20 -07:00
Charles Zablit
556e69b7f4 [lldb] make lit use the same Python executable for building and testing (#143756)
When testing LLDB, we want to make sure to use the same Python as the
one we used to build it.

This patch uses the CMake variable `Python3_ROOT_DIR` to add the correct
Python to the `PATH` in LLDB lit tests, in order to ensure of this.

Please see https://github.com/swiftlang/swift/pull/82063 for the
original issue.

This is a continuation of https://github.com/swiftlang/swift/pull/82063.
2025-06-17 11:52:03 -05:00
nerix
b14e03d855 [LLDB] Consolidate C++ string buffer summaries (#144258)
As part of https://github.com/llvm/llvm-project/pull/143177, I moved the
non-libc++ specific formatting of `std::string`s out to `CxxStringTypes`
as MSVC's STL `std::string` can also be thought of a pointer+size pair.
I named this kind of string "string buffer".

This PR picks that change, so the MSVC PR can be smaller.
Unfortunately, libstdc++'s `std::string` does not fit this (it also uses
a different string printer function).

This resolves two FIXMEs in the libc++ tests, where empty u16 and u32
strings didn't have any prefix (u/U).
2025-06-17 17:44:37 +01:00
Michael Buch
0a7b0c844c [lldb][Expression] Remove IR pointer checker (#144483)
Currently when jitting expressions, LLDB scans the IR instructions of
the `$__lldb_expr` and will insert a call to a utility function for each
load/store instruction. The purpose of the utility funciton is to
dereference the load/store operand. If that operand was an invalid
pointer the utility function would trap and LLDB asks the IR checker
whether it was responsible for the trap, in which case it prints out an
error message saying the expression dereferenced an invalid pointer.

This is a lot of setup for not much gain. In fact, creating/running this
utility expression shows up as ~2% of the expression evaluation time
(though we cache them for subsequent expressions). And the error message
we get out of it is arguably less useful than if we hadn't instrumented
the IR. It was also untested.

Before:
```
(lldb) expr int a = *returns_invalid_ptr()

error: Execution was interrupted, reason: Attempted to dereference an invalid pointer..
The process has been returned to the state before expression evaluation.
```

After:
```
(lldb) expr int a = *returns_invalid_ptr()

error: Expression execution was interrupted: EXC_BAD_ACCESS (code=1, address=0x5).
The process has been returned to the state before expression evaluation.
```

This patch removes this IR checker.
2025-06-17 15:24:26 +01:00
John Harrison
6421bd94ea [lldb-dap] Creating protocol types for setExceptionBreakpoints. (#144153)
This adds new types for setExceptionBreakpoints and adds support for
`supportsExceptionFilterOptions`, which allows exception breakpoints to
set a condition.

While testing this, I noticed that obj-c exception catch breakpoints may
not be working correctly in lldb-dap.
2025-06-16 17:24:48 -07:00
Ebuka Ezike
34be09ad73 [lldb-dap][test] fix not supported error. (#144419)
Fixes #144072 

buildbot error.
2025-06-16 21:18:21 +01:00
Ebuka Ezike
539cf82425 [lldb-dap] Use structured types for stepInTargets request (#144072)
uses the `SendTargetCapabilities` from #142831
2025-06-16 19:24:59 +01:00
Jonas Devlieghere
2704b27a0b [lldb] Include unistd.h for _exit in multi-process-driver.cpp
This test fails to build on macOS without the correct header include.
2025-06-13 10:02:41 -07:00
Charles Zablit
6751b3a549 Revert "[lit] cleanup unused imports" (#144054)
Reverts llvm/llvm-project#143930 as it causes build failures:
https://github.com/llvm/llvm-project/pull/143930#issuecomment-2969115461
2025-06-13 08:16:09 -07:00
Michael Buch
41b37f0555 [lldb] CommandObjectMemoryFind: Improve expression evaluation error messages (#144036)
We now bubble up the expression evaluation diagnostics to the user and
also distinguish between "expression failed to parse/run" versus other
ways in which expressions didn't complete (e.g., setup errors, etc.).

Before:
```
(lldb) memory find -e "" 0x16fdfedc0 0x16fdfede0
error: expression evaluation failed. pass a string instead
(lldb) memory find -e "invalid" 0x16fdfedc0 0x16fdfede0
error: expression evaluation failed. pass a string instead
```

After:
```
(lldb) memory find -e "" 0x16fdfedc0 0x16fdfede0
error: Expression evaluation failed:
error: No result returned from expression. Exit status: 1
(lldb) memory find -e "invalid" 0x16fdfedc0 0x16fdfede0
error: Expression evaluation failed:
error: <user expression 0>:1:1: use of undeclared identifier 'invalid'
    1 | invalid
      | ^~~~~~~
```
2025-06-13 12:43:27 +01:00
Ilia Kuklin
4236423ee8 [LLDB] Add bit extraction to DIL (#141422) 2025-06-13 16:31:25 +05:00
David Spickett
06c7835670 [lldb][test] Disable TestMultipleDebuggers again
I did manage to turn a crash into a non-zero return code,
but on the very first build it managed to time out.

I thought I had the appetite to tweak timeouts but
on second thought, I don't want yet another test to look
out for.

The test is not wrong, but on heavily loaded machines
it's always going to be inherently unstable.
2025-06-13 09:12:01 +00:00
David Spickett
addd98f7a5 [lldb][test] Don't call SBDebugger::Terminate if TestMultipleDebuggers times out (#143732)
Fixes #101162

This test did this:
* SBDebugger::Initialize
* Spawn a bunch of threads that do:
  * SBDebugger::Create
  * some work
  * SBDebugger::Destroy
* Wait on those threads to finish then call SBDebugger::Terminate and
exit, or -
* Reach a time limit before all the threads finish, call
SBDebugger::Terminate and exit.

The problem was that in the timeout case, calling SBDebugger::Terminate
destroys data being used by threads that are still running. I expect
this test was expecting said threads to be so broken they were probably
stuck, but when the machine is just heavily loaded, one of them might
read that data before the whole program exits.

This means what should have been a timeout becomes a crash. Sometimes.
Which explains why we saw both timeouts and various signals on the
AArch64 Linux bot. It depends on the timings.

So I'm changing it not to call SBDebugger::Terminate in the timeout
case. We will have to tweak the timeout value based on what happens on
the buildbot, but we will know it's machine load not an lldb bug.

Also use _exit instead of exit, to skip more cleanup that might cause a
crash.
2025-06-13 09:31:57 +01:00
Charles Zablit
26f9161001 [lit] cleanup unused imports (#143930)
Remove imports that are not used in some lit test files.
2025-06-12 15:13:13 -07:00
Michael Buch
1c1df94d09 [lldb][Commands][NFC] Extract memory find expression evaluation into helpers (#143686)
This patch factors out the `-e` option logic into two helper functions.
The `EvaluateExpression` helper might seem redundant but I'll be adding
to it in a follow-up patch to fix an issue when running `memory find -e`
for Swift targets.

Also adds test coverage for the error cases that were previously
untested.

rdar://152113525
2025-06-12 16:48:57 +01:00
Adrian Vogelsgesang
4a46ead8fb [lldb] Show coro_frame in std::coroutine_handle pretty printer (#141516)
This commit adjusts the pretty printer for `std::coroutine_handle` based
on recent personal experiences with debugging C++20 coroutines:

1. It adds the `coro_frame` member. This member exposes the complete
   coroutine frame contents, including the suspension point id and all
   internal variables which the compiler decided to persist into the
   coroutine frame. While this data is highly compiler-specific, inspecting
   it can help identify the internal state of suspended coroutines.
2. It includes the `promise` and `coro_frame` members, even if
   devirtualization failed and we could not infer the promise type / the
   coro_frame type. Having them available as `void*` pointers can still be
   useful to identify, e.g., which two coroutine handles have the same
   frame / promise pointers.
2025-06-11 14:09:54 +02:00
Adrian Vogelsgesang
756e7cfd86 [debuginfo][coro] Fix linkage name for clones of coro functions (#141889)
So far, the `DW_AT_linkage_name` of the coroutine `resume`, `destroy`,
`cleanup` and `noalloc` function clones were incorrectly set to the
original function name instead of the updated function names.

With this commit, we now update the `DW_AT_linkage_name` to the correct
name. This has multiple benefits:

1. it's easier for me (and other toolchain developers) to understand the
   output of `llvm-dwarf-dump` when coroutines are involved.
2. When hitting a breakpoint, both LLDB and GDB now tell you which clone
   of the function you are in. E.g., GDB now prints "Breakpoint 1.2,
   coro_func(int) [clone .resume] (v=43) at ..." instead of "Breakpoint
   1.2, coro_func(int) (v=43) at ...".
3. GDB's `info line coro_func` command now allows you to distinguish the
   multiple different clones of the function.

In Swift, the linkage names of the clones were already updated. The
comment right above the relevant code in `CoroSplit.cpp` already hinted
that the linkage name should probably also be updated in C++. This
comment was added in commit 6ce76ff7eb, and back then the
corresponding `DW_AT_specification` (i.e., `SP->getDeclaration()`) was
not updated, yet, which led to problems for C++. In the meantime, commit
ca1a5b37c7 added code to also update `SP->getDeclaration`, as such
there is no reason anymore to not update the linkage name for C++.

Note that most test cases used inconsistent function names for the LLVM
function vs. the DISubprogram linkage name. clang would never emit such
LLVM IR. This confused me initially, and hence I fixed it while updating
the test case.

Drive-by fix: The change in `CGVTables.cpp` is purely stylistic, NFC.
When looking for other usages of `replaceWithDistinct`, I got initially
confused because `CGVTables.cpp` was calling a static function via an
object instance.
2025-06-11 13:50:32 +02:00
Jonas Devlieghere
a7f495f170 [lldb] Revive TestSimulatorPlatform.py (#142244)
This test was incorrectly disabled and bitrotted since then. This PR
fixes up the test and re-enables it.

 - Build against the system libc++ (which can target the simulator)
 - Bump the deployment target for iOS and tvOS on Apple Silicon
 - Skip backdeploying to pre-Apple Silicon OS on Apple Silicon.
2025-06-10 13:30:31 -07:00
John Harrison
07a1d479cc [lldb-dap] Creating a 'capabilities' event helper. (#142831)
This adds a new 'CapabilitiesEventBody' type for having a well
structured type for the event and updates the 'restart' request
to dynamically set their capabilities.
2025-06-10 10:49:07 -07:00
satyajanga
1cb906e832 Minor fix to connect-url to support unix-connect sockets on localhost (#142875)
**Summary:**

when the unix-socket connections on localhost are used to for platform
connect i.e.
`platform connect unix-connect:///path/to/socket.sock`
then `PlatformRemoteGDBServer.m_platform_hostname` is empty.

Based on the current logic, for the process attach, when the connection
param returned by platform server as qLaunchGDBServer is this
`socket_name:/path/to/processgdbserver.sock`
then the subsequent connect url for the process url looks like this
`unix-connect://[]/path/to/processgdbserver.sock` and the connection
fail.

This change is only adding the braces when the hostname is not empty.

**Test Plan:**

Added unittest and existing tests pass.
```
satyajanga@devvm21837:toolchain $ LLDB_COMMAND_TRACE=YES ./bin/llvm-lit --verbose  ~/llvm-sand/external/llvm-project/lldb/test/API/commands/platform
-- Testing: 9 tests, 9 workers --
UNSUPPORTED: lldb-api :: commands/platform/sdk/TestPlatformSDK.py (1 of 9)
PASS: lldb-api :: commands/platform/file/read/TestPlatformFileRead.py (2 of 9)
PASS: lldb-api :: commands/platform/file/close/TestPlatformFileClose.py (3 of 9)
PASS: lldb-api :: commands/platform/basic/TestPlatformPython.py (4 of 9)
PASS: lldb-api :: commands/platform/basic/TestPlatformCommand.py (5 of 9)
PASS: lldb-api :: commands/platform/process/launch/TestPlatformProcessLaunch.py (6 of 9)
PASS: lldb-api :: commands/platform/connect/TestPlatformConnect.py (7 of 9)
PASS: lldb-api :: commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py (8 of 9)
PASS: lldb-api :: commands/platform/process/list/TestProcessList.py (9 of 9)

Testing Time: 13.24s

Total Discovered Tests: 9
  Unsupported: 1 (11.11%)
  Passed     : 8 (88.89%)
satyajanga@devvm21837:toolchain $ 

```


Reviewers:

@clayborg 
@Jlalond 

Subscribers:

Tasks:

Tags:
2025-06-10 09:25:28 -07:00
David Spickett
6ec48b449f [lldb] Use 1 based row and column for statusline (#143385)
I can't find a proper source for this but many materials say that ANSI
rows and columns start at 1 not 0.

https://www2.math.upenn.edu/~kazdan/210/computer/ansi.html is as good as
I can get:
```
<row> is a number from 1 through 25 that specifies the row to which the cursor is to be moved.
<col> is a number from 1 through 80 that specifies the column to which the cursor is to be moved.
```

0 does work in Windows terminal and Linux terminals, but we might as
well be correct and it's one less thing to reason about when auditing
this code.

From what I read, some terminals correct 0 back to 1 and some treat 0 as
a missing argument, which also defaults to 1.
2025-06-10 09:59:16 +01:00
David Peixotto
d4fe522eb4 Add commands to list/enable/disable plugins (#134418)
This commit adds three new commands for managing plugins. The `list`
command will show which plugins are currently registered and their
enabled state. The `enable` and `disable` commands can be used to enable
or disable plugins.

A disabled plugin will not show up to the PluginManager when it iterates
over available plugins of a particular type.

The purpose of these commands is to provide more visibility into
registered plugins and allow users to disable plugins for experimental
perf reasons.

There are a few limitations to the current implementation

1. Only SystemRuntime and InstrumentationRuntime plugins are currently
supported. We can easily extend the existing implementation to support
more types. The scope was limited to these plugins to keep the PR size
manageable.

2. Only "statically" know plugin types are supported (i.e. those managed
by the PluginManager and not from `plugin load`). It is possibly we
could support dynamic plugins as well, but I have not looked into it
yet.
2025-06-09 13:30:13 -07:00
David Spickett
e4447e1273 [lldb][test] Remove Windows xfail from forward declaration tests
Since https://github.com/llvm/llvm-project/pull/141344, they are
passing.
2025-06-09 10:14:54 +00:00
David Spickett
c738308784 [lldb][test] Remove outdated rdar link in settings test 2025-06-09 08:59:22 +00:00
Michael Buch
30f5240905 [lldb][Modules] Make decls from submodules visible for name lookup (#143098)
This patch ensures we can find decls in submodules during expression
evaluation. Previously, submodules would have all their decls marked as
`Hidden`. When Clang asked LLDB for decls, it would see them in the
submodule but `clang::Sema` would reject them because they weren't
`Visible` (specifically, `getAcceptableDecl` would fail during
`CppNameLookup`). Here we just mark the submodule as visible to work
around this problem.
2025-06-06 17:17:00 +01:00
David Spickett
016ce351c8 [lldb][test] Enable settings test case on Windows
Fixes #43776

Whatever the problem was, it's now fixed.
2025-06-06 14:03:58 +00:00
Prabhu Rajasekaran
0a1fdbe4df [lldb] Fix linux x64 test (#143048)
`TestStopHookScripted.py` Was failing for cases where -I 0 was not
passed to stop-hook add calls.
2025-06-05 19:26:17 -07:00
Jonas Devlieghere
d8ba707b0c Revert "[lldb-dap] Use structured types for stepInTargets request (#142439)" (#142891)
This reverts commit 4b6c608615 and
follow-up commits 159de36336 and
c9e1c52e2e because this breaks
TestDAP_stepInTargets.py on Darwin.

https://green.lab.llvm.org/job/llvm.org/view/LLDB/job/as-lldb-cmake
2025-06-04 20:19:56 -07:00
John Harrison
7278805ccd [lldb-dap] Test Gardening, attach tests. (#141981)
Trimming unused imports, adjusting the test to use the `DEFAULT_TIMEOUT`
instead of a custom timeout and adjusting the flow to stopOnEntry for
improving consistency.
2025-06-04 17:07:28 -07:00
Ebuka Ezike
a48e1aba63 [lldb-dap][test] Fix DAP disassemble test (#142129)
compare the instructions before and after setting breakpoint to make
sure they are the same.
2025-06-04 12:56:10 +01:00
Ebuka Ezike
4b6c608615 [lldb-dap] Use structured types for stepInTargets request (#142439) 2025-06-04 08:05:31 +01:00
John Harrison
4d42c8e184 [lldb-dap] Correct the disconnect helper on server shutdown. (#142508)
Previously, we incorrectly handled the disconnect operation if we signal
lldb-dap running in server mode.

Updated to correctly disconnect the attach vs launch behavior on server
shutdown.
2025-06-03 09:40:40 -07:00
Dave Lee
20ca895860 [lldb] Add Python properties to SBBreakpoint and similar (#142215)
Update `SBBreakpoint`, `SBBreakpointLocation`, and `SBBreakpointName` to
add Python properties for many of their getters/setters.
2025-06-03 09:38:22 -07:00
Dmitry Vasilyev
a90145e028 [lldb] Disable TestTargetWatchAddress.py on Windows x86_64 (#142573)
See #142196 and https://github.com/llvm/llvm-zorg/pull/452 for details.
2025-06-03 20:18:16 +04:00
Michael Buch
c48c91a92e [lldb][test] XFAIL TestThreadJump.py on older Clang versions
Failing on the macOS matrix bot for Clang-15 with the following error:
```
07:16:08  FAIL: LLDB (/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/clang_1501_build/bin/clang-arm64) :: test_jump_offset_dwarf (TestThreadJump.ThreadJumpTestCase)
07:16:08  UNSUPPORTED: LLDB (/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/clang_1501_build/bin/clang-arm64) :: test_jump_offset_dwo (TestThreadJump.ThreadJumpTestCase) (test case does not fall in any category of interest for this run)
07:16:08  Restore dir to: /Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/lldb-build/tools/lldb/test
07:16:08  ======================================================================
07:16:08  FAIL: test_jump_offset_dsym (TestThreadJump.ThreadJumpTestCase)
07:16:08     Test Thread Jump by negative or positive offset
07:16:08  ----------------------------------------------------------------------
07:16:08  Traceback (most recent call last):
07:16:08    File "/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 1804, in test_method
07:16:08      return attrvalue(self)
07:16:08    File "/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/llvm-project/lldb/test/API/functionalities/thread/jump/TestThreadJump.py", line 112, in test_jump_offset
07:16:08      self.expect(f"print {var_2}", substrs=[var_2_value])
07:16:08    File "/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 2512, in expect
07:16:08      self.fail(log_msg)
07:16:08  AssertionError: Ran command:
07:16:08  "print var_2"
07:16:08
07:16:08  Got output:
07:16:08  (int) 20
07:16:08
07:16:08  Expecting sub string: "40" (was not found)
```
2025-06-03 12:17:50 +01:00
Dmitry Vasilyev
68fd6f4eb8 [lldb] Disable TestReverseContinueBreakpoints.py and TestReverseContinueWatchpoints.py for Windows x86_64 (#142193)
See #138084 for details.
2025-06-02 14:01:45 +04:00
Dmitry Vasilyev
fb86264f40 [lldb] Disable TestConsecutiveBreakpoints.py for Windows x86_64 (#142192)
See #138083 for details.
2025-06-02 14:01:13 +04:00
Saagar Jha
95a9cedb71 [lldb][test] Fix comment in TestObjcPoHint.py (#142306)
This seems to have been copied from above but not changed to match.
2025-06-02 10:29:39 +01:00
Pavel Labath
e9fad0e91c [lldb] Refactor away UB in SBValue::GetLoadAddress (#141799)
The problem was in calling GetLoadAddress on a value in the error state,
where `ValueObject::GetLoadAddress` could end up accessing the
uninitialized "address type" by-ref return value from `GetAddressOf`.
This probably happened because each function expected the other to
initialize it.

We can guarantee initialization by turning this into a proper return
value.

I've added a test, but it only (reliably) crashes if lldb is built with
ubsan.
2025-06-02 09:39:56 +02:00
Ely Ronnen
81602769d8 [lldb-dap] Synchronously wait for breakpoints resolves in tests (#140470)
Attempt to improve tests by synchronously waiting for breakpoints to
resolve. Not sure if it will fix all the tests but I think it should
make the tests more stable
2025-05-31 16:59:46 +02:00
David Spickett
7a66b28fca [lldb][test] Disable DeclFromSubmodule test on Windows
Or more precisely, when linking with link.exe, but Windows
is our closest proxy for that right now.

This test requires the DWARF info to work, on the Windows on Arm
buildbot it fails:
```
AssertionError: Ran command:
"expr func(1, 2)"

Got output:
error: <user expression 0>:1:1: use of undeclared identifier 'func'

    1 | func(1, 2)

      | ^~~~

Expecting start string: "error: <user expression 0>:1:1: 'func' has unknown return type" (was not found)
```
2025-05-30 14:15:19 +00:00