Attach a patch using private linkage type and adding to llvm.used. I have to 
recreate llvm.used when embedding bitcode. I don't really like it but I don't 
have better solutions.
Few other options:
1. Not allowing re-embedded bitcode will simplify the code a bit but not a lot.
2. Create a new "llvm.*.used" variable in llvm.metadata section.
3. Teach optimizer do not optimize away llvm.* variables.   

Attachment: 0001-Fix-embed-bitcode-linkage-type.patch
Description: Binary data


Steven

> On May 13, 2016, at 10:10 AM, Rafael Espíndola <rafael.espind...@gmail.com> 
> wrote:
> 
> On 13 May 2016 at 13:02, Steven Wu <steve...@apple.com> wrote:
>> Hi Rafael
>> 
>> Thanks for notice this! That would definitely cause duplicated symbol error 
>> and I should definitely change that.
>> Here is some background:
>> ld64 in Xcode 7+ knows how to handle the embedded bitcode correctly but not 
>> the ones in earlier Xcode. The old ld64 will simply concatenate the bitcode 
>> files which is not the right thing to do. So there is a symbol generated at 
>> the place to prevent user to link the bitcode object file with old ld64 
>> because older ld64 will fail and report duplicated symbols.
>> I have a radar tracking to change the linkage type when upstream but I 
>> dropped the ball on that one. The correct thing to do is to make it internal 
>> and add to llvm.used. I will come up with a patch.
> 
> Thank you so much!
> 
> Cheers,
> Rafael

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to