[lldb] Improve error message in ResolveSDKPathFromDebugInfo (NFC) (#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: https://github.com/llvm/llvm-project/pull/146062
This commit is contained in:
parent
a64e6f4928
commit
a447fc63f9
@ -1039,7 +1039,12 @@ ResolveSDKPathFromDebugInfo(lldb_private::Target *target) {
|
||||
|
||||
SymbolFile *sym_file = exe_module_sp->GetSymbolFile();
|
||||
if (!sym_file)
|
||||
return llvm::createStringError("Failed to get symbol file from module");
|
||||
return llvm::createStringError("Failed to get symbol file from executable");
|
||||
|
||||
if (sym_file->GetNumCompileUnits() == 0)
|
||||
return llvm::createStringError(
|
||||
"Failed to resolve SDK for target: executable's symbol file has no "
|
||||
"compile units");
|
||||
|
||||
XcodeSDK merged_sdk;
|
||||
for (unsigned i = 0; i < sym_file->GetNumCompileUnits(); ++i) {
|
||||
@ -1397,6 +1402,12 @@ PlatformDarwin::GetSDKPathFromDebugInfo(Module &module) {
|
||||
llvm::formatv("No symbol file available for module '{0}'",
|
||||
module.GetFileSpec().GetFilename().AsCString("")));
|
||||
|
||||
if (sym_file->GetNumCompileUnits() == 0)
|
||||
return llvm::createStringError(
|
||||
llvm::formatv("Could not resolve SDK for module '{0}'. Symbol file has "
|
||||
"no compile units.",
|
||||
module.GetFileSpec()));
|
||||
|
||||
bool found_public_sdk = false;
|
||||
bool found_internal_sdk = false;
|
||||
XcodeSDK merged_sdk;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user