[lld] r226346 - Add LLVM_LINK_COMPONENTS for the shared object build

Greg Fitzgerald garious at gmail.com
Tue Jan 20 10:20:07 PST 2015


Good to know!  On OS X, that's what I see too.  A little googling
suggests that this is a known limitation of the stock linker on OS X.
Seems weird that CMake wouldn't pass in those deps in anyway and let
the linker throw an error.

Anyway, it's clear what needs to be done - gotta restructure LLD to
break those cycles.  I'll take a shot at it this week.

-Greg

On Tue, Jan 20, 2015 at 9:55 AM, Rafael Espíndola
<rafael.espindola at gmail.com> wrote:
> Ah, it is working on ELF, but failing on MachO:
>
> $ ninja lib/liblldCore.dylib
> [1/1] Linking CXX shared library lib/liblldCore.dylib
> FAILED: : && /Users/espindola/inst/ccache/bin/clang++
> -fcolor-diagnostics -fPIC -fvisibility-inlines-hidden -Wall -W
> -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wmissing-field-initializers -pedantic -Wno-long-long
> -Wcovered-switch-default -Wnon-virtual-dtor -std=c++11
> -fcolor-diagnostics  -dynamiclib -Wl,-headerpad_max_install_names  -o
> lib/liblldCore.dylib -install_name @rpath/liblldCore.dylib
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/DefinedAtom.cpp.o
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/Error.cpp.o
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/File.cpp.o
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/LinkingContext.cpp.o
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/Resolver.cpp.o
> tools/lld/lib/Core/CMakeFiles/lldCore.dir/SymbolTable.cpp.o
> lib/libLLVMSupport.dylib -Wl,-rpath, at executable_path/../lib && :
> Undefined symbols for architecture x86_64:
>   "lld::Registry::Registry()", referenced from:
>       lld::LinkingContext::LinkingContext() in LinkingContext.cpp.o
>
> On 20 January 2015 at 12:43, Rafael Espíndola
> <rafael.espindola at gmail.com> wrote:
>> Strange, it just worked for me with cmake 3.1.20150103.
>>
>> On 20 January 2015 at 12:37, Greg Fitzgerald <garious at gmail.com> wrote:
>>> It won't build yet.  This patch just takes care of the low-hanging
>>> fruit.  I hope to submit more patches soon to get the shared-libs
>>> build working.  Right now it's looking like I'll need to move a bunch
>>> of files around to break all the cyclic dependencies.  CMake docs
>>> suggests the existing code should work, but no luck for me.
>>>
>>> -Greg
>>>
>>>
>>> On Tue, Jan 20, 2015 at 8:33 AM, Rafael Espíndola
>>> <rafael.espindola at gmail.com> wrote:
>>>> Awesome!
>>>>
>>>> Takumi, you have a bot that uses -DBUILD_SHARED_LIBS=ON, right? Can
>>>> you add lld to it to make sure it keeps building?
>>>>
>>>> Thanks,
>>>> Rafael
>>>>
>>>>
>>>> On 16 January 2015 at 18:34, Greg Fitzgerald <garious at gmail.com> wrote:
>>>>> Author: garious
>>>>> Date: Fri Jan 16 17:34:41 2015
>>>>> New Revision: 226346
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=226346&view=rev
>>>>> Log:
>>>>> Add LLVM_LINK_COMPONENTS for the shared object build
>>>>>
>>>>> Differential Revision: http://reviews.llvm.org/D7023
>>>>>
>>>>> From: Greg Fitzgerald <garious at gmail.com>
>>>>>
>>>>> Modified:
>>>>>     lld/trunk/lib/Config/CMakeLists.txt
>>>>>     lld/trunk/lib/Driver/CMakeLists.txt
>>>>>     lld/trunk/lib/Passes/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/PPC/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/MachO/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/Native/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/PECOFF/CMakeLists.txt
>>>>>     lld/trunk/lib/ReaderWriter/YAML/CMakeLists.txt
>>>>>
>>>>> Modified: lld/trunk/lib/Config/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Config/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/Config/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/Config/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldConfig
>>>>>    Version.cpp
>>>>>    )
>>>>>
>>>>> Modified: lld/trunk/lib/Driver/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/Driver/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/Driver/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -10,6 +10,8 @@ set(LLVM_TARGET_DEFINITIONS WinLinkOptio
>>>>>  tablegen(LLVM WinLinkOptions.inc -gen-opt-parser-defs)
>>>>>  add_public_tablegen_target(DriverOptionsTableGen)
>>>>>
>>>>> +set(LLVM_LINK_COMPONENTS object option support)
>>>>> +
>>>>>  add_lld_library(lldDriver
>>>>>    CoreDriver.cpp
>>>>>    DarwinLdDriver.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/Passes/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Passes/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/Passes/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/Passes/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldPasses
>>>>>    LayoutPass.cpp
>>>>>    RoundTripNativePass.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -4,7 +4,7 @@ add_subdirectory(Native)
>>>>>  add_subdirectory(PECOFF)
>>>>>  add_subdirectory(YAML)
>>>>>
>>>>> -set(LLVM_LINK_COMPONENTS object)
>>>>> +set(LLVM_LINK_COMPONENTS object support)
>>>>>
>>>>>  add_lld_library(lldReaderWriter
>>>>>    CoreLinkingContext.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldAArch64ELFTarget
>>>>>    AArch64LinkingContext.cpp
>>>>>    AArch64TargetHandler.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldHexagonELFTarget
>>>>>    HexagonLinkingContext.cpp
>>>>>    HexagonRelocationHandler.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldMipsELFTarget
>>>>>    MipsCtorsOrderPass.cpp
>>>>>    MipsELFFlagsMerger.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/PPC/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/PPC/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldPPCELFTarget
>>>>>    PPCLinkingContext.cpp
>>>>>    PPCTargetHandler.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldX86ELFTarget
>>>>>    X86LinkingContext.cpp
>>>>>    X86TargetHandler.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldX86_64ELFTarget
>>>>>    X86_64LinkingContext.cpp
>>>>>    X86_64TargetHandler.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/MachO/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/MachO/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/MachO/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldMachO
>>>>>    ArchHandler.cpp
>>>>>    ArchHandler_arm.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/Native/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/Native/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/Native/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/Native/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldNative
>>>>>    ReaderNative.cpp
>>>>>    WriterNative.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/PECOFF/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/PECOFF/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/PECOFF/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS object support)
>>>>> +
>>>>>  add_lld_library(lldPECOFF
>>>>>    EdataPass.cpp
>>>>>    IdataPass.cpp
>>>>>
>>>>> Modified: lld/trunk/lib/ReaderWriter/YAML/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/CMakeLists.txt?rev=226346&r1=226345&r2=226346&view=diff
>>>>> ==============================================================================
>>>>> --- lld/trunk/lib/ReaderWriter/YAML/CMakeLists.txt (original)
>>>>> +++ lld/trunk/lib/ReaderWriter/YAML/CMakeLists.txt Fri Jan 16 17:34:41 2015
>>>>> @@ -1,3 +1,5 @@
>>>>> +set(LLVM_LINK_COMPONENTS support)
>>>>> +
>>>>>  add_lld_library(lldYAML
>>>>>    ReaderWriterYAML.cpp
>>>>>    )
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list