<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!-- p { margin-top: 0px; margin-bottom: 0px; }--></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p><span style="color: rgb(33, 33, 33); font-size: 12pt;">> This is a list of items that popped in my mind. Not exhaustive but probably good enough to start discussing what we should do next.</span><br>
</p>
<div style="color: rgb(33, 33, 33);">
<div>
<div dir="ltr">
<div>> </div>
<div>> - FreeBSD: what is the status of building the entire FreeBSD system with LLD? Can it build everything including the kernel?</div>
<div>> </div>
<div>> - OpenBSD: it is reported that the current LLD doesn't work well on their operating system.</div>
<div>> </div>
<div>> - Linux: pick up a distribution and build all packages with LLD to find out bugs and unimplemented features.</div>
<div>> </div>
<div>> - Unimplemented features: at least I wanted to support --no-ctors-in-init-array.</div>
<div>> </div>
<div><br>
</div>
<div>I reviewed gold code and found that difference in our and their implementation is that by default (<span style="color: rgb(33, 33, 33); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">--ctors-in-init-array</span>)<br>
</div>
<div>in gold <span style="font-size: 12pt;">.</span><span style="font-size: 12pt;">ctors sections are output in</span><span style="font-size: 12pt;"> .init_array sections, and .dtors sections are </span><span style="font-size: 12pt;">output in .fini_array sections.
 And they preserve the original names (not renamed to .init_array/.fini_array) when --<span style="color: rgb(33, 33, 33); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">no-ctors-in-init-array</span>
 specified. LLD always preserve the original names now. I did not notice other differences, may be I am missing something, what should be done here ?</span><span style="font-size: 12pt;"><br>
</span><br>
</div>
<div>> - Safe ICF: is there anything that we can do to support it? I don't like the way how gold support it (e.g. recognizing ctors/dtors by mangled names, or detecting >address-taken functions by relocations) because it seems too tricky to me. We might want
 to change LLVM to emit hints for linkers.</div>
<div>> </div>
<div>> - Parallelism: we haven't worked on this area intentionally because we are pursuing single thread performance at this moment. But because the linker is now fairly > mature, it might be the time to start thinking about it. Is there any place we can use
 multiple threads to speed up? The first thing that comes to my mind is computing > a build id using multiple threads.</div>
<div>> </div>
<div><br>
</div>
<div>As far I know MD5 and SHA1 can not be parrallized. You sure can split original buffer and compute multiple hashes in parrallel and combine them somehow at the end, but result  of hash(buf1) + hash(buf2) + .... + hashN(bufN) will never be equal to hash(whole bufer).
 Do you have some specific solution in mind here ?<br>
</div>
<div><br>
</div>
<div>> - Ports: how much mature is PowerPC port? We want to support both BE and LE PowerPCs. It's also interesting to work on an open-source ISA, RISC-V, because the patches to support the RISC-V architecture are being merged now.<br>
</div>
<div><br>
</div>
<div>​<br>
</div>
<div>And about --section-ordering-file​ option mentioned by Davide. Do we want to try it ? if so I probably can work on it. <br>
</div>
<div>So as far I understand gold implementation this is just a file with wildcarded names that specifies sections order. <br>
<br>
</div>
</div>
<div class="gmail_extra">George.<br>
</div>
<div class="gmail_extra"><br>
</div>
</div>
</div>
</body>
</html>