Skip to content

clang_delta fails to link against shared LLVM-6.0.1 #165

Description

@mgorny
FAILED: clang_delta/clang_delta 
: && /usr/lib/ccache/bin/x86_64-pc-linux-gnu-g++-7.3.0  -march=k8-sse3 -mcx16 -msahf --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 -O2 -pipe -frecord-gcc-switches -std=c++11 -fno-rtti -fno-strict-aliasing -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility-inlines-hidden  -Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu   -rdynamic clang_delta/CMakeFiles/clang_delta.dir/AggregateToScalar.cpp.o clang_delta/CMakeFiles/clang_delta.dir/BinOpSimplification.cpp.o clang_delta/CMakeFiles/clang_delta.dir/CallExprToValue.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ClangDelta.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ClassTemplateToClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/CombineGlobalVarDecl.cpp.o clang_delta/CMakeFiles/clang_delta.dir/CombineLocalVarDecl.cpp.o clang_delta/CMakeFiles/clang_delta.dir/CopyPropagation.cpp.o clang_delta/CMakeFiles/clang_delta.dir/EmptyStructToInt.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ExpressionDetector.cpp.o clang_delta/CMakeFiles/clang_delta.dir/InstantiateTemplateParam.cpp.o clang_delta/CMakeFiles/clang_delta.dir/InstantiateTemplateTypeParamToInt.cpp.o clang_delta/CMakeFiles/clang_delta.dir/LiftAssignmentExpr.cpp.o clang_delta/CMakeFiles/clang_delta.dir/LocalToGlobal.cpp.o clang_delta/CMakeFiles/clang_delta.dir/MoveFunctionBody.cpp.o clang_delta/CMakeFiles/clang_delta.dir/MoveGlobalVar.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ParamToGlobal.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ParamToLocal.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReduceArrayDim.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReduceArraySize.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReduceClassTemplateParameter.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReducePointerLevel.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReducePointerPairs.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveAddrTaken.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveArray.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveBaseClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveCtorInitializer.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveEnumMemberValue.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveNamespace.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveNestedFunction.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemovePointer.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveTrivialBaseTemplate.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnresolvedBase.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnusedEnumMember.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnusedFunction.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnusedOuterClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnusedStructField.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RemoveUnusedVar.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RenameCXXMethod.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RenameClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RenameFun.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RenameParam.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RenameVar.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceArrayAccessWithIndex.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceArrayIndexVar.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceCallExpr.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceClassWithBaseTemplateSpec.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceDependentName.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceDependentTypedef.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceDerivedClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceFunctionDefWithDecl.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceOneLevelTypedefType.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceSimpleTypedef.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReplaceUndefinedFunction.cpp.o clang_delta/CMakeFiles/clang_delta.dir/ReturnVoid.cpp.o clang_delta/CMakeFiles/clang_delta.dir/RewriteUtils.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimpleInliner.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyCallExpr.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyCommaExpr.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyDependentTypedef.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyIf.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyNestedClass.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyRecursiveTemplateInstantiation.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyStruct.cpp.o clang_delta/CMakeFiles/clang_delta.dir/SimplifyStructUnionDecl.cpp.o clang_delta/CMakeFiles/clang_delta.dir/TemplateArgToInt.cpp.o clang_delta/CMakeFiles/clang_delta.dir/TemplateNonTypeArgToInt.cpp.o clang_delta/CMakeFiles/clang_delta.dir/Transformation.cpp.o clang_delta/CMakeFiles/clang_delta.dir/TransformationManager.cpp.o clang_delta/CMakeFiles/clang_delta.dir/UnifyFunctionDecl.cpp.o clang_delta/CMakeFiles/clang_delta.dir/UnionToStruct.cpp.o clang_delta/CMakeFiles/clang_delta.dir/VectorToArray.cpp.o clang_delta/CMakeFiles/clang_delta.dir/git_version.cpp.o  -o clang_delta/clang_delta -L/usr/lib/llvm/6/lib64 -Wl,-rpath,/usr/lib/llvm/6/lib64: /usr/lib/llvm/6/lib64/libclangStaticAnalyzerFrontend.so.6.0.1 /usr/lib/llvm/6/lib64/libclangStaticAnalyzerCheckers.so.6.0.1 /usr/lib/llvm/6/lib64/libclangStaticAnalyzerCore.so.6.0.1 /usr/lib/llvm/6/lib64/libclangFrontendTool.so.6.0.1 /usr/lib/llvm/6/lib64/libclangFrontend.so.6.0.1 /usr/lib/llvm/6/lib64/libclangDriver.so.6.0.1 /usr/lib/llvm/6/lib64/libclangSerialization.so.6.0.1 /usr/lib/llvm/6/lib64/libclangCodeGen.so.6.0.1 /usr/lib/llvm/6/lib64/libclangParse.so.6.0.1 /usr/lib/llvm/6/lib64/libclangSema.so.6.0.1 /usr/lib/llvm/6/lib64/libclangAnalysis.so.6.0.1 /usr/lib/llvm/6/lib64/libclangRewriteFrontend.so.6.0.1 /usr/lib/llvm/6/lib64/libclangRewrite.so.6.0.1 /usr/lib/llvm/6/lib64/libclangAST.so.6.0.1 /usr/lib/llvm/6/lib64/libclangBasic.so.6.0.1 /usr/lib/llvm/6/lib64/libclangEdit.so.6.0.1 /usr/lib/llvm/6/lib64/libclangLex.so.6.0.1 /usr/lib/llvm/6/lib64/libclangARCMigrate.so.6.0.1 && :
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: clang_delta/CMakeFiles/clang_delta.dir/ExpressionDetector.cpp.o: undefined reference to symbol '_ZN4llvm5APInt12initSlowCaseEmb'
/usr/lib/llvm/6/lib64/libLLVMSupport.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

My first though was that linkage to LLVM libraries is missing. Apparently, it is by design:

# ENE, LLVM 6.0: LLVM_LIBS end up in the link command line anyway.  I'm not
# quite sure why!  But if you list LLVM_LIBS here, the `clang_delta' binary
# can end up with dynamic link errors when it runs (multiply defined symbols).
#
target_link_libraries(clang_delta ${CLANG_LIBS})

However, LLVM libraries don't get pulled implicitly for me, so it looks like the workaround for 'weird' systems is breaking normal systems.

Full log: dev-util:creduce-9999:20180716-080437.log

That's LLVM 6.0.1 on Gentoo. Let me know if you need extra data.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions