[llvm-dev] weak definitions in LTO

Rafael EspĂ­ndola via llvm-dev llvm-dev at lists.llvm.org
Fri Dec 11 15:11:38 PST 2015


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