LLVM: lib/DebugInfo/PDB/PDBSymbolCompiland.cpp Source File (original) (raw)
25 Dumper.dump(*this);
26}
33 std::string SourceFileFullPath;
34
35
36
37
38
39
40
41
42 std::string RecordedResult = RawSymbol->getSourceFileName();
43
44 if (RecordedResult.empty()) {
46 std::string EnvWorkingDir, EnvSrc;
47
48 while (auto Env = Envs->getNext()) {
49 std::string Var = Env->getName();
50 if (Var == "cwd") {
51 EnvWorkingDir = Env->getValue();
52 continue;
53 }
54 if (Var == "src") {
55 EnvSrc = Env->getValue();
57 return EnvSrc;
58 RecordedResult = EnvSrc;
59 continue;
60 }
61 }
62 if (!EnvWorkingDir.empty() && !EnvSrc.empty()) {
63 auto Len = EnvWorkingDir.length();
64 if (EnvWorkingDir[Len - 1] != '/' && EnvWorkingDir[Len - 1] != '\\') {
65 std::string Path = EnvWorkingDir + "\\" + EnvSrc;
67
69 SourceFileFullPath = Path;
70 }
71 }
72 }
73 }
74
75 if (!RecordedResult.empty()) {
77 return RecordedResult;
78
79
80 auto OneSrcFile = Session.findOneSourceFile(
82 if (OneSrcFile)
83 return OneSrcFile->getFileName();
84 }
85
86
87
88
90 PDB_Lang Lang = Details ? Details->getLanguage() : PDB_Lang::Cpp;
91 auto SrcFiles = Session.getSourceFilesForCompiland(*this);
92 if (SrcFiles) {
93 while (auto File = SrcFiles->getNext()) {
94 std::string FileName = File->getFileName();
97 .Case(".cpp", Lang == PDB_Lang::Cpp)
98 .Case(".cc", Lang == PDB_Lang::Cpp)
99 .Case(".cxx", Lang == PDB_Lang::Cpp)
100 .Case(".c", Lang == PDB_Lang::C)
101 .Case(".asm", Lang == PDB_Lang::Masm)
102 .Case(".swift", Lang == PDB_Lang::Swift)
103 .Case(".rs", Lang == PDB_Lang::Rust)
104 .Case(".m", Lang == PDB_Lang::ObjC)
105 .Case(".mm", Lang == PDB_Lang::ObjCpp)
107 return File->getFileName();
108 }
109 }
110
111 return SourceFileFullPath;
112}