[PATCH] Do not use layout-before to layout atoms.

Shankar Easwaran shankare at codeaurora.org
Thu Mar 27 15:00:18 PDT 2014


Wow, I was unaware of this change that deadStrip was always enabled for 
PE/COFF with lld.

LGTM then, Can we put a note in the code that kindLayoutBefore will be 
removed and used only by Dead stripping code to prevent atoms from being 
deadstripped.

Thanks

Shankar Easwaran

On 3/27/2014 4:40 PM, Rui Ueyama wrote:
> Dead-stripping is enabled by default for PE/COFF because MSVC link.exe 
> does it by default.
>
> On Thu, Mar 27, 2014 at 2:38 PM, Shankar Easwaran 
> <shankare at codeaurora.org <mailto:shankare at codeaurora.org>> wrote:
>
>     I understand your usecase, but what I meant is, dead-strip is only
>     a option available in core.
>
>     Removing kindLayoutBefore completely should not affect anything
>     because we dont dead strip in flavors [link, gnu, ld64]
>
>     Thanks
>
>     Shankar Easwaran
>
>
>     On 3/27/2014 4:31 PM, Rui Ueyama wrote:
>>     Can you elaborate a bit? I don't understand what you mean.
>>
>>     Removing kindLayoutBefore will affect dead stripping because it
>>     would lost back references for kindLayoutAfter, so it would
>>     collect live atoms.
>>
>>     I'm not removing kindLayoutBefore in this patch. This patch is
>>     just to stop using kindLayoutBefore in the layout pass. The dead
>>     stripping pass is still using it. Removing kindLayoutBefore
>>     entirety is the last step, after modifying the dead stripping
>>     pass so that the pass works without kindLayoutBefore (only with
>>     kindLayoutAfter and kindInGroup).
>>
>>
>>     On Thu, Mar 27, 2014 at 12:45 PM, Shankar Easwaran
>>     <shankare at codeaurora.org <mailto:shankare at codeaurora.org>> wrote:
>>
>>         On 3/27/2014 2:33 PM, Rui Ueyama wrote:
>>>         (I accidentally hit "reply" instead of "reply all", so
>>>         sending it again.)
>>>
>>>         I'll add "alias" references if no objections from other
>>>         reviewers. I'll probably add ELF symbol aliasing support
>>>         with it, so hold on.
>>>
>>>         We cannot remove kindLayoutBefore because doing it would
>>>         break dead stripping pass. We still need it for GC as GC
>>>         needs backward references.
>>>
>>>         To remove kindLayoutBefore, we have to modify dead striping
>>>         pass so that it creates back references internally from
>>>         forward references and use it while collecting dead objects.
>>>         I think I'm going to make such change, but it's going a bit
>>>         large.
>>>
>>>         Submitting this change first and then doing the next step in
>>>         a following patch would be better than merging the two
>>>         together. Incremental change is easier to bisect in case it
>>>         would breaks omething, and it's easy to understand for
>>>         reviewers, too.
>>>
>>         Do we have a flag to garbage collect atoms with lld in the
>>         current implementation ? If not removing kindLayoutBefore
>>         wouldnot affect anything right ?
>>
>>         Shankar Easwaran
>>
>>         -- 
>>         Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
>>
>>
>
>
>     -- 
>     Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
>
>


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140327/c4d442ec/attachment.html>


More information about the llvm-commits mailing list