Skip to content

Commit 7194803

Browse files
Merge pull request #10373 from adrian-prantl/145884579
[lldb] Change LLDBTypeInfoProvider to a local (per-module) TypeSystem…
2 parents 4710326 + bf89718 commit 7194803

File tree

8 files changed

+130
-97
lines changed

8 files changed

+130
-97
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp

Lines changed: 81 additions & 93 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
typedef enum { someValue } TDEnum;
2+
3+
typedef struct {
4+
TDEnum e;
5+
} TDStruct;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SWIFT_SOURCES := main.swift
2+
SWIFTFLAGS_EXTRAS = -I$(SRCDIR) -Xcc -I$(SRCDIR)
3+
4+
include Makefile.rules
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import lldb
2+
from lldbsuite.test.decorators import *
3+
import lldbsuite.test.lldbtest as lldbtest
4+
import lldbsuite.test.lldbutil as lldbutil
5+
6+
class TestSwiftDWARFImporterC(lldbtest.TestBase):
7+
8+
@swiftTest
9+
def test(self):
10+
"""Test looking up a Clang typedef type that isn't directly
11+
referenced by debug info in the Swift object file.
12+
"""
13+
self.build()
14+
target, process, thread, bkpt = lldbutil.run_to_source_breakpoint(
15+
self, 'break here', lldb.SBFileSpec('main.swift'))
16+
s = self.frame().FindVariable("s", lldb.eDynamicDontRunTarget)
17+
s_e = s.GetChildAtIndex(0)
18+
lldbutil.check_variable(self, s_e, value="someValue")
19+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import CTypes
2+
3+
func f() {
4+
var s = TDStruct(e: someValue)
5+
print("break here")
6+
}
7+
8+
f()
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module CTypes {
2+
header "CTypes.h"
3+
export *
4+
}

lldb/test/API/lang/swift/late_swift_dylib_clangdeps/TestSwiftLateSwiftDylibClangDeps.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ def test(self):
2323
lldb.SBFileSpec('dylib.swift'), 5)
2424
threads = lldbutil.continue_to_breakpoint(process, bkpt)
2525

26-
self.expect("v x", substrs=['42'])
26+
self.expect("v fromClang", substrs=['42'])
2727
self.expect("frame select 1")
28-
self.expect("v fromClang", substrs=['23'])
28+
# Note that in earlier versions the lookup was a global one and
29+
# thus re-evaluating the variable after adding dylib would
30+
# have produced a different result. Currently these lookups
31+
# are per-module so this expectedly still fails.
32+
self.expect("v fromClang",
33+
substrs=["missing debug info", "FromClang"])
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import ClangMod
22

33
@_silgen_name("f") public func f() {
4-
let x = FromClang(x: 42)
5-
print(x) // line 5
4+
let fromClang = FromClang(x: 42)
5+
print(fromClang) // line 5
66
}

0 commit comments

Comments
 (0)