diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index bf13bb7f..427cc45c 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -25,12 +25,10 @@ Git repository urls found here: [http://llvm.org/docs/GettingStarted.html#git-mi Building in *Release* is recommended because else the Clang parser will be excruciatingly slow. -Last updated to LLVM/Clang revision: `r198449` +Last updated to LLVM/Clang revision: `r202563` ## Compiling on Mac OS X (experimental) -Requirements: Clang revision >= 198625 - 1. Clone CppSharp to `` 2. Clone LLVM to `\deps\llvm` 3. Clone Clang to `\deps\llvm\tools\clang` diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index a23e94b4..86c07698 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -8,6 +8,7 @@ #include "Parser.h" #include +#include #include #include #include @@ -507,11 +508,10 @@ void Parser::WalkVTable(clang::CXXRecordDecl* RD, Class* C) auto& VFPtrInfo = *I; VFTableInfo Info; - Info.VBTableIndex = VFPtrInfo.VBTableIndex; - Info.VFPtrOffset = VFPtrInfo.VFPtrOffset.getQuantity(); - Info.VFPtrFullOffset = VFPtrInfo.VFPtrFullOffset.getQuantity(); + Info.VFPtrOffset = VFPtrInfo->NonVirtualOffset.getQuantity(); + Info.VFPtrFullOffset = VFPtrInfo->FullOffsetInMDC.getQuantity(); - auto& VTLayout = VTContext.getVFTableLayout(RD, VFPtrInfo.VFPtrFullOffset); + auto& VTLayout = VTContext.getVFTableLayout(RD, VFPtrInfo->FullOffsetInMDC); Info.Layout = WalkVTableLayout(VTLayout); C->Layout.VFTables.push_back(Info); @@ -2632,23 +2632,25 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File, for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end(); ++it) { - llvm::StringRef SymRef; - - if (it->getName(SymRef)) - continue; + std::string Sym; + llvm::raw_string_ostream SymStream(Sym); + + if (it->printName(SymStream)) + continue; - NativeLib->Symbols.push_back(SymRef); + NativeLib->Symbols.push_back(Sym); } for (auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end(); ++it) { - llvm::StringRef SymRef; - - if (it->getName(SymRef)) - continue; + std::string Sym; + llvm::raw_string_ostream SymStream(Sym); + + if (it->printName(SymStream)) + continue; - NativeLib->Symbols.push_back(SymRef); + NativeLib->Symbols.push_back(Sym); } return ParserResultKind::Success; diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 69c081db..ef79cc50 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -9,6 +9,7 @@ #include "Interop.h" #include +#include #include #include #include @@ -508,11 +509,10 @@ void Parser::WalkVTable(clang::CXXRecordDecl* RD, CppSharp::AST::Class^ C) auto& VFPtrInfo = *I; CppSharp::AST::VFTableInfo Info; - Info.VBTableIndex = VFPtrInfo.VBTableIndex; - Info.VFPtrOffset = VFPtrInfo.VFPtrOffset.getQuantity(); - Info.VFPtrFullOffset = VFPtrInfo.VFPtrFullOffset.getQuantity(); + Info.VFPtrOffset = VFPtrInfo->NonVirtualOffset.getQuantity(); + Info.VFPtrFullOffset = VFPtrInfo->FullOffsetInMDC.getQuantity(); - auto& VTLayout = VTContext.getVFTableLayout(RD, VFPtrInfo.VFPtrFullOffset); + auto& VTLayout = VTContext.getVFTableLayout(RD, VFPtrInfo->FullOffsetInMDC); Info.Layout = WalkVTableLayout(VTLayout); C->Layout->VFTables->Add(Info); @@ -2644,24 +2644,26 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File, for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end(); ++it) { - llvm::StringRef SymRef; + std::string Sym; + llvm::raw_string_ostream SymStream(Sym); - if (it->getName(SymRef)) + if (it->printName(SymStream)) continue; - System::String^ SymName = clix::marshalString(SymRef); + System::String^ SymName = clix::marshalString(Sym); NativeLib->Symbols->Add(SymName); } for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end(); ++it) { - llvm::StringRef SymRef; + std::string Sym; + llvm::raw_string_ostream SymStream(Sym); - if (it->getName(SymRef)) + if (it->printName(SymStream)) continue; - System::String^ SymName = clix::marshalString(SymRef); + System::String^ SymName = clix::marshalString(Sym); NativeLib->Symbols->Add(SymName); }