1186 Commits

Author SHA1 Message Date
Chelsea Cassanova
5caf668a6f
[lldb][RPC] Upstream RPC server interface emitters (#138032)
This commit upstreams the LLDB RPC server interface emitters. These
emitters generate the server-side API interfaces for RPC, which
communicate directly with liblldb itself out of process using the SB
API.

https://discourse.llvm.org/t/rfc-upstreaming-lldb-rpc/85804
2025-07-07 10:30:03 -07:00
Chelsea Cassanova
7e04bfbf18
Revert "[lldb][RPC] Upstream lldb-rpc-gen tool" (#146969)
Reverts llvm/llvm-project#138031. This is failing during the build phase
on the Ubuntu buildbot:
```
Error while processing /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/API/SBWatchpoint.h.
[78/78] Processing file /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/API/SBWatchpointOptions.h.
warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-class-memaccess'; did you mean '-Wno-class-varargs'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-class-memaccess'; did you mean '-Wno-class-varargs'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'? [-Wunknown-warning-option]
In file included from /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/API/SBWatchpointOptions.h:12:
In file included from /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/API/SBDefines.h:12:
In file included from /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/lldb-defines.h:12:
In file included from /home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/lldb-types.h:12:
/home/buildbot/worker/as-builder-9/lldb-remote-linux-ubuntu/llvm-project/lldb/include/lldb/lldb-enumerations.h:12:10: fatal error: 'cstdint' file not found
   12 | #include <cstdint>
      |          ^~~~~~~~~
```
2025-07-03 15:53:40 -07:00
Chelsea Cassanova
9bfb347ea0
[lldb][RPC] Upstream lldb-rpc-gen tool (#138031)
This commit upstreams the `lldb-rpc-gen` tool, a ClangTool that
generates the LLDB RPC client and server interfaces. This tool, as well
as LLDB RPC itself is built by default. If it needs to be disabled, put
-DLLDB_BUILD_LLDBRPC=OFF in your CMake invocation.

https://discourse.llvm.org/t/rfc-upstreaming-lldb-rpc/85804
2025-07-03 15:31:17 -07:00
Chelsea Cassanova
c3811c8474
[lldb][scripts] Use named args in versioning script (#145993)
Using named args means that you don't need to keep track of 5 positional
args.
2025-06-26 17:02:22 -07:00
Chelsea Cassanova
c73e5e3e20
[lldb][scripts] Fix bugs in framework fix script (#145961)
The script used to fix up LLDB's header for use in the macOS framework
contained 2 bugs that this commit addreses:

1. The output contents were appended to the output file multiple times
instead of only being written once.
2. The script was not considering LLDB includes that were *not* from the
SB API.

This commit addresses and fixes both of these bugs and updates the
corresponding test to match.
2025-06-26 15:06:37 -07:00
Chelsea Cassanova
92a7f6fbbe
[lldb][rpc] Fix bug in convert script for RPC (#145419)
In the script that's used by RPC to convert LLDB headers to LLDB RPC
headers, there's a bug with how it converts namespace usage. An
overeager regex pattern caused *all* text before any `lldb::` namespace
usage to get replaced with `lldb_rpc::` instead of just the namespace
itself. This commit changes that regex pattern to be less overeager and
modifies one of the shell tests for this script to actually check that
the namespace usage replacement is working correctly.

rdar://154126268
2025-06-23 15:46:12 -07:00
Ebuka Ezike
8d83d04637
[lldb] add plugin names to process save-core error output. (#143126)
continuation of
[#142684](https://github.com/llvm/llvm-project/pull/142684) to show
plugin names.

From issue [#14258](https://github.com/llvm/llvm-project/issues/142581)
2025-06-23 18:02:58 +01:00
Michael Buch
1bc63265af
[lldb][DWARFASTParserClang] Support constant index encoding of DW_AT_object_pointer (#144998)
Starting with https://github.com/llvm/llvm-project/pull/124790, Clang
emits `DW_AT_object_pointer` encoded as integer constants rather than
DIE references. This patch accounts for this.

Depends on https://github.com/llvm/llvm-project/pull/145328 and
https://github.com/llvm/llvm-project/pull/145126
2025-06-23 17:58:17 +01:00
Med Ismail Bennani
1db9afb102
[lldb/crashlog] Make registers always available & fix x29/x30 parsing (#145104)
This patch addresses 2 issues:
1. It makes registers available on non-crashed threads all the time
2. It fixes arm64 registers parsing for registers that don't use the `x`
prefix (`fp` -> `x29` / `lr` -> `x30`)

---------

Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
2025-06-20 15:26:14 -07:00
Med Ismail Bennani
58f48011b3
[lldb] Add support for x86_64h to scripted process (#145099)
This patch adds support to the haswell sub-architecture (x86_64h) to
scripted processes.

rdar://147208252

Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
2025-06-20 13:28:21 -07:00
Med Ismail Bennani
7b989ade35
[lldb/crashlog] Make interactive mode the new default (#144839)
This patch makes interactive mode as the default when using the crashlog
command. It replaces the existing `-i|--interactive` flag with a new
`-m|--mode` option, that can either be `interactive` or `batch`.

By default, when the option is not explicitely set by the user, the
interactive mode is selected, however, lldb will fallback to batch mode
if the command interpreter is not interactive or if stdout is not a tty.

This also adds some railguards to prevent users from using interactive
only options with the batch mode and updates the tests accordingly.

rdar://97801509

Differential Revision: https://reviews.llvm.org/D141658

Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
2025-06-18 22:49:21 -07:00
Michael Buch
ee4c2bb687 [lldb][test] explicit-member-function-quals.cpp: add -glldb
This will get un-XFAILed but requires `-glldb` in an upcoming patch.
2025-06-18 11:32:23 +01: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
Dhruv Srivastava
90905a638e
[lldb][AIX] Added XCOFF ParseSymtab handling (#141577)
This PR is in reference to porting LLDB on AIX.

Link to discussions on llvm discourse and github:

1. https://discourse.llvm.org/t/port-lldb-to-ibm-aix/80640
2. https://github.com/llvm/llvm-project/issues/101657
The complete changes for porting are present in this draft PR:
https://github.com/llvm/llvm-project/pull/102601

**Description:**
Adding ParseSymtab logic after creating sections. It is able to handle
both 32 and 64 bit symbols,
without the need to add template logic.

This is an incremental PR on top of my previous couple of XCOFF support
commits.
2025-06-17 13:49:48 +05:30
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
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
Chelsea Cassanova
8a8ea8fec0
Reland "[lldb][headers] Create Python script to fix up framework head… (#143945)
…ers" (#143941)

Reland the script that converts lldb headers to RPC headers. The RPC
test was failing due to the incorrect input filepath being used.

Original commit message:
This commit replaces the shell script that fixes up includes for the
LLDB framework with a Python script. This script will also be used when
fixing up includes for the LLDBRPC.framework.
2025-06-12 13:55:44 -07:00
Chelsea Cassanova
06dad352db
Revert "[lldb][headers] Create Python script to fix up framework headers" (#143941)
Reverts llvm/llvm-project#142051
2025-06-12 10:39:53 -07:00
Chelsea Cassanova
1a4cf1d3ed
[lldb][headers] Create Python script to fix up framework headers (#142051)
This commit replaces the shell script that fixes up includes for the
LLDB framework with a Python script. This script will also be used when
fixing up includes for the LLDBRPC.framework.
2025-06-12 10:07:45 -07:00
Chelsea Cassanova
a2d2941830
[lldb][RPC] Upstream LLDB to RPC converstion Python script (#138028)
As part of upstreaming LLDB RPC, this commit adds a python script that
is used by LLDB RPC to modify the public lldb header files for use with
RPC.

https://discourse.llvm.org/t/rfc-upstreaming-lldb-rpc/85804
2025-06-11 13:12:37 -07:00
Chelsea Cassanova
eb76d8332e
Reland "[lldb][headers] Create script to fix up versioning" (#142864)" (#142871)
This relands the original commit for the versioning script in LLDB. This
commit uses '>' for output from `unifdef` for platforms that have that
executable but do not have the `-o` option. It also fixes the Xcode
build by adding a dependency between the liblldb-header-staging target
in the source/API/CMakeLists.txt the `liblldb-resource-headers` target
in LLDBFramework.cmake.

Original patch: https://github.com/llvm/llvm-project/pull/141116
2025-06-10 09:47:11 -07:00
Michael Buch
95b5b6801c [lldb][test] Add test for handling conflicting Objective-C NS_OPTIONS typedefs
Add test that checks whether the expression evaluator can handle
the `NS_ENUM`/`NS_OPTIONS` typedefs from Objective-C `CoreFoundation`.
In the test, `module.h` mimicks the `NS_OPTIONS` typedef from `CoreFoundation`.

The `ClangModulesDeclVendor` currently compiles modules as
C++, so the `MyInt` Clang decl in the module will be a `TypedefType`,
while the DWARF AST parser will produce an `EnumType` (since that's what
the debug-info says). When the `ASTImporter` imports these decls into the
scratch AST, it will fail to re-use one or the other decl because they
aren't structurally equivalent (one is a typedef, the other an enum),
so we end up with two conflicting `MyInt` declarations in the scratch AST
and the expression fails to run due to ambiguity in name lookup.

rdar://151022173
2025-06-10 10:58: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
Charles Zablit
b62488f832
[lldb] make lit use the same PYTHONHOME for building and testing (#143183)
When testing LLDB, we want to make sure to use the same Python as the
one we used to build it.

This patch used the CMake variable `Python3_ROOT_DIR` to set the
`PYTHONHOME` env variable in LLDB lit tests, in order to ensure of this.

Please see https://github.com/swiftlang/swift/pull/82063 for the
original issue.
2025-06-09 10:20:39 +01:00
nerix
c6670fa20d
[LLDB] Unify DWARF section name matching (#141344)
Different object file formats support DWARF sections (COFF, ELF, MachO,
PE/COFF, WASM). COFF and PE/COFF only matched a subset. This caused some
GCC executables produced on MinGW to have issue later on when debugging.
One example is that `.debug_rnglists` was not matched, which caused
range-extraction to fail when printing a backtrace.

This unifies the parsing of section names in
`ObjectFile::GetDWARFSectionTypeFromName`, so all file formats can use
the same naming convention. Since the prefixes are different,
`GetDWARFSectionTypeFromName` only matches the suffixes (i.e. `.debug_`
needs to be stripped before).

I added two tests to ensure the sections are correctly identified on
Windows executables.
2025-06-09 09:46:50 +01:00
David Spickett
974ee967ad [lldb][test] Add more context for frame format test
This test is unsupported due to problems I assume with debug info,
but even if we solve that, the formatting elements aren't working
properly.

https://github.com/llvm/llvm-project/issues/143149
2025-06-06 14:42:12 +00:00
David Spickett
95b3fd6170 [lldb][test] Fix TestFrameFunctionInlined on Windows
This test was timing out on Linaro's Windows on Arm bot.

This was because it couldn't identify an inlined function to
break on, which let it run into an infinite loop, which exhausted
the stack, which would have taken forever to backtrace.

Full details here - https://github.com/llvm/llvm-project/issues/143104

I'm not sure PDB would help here but it does work with DWARF
as long as we use a linker that keeps it.

So I've changed the test to require Windows and lld, unless you're
not on Windows and then you can use any linker.

Also I had to regex some parts of the function name because
on Windows we get the return and parameter types too.
2025-06-06 10:38:49 +00:00
Michael Buch
5a918923f3
[lldb][Format] Add [inlined] marker to names of inlined frames (#142952)
This was removed in https://github.com/llvm/llvm-project/pull/135343 in
favour of making it a format variable, which we do here. This follows
the precedent of the `[opt]` and `[artificial]` markers.

Before:
```
 thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2
 * frame #0: 0x000000010000037c a.out`inlined1() at inline.cpp:4:3
   frame #1: 0x000000010000037c a.out`regular() at inline.cpp:6:17
   frame #2: 0x00000001000003b8 a.out`inlined2() at inline.cpp:7:43
   frame #3: 0x00000001000003b4 a.out`main at inline.cpp:10:3
   frame #4: 0x0000000186345be4 dyld`start + 7040
```

After (note the `[inlined]` markers):
```
thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2
* frame #0: 0x000000010000037c a.out`inlined1() at inline.cpp:4:3 [inlined]
  frame #1: 0x000000010000037c a.out`regular() at inline.cpp:6:17
  frame #2: 0x00000001000003b8 a.out`inlined2() at inline.cpp:7:43 [inlined]
  frame #3: 0x00000001000003b4 a.out`main at inline.cpp:10:3
  frame #4: 0x0000000186345be4 dyld`start + 7040
```

rdar://152642178
2025-06-05 17:41:37 +01:00
Chelsea Cassanova
e5cfa0a15d
Revert "[lldb][headers] Create script to fix up versioning" (#142864)
Reverts llvm/llvm-project#141116. It's breaking the Xcode build as well
as the build on AIX.
2025-06-04 15:04:36 -07:00
David Spickett
da8271e887 [lldb][test] Disable TestCxxFrameFormatRecursive on Linux
It was always expected to fail and now it sometimes times out instead.

See https://github.com/llvm/llvm-project/issues/142726.
2025-06-04 14:01:46 +00:00
Ebuka Ezike
7214a3d3da
[lldb] Do not accept invalid process save-core plugins (#142684)
Fixes #142581
2025-06-04 11:33:35 +01:00
Chelsea Cassanova
d204aa9deb
[lldb][headers] Create script to fix up versioning (#141116)
This commit creates a Python script that fixes up the versioning
information in lldb-defines.h. It also moves the build logic for fixing
up the lldb headers from being in the framework only to being in the
same location that we create the liblldb target.
2025-06-03 13:06:46 -07:00
Jonas Devlieghere
a9032712c4
[lldb] Emit an error when using --wait-for without a name or pid (#142424)
Emit an error when using --wait-for without a name and correct the help
output to specify a name must be provided, rather than a name or PID.

Motivated by
https://discourse.llvm.org/t/why-is-wait-for-not-attaching/86636
2025-06-03 09:19:50 -07:00
Michael Buch
3ddc1e1cf3 [lldb][test] XFAIL TestClangModulesDeclLookup.test on win-remote-linux
Failing on the `lldb-remote-linux-win` buildbot with:
```
| (lldb) expression foo(50)
|                          ^
| <stdin>:54:34: note: possible intended match here
| (lldb) target modules dump ast --filter foo
|                                  ^
|
| Input file: <stdin>
| Check file: C:\buildbot\as-builder-10\lldb-x-aarch64\llvm-project\lldb\test\Shell\Expr\TestClangModulesDeclLookup.test
|
| -dump-input=help explains the following input dump.
|
| Input was:
| <<<<<<
|            .
|            .
|            .
|           46:  5 foo(10);
|           47: -> 6 return 0;
|           48:  ^
|           49:  7 }
|           50:  8
|           51: (lldb) expression foo(50)
| next:57'0                              X error: no match found
|           52:  ^~~~~~
| next:57'0     ~~~~~~~~
|           53:  error: 'foo' has unknown return type; cast the call to its declared return type
| next:57'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|           54: (lldb) target modules dump ast --filter foo
| next:57'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| next:57'1                                      ?           possible intended match
|           55: Dumping clang ast for 4 modules.
| next:57'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| >>>>>>
`-----------------------------
error: command failed with exit status: 1
```

Fixes https://github.com/llvm/llvm-project/issues/142590
2025-06-03 13:16:03 +01:00
Michael Buch
05547fc3ec [lldb][test] XFAIL TestClangModulesDeclLookup on Linux
Failing on the Linux bots with:
```
+ /home/worker/2.0.1/lldb-x86_64-debian/build/bin/FileCheck /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/Shell/Expr/TestClangModulesDeclLookup.test
/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/Shell/Expr/TestClangModulesDeclLookup.test:56:15: error: CHECK-NEXT: expected string not found in input
              ^
<stdin>:38:26: note: scanning from here
(lldb) expression foo(50)
                         ^
<stdin>:41:34: note: possible intended match here
(lldb) target modules dump ast --filter foo
                                 ^
```
2025-06-03 12:20:31 +01:00
Michael Buch
9c52b177ea [lldb][test] Add test for looking up decls in Clang modules for C++
Adds coverage for the code-path where
`ClangExpressionDeclMap::FindExternalVisibleDecls` finds a decl inside
of a Clang module (without explicitly having to import the module on the
LLDB CLI). AFAICT, we had not tests for this.

`LookupFunction` will try to find a `FunctionDecl` in debug-info. But if
no debug-info exists, it will ask the `ClangModulesDeclVendor` to search
for the function with the specified name in any of the Clang modules
that got added to it in `SetupDeclVendor`.
2025-06-03 12:10:15 +01:00
David Spickett
75ec944e38 [lldb][test] Disable image dump ast test on Windows
Again I think this requires DWARF. In theory we could use the PDB
file but I suspect that PDB file is in fact empty, because we
tell clang to produce DWARF.

So on Windows, first thing is we cannot run the expressions:
(lldb) expr A(); A1(); BA1(); AB();
error: <user expression 1>:1:1: 'A' has unknown return type; cast the call to its declared return type
    1 | A(); A1(); BA1(); AB();
      | ^~~
...and so on...

And then the AST is all unknown functions:
(lldb) image dump ast
Dumping clang ast for 4 modules.
TranslationUnitDecl 0x2b3bb591870 <<invalid sloc>> <invalid sloc> <undeserialized declarations>
|-FunctionDecl 0x2b3bb592970 <<invalid sloc>> <invalid sloc> mainCRTStartup 'unsigned long (void *)'
| `-ParmVarDecl 0x2b3bb592a20 <<invalid sloc>> <invalid sloc> 'void *'
`-FunctionDecl 0x2b3bb592ad8 <<invalid sloc>> <invalid sloc> __scrt_common_main_seh 'int ()' static

So I'm just going to disable this test on Windows, it's pretty
clear why it doesn't work and we have no plans to make it work.
2025-06-03 09:33:24 +00:00
Michael Buch
0f7e10b027
[lldb] Add filter option to AST dump command (#142164)
Depends on https://github.com/llvm/llvm-project/pull/142163

This patch makes the `-ast-dump-filter` Clang option available to the
`target modules dump ast` command. This allows us to selectively dump
parts of the AST by name.

The AST can quickly grow way too large to skim on the console. This will
aid in debugging AST related issues.

Example:
```
(lldb) target modules dump ast --filter func
Dumping clang ast for 48 modules.
Dumping func:
FunctionDecl 0xc4b785008 <<invalid sloc>> <invalid sloc> func 'void (int)' extern
|-ParmVarDecl 0xc4b7853d8 <<invalid sloc>> <invalid sloc> x 'int'
`-AsmLabelAttr 0xc4b785358 <<invalid sloc>> Implicit "_Z4funcIiEvT_"

Dumping func<int>:
FunctionDecl 0xc4b7850b8 <<invalid sloc>> <invalid sloc> func<int> 'void (int)' implicit_instantiation extern
|-TemplateArgument type 'int'
| `-BuiltinType 0xc4b85b110 'int'
`-ParmVarDecl 0xc4b7853d8 <<invalid sloc>> <invalid sloc> x 'int'
```

The majority of this patch is adjust the `Dump` API. The main change in
behaviour is in `TypeSystemClang::Dump`, where we now use the
`ASTPrinter` for dumping the `TranslationUnitDecl`. This is where the
`-ast-dump-filter` functionality lives in Clang.
2025-06-02 10:55:04 +01:00
Jacob Lalonde
513c1cdfaa
[LLDB][Platform Linux] Flip uid and pid in get signal description (#142200)
Despite a great review from @labath, I accidentally landed the signal
with the UID and PID properties flipped. I was actually trying to write
tests for this feature when I discovered it.

This fixes that bug, and add a shell test that runs only on Nix systems.
2025-05-30 14:21:33 -07:00
nerix
9e9626b3d5
[LLDB] Avoid crashes when inspecting MSVC STL types (#140761)
When inspecting/printing types from MSVC's STL, LLDB would crash because
it assumes these types were from libstdc++. Specifically,
`std::shared_ptr` and `std::optional` would crash because of a null
pointer dereference. I added a minimal test that tests the types with
C++ helpers for libstdc++ (only tests for crashes).

- Fixes #115216 
- Fixes #120310 

This still has one unresolved discussion: What about MS STL types? This
is https://github.com/llvm/llvm-project/issues/24834, but there was a
bit of discussion in #120310 as well. The main issue is that MSVC's STL
uses the same type names as libstdc++ (i.e. neither uses an inline
namespace like libc++ for some types).
2025-05-30 20:43:53 +01:00
nerix
1b1f498835
[LLDB] Pass /std:... before -- on MSVC (#141782)
From https://github.com/llvm/llvm-project/pull/140761. `MsvcBuilder`
passed `/std:<value>` (if specified) after `--`, so the compiler would
interpret this as a file. This moves the argument before the `--`.
2025-05-30 09:08:50 +01:00
Charles Zablit
b8997c07d9
[Demangling] Refactor Demangler range tracking (#140762)
This PR is a subset of the commits made in
https://github.com/swiftlang/llvm-project/pull/10710.

The most notable change is the addition of `PrefixRange` and
`SuffixRange` which are a catch-all to track anything after or before a
function's demangled name. In the case of Swift, this allows to add
support for name highlighting without having to track the range of the
scope and specifiers of a function (this will come in another PR).
2025-05-28 13:53:02 +01:00
Pavel Labath
452894207a
[lldb] Make AddressRange dump easier on the eye (#141062) 2025-05-28 09:02:36 +02:00
Ely Ronnen
044929d075
[lldb] Change synthetic symbol names to have file address (#138416)
* Changes the default synthetic symbol names to contain their file
address

This is a new PR after the first PR (#137512) was reverted because it
didn't update the way unnamed symbols were searched in the symbol table,
which relied on the index being in the name.

This time also added extra test to make sure the symbol is found as
expected
2025-05-23 08:26:46 +02:00
Pat Doyle
4fd48ac9ae
[test] Fix dissassemble-entry-point.s for #140187 (#140978)
similar to #140570

getting this error:

exit status 1
ld.lld: error: section '.text' address (0x8074) is smaller than image
base (0x10000); specify --image-base
2025-05-21 20:21:18 -07:00
Vy Nguyen
10d198b32c
[lldb] Update Xfail window (#140599) 2025-05-19 15:51:15 -04:00
Vy Nguyen
fe1c4827b7
[lldb][nfc]Make test "xfail" on windows (#140588) 2025-05-19 14:28:18 -04:00
Vy Nguyen
1b44eb2f6b
[lldb][nfc]Temporarily disable test on non-x86 because output-redirec… (#140585)
because output-redirection doesn't work properly
2025-05-19 13:40:38 -04:00
Vy Nguyen
dc25ab389c
[lldb]Make list command work with headers when possible. (#139002)
Given this simple test case:

```
// foo.h
extern int* ptr;
inline void g(int x) {
  *ptr = x; // should raise a SIGILL
}
//--------------
// foo.cc
#include "foo.h"
int* ptr;

//--------------
// main.cc

#include "foo.h"

int main() {
  g(123); // Call the inlined function and crash
  return 0;
}

$ clang -g main.cc foo.cc -o main.out
$ lldb main.out
```

When you run `main.out` under lldb, it'd stop inside `void g(int)`
because of the crash.
The stack trace would show that it had crashed in `foo.h`, but if you do
`list foo.h:2`, lldb would complain that it could not find the source
file, which is confusing.

This patch make `list` work with headers.
2025-05-19 11:04:01 -04:00