[LLVMdev] Error with apple's linker

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Aug 11 21:50:51 PDT 2009


Hi Nick,

Nick Kledzik wrote:
> 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??
>
>   

OK, thanks for the explanation. I have no idea if there are two 
relocations on the same address. If it's the case and it's incorrect, 
then it seems it's an llvm bug.

> If you have a test case that reproduces this, I can isolate exactly  
> which instruction in the code is causing the problem.
>
>   

Could a 94MB .bc file be considered as a test case? :) I can put that 
file on some website if you're interested. Reducing it to something more 
test case-like may require some time.

Thanks,
Nicolas

> -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
>>     
>
> _______________________________________________
> 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