[llvm-dev] weak definitions in LTO

Zhao, Weiming via llvm-dev llvm-dev at lists.llvm.org
Mon Dec 14 09:26:30 PST 2015


Hi Rafael,

Nice.
That should fix the problem.

Thanks,
Weiming



On 12/11/2015 3:11 PM, Rafael EspĂ­ndola wrote:
> On 8 December 2015 at 18:04, Zhao, Weiming via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> Hi,
>>
>> I have a question regarding the behavior of weak symbol resolution in LTO:
>>
>> Suppose there are weak definitions in both the source code and some native
>> lib.
>> In non-LTO path, we will use the version from source code.
>> In LTO path, LLVM may discard the definition as it has "linkeonce" linkage
>> type. So the native version will be selected by linker.
>> Now, non-LTO and LTO build may have different behavior.
>>
>> The question is do we need to make non-LTO and LTO have the same behavior?
>> If so, the LTO part needs to create pseudo uses (or some other mechanism) to
>> keep the symbol from deletion.
>
> On the gold plugin this was pr19901.
>
> It was fixed by having the plugin convert linkonce to weak when the
> resolution is PREVAILING_DEF (i.e. there is an use from a native
> file).
>
> Cheers,
> Rafael



More information about the llvm-dev mailing list