<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Can you define ICF please? And give a bit of context?<br>
</p>
<p>Philip<br>
</p>
<div class="moz-cite-prefix">On 3/22/21 5:27 PM, Zequan Wu via
llvm-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAC0VcPCT67UkARRdcEw5Mw56Z8Gx7A0sA5ZEeDz9DvaQ0vQK8w@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">Hi all,
<div><br>
</div>
<div>Background:</div>
<div>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. </div>
<div><br>
</div>
<div>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. </div>
<div><br>
</div>
<div>What do you think about this approach?</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Zequan</div>
<div><br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
</body>
</html>