jankratochvil created this revision.
jankratochvil added reviewers: labath, xiaobai.
jankratochvil added a project: LLDB.
Herald added subscribers: usaxena95, dmgreen, jfb, kadircet, dexonsmith, 
modocache, ilya-biryukov, aprantl, mehdi_amini, mgorny.
Herald added a reviewer: jdoerfert.
jankratochvil added a comment.
Functions are defined in: `./lib/liblldbTarget.a` = 
`lldb/source/Target/CMakeLists.txt`
Functions are needed in: `./lib/liblldbExpression.a` = 
`lldb/source/Expression/CMakeLists.txt`


On Fedora 30 x86_64 with

  time cmake ../llvm-monorepo/llvm/ -DCMAKE_BUILD_TYPE=Debug  
-DLLVM_USE_LINKER=gold -DLLVM_ENABLE_PROJECTS="lldb;clang;lld"  
-DLLVM_USE_SPLIT_DWARF=ON -DCMAKE_C_COMPILER=clang  
-DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_ASSERTIONS=ON

getting:

  lldb/source/Expression/IRInterpreter.cpp:1471: error: undefined reference to 
'lldb_private::ThreadPlanCallFunctionUsingABI::ThreadPlanCallFunctionUsingABI(lldb_private::Thread&,
 lldb_private::Address const&, llvm::Type&, llvm::Type&, 
llvm::ArrayRef<lldb_private::ABI::CallArgument>, 
lldb_private::EvaluateExpressionOptions const&)'
  lldb/source/Expression/LLVMUserExpression.cpp:148: error: undefined reference 
to 
'lldb_private::ThreadPlanCallUserExpression::ThreadPlanCallUserExpression(lldb_private::Thread&,
 lldb_private::Address&, llvm::ArrayRef<unsigned long>, 
lldb_private::EvaluateExpressionOptions const&, 
std::shared_ptr<lldb_private::UserExpression>&)'
  clang-8: error: linker command failed with exit code 1 (use -v to see 
invocation)

When I do a `Release` build I do not get this error. This linking commands 
fails:

  (cd 
/home/jkratoch/redhat/llvm-monorepo-clangassertdebug/tools/lldb/unittests/DataFormatter;/usr/lib64/ccache/clang++
   -fPIC -fvisibility-inlines-hidden -Werror=date-time 
-Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter 
-Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic 
-Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default 
-Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor 
-Wstring-conversion -Wno-deprecated-declarations -Wno-unknown-pragmas 
-Wno-strict-aliasing -Wno-deprecated-register -Wno-vla-extension -g   
-fuse-ld=gold -Wl,-allow-shlib-undefined 
CMakeFiles/LLDBFormatterTests.dir/FormatManagerTests.cpp.o  -o 
LLDBFormatterTests ../../../../lib/libLLVMSupport.a 
../../../../lib/libLLVMSupport.a -lpthread ../../../../lib/libgtest_main.a 
../../../../lib/libgtest.a -lpthread ../../../../lib/liblldbCore.a 
../../../../lib/liblldbInterpreter.a ../../../../lib/liblldbSymbol.a 
../../../../lib/liblldbTarget.a ../../../../lib/liblldbUtility.a -lpthread 
../../../../lib/liblldbBreakpoint.a ../../../../lib/liblldbDataFormatters.a 
../../../../lib/liblldbExpression.a 
../../../../lib/liblldbPluginCPlusPlusLanguage.a 
../../../../lib/liblldbPluginObjCLanguage.a ../../../../lib/liblldbCommands.a 
../../../../lib/liblldbPluginExpressionParserClang.a 
../../../../lib/liblldbPluginProcessUtility.a 
../../../../lib/liblldbPluginObjectFileJIT.a 
../../../../lib/liblldbPluginClangCommon.a 
../../../../lib/liblldbPluginCPPRuntime.a 
../../../../lib/liblldbPluginTypeSystemClang.a 
../../../../lib/liblldbPluginAppleObjCRuntime.a 
../../../../lib/liblldbPluginObjCRuntime.a 
../../../../lib/liblldbPluginRenderScriptRuntime.a 
../../../../lib/liblldbPluginSymbolFileDWARF.a 
../../../../lib/liblldbPluginSymbolFilePDB.a 
../../../../lib/liblldbPluginSymbolFileNativePDB.a 
../../../../lib/liblldbCore.a ../../../../lib/liblldbInterpreter.a 
../../../../lib/liblldbSymbol.a ../../../../lib/liblldbTarget.a 
../../../../lib/liblldbBreakpoint.a ../../../../lib/liblldbDataFormatters.a 
../../../../lib/liblldbExpression.a 
../../../../lib/liblldbPluginCPlusPlusLanguage.a 
../../../../lib/liblldbPluginObjCLanguage.a ../../../../lib/liblldbCommands.a 
../../../../lib/liblldbPluginExpressionParserClang.a 
../../../../lib/liblldbPluginProcessUtility.a 
../../../../lib/liblldbPluginObjectFileJIT.a 
../../../../lib/liblldbPluginClangCommon.a 
../../../../lib/liblldbPluginCPPRuntime.a 
../../../../lib/liblldbPluginTypeSystemClang.a 
../../../../lib/liblldbPluginAppleObjCRuntime.a 
../../../../lib/liblldbPluginObjCRuntime.a 
../../../../lib/liblldbPluginRenderScriptRuntime.a 
../../../../lib/liblldbPluginSymbolFileDWARF.a 
../../../../lib/liblldbPluginSymbolFilePDB.a 
../../../../lib/liblldbPluginSymbolFileNativePDB.a 
../../../../lib/liblldbCore.a ../../../../lib/liblldbInterpreter.a 
../../../../lib/liblldbSymbol.a ../../../../lib/liblldbTarget.a 
../../../../lib/liblldbBreakpoint.a ../../../../lib/liblldbDataFormatters.a 
../../../../lib/liblldbExpression.a 
../../../../lib/liblldbPluginCPlusPlusLanguage.a 
../../../../lib/liblldbPluginObjCLanguage.a ../../../../lib/liblldbCommands.a 
../../../../lib/liblldbPluginExpressionParserClang.a 
../../../../lib/liblldbPluginProcessUtility.a 
../../../../lib/liblldbPluginObjectFileJIT.a 
../../../../lib/liblldbPluginClangCommon.a 
../../../../lib/liblldbPluginCPPRuntime.a 
../../../../lib/liblldbPluginTypeSystemClang.a 
../../../../lib/liblldbPluginAppleObjCRuntime.a 
../../../../lib/liblldbPluginObjCRuntime.a 
../../../../lib/liblldbPluginRenderScriptRuntime.a 
../../../../lib/liblldbPluginSymbolFileDWARF.a 
../../../../lib/liblldbPluginSymbolFilePDB.a 
../../../../lib/liblldbPluginSymbolFileNativePDB.a 
../../../../lib/liblldbCore.a ../../../../lib/liblldbInterpreter.a 
../../../../lib/liblldbSymbol.a ../../../../lib/liblldbTarget.a 
../../../../lib/liblldbBreakpoint.a ../../../../lib/liblldbDataFormatters.a 
../../../../lib/liblldbExpression.a 
../../../../lib/liblldbPluginCPlusPlusLanguage.a 
../../../../lib/liblldbPluginObjCLanguage.a ../../../../lib/liblldbCommands.a 
../../../../lib/liblldbPluginExpressionParserClang.a 
../../../../lib/liblldbPluginProcessUtility.a 
../../../../lib/liblldbPluginObjectFileJIT.a 
../../../../lib/liblldbPluginClangCommon.a 
../../../../lib/liblldbPluginCPPRuntime.a 
../../../../lib/liblldbPluginTypeSystemClang.a 
../../../../lib/liblldbPluginAppleObjCRuntime.a 
../../../../lib/liblldbPluginObjCRuntime.a 
../../../../lib/liblldbPluginRenderScriptRuntime.a 
../../../../lib/liblldbPluginSymbolFileDWARF.a 
../../../../lib/liblldbPluginSymbolFilePDB.a 
../../../../lib/liblldbPluginSymbolFileNativePDB.a -lcurses 
/usr/lib64/libform.so /usr/lib64/libpanel.so ../../../../lib/liblldbBase.a 
../../../../lib/libLLVMMCJIT.a ../../../../lib/libLLVMExecutionEngine.a 
../../../../lib/libLLVMRuntimeDyld.a ../../../../lib/libclangCodeGen.a 
../../../../lib/libLLVMCoroutines.a ../../../../lib/libLLVMCoverage.a 
../../../../lib/libLLVMLTO.a ../../../../lib/libLLVMObjCARCOpts.a 
../../../../lib/libLLVMPasses.a ../../../../lib/libLLVMipo.a 
../../../../lib/libLLVMLinker.a ../../../../lib/libLLVMInstrumentation.a 
../../../../lib/libLLVMVectorize.a ../../../../lib/libLLVMCodeGen.a 
../../../../lib/libLLVMBitWriter.a ../../../../lib/libLLVMScalarOpts.a 
../../../../lib/libLLVMAggressiveInstCombine.a 
../../../../lib/libLLVMInstCombine.a ../../../../lib/libclangRewriteFrontend.a 
../../../../lib/libclangRewrite.a ../../../../lib/libclangFrontend.a 
../../../../lib/libclangDriver.a ../../../../lib/libLLVMOption.a 
../../../../lib/libclangParse.a ../../../../lib/libclangSerialization.a 
../../../../lib/libclangSema.a ../../../../lib/libclangEdit.a 
../../../../lib/libclangAnalysis.a ../../../../lib/libclangASTMatchers.a 
../../../../lib/libLLVMTarget.a ../../../../lib/libLLVMIRReader.a 
../../../../lib/libLLVMAsmParser.a ../../../../lib/liblldbHost.a 
/usr/lib64/libedit.so /usr/lib64/liblzma.so /usr/lib64/libedit.so 
/usr/lib64/liblzma.so ../../../../lib/libLLVMDebugInfoDWARF.a 
../../../../lib/liblldbUtility.a /usr/lib64/libxml2.so 
../../../../lib/libclangAST.a ../../../../lib/libLLVMFrontendOpenMP.a 
../../../../lib/libLLVMTransformUtils.a ../../../../lib/libLLVMAnalysis.a 
../../../../lib/libLLVMProfileData.a ../../../../lib/libclangLex.a 
../../../../lib/libclangBasic.a ../../../../lib/libLLVMDebugInfoPDB.a 
../../../../lib/libLLVMObject.a ../../../../lib/libLLVMBitReader.a 
../../../../lib/libLLVMCore.a ../../../../lib/libLLVMRemarks.a 
../../../../lib/libLLVMBitstreamReader.a ../../../../lib/libLLVMMCParser.a 
../../../../lib/libLLVMMC.a ../../../../lib/libLLVMTextAPI.a 
../../../../lib/libLLVMBinaryFormat.a 
../../../../lib/libLLVMDebugInfoCodeView.a 
../../../../lib/libLLVMDebugInfoMSF.a ../../../../lib/libLLVMSupport.a 
/usr/lib64/libz.so -lrt -lpthread -ldl -ltinfo -lm /usr/lib64/libz3.so 
../../../../lib/libLLVMDemangle.a )

One can workaround it by appending to the end:

  ../../../../lib/liblldbTarget.a

Or by wrapping the libs into:

  -Wl,--start-group ... --Wl,--end-group

It is a recent regression although I am not sure when it happened. `git bisect` 
says D73517 <https://reviews.llvm.org/D73517> but it has bad reproducibility. I 
understand it may be affected by optimizations/inlining etc.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D73847

Files:
  lldb/unittests/DataFormatter/CMakeLists.txt


Index: lldb/unittests/DataFormatter/CMakeLists.txt
===================================================================
--- lldb/unittests/DataFormatter/CMakeLists.txt
+++ lldb/unittests/DataFormatter/CMakeLists.txt
@@ -5,6 +5,7 @@
     lldbCore
     lldbInterpreter
     lldbSymbol
+    lldbExpression
     lldbTarget
     lldbUtility
 


Index: lldb/unittests/DataFormatter/CMakeLists.txt
===================================================================
--- lldb/unittests/DataFormatter/CMakeLists.txt
+++ lldb/unittests/DataFormatter/CMakeLists.txt
@@ -5,6 +5,7 @@
     lldbCore
     lldbInterpreter
     lldbSymbol
+    lldbExpression
     lldbTarget
     lldbUtility
 
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to