Skip to content

Commit 1fa3362

Browse files
authored
Merge pull request #6412 from augusto2112/fix-log
Cherrypick b34767d and fix logging without format
2 parents 182eec0 + 0fe7121 commit 1fa3362

File tree

1 file changed

+76
-18
lines changed

1 file changed

+76
-18
lines changed

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

Lines changed: 76 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,36 @@ class TargetReflectionContext
270270
const swift::reflection::TypeInfo *
271271
getTypeInfo(const swift::reflection::TypeRef *type_ref,
272272
swift::remote::TypeInfoProvider *provider) override {
273-
return m_reflection_ctx.getTypeInfo(type_ref, provider);
273+
if (!type_ref)
274+
return nullptr;
275+
276+
Log *log(GetLog(LLDBLog::Types));
277+
if (log && log->GetVerbose()) {
278+
std::stringstream ss;
279+
type_ref->dump(ss);
280+
LLDB_LOGF(log, "[TargetReflectionContext::getTypeInfo] Getting "
281+
"type info for typeref:\n%s",
282+
ss.str().c_str());
283+
}
284+
285+
auto type_info = m_reflection_ctx.getTypeInfo(type_ref, provider);
286+
if (log && !type_info) {
287+
std::stringstream ss;
288+
type_ref->dump(ss);
289+
LLDB_LOGF(log,
290+
"[TargetReflectionContext::getTypeInfo] Could not get "
291+
"type info for typeref:\n%s",
292+
ss.str().c_str());
293+
}
294+
295+
if (log && log->GetVerbose()) {
296+
std::stringstream ss;
297+
type_info->dump(ss);
298+
log->Printf("[TargetReflectionContext::getTypeInfo] Found "
299+
"type info:\n%s",
300+
ss.str().c_str());
301+
}
302+
return type_info;
274303
}
275304

276305
swift::reflection::MemoryReader &getReader() override {
@@ -991,6 +1020,7 @@ llvm::Optional<unsigned>
9911020
SwiftLanguageRuntimeImpl::GetNumChildren(CompilerType type,
9921021
ExecutionContextScope *exe_scope) {
9931022
LLDB_SCOPED_TIMER();
1023+
9941024
auto ts = type.GetTypeSystem().dyn_cast_or_null<TypeSystemSwiftTypeRef>();
9951025
if (!ts)
9961026
return {};
@@ -1004,14 +1034,14 @@ SwiftLanguageRuntimeImpl::GetNumChildren(CompilerType type,
10041034
const swift::reflection::TypeRef *tr = nullptr;
10051035
auto *ti = GetSwiftRuntimeTypeInfo(type, exe_scope, &tr);
10061036
if (!ti) {
1007-
LLDB_LOG(GetLog(LLDBLog::Types), "GetSwiftRuntimeTypeInfo() failed for {0}",
1008-
type.GetMangledTypeName());
1037+
LLDB_LOGF(GetLog(LLDBLog::Types), "GetSwiftRuntimeTypeInfo() failed for %s",
1038+
type.GetMangledTypeName().GetCString());
10091039
return {};
10101040
}
10111041
// Structs and Tuples.
10121042
if (auto *rti = llvm::dyn_cast<swift::reflection::RecordTypeInfo>(ti)) {
1013-
LLDB_LOG(GetLog(LLDBLog::Types), "{0}: RecordTypeInfo(num_fields={1})",
1014-
type.GetMangledTypeName(), rti->getNumFields());
1043+
LLDB_LOGF(GetLog(LLDBLog::Types), "%s: RecordTypeInfo(num_fields=%i)",
1044+
type.GetMangledTypeName().GetCString(), rti->getNumFields());
10151045
switch (rti->getRecordKind()) {
10161046
case swift::reflection::RecordKind::ExistentialMetatype:
10171047
case swift::reflection::RecordKind::ThickFunction:
@@ -1029,14 +1059,15 @@ SwiftLanguageRuntimeImpl::GetNumChildren(CompilerType type,
10291059
}
10301060
}
10311061
if (auto *eti = llvm::dyn_cast<swift::reflection::EnumTypeInfo>(ti)) {
1032-
LLDB_LOG(GetLog(LLDBLog::Types), "{0}: EnumTypeInfo(num_payload_cases={1})",
1033-
type.GetMangledTypeName(), eti->getNumPayloadCases());
1062+
LLDB_LOGF(GetLog(LLDBLog::Types), "%s: EnumTypeInfo(num_payload_cases=%i)",
1063+
type.GetMangledTypeName().GetCString(),
1064+
eti->getNumPayloadCases());
10341065
return eti->getNumPayloadCases();
10351066
}
10361067
// Objects.
10371068
if (auto *rti = llvm::dyn_cast<swift::reflection::ReferenceTypeInfo>(ti)) {
1038-
LLDB_LOG(GetLog(LLDBLog::Types), "{0}: ReferenceTypeInfo()",
1039-
type.GetMangledTypeName());
1069+
LLDB_LOGF(GetLog(LLDBLog::Types), "%s: ReferenceTypeInfo()",
1070+
type.GetMangledTypeName().GetCString());
10401071
switch (rti->getReferenceKind()) {
10411072
case swift::reflection::ReferenceKind::Weak:
10421073
case swift::reflection::ReferenceKind::Unowned:
@@ -1061,8 +1092,8 @@ SwiftLanguageRuntimeImpl::GetNumChildren(CompilerType type,
10611092
if (auto *rti =
10621093
llvm::dyn_cast_or_null<swift::reflection::RecordTypeInfo>(cti)) {
10631094
LLDB_LOG(GetLog(LLDBLog::Types),
1064-
"{0}: class RecordTypeInfo(num_fields={1})",
1065-
type.GetMangledTypeName(), rti->getNumFields());
1095+
"%s: class RecordTypeInfo(num_fields=%i)",
1096+
type.GetMangledTypeName().GetCString(), rti->getNumFields());
10661097

10671098
// The superclass, if any, is an extra child.
10681099
if (builder.lookupSuperclass(tr))
@@ -1073,8 +1104,8 @@ SwiftLanguageRuntimeImpl::GetNumChildren(CompilerType type,
10731104
return {};
10741105
}
10751106
// FIXME: Implement more cases.
1076-
LLDB_LOG(GetLog(LLDBLog::Types), "{0}: unimplemented type info",
1077-
type.GetMangledTypeName());
1107+
LLDB_LOG(GetLog(LLDBLog::Types), "%s: unimplemented type info",
1108+
type.GetMangledTypeName().GetCString());
10781109
return {};
10791110
}
10801111

@@ -1824,7 +1855,7 @@ bool SwiftLanguageRuntimeImpl::GetDynamicTypeAndAddress_Pack(
18241855
auto typeref_or_err =
18251856
decodeMangledType(reflection_ctx->getBuilder(), pack_element);
18261857
if (typeref_or_err.isError()) {
1827-
LLDB_LOG(log, "Couldn't get TypeRef for %s",
1858+
LLDB_LOGF(log, "Couldn't get TypeRef for %s",
18281859
pack_type.GetMangledTypeName().GetCString());
18291860
return false;
18301861
}
@@ -2439,8 +2470,9 @@ SwiftLanguageRuntimeImpl::BindGenericTypeParameters(StackFrame &stack_frame,
24392470
return ts.GetTypeFromMangledTypename(mangled_name);
24402471
}
24412472
CompilerType bound_type = scratch_ctx->RemangleAsType(dem, node);
2442-
LLDB_LOG(GetLog(LLDBLog::Expressions | LLDBLog::Types), "Bound {0} -> {1}.",
2443-
mangled_name, bound_type.GetMangledTypeName());
2473+
LLDB_LOGF(GetLog(LLDBLog::Expressions | LLDBLog::Types), "Bound %s -> %s.",
2474+
mangled_name.GetCString(),
2475+
bound_type.GetMangledTypeName().GetCString());
24442476
return bound_type;
24452477
}
24462478

@@ -3173,6 +3205,12 @@ lldb::addr_t SwiftLanguageRuntimeImpl::FixupAddress(lldb::addr_t addr,
31733205
const swift::reflection::TypeRef *
31743206
SwiftLanguageRuntimeImpl::GetTypeRef(CompilerType type,
31753207
TypeSystemSwiftTypeRef *module_holder) {
3208+
Log *log(GetLog(LLDBLog::Types));
3209+
if (log && log->GetVerbose())
3210+
LLDB_LOGF(log, "[SwiftLanguageRuntimeImpl::GetTypeRef] Getting typeref for "
3211+
"type: %s\n",
3212+
type.GetMangledTypeName().GetCString());
3213+
31763214
// Demangle the mangled name.
31773215
swift::Demangle::Demangler dem;
31783216
ConstString mangled_name = type.GetMangledTypeName();
@@ -3190,17 +3228,37 @@ SwiftLanguageRuntimeImpl::GetTypeRef(CompilerType type,
31903228
return nullptr;
31913229

31923230
auto type_ref_or_err =
3193-
swift::Demangle::decodeMangledType(reflection_ctx->getBuilder(), node);
3194-
if (type_ref_or_err.isError())
3231+
swift::Demangle::decodeMangledType(reflection_ctx->getBuilder(), node);
3232+
if (type_ref_or_err.isError()) {
3233+
LLDB_LOGF(log,
3234+
"[SwiftLanguageRuntimeImpl::GetTypeRef] Could not find typeref "
3235+
"for type: %s. Decode mangled type failed. Error: %s\n.",
3236+
type.GetMangledTypeName().GetCString(),
3237+
type_ref_or_err.getError()->copyErrorString());
31953238
return nullptr;
3239+
}
31963240
const swift::reflection::TypeRef *type_ref = type_ref_or_err.getType();
3241+
if (log && log->GetVerbose()) {
3242+
std::stringstream ss;
3243+
type_ref->dump(ss);
3244+
LLDB_LOGF(log, "[SwiftLanguageRuntimeImpl::GetTypeRef] Found typeref for "
3245+
"type: %s:\n%s",
3246+
type.GetMangledTypeName().GetCString(), ss.str().c_str());
3247+
}
31973248
return type_ref;
31983249
}
31993250

32003251
const swift::reflection::TypeInfo *
32013252
SwiftLanguageRuntimeImpl::GetSwiftRuntimeTypeInfo(
32023253
CompilerType type, ExecutionContextScope *exe_scope,
32033254
swift::reflection::TypeRef const **out_tr) {
3255+
Log *log(GetLog(LLDBLog::Types));
3256+
3257+
if (log && log->GetVerbose())
3258+
LLDB_LOGF(log, "[SwiftLanguageRuntimeImpl::GetSwiftRuntimeTypeInfo] Getting "
3259+
"type info for type: %s\n",
3260+
type.GetMangledTypeName().GetCString());
3261+
32043262
auto ts = type.GetTypeSystem().dyn_cast_or_null<TypeSystemSwift>();
32053263
if (!ts)
32063264
return nullptr;

0 commit comments

Comments
 (0)