diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -37,6 +37,7 @@ "CLANG_BINARY_DIR" "CLANG_SOURCE_DIR" "CLANG_TOOLS_DIR" + "CMAKE_LIBRARY_OUTPUT_DIRECTORY" ) configure_lit_site_cfg( diff --git a/clang/test/LibClang/lit.local.cfg b/clang/test/LibClang/lit.local.cfg new file mode 100644 --- /dev/null +++ b/clang/test/LibClang/lit.local.cfg @@ -0,0 +1,3 @@ + +config.substitutions.append(('%libclang', os.path.join(config.clang_lib_dir, 'libclang.so'))) +config.pipefail = False diff --git a/clang/test/LibClang/symbols.test b/clang/test/LibClang/symbols.test new file mode 100644 --- /dev/null +++ b/clang/test/LibClang/symbols.test @@ -0,0 +1,2 @@ +# Check that there are no unversioned clang symbols in libclang.so +RUN: llvm-nm -Dj --defined-only %libclang | grep -v -e '@@LLVM_[0-9]\+$' | not grep '^clang' diff --git a/clang/test/lit.site.cfg.py.in b/clang/test/lit.site.cfg.py.in --- a/clang/test/lit.site.cfg.py.in +++ b/clang/test/lit.site.cfg.py.in @@ -14,6 +14,7 @@ config.clang_obj_root = path(r"@CLANG_BINARY_DIR@") config.clang_src_dir = path(r"@CLANG_SOURCE_DIR@") config.clang_tools_dir = path(r"@CLANG_TOOLS_DIR@") +config.clang_lib_dir = path(r"@CMAKE_LIBRARY_OUTPUT_DIRECTORY@") config.host_triple = "@LLVM_HOST_TRIPLE@" config.target_triple = "@TARGET_TRIPLE@" config.host_cc = "@CMAKE_C_COMPILER@" diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -65,6 +65,7 @@ "Build libclang as a static library (in addition to a shared one)" OFF) set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports) +set(LIBCLANG_VERSION_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.map) if(MSVC) # Avoid LNK4197 by not specifying libclang.exports here. @@ -73,6 +74,20 @@ set(LLVM_EXPORTED_SYMBOL_FILE) endif() +if (UNIX AND NOT APPLE) + set(LLVM_EXPORTED_SYMBOL_FILE) + set(USE_VERSION_SCRIPT TRUE) +endif() + +if (LLVM_EXPORTED_SYMBOL_FILE) + add_custom_command(OUTPUT ${LLVM_EXPORTED_SYMBOL_FILE} + COMMAND "${Python3_EXECUTABLE}" + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/linker-script-to-export-list.py + ${LIBCLANG_VERSION_SCRIPT_FILE} + ${LLVM_EXPORTED_SYMBOL_FILE} + DEPENDS ${LIBCLANG_VERSION_SCRIPT_FILE}) +endif() + if(LLVM_ENABLE_PIC OR (WIN32 AND NOT LIBCLANG_BUILD_STATIC)) set(ENABLE_SHARED SHARED) endif() @@ -145,6 +160,19 @@ ) endif() endif() + if (USE_VERSION_SCRIPT) + target_link_options(libclang PRIVATE "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libclang.map") + # Ensure that libclang.so gets rebuilt when the linker script changes. + set_property(SOURCE ARCMigrate.cpp APPEND PROPERTY + OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libclang.map) + + # The SOVERSION should be updated only if a change is made to the libclang + # ABI, and when it is updated, it should be updated to the current + # LLVM_VERSION_MAJOR. + set_target_properties(libclang PROPERTIES + VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX} + SOVERSION 13) + endif() endif() if(INTERNAL_INSTALL_PREFIX) diff --git a/clang/tools/libclang/CXString.cpp b/clang/tools/libclang/CXString.cpp --- a/clang/tools/libclang/CXString.cpp +++ b/clang/tools/libclang/CXString.cpp @@ -188,4 +188,3 @@ delete[] set->Strings; delete set; } - diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports deleted file mode 100644 --- a/clang/tools/libclang/libclang.exports +++ /dev/null @@ -1,394 +0,0 @@ -clang_CXCursorSet_contains -clang_CXCursorSet_insert -clang_CXIndex_getGlobalOptions -clang_CXIndex_setGlobalOptions -clang_CXIndex_setInvocationEmissionPathOption -clang_CXXConstructor_isConvertingConstructor -clang_CXXConstructor_isCopyConstructor -clang_CXXConstructor_isDefaultConstructor -clang_CXXConstructor_isMoveConstructor -clang_CXXField_isMutable -clang_CXXMethod_isDefaulted -clang_CXXMethod_isConst -clang_CXXMethod_isPureVirtual -clang_CXXMethod_isStatic -clang_CXXMethod_isVirtual -clang_CXXRecord_isAbstract -clang_EnumDecl_isScoped -clang_Cursor_getArgument -clang_Cursor_getNumTemplateArguments -clang_Cursor_getTemplateArgumentKind -clang_Cursor_getTemplateArgumentType -clang_Cursor_getTemplateArgumentValue -clang_Cursor_getTemplateArgumentUnsignedValue -clang_Cursor_getBriefCommentText -clang_Cursor_getCommentRange -clang_Cursor_getCXXManglings -clang_Cursor_getMangling -clang_Cursor_getObjCManglings -clang_Cursor_getParsedComment -clang_Cursor_getRawCommentText -clang_Cursor_getNumArguments -clang_Cursor_getObjCDeclQualifiers -clang_Cursor_getObjCPropertyAttributes -clang_Cursor_getObjCPropertyGetterName -clang_Cursor_getObjCPropertySetterName -clang_Cursor_getObjCSelectorIndex -clang_Cursor_getOffsetOfField -clang_Cursor_getSpellingNameRange -clang_Cursor_getTranslationUnit -clang_Cursor_getReceiverType -clang_Cursor_isAnonymous -clang_Cursor_isAnonymousRecordDecl -clang_Cursor_isBitField -clang_Cursor_isDynamicCall -clang_Cursor_isExternalSymbol -clang_Cursor_isInlineNamespace -clang_Cursor_isNull -clang_Cursor_isObjCOptional -clang_Cursor_isVariadic -clang_Cursor_getModule -clang_Cursor_getStorageClass -clang_File_isEqual -clang_File_tryGetRealPathName -clang_Module_getASTFile -clang_Module_getParent -clang_Module_getName -clang_Module_getFullName -clang_Module_getNumTopLevelHeaders -clang_Module_getTopLevelHeader -clang_Module_isSystem -clang_IndexAction_create -clang_IndexAction_dispose -clang_Range_isNull -clang_Comment_getKind -clang_Comment_getNumChildren -clang_Comment_getChild -clang_Comment_isWhitespace -clang_InlineContentComment_hasTrailingNewline -clang_TextComment_getText -clang_InlineCommandComment_getCommandName -clang_InlineCommandComment_getRenderKind -clang_InlineCommandComment_getNumArgs -clang_InlineCommandComment_getArgText -clang_HTMLTagComment_getTagName -clang_HTMLStartTagComment_isSelfClosing -clang_HTMLStartTag_getNumAttrs -clang_HTMLStartTag_getAttrName -clang_HTMLStartTag_getAttrValue -clang_BlockCommandComment_getCommandName -clang_BlockCommandComment_getNumArgs -clang_BlockCommandComment_getArgText -clang_BlockCommandComment_getParagraph -clang_ParamCommandComment_getParamName -clang_ParamCommandComment_isParamIndexValid -clang_ParamCommandComment_getParamIndex -clang_ParamCommandComment_isDirectionExplicit -clang_ParamCommandComment_getDirection -clang_TParamCommandComment_getParamName -clang_TParamCommandComment_isParamPositionValid -clang_TParamCommandComment_getDepth -clang_TParamCommandComment_getIndex -clang_TargetInfo_dispose -clang_TargetInfo_getPointerWidth -clang_TargetInfo_getTriple -clang_Type_getAlignOf -clang_Type_getClassType -clang_Type_getSizeOf -clang_Type_getOffsetOf -clang_Type_getNumTemplateArguments -clang_Type_getTemplateArgumentAsType -clang_Type_getCXXRefQualifier -clang_Type_visitFields -clang_Type_getNamedType -clang_Type_isTransparentTagTypedef -clang_Type_getObjCObjectBaseType -clang_Type_getNumObjCProtocolRefs -clang_Type_getObjCProtocolDecl -clang_Type_getNumObjCTypeArgs -clang_Type_getObjCTypeArg -clang_Type_getModifiedType -clang_Type_getNullability -clang_Type_getValueType -clang_VerbatimBlockLineComment_getText -clang_VerbatimLineComment_getText -clang_HTMLTagComment_getAsString -clang_FullComment_getAsHTML -clang_FullComment_getAsXML -clang_annotateTokens -clang_codeCompleteAt -clang_codeCompleteGetContainerKind -clang_codeCompleteGetContainerUSR -clang_codeCompleteGetContexts -clang_codeCompleteGetDiagnostic -clang_codeCompleteGetNumDiagnostics -clang_codeCompleteGetObjCSelector -clang_constructUSR_ObjCCategory -clang_constructUSR_ObjCClass -clang_constructUSR_ObjCIvar -clang_constructUSR_ObjCMethod -clang_constructUSR_ObjCProperty -clang_constructUSR_ObjCProtocol -clang_createCXCursorSet -clang_createIndex -clang_createTranslationUnit -clang_createTranslationUnit2 -clang_createTranslationUnitFromSourceFile -clang_defaultCodeCompleteOptions -clang_defaultDiagnosticDisplayOptions -clang_defaultEditingTranslationUnitOptions -clang_defaultReparseOptions -clang_defaultSaveOptions -clang_disposeCXCursorSet -clang_disposeCXTUResourceUsage -clang_disposeCodeCompleteResults -clang_disposeDiagnostic -clang_disposeDiagnosticSet -clang_disposeIndex -clang_disposeOverriddenCursors -clang_disposeCXPlatformAvailability -clang_disposeSourceRangeList -clang_disposeString -clang_disposeStringSet -clang_disposeTokens -clang_disposeTranslationUnit -clang_enableStackTraces -clang_equalCursors -clang_equalLocations -clang_equalRanges -clang_equalTypes -clang_executeOnThread -clang_findIncludesInFile -clang_findIncludesInFileWithBlock -clang_findReferencesInFile -clang_findReferencesInFileWithBlock -clang_formatDiagnostic -clang_free -clang_getAddressSpace -clang_getAllSkippedRanges -clang_getArgType -clang_getArrayElementType -clang_getArraySize -clang_getBuildSessionTimestamp -clang_getCString -clang_getCXTUResourceUsage -clang_getCXXAccessSpecifier -clang_getCanonicalCursor -clang_getCanonicalType -clang_getChildDiagnostics -clang_getClangVersion -clang_getCompletionAnnotation -clang_getCompletionAvailability -clang_getCompletionBriefComment -clang_getCompletionChunkCompletionString -clang_getCompletionChunkKind -clang_getCompletionChunkText -clang_getCompletionNumFixIts -clang_getCompletionFixIt -clang_getCompletionNumAnnotations -clang_getCompletionParent -clang_getCompletionPriority -clang_getCursor -clang_getCursorAvailability -clang_getCursorCompletionString -clang_getCursorDefinition -clang_getCursorDisplayName -clang_getCursorPrintingPolicy -clang_getCursorPrettyPrinted -clang_getCursorExtent -clang_getCursorExceptionSpecificationType -clang_getCursorKind -clang_getCursorKindSpelling -clang_getCursorLanguage -clang_getCursorLexicalParent -clang_getCursorLinkage -clang_getCursorLocation -clang_getCursorPlatformAvailability -clang_getCursorReferenceNameRange -clang_getCursorReferenced -clang_getCursorResultType -clang_getCursorSemanticParent -clang_getCursorSpelling -clang_getCursorTLSKind -clang_getCursorType -clang_getCursorUSR -clang_getCursorVisibility -clang_getDeclObjCTypeEncoding -clang_getDefinitionSpellingAndExtent -clang_getDiagnostic -clang_getDiagnosticCategory -clang_getDiagnosticCategoryName -clang_getDiagnosticCategoryText -clang_getDiagnosticFixIt -clang_getDiagnosticInSet -clang_getDiagnosticLocation -clang_getDiagnosticNumFixIts -clang_getDiagnosticNumRanges -clang_getDiagnosticOption -clang_getDiagnosticRange -clang_getDiagnosticSetFromTU -clang_getDiagnosticSeverity -clang_getDiagnosticSpelling -clang_getElementType -clang_getEnumConstantDeclUnsignedValue -clang_getEnumConstantDeclValue -clang_getEnumDeclIntegerType -clang_getExceptionSpecificationType -clang_getFieldDeclBitWidth -clang_getExpansionLocation -clang_getFile -clang_getFileContents -clang_getFileLocation -clang_getFileName -clang_getFileTime -clang_getFileUniqueID -clang_getFunctionTypeCallingConv -clang_getIBOutletCollectionType -clang_getIncludedFile -clang_getInclusions -clang_getInstantiationLocation -clang_getLocation -clang_getLocationForOffset -clang_getModuleForFile -clang_getNullCursor -clang_getNullLocation -clang_getNullRange -clang_getNumArgTypes -clang_getNumCompletionChunks -clang_getNumDiagnostics -clang_getNumDiagnosticsInSet -clang_getNumElements -clang_getNumOverloadedDecls -clang_getOverloadedDecl -clang_getOverriddenCursors -clang_getPointeeType -clang_getPresumedLocation -clang_getRange -clang_getRangeEnd -clang_getRangeStart -clang_getRemappings -clang_getRemappingsFromFileList -clang_getResultType -clang_getSkippedRanges -clang_getSpecializedCursorTemplate -clang_getSpellingLocation -clang_getTUResourceUsageName -clang_getTemplateCursorKind -clang_getToken -clang_getTokenExtent -clang_getTokenKind -clang_getTokenLocation -clang_getTokenSpelling -clang_getTranslationUnitCursor -clang_getTranslationUnitSpelling -clang_getTranslationUnitTargetInfo -clang_getTypeDeclaration -clang_getTypeKindSpelling -clang_getTypeSpelling -clang_getTypedefDeclUnderlyingType -clang_getTypedefName -clang_hashCursor -clang_indexLoc_getCXSourceLocation -clang_indexLoc_getFileLocation -clang_indexSourceFile -clang_indexSourceFileFullArgv -clang_indexTranslationUnit -clang_index_getCXXClassDeclInfo -clang_index_getClientContainer -clang_index_getClientEntity -clang_index_getIBOutletCollectionAttrInfo -clang_index_getObjCCategoryDeclInfo -clang_index_getObjCContainerDeclInfo -clang_index_getObjCInterfaceDeclInfo -clang_index_getObjCPropertyDeclInfo -clang_index_getObjCProtocolRefListInfo -clang_index_isEntityObjCContainerKind -clang_index_setClientContainer -clang_index_setClientEntity -clang_isAttribute -clang_isConstQualifiedType -clang_isCursorDefinition -clang_isDeclaration -clang_isInvalidDeclaration -clang_isExpression -clang_isFileMultipleIncludeGuarded -clang_isFunctionTypeVariadic -clang_isInvalid -clang_isPODType -clang_isPreprocessing -clang_isReference -clang_isRestrictQualifiedType -clang_isStatement -clang_isTranslationUnit -clang_isUnexposed -clang_isVirtualBase -clang_isVolatileQualifiedType -clang_loadDiagnostics -clang_Location_isInSystemHeader -clang_Location_isFromMainFile -clang_parseTranslationUnit -clang_parseTranslationUnit2 -clang_parseTranslationUnit2FullArgv -clang_remap_dispose -clang_remap_getFilenames -clang_remap_getNumFiles -clang_reparseTranslationUnit -clang_saveTranslationUnit -clang_suspendTranslationUnit -clang_sortCodeCompletionResults -clang_toggleCrashRecovery -clang_tokenize -clang_CompilationDatabase_fromDirectory -clang_CompilationDatabase_dispose -clang_CompilationDatabase_getCompileCommands -clang_CompilationDatabase_getAllCompileCommands -clang_CompileCommands_dispose -clang_CompileCommands_getSize -clang_CompileCommands_getCommand -clang_CompileCommand_getDirectory -clang_CompileCommand_getFilename -clang_CompileCommand_getMappedSourceContent -clang_CompileCommand_getMappedSourcePath -clang_CompileCommand_getNumArgs -clang_CompileCommand_getArg -clang_visitChildren -clang_visitChildrenWithBlock -clang_ModuleMapDescriptor_create -clang_ModuleMapDescriptor_dispose -clang_ModuleMapDescriptor_setFrameworkModuleName -clang_ModuleMapDescriptor_setUmbrellaHeader -clang_ModuleMapDescriptor_writeToBuffer -clang_VirtualFileOverlay_addFileMapping -clang_VirtualFileOverlay_create -clang_VirtualFileOverlay_dispose -clang_VirtualFileOverlay_setCaseSensitivity -clang_VirtualFileOverlay_writeToBuffer -clang_Type_getObjCEncoding -clang_Cursor_isMacroFunctionLike -clang_Cursor_isMacroBuiltin -clang_Cursor_isFunctionInlined -clang_Cursor_hasAttrs -clang_Cursor_Evaluate -clang_EvalResult_getKind -clang_EvalResult_getAsInt -clang_EvalResult_getAsLongLong -clang_EvalResult_getAsUnsigned -clang_EvalResult_isUnsignedInt -clang_EvalResult_getAsDouble -clang_EvalResult_getAsStr -clang_EvalResult_dispose -clang_PrintingPolicy_getProperty -clang_PrintingPolicy_setProperty -clang_PrintingPolicy_dispose -clang_install_aborting_llvm_fatal_error_handler -clang_uninstall_llvm_fatal_error_handler -clang_Cursor_getVarDeclInitializer -clang_Cursor_hasVarDeclGlobalStorage -clang_Cursor_hasVarDeclExternalStorage -clang_CXRewriter_create -clang_CXRewriter_insertTextBefore -clang_CXRewriter_replaceText -clang_CXRewriter_removeText -clang_CXRewriter_overwriteChangedFiles -clang_CXRewriter_writeMainFileToStdOut -clang_CXRewriter_dispose diff --git a/clang/tools/libclang/libclang.map b/clang/tools/libclang/libclang.map new file mode 100644 --- /dev/null +++ b/clang/tools/libclang/libclang.map @@ -0,0 +1,414 @@ +/* If you add a symbol to this file, make sure to add it with the correct + * version. For example, if the LLVM main branch is LLVM 14.0.0, add new + * symbols with the version LLVM_14. + * On platforms where versions scripts are not used, this file will be used to + * generate a list of exports for libclang.so + */ + + +LLVM_13 { + global: + clang_BlockCommandComment_getArgText; + clang_BlockCommandComment_getCommandName; + clang_BlockCommandComment_getNumArgs; + clang_BlockCommandComment_getParagraph; + clang_CXCursorSet_contains; + clang_CXCursorSet_insert; + clang_CXIndex_getGlobalOptions; + clang_CXIndex_setGlobalOptions; + clang_CXIndex_setInvocationEmissionPathOption; + clang_CXRewriter_create; + clang_CXRewriter_dispose; + clang_CXRewriter_insertTextBefore; + clang_CXRewriter_overwriteChangedFiles; + clang_CXRewriter_removeText; + clang_CXRewriter_replaceText; + clang_CXRewriter_writeMainFileToStdOut; + clang_CXXConstructor_isConvertingConstructor; + clang_CXXConstructor_isCopyConstructor; + clang_CXXConstructor_isDefaultConstructor; + clang_CXXConstructor_isMoveConstructor; + clang_CXXField_isMutable; + clang_CXXMethod_isConst; + clang_CXXMethod_isDefaulted; + clang_CXXMethod_isPureVirtual; + clang_CXXMethod_isStatic; + clang_CXXMethod_isVirtual; + clang_CXXRecord_isAbstract; + clang_Comment_getChild; + clang_Comment_getKind; + clang_Comment_getNumChildren; + clang_Comment_isWhitespace; + clang_CompilationDatabase_dispose; + clang_CompilationDatabase_fromDirectory; + clang_CompilationDatabase_getAllCompileCommands; + clang_CompilationDatabase_getCompileCommands; + clang_CompileCommand_getArg; + clang_CompileCommand_getDirectory; + clang_CompileCommand_getFilename; + clang_CompileCommand_getMappedSourceContent; + clang_CompileCommand_getMappedSourcePath; + clang_CompileCommand_getNumArgs; + clang_CompileCommands_dispose; + clang_CompileCommands_getCommand; + clang_CompileCommands_getSize; + clang_Cursor_Evaluate; + clang_Cursor_getArgument; + clang_Cursor_getBriefCommentText; + clang_Cursor_getCXXManglings; + clang_Cursor_getCommentRange; + clang_Cursor_getMangling; + clang_Cursor_getModule; + clang_Cursor_getNumArguments; + clang_Cursor_getNumTemplateArguments; + clang_Cursor_getObjCDeclQualifiers; + clang_Cursor_getObjCManglings; + clang_Cursor_getObjCPropertyAttributes; + clang_Cursor_getObjCPropertyGetterName; + clang_Cursor_getObjCPropertySetterName; + clang_Cursor_getObjCSelectorIndex; + clang_Cursor_getOffsetOfField; + clang_Cursor_getParsedComment; + clang_Cursor_getRawCommentText; + clang_Cursor_getReceiverType; + clang_Cursor_getSpellingNameRange; + clang_Cursor_getStorageClass; + clang_Cursor_getTemplateArgumentKind; + clang_Cursor_getTemplateArgumentType; + clang_Cursor_getTemplateArgumentUnsignedValue; + clang_Cursor_getTemplateArgumentValue; + clang_Cursor_getTranslationUnit; + clang_Cursor_getVarDeclInitializer; + clang_Cursor_hasAttrs; + clang_Cursor_hasVarDeclExternalStorage; + clang_Cursor_hasVarDeclGlobalStorage; + clang_Cursor_isAnonymous; + clang_Cursor_isAnonymousRecordDecl; + clang_Cursor_isBitField; + clang_Cursor_isDynamicCall; + clang_Cursor_isExternalSymbol; + clang_Cursor_isFunctionInlined; + clang_Cursor_isInlineNamespace; + clang_Cursor_isMacroBuiltin; + clang_Cursor_isMacroFunctionLike; + clang_Cursor_isNull; + clang_Cursor_isObjCOptional; + clang_Cursor_isVariadic; + clang_EnumDecl_isScoped; + clang_EvalResult_dispose; + clang_EvalResult_getAsDouble; + clang_EvalResult_getAsInt; + clang_EvalResult_getAsLongLong; + clang_EvalResult_getAsStr; + clang_EvalResult_getAsUnsigned; + clang_EvalResult_getKind; + clang_EvalResult_isUnsignedInt; + clang_File_isEqual; + clang_File_tryGetRealPathName; + clang_FullComment_getAsHTML; + clang_FullComment_getAsXML; + clang_HTMLStartTagComment_isSelfClosing; + clang_HTMLStartTag_getAttrName; + clang_HTMLStartTag_getAttrValue; + clang_HTMLStartTag_getNumAttrs; + clang_HTMLTagComment_getAsString; + clang_HTMLTagComment_getTagName; + clang_IndexAction_create; + clang_IndexAction_dispose; + clang_InlineCommandComment_getArgText; + clang_InlineCommandComment_getCommandName; + clang_InlineCommandComment_getNumArgs; + clang_InlineCommandComment_getRenderKind; + clang_InlineContentComment_hasTrailingNewline; + clang_Location_isFromMainFile; + clang_Location_isInSystemHeader; + clang_ModuleMapDescriptor_create; + clang_ModuleMapDescriptor_dispose; + clang_ModuleMapDescriptor_setFrameworkModuleName; + clang_ModuleMapDescriptor_setUmbrellaHeader; + clang_ModuleMapDescriptor_writeToBuffer; + clang_Module_getASTFile; + clang_Module_getFullName; + clang_Module_getName; + clang_Module_getNumTopLevelHeaders; + clang_Module_getParent; + clang_Module_getTopLevelHeader; + clang_Module_isSystem; + clang_ParamCommandComment_getDirection; + clang_ParamCommandComment_getParamIndex; + clang_ParamCommandComment_getParamName; + clang_ParamCommandComment_isDirectionExplicit; + clang_ParamCommandComment_isParamIndexValid; + clang_PrintingPolicy_dispose; + clang_PrintingPolicy_getProperty; + clang_PrintingPolicy_setProperty; + clang_Range_isNull; + clang_TParamCommandComment_getDepth; + clang_TParamCommandComment_getIndex; + clang_TParamCommandComment_getParamName; + clang_TParamCommandComment_isParamPositionValid; + clang_TargetInfo_dispose; + clang_TargetInfo_getPointerWidth; + clang_TargetInfo_getTriple; + clang_TextComment_getText; + clang_Type_getAlignOf; + clang_Type_getCXXRefQualifier; + clang_Type_getClassType; + clang_Type_getModifiedType; + clang_Type_getNamedType; + clang_Type_getNullability; + clang_Type_getNumObjCProtocolRefs; + clang_Type_getNumObjCTypeArgs; + clang_Type_getNumTemplateArguments; + clang_Type_getObjCEncoding; + clang_Type_getObjCObjectBaseType; + clang_Type_getObjCProtocolDecl; + clang_Type_getObjCTypeArg; + clang_Type_getOffsetOf; + clang_Type_getSizeOf; + clang_Type_getTemplateArgumentAsType; + clang_Type_getValueType; + clang_Type_isTransparentTagTypedef; + clang_Type_visitFields; + clang_VerbatimBlockLineComment_getText; + clang_VerbatimLineComment_getText; + clang_VirtualFileOverlay_addFileMapping; + clang_VirtualFileOverlay_create; + clang_VirtualFileOverlay_dispose; + clang_VirtualFileOverlay_setCaseSensitivity; + clang_VirtualFileOverlay_writeToBuffer; + clang_annotateTokens; + clang_codeCompleteAt; + clang_codeCompleteGetContainerKind; + clang_codeCompleteGetContainerUSR; + clang_codeCompleteGetContexts; + clang_codeCompleteGetDiagnostic; + clang_codeCompleteGetNumDiagnostics; + clang_codeCompleteGetObjCSelector; + clang_constructUSR_ObjCCategory; + clang_constructUSR_ObjCClass; + clang_constructUSR_ObjCIvar; + clang_constructUSR_ObjCMethod; + clang_constructUSR_ObjCProperty; + clang_constructUSR_ObjCProtocol; + clang_createCXCursorSet; + clang_createIndex; + clang_createTranslationUnit; + clang_createTranslationUnit2; + clang_createTranslationUnitFromSourceFile; + clang_defaultCodeCompleteOptions; + clang_defaultDiagnosticDisplayOptions; + clang_defaultEditingTranslationUnitOptions; + clang_defaultReparseOptions; + clang_defaultSaveOptions; + clang_disposeCXCursorSet; + clang_disposeCXPlatformAvailability; + clang_disposeCXTUResourceUsage; + clang_disposeCodeCompleteResults; + clang_disposeDiagnostic; + clang_disposeDiagnosticSet; + clang_disposeIndex; + clang_disposeOverriddenCursors; + clang_disposeSourceRangeList; + clang_disposeString; + clang_disposeStringSet; + clang_disposeTokens; + clang_disposeTranslationUnit; + clang_enableStackTraces; + clang_equalCursors; + clang_equalLocations; + clang_equalRanges; + clang_equalTypes; + clang_executeOnThread; + clang_findIncludesInFile; + clang_findIncludesInFileWithBlock; + clang_findReferencesInFile; + clang_findReferencesInFileWithBlock; + clang_formatDiagnostic; + clang_free; + clang_getAddressSpace; + clang_getAllSkippedRanges; + clang_getArgType; + clang_getArrayElementType; + clang_getArraySize; + clang_getBuildSessionTimestamp; + clang_getCString; + clang_getCXTUResourceUsage; + clang_getCXXAccessSpecifier; + clang_getCanonicalCursor; + clang_getCanonicalType; + clang_getChildDiagnostics; + clang_getClangVersion; + clang_getCompletionAnnotation; + clang_getCompletionAvailability; + clang_getCompletionBriefComment; + clang_getCompletionChunkCompletionString; + clang_getCompletionChunkKind; + clang_getCompletionChunkText; + clang_getCompletionFixIt; + clang_getCompletionNumAnnotations; + clang_getCompletionNumFixIts; + clang_getCompletionParent; + clang_getCompletionPriority; + clang_getCursor; + clang_getCursorAvailability; + clang_getCursorCompletionString; + clang_getCursorDefinition; + clang_getCursorDisplayName; + clang_getCursorExceptionSpecificationType; + clang_getCursorExtent; + clang_getCursorKind; + clang_getCursorKindSpelling; + clang_getCursorLanguage; + clang_getCursorLexicalParent; + clang_getCursorLinkage; + clang_getCursorLocation; + clang_getCursorPlatformAvailability; + clang_getCursorPrettyPrinted; + clang_getCursorPrintingPolicy; + clang_getCursorReferenceNameRange; + clang_getCursorReferenced; + clang_getCursorResultType; + clang_getCursorSemanticParent; + clang_getCursorSpelling; + clang_getCursorTLSKind; + clang_getCursorType; + clang_getCursorUSR; + clang_getCursorVisibility; + clang_getDeclObjCTypeEncoding; + clang_getDefinitionSpellingAndExtent; + clang_getDiagnostic; + clang_getDiagnosticCategory; + clang_getDiagnosticCategoryName; + clang_getDiagnosticCategoryText; + clang_getDiagnosticFixIt; + clang_getDiagnosticInSet; + clang_getDiagnosticLocation; + clang_getDiagnosticNumFixIts; + clang_getDiagnosticNumRanges; + clang_getDiagnosticOption; + clang_getDiagnosticRange; + clang_getDiagnosticSetFromTU; + clang_getDiagnosticSeverity; + clang_getDiagnosticSpelling; + clang_getElementType; + clang_getEnumConstantDeclUnsignedValue; + clang_getEnumConstantDeclValue; + clang_getEnumDeclIntegerType; + clang_getExceptionSpecificationType; + clang_getExpansionLocation; + clang_getFieldDeclBitWidth; + clang_getFile; + clang_getFileContents; + clang_getFileLocation; + clang_getFileName; + clang_getFileTime; + clang_getFileUniqueID; + clang_getFunctionTypeCallingConv; + clang_getIBOutletCollectionType; + clang_getIncludedFile; + clang_getInclusions; + clang_getInstantiationLocation; + clang_getLocation; + clang_getLocationForOffset; + clang_getModuleForFile; + clang_getNullCursor; + clang_getNullLocation; + clang_getNullRange; + clang_getNumArgTypes; + clang_getNumCompletionChunks; + clang_getNumDiagnostics; + clang_getNumDiagnosticsInSet; + clang_getNumElements; + clang_getNumOverloadedDecls; + clang_getOverloadedDecl; + clang_getOverriddenCursors; + clang_getPointeeType; + clang_getPresumedLocation; + clang_getRange; + clang_getRangeEnd; + clang_getRangeStart; + clang_getRemappings; + clang_getRemappingsFromFileList; + clang_getResultType; + clang_getSkippedRanges; + clang_getSpecializedCursorTemplate; + clang_getSpellingLocation; + clang_getTUResourceUsageName; + clang_getTemplateCursorKind; + clang_getToken; + clang_getTokenExtent; + clang_getTokenKind; + clang_getTokenLocation; + clang_getTokenSpelling; + clang_getTranslationUnitCursor; + clang_getTranslationUnitSpelling; + clang_getTranslationUnitTargetInfo; + clang_getTypeDeclaration; + clang_getTypeKindSpelling; + clang_getTypeSpelling; + clang_getTypedefDeclUnderlyingType; + clang_getTypedefName; + clang_hashCursor; + clang_indexLoc_getCXSourceLocation; + clang_indexLoc_getFileLocation; + clang_indexSourceFile; + clang_indexSourceFileFullArgv; + clang_indexTranslationUnit; + clang_index_getCXXClassDeclInfo; + clang_index_getClientContainer; + clang_index_getClientEntity; + clang_index_getIBOutletCollectionAttrInfo; + clang_index_getObjCCategoryDeclInfo; + clang_index_getObjCContainerDeclInfo; + clang_index_getObjCInterfaceDeclInfo; + clang_index_getObjCPropertyDeclInfo; + clang_index_getObjCProtocolRefListInfo; + clang_index_isEntityObjCContainerKind; + clang_index_setClientContainer; + clang_index_setClientEntity; + clang_install_aborting_llvm_fatal_error_handler; + clang_isAttribute; + clang_isConstQualifiedType; + clang_isCursorDefinition; + clang_isDeclaration; + clang_isExpression; + clang_isFileMultipleIncludeGuarded; + clang_isFunctionTypeVariadic; + clang_isInvalid; + clang_isInvalidDeclaration; + clang_isPODType; + clang_isPreprocessing; + clang_isReference; + clang_isRestrictQualifiedType; + clang_isStatement; + clang_isTranslationUnit; + clang_isUnexposed; + clang_isVirtualBase; + clang_isVolatileQualifiedType; + clang_loadDiagnostics; + clang_parseTranslationUnit; + clang_parseTranslationUnit2; + clang_parseTranslationUnit2FullArgv; + clang_remap_dispose; + clang_remap_getFilenames; + clang_remap_getNumFiles; + clang_reparseTranslationUnit; + clang_saveTranslationUnit; + clang_sortCodeCompletionResults; + clang_suspendTranslationUnit; + clang_toggleCrashRecovery; + clang_tokenize; + clang_uninstall_llvm_fatal_error_handler; + clang_visitChildren; + clang_visitChildrenWithBlock; + local: *; +}; + +/* Example of how to add a new symbol version entry. If you do add a new symbol + * version, please update the example to depend on the version you added. + * LLVM_X { + * global: + * clang_newsymbol; + * }; + */ diff --git a/clang/tools/libclang/linker-script-to-export-list.py b/clang/tools/libclang/linker-script-to-export-list.py new file mode 100644 --- /dev/null +++ b/clang/tools/libclang/linker-script-to-export-list.py @@ -0,0 +1,10 @@ +import re +import os + +input_file = open(sys.argv[1]) +output_file = open(sys.argv[2]) + +for line in input_file: + m = re.search('clang_[^;]+', line) + if m: + output_file.write(m.group(0))