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}