Skip to content

Commit a447fc6

Browse files
authored
[lldb] Improve error message in ResolveSDKPathFromDebugInfo (NFC) (llvm#154607)
While debugging, I saw a log line of: > Failed to resolve SDK path: Error while searching for SDK (XcodeSDK ''): Unrecognized SDK type: Looking into how this might happen, it seems `ResolveSDKPathFromDebugInfo` appears to (implicitly) assume there's at least one compile unit. This change adds a precondition to return a meaningful error when there are no compile units. Original: llvm#146062
1 parent a64e6f4 commit a447fc6

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,12 @@ ResolveSDKPathFromDebugInfo(lldb_private::Target *target) {
10391039

10401040
SymbolFile *sym_file = exe_module_sp->GetSymbolFile();
10411041
if (!sym_file)
1042-
return llvm::createStringError("Failed to get symbol file from module");
1042+
return llvm::createStringError("Failed to get symbol file from executable");
1043+
1044+
if (sym_file->GetNumCompileUnits() == 0)
1045+
return llvm::createStringError(
1046+
"Failed to resolve SDK for target: executable's symbol file has no "
1047+
"compile units");
10431048

10441049
XcodeSDK merged_sdk;
10451050
for (unsigned i = 0; i < sym_file->GetNumCompileUnits(); ++i) {
@@ -1397,6 +1402,12 @@ PlatformDarwin::GetSDKPathFromDebugInfo(Module &module) {
13971402
llvm::formatv("No symbol file available for module '{0}'",
13981403
module.GetFileSpec().GetFilename().AsCString("")));
13991404

1405+
if (sym_file->GetNumCompileUnits() == 0)
1406+
return llvm::createStringError(
1407+
llvm::formatv("Could not resolve SDK for module '{0}'. Symbol file has "
1408+
"no compile units.",
1409+
module.GetFileSpec()));
1410+
14001411
bool found_public_sdk = false;
14011412
bool found_internal_sdk = false;
14021413
XcodeSDK merged_sdk;

0 commit comments

Comments
 (0)