[llvm-dev] [RFC] Annotating global functions and variables to prevent ICF during linking
Philip Reames via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 22 18:16:02 PDT 2021
Can you define ICF please? And give a bit of context?
Philip
On 3/22/21 5:27 PM, Zequan Wu via llvm-dev wrote:
> Hi all,
>
> Background:
> It's been a longstanding difficulty of debugging with ICF. Programmers
> don't have control over which sections should be folded by ICF, which
> sections shouldn't. The existing address significant table won't have
> effect for code sections during all ICF mode in both ld.lld and
> lld-link. By switching to safe ICF could mark code sections as unique,
> but at a cost of increasing binary size out of control. So, it would
> be good if programmers could selectively disable ICF in source code by
> annotating global functions/variables with an attribute to improve
> debugging experience and have the control on the binary size increase.
>
> My plan is to add a new section table(`.no_icf`) to object files.
> Sections of all symbols inside the table should not be folded by all
> ICF mode. And symbols can only be added into the table by annotating
> global functions/variables with a new attribute(`no_icf`) in source code.
>
> What do you think about this approach?
>
> Thanks,
> Zequan
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210322/bc7d22a5/attachment.html>
More information about the llvm-dev
mailing list