[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