[LLVMdev] Error with apple's linker
Nick Kledzik
kledzik at apple.com
Tue Aug 11 10:50:59 PDT 2009
Background:
In Mac OS X 10.5 and later, OS dylibs are copied into something called
the dyld shared cache. In the cache all the dylibs are bound to one
another, which improves launch time of all processes. The shared
cache has a funny constraint where all read-only pages need to be
continuous. This requirement means the __TEXT and __DATA segments of
each dylib need to be split apart. The normal PIC codegen uses pc-
relative access from code to data, so all those pc-relative addresses
need to be altered when a dylib is incorporated into the dyld shared
cache. To facilitate that, the linker adds content to each dylib that
describes where all the code-to-data references are.
The "double split seg info" error means the linker ran into some case
where it does not now how to encode a code-to-data reference. In
particular is seems like there is two relocations on the same address??
If you have a test case that reproduces this, I can isolate exactly
which instruction in the code is causing the problem.
-Nick
Mac OS X Linker
On Aug 11, 2009, at 1:12 AM, Nicolas Geoffray wrote:
> Hi all,
>
> I'm having an issue with the ld linker on MacOSX (10.5). I have
> generated a large .s file with llc and the relocation-model=pic
> argument. When I ask the linker to create the .dylib file, I get
> this error:
>
> ld: double split seg info for same address
> collect2: ld returned 1 exit status
>
> The generated .s file for Linux works fine with Linux's ld linker. If
> anyone has an idea of what's happening with apple's ld, I'd be happy
> to
> hear it.
>
>
> Here's the full context:
> With VMKit's compiler, I create a .bc file of the standard Java
> library.
> I then run the -std-compile-opts optimizations, so the .bc file passes
> verification. I generate the .s file with the following command line:
>
> llc -relocation-model=pic -disable-fp-elim myfile.bc
>
> Finally, I use LLVM's Makefile machinery to create a .dylib file from
> the .s file.
>
> Cheers,
> Nicolas
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list