Skip to content

clang_delta fails to link against shared LLVM-6.0.1 #165

@mgorny

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions