Browse Source

Update LLVM/Clang

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1213/head
Dimitar Dobrev 6 years ago committed by João Matos
parent
commit
c579b65a3b
  1. 2
      build/Clang-commit
  2. 2
      build/LLVM-commit
  3. 4
      build/LLVM.lua
  4. 2
      src/CppParser/ParseExpr.cpp
  5. 12
      src/CppParser/Parser.cpp
  6. 213
      src/Generator.Tests/ReadNativeSymbolsTest.cs

2
build/Clang-commit

@ -1 +1 @@
9db90514610de6a64b71f9fa7f115437aa3d83d3 173708d165c6145075ef941e6953f2c1c1167544

2
build/LLVM-commit

@ -1 +1 @@
981341ad1ab30b1d90c4673f5b886232f6ba5d3d 815d4b098ce998dfa0aa08064cadbb2718e48b7d

4
build/LLVM.lua

@ -156,7 +156,6 @@ function SetupLLVMLibs()
"LLVMMCParser", "LLVMMCParser",
"LLVMBitReader", "LLVMBitReader",
"LLVMX86Info", "LLVMX86Info",
"LLVMX86AsmPrinter",
"LLVMX86Utils", "LLVMX86Utils",
"LLVMX86CodeGen", "LLVMX86CodeGen",
"LLVMX86Disassembler", "LLVMX86Disassembler",
@ -175,7 +174,8 @@ function SetupLLVMLibs()
"LLVMCore", "LLVMCore",
"LLVMSupport", "LLVMSupport",
"LLVMBinaryFormat", "LLVMBinaryFormat",
"LLVMDemangle" "LLVMDemangle",
"LLVMRemarks"
} }
filter(c) filter(c)

2
src/CppParser/ParseExpr.cpp

@ -1850,7 +1850,7 @@ AST::Expr* Parser::WalkExpression(const clang::Expr* Expr)
_S->operatorDelete = static_cast<AST::Function*>(WalkDeclaration(S->getOperatorDelete())); _S->operatorDelete = static_cast<AST::Function*>(WalkDeclaration(S->getOperatorDelete()));
_S->allocatedType = GetQualifiedType(S->getAllocatedType()); _S->allocatedType = GetQualifiedType(S->getAllocatedType());
_S->isArray = S->isArray(); _S->isArray = S->isArray();
_S->arraySize = static_cast<AST::Expr*>(WalkExpression(S->getArraySize())); _S->arraySize = static_cast<AST::Expr*>(WalkExpression(S->getArraySize().getValue()));
_S->numPlacementArgs = S->getNumPlacementArgs(); _S->numPlacementArgs = S->getNumPlacementArgs();
_S->isParenTypeId = S->isParenTypeId(); _S->isParenTypeId = S->isParenTypeId();
_S->isGlobalNew = S->isGlobalNew(); _S->isGlobalNew = S->isGlobalNew();

12
src/CppParser/Parser.cpp

@ -2810,6 +2810,12 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
Ty = WalkType(DT->getUnderlyingType(), TL); Ty = WalkType(DT->getUnderlyingType(), TL);
break; break;
} }
case clang::Type::MacroQualified:
{
auto MT = Type->getAs<clang::MacroQualifiedType>();
Ty = WalkType(MT->getUnderlyingType(), TL);
break;
}
default: default:
{ {
Debug("Unhandled type class '%s'\n", Type->getTypeClassName()); Debug("Unhandled type class '%s'\n", Type->getTypeClassName());
@ -2919,9 +2925,9 @@ static const clang::CodeGen::CGFunctionInfo& GetCodeGenFunctionInfo(
{ {
using namespace clang; using namespace clang;
if (auto CD = dyn_cast<clang::CXXConstructorDecl>(FD)) { if (auto CD = dyn_cast<clang::CXXConstructorDecl>(FD)) {
return CodeGenTypes->arrangeCXXStructorDeclaration(CD, clang::CodeGen::StructorType::Base); return CodeGenTypes->arrangeCXXStructorDeclaration(CD);
} else if (auto DD = dyn_cast<clang::CXXDestructorDecl>(FD)) { } else if (auto DD = dyn_cast<clang::CXXDestructorDecl>(FD)) {
return CodeGenTypes->arrangeCXXStructorDeclaration(DD, clang::CodeGen::StructorType::Base); return CodeGenTypes->arrangeCXXStructorDeclaration(DD);
} }
return CodeGenTypes->arrangeFunctionDeclaration(FD); return CodeGenTypes->arrangeFunctionDeclaration(FD);
@ -4163,7 +4169,7 @@ bool Parser::SetupSourceFiles(const std::vector<std::string>& SourceFiles,
{ {
auto FileEntry = c->getPreprocessor().getHeaderSearchInfo().LookupFile(SourceFile, auto FileEntry = c->getPreprocessor().getHeaderSearchInfo().LookupFile(SourceFile,
clang::SourceLocation(), /*isAngled*/true, clang::SourceLocation(), /*isAngled*/true,
nullptr, Dir, Includers, nullptr, nullptr, nullptr, nullptr, nullptr); nullptr, Dir, Includers, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
if (!FileEntry) if (!FileEntry)
return false; return false;

213
src/Generator.Tests/ReadNativeSymbolsTest.cs

@ -100,108 +100,117 @@ namespace CppSharp.Generator.Tests
public void TestReadSymbolsLinux() public void TestReadSymbolsLinux()
{ {
var symbols = GetSymbols("libexpat-linux"); var symbols = GetSymbols("libexpat-linux");
Assert.AreEqual("free", symbols[0]); var expectedSymbols = new []
Assert.AreEqual("_ITM_deregisterTMCloneTable", symbols[1]); {
Assert.AreEqual("getpid", symbols[2]); ".init",
Assert.AreEqual("__stack_chk_fail", symbols[3]); "free",
Assert.AreEqual("gettimeofday", symbols[4]); "_ITM_deregisterTMCloneTable",
Assert.AreEqual("__assert_fail", symbols[5]); "getpid",
Assert.AreEqual("memset", symbols[6]); "__stack_chk_fail",
Assert.AreEqual("memcmp", symbols[7]); "gettimeofday",
Assert.AreEqual("__gmon_start__", symbols[8]); "__assert_fail",
Assert.AreEqual("memcpy", symbols[9]); "memset",
Assert.AreEqual("malloc", symbols[10]); "memcmp",
Assert.AreEqual("realloc", symbols[11]); "__gmon_start__",
Assert.AreEqual("memmove", symbols[12]); "memcpy",
Assert.AreEqual("_Jv_RegisterClasses", symbols[13]); "malloc",
Assert.AreEqual("_ITM_registerTMCloneTable", symbols[14]); "realloc",
Assert.AreEqual("__cxa_finalize", symbols[15]); "memmove",
Assert.AreEqual("XmlInitUnknownEncoding", symbols[16]); "_Jv_RegisterClasses",
Assert.AreEqual("XML_FreeContentModel", symbols[17]); "_ITM_registerTMCloneTable",
Assert.AreEqual("XML_SetEndDoctypeDeclHandler", symbols[18]); "__cxa_finalize",
Assert.AreEqual("XML_GetParsingStatus", symbols[19]); "XmlInitUnknownEncoding",
Assert.AreEqual("XmlGetUtf16InternalEncoding", symbols[20]); "XML_FreeContentModel",
Assert.AreEqual("XML_MemRealloc", symbols[21]); "XML_SetEndDoctypeDeclHandler",
Assert.AreEqual("XmlInitEncoding", symbols[22]); "XML_GetParsingStatus",
Assert.AreEqual("XML_ExpatVersion", symbols[23]); "XmlGetUtf16InternalEncoding",
Assert.AreEqual("XML_SetHashSalt", symbols[24]); "XML_MemRealloc",
Assert.AreEqual("XML_SetStartDoctypeDeclHandler", symbols[25]); "XmlInitEncoding",
Assert.AreEqual("XML_ExternalEntityParserCreate", symbols[26]); "XML_ExpatVersion",
Assert.AreEqual("XML_GetBuffer", symbols[27]); "XML_SetHashSalt",
Assert.AreEqual("XML_GetCurrentColumnNumber", symbols[28]); "XML_SetStartDoctypeDeclHandler",
Assert.AreEqual("XML_SetEndCdataSectionHandler", symbols[29]); "XML_ExternalEntityParserCreate",
Assert.AreEqual("XML_SetStartCdataSectionHandler", symbols[30]); "XML_GetBuffer",
Assert.AreEqual("XML_GetCurrentByteCount", symbols[31]); "XML_GetCurrentColumnNumber",
Assert.AreEqual("XML_DefaultCurrent", symbols[32]); "XML_SetEndCdataSectionHandler",
Assert.AreEqual("XmlInitUnknownEncodingNS", symbols[33]); "XML_SetStartCdataSectionHandler",
Assert.AreEqual("XML_ExpatVersionInfo", symbols[34]); "XML_GetCurrentByteCount",
Assert.AreEqual("XmlUtf16Encode", symbols[35]); "XML_DefaultCurrent",
Assert.AreEqual("XML_GetInputContext", symbols[36]); "XmlInitUnknownEncodingNS",
Assert.AreEqual("XML_SetExternalEntityRefHandler", symbols[37]); "XML_ExpatVersionInfo",
Assert.AreEqual("XML_GetSpecifiedAttributeCount", symbols[38]); "XmlUtf16Encode",
Assert.AreEqual("XML_SetUserData", symbols[39]); "XML_GetInputContext",
Assert.AreEqual("XML_ErrorString", symbols[40]); "XML_SetExternalEntityRefHandler",
Assert.AreEqual("XML_SetElementHandler", symbols[41]); "XML_GetSpecifiedAttributeCount",
Assert.AreEqual("XML_SetNamespaceDeclHandler", symbols[42]); "XML_SetUserData",
Assert.AreEqual("_fini", symbols[43]); "XML_ErrorString",
Assert.AreEqual("XmlSizeOfUnknownEncoding", symbols[44]); "XML_SetElementHandler",
Assert.AreEqual("XML_GetIdAttributeIndex", symbols[45]); "XML_SetNamespaceDeclHandler",
Assert.AreEqual("XML_SetAttlistDeclHandler", symbols[46]); "_fini",
Assert.AreEqual("XML_SetReturnNSTriplet", symbols[47]); "XmlSizeOfUnknownEncoding",
Assert.AreEqual("XML_SetUnknownEncodingHandler", symbols[48]); "XML_GetIdAttributeIndex",
Assert.AreEqual("XML_SetCdataSectionHandler", symbols[49]); "XML_SetAttlistDeclHandler",
Assert.AreEqual("XmlParseXmlDeclNS", symbols[50]); "XML_SetReturnNSTriplet",
Assert.AreEqual("XML_SetDoctypeDeclHandler", symbols[51]); "XML_SetUnknownEncodingHandler",
Assert.AreEqual("XML_SetDefaultHandler", symbols[52]); "XML_SetCdataSectionHandler",
Assert.AreEqual("_init", symbols[53]); "XmlParseXmlDeclNS",
Assert.AreEqual("XmlPrologStateInitExternalEntity", symbols[54]); "XML_SetDoctypeDeclHandler",
Assert.AreEqual("XML_SetCharacterDataHandler", symbols[55]); "XML_SetDefaultHandler",
Assert.AreEqual("XML_ParserCreate", symbols[56]); "_init",
Assert.AreEqual("XmlGetUtf8InternalEncodingNS", symbols[57]); "XmlPrologStateInitExternalEntity",
Assert.AreEqual("XML_SetParamEntityParsing", symbols[58]); "XML_SetCharacterDataHandler",
Assert.AreEqual("XML_MemFree", symbols[59]); "XML_ParserCreate",
Assert.AreEqual("XML_SetElementDeclHandler", symbols[60]); "XmlGetUtf8InternalEncodingNS",
Assert.AreEqual("XML_MemMalloc", symbols[61]); "XML_SetParamEntityParsing",
Assert.AreEqual("XML_SetStartNamespaceDeclHandler", symbols[62]); "XML_MemFree",
Assert.AreEqual("XmlGetUtf16InternalEncodingNS", symbols[63]); "XML_SetElementDeclHandler",
Assert.AreEqual("XML_ParseBuffer", symbols[64]); "XML_MemMalloc",
Assert.AreEqual("XML_UseForeignDTD", symbols[65]); "XML_SetStartNamespaceDeclHandler",
Assert.AreEqual("XML_SetEncoding", symbols[66]); "XmlGetUtf16InternalEncodingNS",
Assert.AreEqual("XML_UseParserAsHandlerArg", symbols[67]); "XML_ParseBuffer",
Assert.AreEqual("XML_SetEndNamespaceDeclHandler", symbols[68]); "XML_UseForeignDTD",
Assert.AreEqual("XML_SetEndElementHandler", symbols[69]); "XML_SetEncoding",
Assert.AreEqual("XML_GetCurrentLineNumber", symbols[70]); "XML_UseParserAsHandlerArg",
Assert.AreEqual("XML_SetXmlDeclHandler", symbols[71]); "XML_SetEndNamespaceDeclHandler",
Assert.AreEqual("XML_SetProcessingInstructionHandler", symbols[72]); "XML_SetEndElementHandler",
Assert.AreEqual("XmlUtf8Encode", symbols[73]); "XML_GetCurrentLineNumber",
Assert.AreEqual("XML_SetStartElementHandler", symbols[74]); "XML_SetXmlDeclHandler",
Assert.AreEqual("XML_SetSkippedEntityHandler", symbols[75]); "XML_SetProcessingInstructionHandler",
Assert.AreEqual("XML_ResumeParser", symbols[76]); "XmlUtf8Encode",
Assert.AreEqual("XML_SetEntityDeclHandler", symbols[77]); "XML_SetStartElementHandler",
Assert.AreEqual("XML_ParserFree", symbols[78]); "XML_SetSkippedEntityHandler",
Assert.AreEqual("XML_SetNotStandaloneHandler", symbols[79]); "XML_ResumeParser",
Assert.AreEqual("XML_ParserCreate_MM", symbols[80]); "XML_SetEntityDeclHandler",
Assert.AreEqual("XML_ParserCreateNS", symbols[81]); "XML_ParserFree",
Assert.AreEqual("_edata", symbols[82]); "XML_SetNotStandaloneHandler",
Assert.AreEqual("XML_SetUnparsedEntityDeclHandler", symbols[83]); "XML_ParserCreate_MM",
Assert.AreEqual("XML_SetBase", symbols[84]); "XML_ParserCreateNS",
Assert.AreEqual("XML_GetBase", symbols[85]); "_edata",
Assert.AreEqual("XmlGetUtf8InternalEncoding", symbols[86]); "XML_SetUnparsedEntityDeclHandler",
Assert.AreEqual("XML_SetExternalEntityRefHandlerArg", symbols[87]); "XML_SetBase",
Assert.AreEqual("XmlPrologStateInit", symbols[88]); "XML_GetBase",
Assert.AreEqual("_end", symbols[89]); "XmlGetUtf8InternalEncoding",
Assert.AreEqual("XML_SetCommentHandler", symbols[90]); "XML_SetExternalEntityRefHandlerArg",
Assert.AreEqual("XmlParseXmlDecl", symbols[91]); "XmlPrologStateInit",
Assert.AreEqual("XML_StopParser", symbols[92]); "_end",
Assert.AreEqual("XML_GetErrorCode", symbols[93]); "XML_SetCommentHandler",
Assert.AreEqual("XML_GetFeatureList", symbols[94]); "XmlParseXmlDecl",
Assert.AreEqual("XML_SetDefaultHandlerExpand", symbols[95]); "XML_StopParser",
Assert.AreEqual("XML_Parse", symbols[96]); "XML_GetErrorCode",
Assert.AreEqual("XmlInitEncodingNS", symbols[97]); "XML_GetFeatureList",
Assert.AreEqual("XML_ParserReset", symbols[98]); "XML_SetDefaultHandlerExpand",
Assert.AreEqual("XML_SetNotationDeclHandler", symbols[99]); "XML_Parse",
Assert.AreEqual("__bss_start", symbols[100]); "XmlInitEncodingNS",
Assert.AreEqual("XML_GetCurrentByteIndex", symbols[101]); "XML_ParserReset",
"XML_SetNotationDeclHandler",
"__bss_start",
"XML_GetCurrentByteIndex"
};
for (int i = 0; i < symbols.Count; i++)
{
Assert.That(symbols[i], Is.EqualTo(expectedSymbols[i]));
}
} }
[Test] [Test]

Loading…
Cancel
Save