Diff Detail
Event Timeline
CMakeLists.txt | ||
---|---|---|
293–296 ↗ | (On Diff #16223) | I don't think we should be hardcoding support here in the llvm_config call. I'm also not sure why this is needed on lldb executables. Is there an exe which is directly using LLVMSupport? I thought we only used it from lldb libraries, which are then linked into the executables, and the libraries already correctly depend on LLVMSupport. |
Hi Zachary,
Yeah, hardcoding support library here is sort of bad style here.
These three lines you mentioned previously are used to fix build issue with lldb-platform which should be linked with LLVMSupport because llvm::Triple::getOSName() is needed there. I think it was the problem from tools/lldb-platform.
Cheers,
Chilledheart
[1/3] cd /Users/chilledheart/llvm-trunk/build-lldb/tools/lldb/scripts && echo -n -n [2/3] : && /usr/bin/clang++ -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -fno-omit-frame-pointer -g -O0 -std=c++11 -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -std=c++11 -fcolor-diagnostics -Wno-deprecated-declarations -Wno-unknown-pragmas -Wno-deprecated-register -fno-exceptions -fno-rtti -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -stdlib=libc++ -Wl,-dead_strip tools/lldb/tools/lldb-platform/CMakeFiles/lldb-platform.dir/lldb-platform.cpp.o -o bin/lldb-platform-3.6.0 lib/liblldb.3.6.0.dylib lib/liblldbBreakpoint.a lib/liblldbCommands.a lib/liblldbDataFormatters.a lib/liblldbHost.a lib/liblldbCore.a lib/liblldbExpression.a lib/liblldbInterpreter.a lib/liblldbSymbol.a lib/liblldbTarget.a lib/liblldbUtility.a lib/liblldbPluginDisassemblerLLVM.a lib/liblldbPluginSymbolFileDWARF.a lib/liblldbPluginSymbolFileSymtab.a lib/liblldbPluginDynamicLoaderStatic.a lib/liblldbPluginDynamicLoaderPosixDYLD.a lib/liblldbPluginDynamicLoaderHexagonDYLD.a lib/liblldbPluginObjectFileMachO.a lib/liblldbPluginObjectFileELF.a lib/liblldbPluginObjectFileJIT.a lib/liblldbPluginSymbolVendorELF.a lib/liblldbPluginObjectContainerBSDArchive.a lib/liblldbPluginObjectContainerMachOArchive.a lib/liblldbPluginProcessGDBRemote.a lib/liblldbPluginProcessMachCore.a lib/liblldbPluginProcessUtility.a lib/liblldbPluginPlatformGDB.a lib/liblldbPluginPlatformFreeBSD.a lib/liblldbPluginPlatformKalimba.a lib/liblldbPluginPlatformLinux.a lib/liblldbPluginPlatformPOSIX.a lib/liblldbPluginPlatformWindows.a lib/liblldbPluginPlatformMacOSX.a lib/liblldbPluginDynamicLoaderMacOSXDYLD.a lib/liblldbPluginUnwindAssemblyInstEmulation.a lib/liblldbPluginUnwindAssemblyX86.a lib/liblldbPluginAppleObjCRuntime.a lib/liblldbPluginCXXItaniumABI.a lib/liblldbPluginABIMacOSX_arm.a lib/liblldbPluginABIMacOSX_arm64.a lib/liblldbPluginABIMacOSX_i386.a lib/liblldbPluginABISysV_x86_64.a lib/liblldbPluginABISysV_hexagon.a lib/liblldbPluginABISysV_ppc.a lib/liblldbPluginABISysV_ppc64.a lib/liblldbPluginInstructionARM.a lib/liblldbPluginInstructionARM64.a lib/liblldbPluginObjectFilePECOFF.a lib/liblldbPluginOSPython.a lib/liblldbPluginMemoryHistoryASan.a lib/liblldbPluginInstrumentationRuntimeAddressSanitizer.a lib/liblldbAPI.a lib/liblldbPluginDynamicLoaderDarwinKernel.a lib/liblldbPluginProcessMacOSXKernel.a lib/liblldbPluginSymbolVendorMacOSX.a lib/liblldbPluginSystemRuntimeMacOSX.a lib/liblldbPluginProcessElfCore.a lib/liblldbPluginJITLoaderGDB.a lib/libclangAnalysis.dylib lib/libclangAST.dylib lib/libclangBasic.dylib lib/libclangCodeGen.dylib lib/libclangDriver.dylib lib/libclangEdit.dylib lib/libclangFrontend.dylib lib/libclangLex.dylib lib/libclangParse.dylib lib/libclangRewrite.dylib lib/libclangRewriteFrontend.dylib lib/libclangSema.dylib lib/libclangSerialization.dylib -Wl,-rpath,@executable_path/../lib && : FAILED: : && /usr/bin/clang++ -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -fno-omit-frame-pointer -g -O0 -std=c++11 -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -std=c++11 -fcolor-diagnostics -Wno-deprecated-declarations -Wno-unknown-pragmas -Wno-deprecated-register -fno-exceptions -fno-rtti -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -stdlib=libc++ -Wl,-dead_strip tools/lldb/tools/lldb-platform/CMakeFiles/lldb-platform.dir/lldb-platform.cpp.o -o bin/lldb-platform-3.6.0 lib/liblldb.3.6.0.dylib lib/liblldbBreakpoint.a lib/liblldbCommands.a lib/liblldbDataFormatters.a lib/liblldbHost.a lib/liblldbCore.a lib/liblldbExpression.a lib/liblldbInterpreter.a lib/liblldbSymbol.a lib/liblldbTarget.a lib/liblldbUtility.a lib/liblldbPluginDisassemblerLLVM.a lib/liblldbPluginSymbolFileDWARF.a lib/liblldbPluginSymbolFileSymtab.a lib/liblldbPluginDynamicLoaderStatic.a lib/liblldbPluginDynamicLoaderPosixDYLD.a lib/liblldbPluginDynamicLoaderHexagonDYLD.a lib/liblldbPluginObjectFileMachO.a lib/liblldbPluginObjectFileELF.a lib/liblldbPluginObjectFileJIT.a lib/liblldbPluginSymbolVendorELF.a lib/liblldbPluginObjectContainerBSDArchive.a lib/liblldbPluginObjectContainerMachOArchive.a lib/liblldbPluginProcessGDBRemote.a lib/liblldbPluginProcessMachCore.a lib/liblldbPluginProcessUtility.a lib/liblldbPluginPlatformGDB.a lib/liblldbPluginPlatformFreeBSD.a lib/liblldbPluginPlatformKalimba.a lib/liblldbPluginPlatformLinux.a lib/liblldbPluginPlatformPOSIX.a lib/liblldbPluginPlatformWindows.a lib/liblldbPluginPlatformMacOSX.a lib/liblldbPluginDynamicLoaderMacOSXDYLD.a lib/liblldbPluginUnwindAssemblyInstEmulation.a lib/liblldbPluginUnwindAssemblyX86.a lib/liblldbPluginAppleObjCRuntime.a lib/liblldbPluginCXXItaniumABI.a lib/liblldbPluginABIMacOSX_arm.a lib/liblldbPluginABIMacOSX_arm64.a lib/liblldbPluginABIMacOSX_i386.a lib/liblldbPluginABISysV_x86_64.a lib/liblldbPluginABISysV_hexagon.a lib/liblldbPluginABISysV_ppc.a lib/liblldbPluginABISysV_ppc64.a lib/liblldbPluginInstructionARM.a lib/liblldbPluginInstructionARM64.a lib/liblldbPluginObjectFilePECOFF.a lib/liblldbPluginOSPython.a lib/liblldbPluginMemoryHistoryASan.a lib/liblldbPluginInstrumentationRuntimeAddressSanitizer.a lib/liblldbAPI.a lib/liblldbPluginDynamicLoaderDarwinKernel.a lib/liblldbPluginProcessMacOSXKernel.a lib/liblldbPluginSymbolVendorMacOSX.a lib/liblldbPluginSystemRuntimeMacOSX.a lib/liblldbPluginProcessElfCore.a lib/liblldbPluginJITLoaderGDB.a lib/libclangAnalysis.dylib lib/libclangAST.dylib lib/libclangBasic.dylib lib/libclangCodeGen.dylib lib/libclangDriver.dylib lib/libclangEdit.dylib lib/libclangFrontend.dylib lib/libclangLex.dylib lib/libclangParse.dylib lib/libclangRewrite.dylib lib/libclangRewriteFrontend.dylib lib/libclangSema.dylib lib/libclangSerialization.dylib -Wl,-rpath,@executable_path/../lib && : Undefined symbols for architecture x86_64: "llvm::Triple::getOSName() const", referenced from: CreateProcessInfoResponse_DebugServerStyle(lldb_private::ProcessInstanceInfo const&, lldb_private::StreamString&) in liblldbPluginProcessGDBRemote.a(GDBRemoteCommunicationServer.cpp.o) "llvm::Triple::getVendorName() const", referenced from: CreateProcessInfoResponse_DebugServerStyle(lldb_private::ProcessInstanceInfo const&, lldb_private::StreamString&) in liblldbPluginProcessGDBRemote.a(GDBRemoteCommunicationServer.cpp.o) "llvm::Triple::isArch64Bit() const", referenced from: CreateProcessInfoResponse_DebugServerStyle(lldb_private::ProcessInstanceInfo const&, lldb_private::StreamString&) in liblldbPluginProcessGDBRemote.a(GDBRemoteCommunicationServer.cpp.o) "llvm::Triple::isArch32Bit() const", referenced from: CreateProcessInfoResponse_DebugServerStyle(lldb_private::ProcessInstanceInfo const&, lldb_private::StreamString&) in liblldbPluginProcessGDBRemote.a(GDBRemoteCommunicationServer.cpp.o) "llvm::Triple::isArch16Bit() const", referenced from: CreateProcessInfoResponse_DebugServerStyle(lldb_private::ProcessInstanceInfo const&, lldb_private::StreamString&) in liblldbPluginProcessGDBRemote.a(GDBRemoteCommunicationServer.cpp.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.
tools/lldb-platform/CMakeLists.txt | ||
---|---|---|
9–14 | This looks better. Should liblldb also be a dependency instead of just a link library? In other words, I wonder if all this could be merged into the following: add_dependencies(lldb-platform liblldb ${LLVM_COMMON_DEPENDS}) Otherwise it looks like no dependency is created between lldb-platform and liblldb. |
I think commit 226039 has fix this compilation error when BUILD_SHARED_LIBS=on.
We can close it now.
Edited:
I meant we can abandon it now.
tools/lldb-platform/CMakeLists.txt | ||
---|---|---|
9–14 | target_link_libraries is sufficient to declare a dependency of liblldb (in a implicit way). I failed when replacing if (LLVM_COMMON_DEPENDS) add_dependencies(lldb-platform ${LLVM_COMMON_DEPENDS}) endif() target_link_libraries(lldb-platform liblldb) with the line add_dependencies(lldb-platform liblldb ${LLVM_COMMON_DEPENDS}) errors are post below: [1/1] Re-running CMake... -- Target triple: x86_64-apple-darwin13.4.0 -- Native target architecture is X86 -- Threads enabled. -- Doxygen disabled. -- Sphinx enabled. -- Go bindings enabled. -- Building with -fPIC -- Constructing LLVMBuild project information -- Targeting AArch64 -- Targeting ARM -- Targeting CppBackend -- Targeting Hexagon -- Targeting Mips -- Targeting MSP430 -- Targeting NVPTX -- Targeting PowerPC -- Targeting R600 -- Targeting Sparc -- Targeting SystemZ -- Targeting X86 -- Targeting XCore -- Clang version: 3.6.0 -- LLDB version: 3.6.0 -- Configuring done -- Generating done -- Build files have been written to: /Users/chilledheart/llvm-trunk/build-lldb [1/3] cd /Users/chilledheart/llvm-trunk/build-lldb/tools/lldb/scripts && echo -n -n [2/3] Linking CXX executable bin/lldb-platform-3.6.0 FAILED: : && /usr/bin/clang++ -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -stdlib=libc++ -march=native -fdiagnostics-format=vi -fdiagnostics-show-category=name -fcolor-diagnostics -pedantic -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual -fno-omit-frame-pointer -g -O0 -std=c++11 -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -std=c++11 -fcolor-diagnostics -Wno-deprecated-declarations -Wno-unknown-pragmas -Wno-deprecated-register -fno-exceptions -fno-rtti -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -stdlib=libc++ -Wl,-dead_strip tools/lldb/tools/lldb-platform/CMakeFiles/lldb-platform.dir/lldb-platform.cpp.o -o bin/lldb-platform-3.6.0 lib/libLLVMSupport.dylib -Wl,-rpath,@executable_path/../lib && : Undefined symbols for architecture x86_64: "lldb_private::Mutex::Locker::Locker(lldb_private::Mutex&)", referenced from: lldb_private::StreamTee::GetStreamAtIndex(unsigned int) in lldb-platform.cpp.o "lldb_private::Error::Error()", referenced from: _main in lldb-platform.cpp.o "lldb_private::Debugger::Initialize(llvm::sys::DynamicLibrary (*)(std::__1::shared_ptr<lldb_private::Debugger> const&, lldb_private::FileSpec const&, lldb_private::Error&))", referenced from: _main in lldb-platform.cpp.o "lldb_private::Debugger::SetOutputFileHandle(__sFILE*, bool)", referenced from: _main in lldb-platform.cpp.o "lldb_private::Debugger::CreateInstance(void (*)(char const*, void*), void*)", referenced from: _main in lldb-platform.cpp.o "lldb_private::Debugger::SetInputFileHandle(__sFILE*, bool)", referenced from: _main in lldb-platform.cpp.o "lldb_private::CommandReturnObject::CommandReturnObject()", referenced from: _main in lldb-platform.cpp.o "lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&, lldb_private::ExecutionContext*, bool, bool)", referenced from: _main in lldb-platform.cpp.o "lldb_private::OptionParser::GetShortOptionString(option*)", referenced from: _main in lldb-platform.cpp.o "GDBRemoteCommunicationServer::GDBRemoteCommunicationServer(bool)", referenced from: _main in lldb-platform.cpp.o "lldb_private::ConnectionFileDescriptor::ConnectionFileDescriptor()", referenced from: _main in lldb-platform.cpp.o "lldb_private::Communication::SetConnection(lldb_private::Connection*)", referenced from: _main in lldb-platform.cpp.o "GDBRemoteCommunicationServer::HandshakeWithClient(lldb_private::Error*)", referenced from: _main in lldb-platform.cpp.o "lldb_private::Error::~Error()", referenced from: _main in lldb-platform.cpp.o "lldb_private::Communication::IsConnected() const", referenced from: _main in lldb-platform.cpp.o "GDBRemoteCommunicationServer::GetPacketAndSendResponse(unsigned int, lldb_private::Error&, bool&, bool&)", referenced from: _main in lldb-platform.cpp.o "GDBRemoteCommunicationServer::~GDBRemoteCommunicationServer()", referenced from: _main in lldb-platform.cpp.o "lldb_private::Debugger::SetErrorFileHandle(__sFILE*, bool)", referenced from: _main in lldb-platform.cpp.o "lldb_private::CommandReturnObject::~CommandReturnObject()", referenced from: _main in lldb-platform.cpp.o "lldb_private::Host::SystemLog(lldb_private::Host::SystemLogType, char const*, ...)", referenced from: signal_handler(int) in lldb-platform.cpp.o "lldb_private::Error::AsCString(char const*) const", referenced from: _main in lldb-platform.cpp.o "lldb_private::Error::Fail() const", referenced from: _main in lldb-platform.cpp.o "lldb_private::Mutex::Locker::~Locker()", referenced from: lldb_private::StreamTee::GetStreamAtIndex(unsigned int) in lldb-platform.cpp.o "lldb_private::StreamString::GetData() const", referenced from: lldb_private::CommandReturnObject::GetOutputData() in lldb-platform.cpp.o "lldb_private::Debugger::Terminate()", referenced from: _main in lldb-platform.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. | |
9–14 | ping? |
This looks better. Should liblldb also be a dependency instead of just a link library? In other words, I wonder if all this could be merged into the following:
add_dependencies(lldb-platform liblldb ${LLVM_COMMON_DEPENDS})
Otherwise it looks like no dependency is created between lldb-platform and liblldb.