<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 7, 2015 at 8:36 AM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="color:rgb(34,34,34)">The atom model is optimized when you compile the code with -ffunction-sections and -fdata-sections.</span></div></div></blockquote><div><br></div><div>Not really, -ffunction-sections -fdata-sections gives a section-based linker the same flexibility as an atom-based linker.</div><div><br></div><div>In the atom model, these extra sections simply serve as a crutch to ensure that object files can be safely atomized. If you commit to the atom model, you shouldn't even need these sections, you should only need a flag that says "this section is safe for atomization". On MachO, this is what .subsections_via_symbols is for.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Once targets start having -fno-unique-section-names as the default the atom model looks more promising.<br></blockquote><div><br></div><div>Why does LLD care about -fno-unique-section-names? I thought this was just an object file size optimization.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Everyone likes to have the image size small, and making -ffunction-sections/-fdata-sections (or) -fno-unique-section-names the default make sense and the atom model design directly has a relation to it. In fact it simplifies the linker to not have extra data structures IMO.</blockquote><div><br></div><div>Again, the same is achievable in the section model by turning on these flags and enabling --gc-sections or equivalent functionality.</div><div><br></div><div>The only advantage I see to using the atom model for ELF and COFF is that we could dead strip object files built without -ffunction-sections -fdata-sections, which would allow us to turn these flags off in the compiler and save on object file size. I suspect the complexity of the atom model isn't worth the file size savings it offers.</div></div></div></div>