[llvm-dev] lld + ThinLTO + fprofile-generate causes duplicate symbol errors
Pirama Arumuga Nainar via llvm-dev
llvm-dev at lists.llvm.org
Wed May 9 09:26:09 PDT 2018
Hi Teresa,
Thanks for looking into this. I hadn't initially tried ToT, but it
reproduces in ToT as well when I tried.
$ ./clang --version
clang version 7.0.0 (trunk 331879) (llvm/trunk 331888)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /ssd2/pirama/llvm-upstream/llvm-release/bin/.
$ ./ld.lld --version
LLD 7.0.0 (https://git.llvm.org/git/lld.git
dc4977e104c7f33758ac6119d1528aafcd8a94dc) (compatible with GNU
linkers)
On Wed, May 9, 2018 at 6:44 AM Teresa Johnson <tejohnson at google.com> wrote:
>
>
> On Wed, May 9, 2018 at 6:43 AM Teresa Johnson <tejohnson at google.com>
> wrote:
>
>> Hi Pirama,
>>
>> I can't reproduce with either lld or gold, using a compiler built from
>> head. What version is your clang?
>>
> (and your lld)
>
>
>>
>> Thanks,
>> Teresa
>>
>> On Tue, May 8, 2018 at 7:50 PM Pirama Arumuga Nainar via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> The duplicate symbol errors are for __llvm_profile_filename and __llvm_profile_raw_version.
>>> IIUC, these are supposed to be weak symbols but Thin LTO seems to break
>>> this in some way. This does't happen with gold or no LTO or full LTO.
>>>
>>> $ cat > a.c
>>> extern int foo();
>>>
>>> int main() {
>>> return foo();
>>> }
>>>
>>> $ cat > b.c
>>> int foo() {
>>> return 0;
>>> }
>>>
>>> $ clang a.c -fprofile-generate -flto=thin -c
>>> $ clang b.c -fprofile-generate -flto=thin -c
>>> $ clang a.o b.o -fprofile-generate -flto=thin -fuse-ld=lld
>>> ld.lld: error: duplicate symbol: __llvm_profile_filename
>>> >>> defined at a.c
>>> >>> lto.tmp:(__llvm_profile_filename)
>>> >>> defined at b.c
>>> >>> lto.tmp:(.rodata.__llvm_profile_filename+0x0)
>>>
>>> ld.lld: error: duplicate symbol: __llvm_profile_raw_version
>>> >>> defined at a.c
>>> >>> lto.tmp:(__llvm_profile_raw_version)
>>> >>> defined at b.c
>>> >>> lto.tmp:(.rodata.__llvm_profile_raw_version+0x0)
>>> clang-7: error: linker command failed with exit code 1 (use -v to see
>>> invocation)
>>> Makefile:10: recipe for target 'a.out' failed
>>> make: *** [a.out] Error 1
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>
>>
>> --
>> Teresa Johnson | Software Engineer | tejohnson at google.com |
>> 408-460-2413
>>
>
>
> --
> Teresa Johnson | Software Engineer | tejohnson at google.com |
> 408-460-2413
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180509/2f859579/attachment.html>
More information about the llvm-dev
mailing list