[llvm-dev] [PDB] Error "DIA is not installed on the system" occured in `llvm::pdb::loadDataForExe()`.

Henry Wong via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 23 00:39:33 PST 2018


Hi all,
I have two questions about reading PDB file.

For `llvm::pdb::loadDataFromEXE(PDB_ReaderType Type, ...)`, there are two places calling this method,
`LLVMSymbolizer::getOrCreateModuleInfo(PDB_ReaderType::DIA, ...)`, see https://github.com/llvm-mirror/llvm/blob/master/lib/DebugInfo/Symbolize/Symbolize.cpp#L403,
and `SymbolFilePDB::CalculateAbilities(PDB_ReaderType::DIA, ...)`, see https://github.com/llvm-mirror/lldb/blob/master/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp#L110.

1) We can see that the arguments of the two calls are both `PDB_ReaderType::DIA`,  that means the first IfStmt
in `llvm::pdb::loadDataFromEXE(PDB_ReaderType Type, ...)` is  temporarily useless. Is that right?

2) I have visual studio 2015 installed on my computer and there is no an environment variable called
 VSINSTALLDIR. And the `LLVM_ENABLE_DIA_SDK` is 0, so every time need to call
`llvm::pdb::loadDataFromEXE(PDB_ReaderType Type, ...)`,
it will trigger the "DIA is not installed on the system" error. I want to known is this kind of behavior correct?

-------------------------------------------------------------------------------------------------
Error llvm::pdb::loadDataForEXE(PDB_ReaderType Type, StringRef Path,
                                std::unique_ptr<IPDBSession> &Session) {
  // Create the correct concrete instance type based on the value of Type.
  if (Type == PDB_ReaderType::Native)
    return NativeSession::createFromExe(Path, Session);

#if LLVM_ENABLE_DIA_SDK
  return DIASession::createFromExe(Path, Session);
#else
  return make_error<GenericError>("DIA is not installed on the system");
#endif
}

-------------------------------------------------------------------------------------------------
[https://avatars2.githubusercontent.com/u/1386314?s=400&v=4]<https://github.com/llvm-mirror/lldb/blob/master/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp#L110>

llvm-mirror/lldb<https://github.com/llvm-mirror/lldb/blob/master/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp#L110>
Mirror of official lldb git repository located at http://llvm.org/git/lldb. Updated every five minutes.
github.com


[https://avatars2.githubusercontent.com/u/1386314?s=400&v=4]<https://github.com/llvm-mirror/llvm/blob/master/lib/DebugInfo/Symbolize/Symbolize.cpp#L403>

llvm-mirror/llvm<https://github.com/llvm-mirror/llvm/blob/master/lib/DebugInfo/Symbolize/Symbolize.cpp#L403>
Mirror of official llvm git repository located at http://llvm.org/git/llvm. Updated every five minutes.
github.com



Henry Wong
Qihoo 360 Codesafe Team
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180123/1f610641/attachment.html>


More information about the llvm-dev mailing list