[llvm-dev] [lld][ELF] Regarding removeUnusedSyntheticSections()

Amilendra Kodithuwakku via llvm-dev llvm-dev at lists.llvm.org
Wed Jul 21 12:54:09 PDT 2021


Hi Fangrui,

> It is safe. The comment is about the references (isd->sections; script->orphanSections).
Thanks for the confirmation.

> (I can fix it after one week if I haven't seen a patch yet:) )
I've posted a patch this morning.
https://reviews.llvm.org/D106427

Thank you,
Amilendra

________________________________
From: Fangrui Song <maskray at google.com>
Sent: Wednesday, July 21, 2021 8:34 PM
To: Amilendra Kodithuwakku <Amilendra.Kodithuwakku at arm.com>
Cc: llvm-dev <llvm-dev at lists.llvm.org>
Subject: Re: [llvm-dev] [lld][ELF] Regarding removeUnusedSyntheticSections()


On 2021-07-17, Amilendra Kodithuwakku via llvm-dev wrote:
>Hi,
>
>I am working on an LLD port for a research project based on the AARCH64 based architecture which requires adding a new SyntheticSection to InStruct, but doing so gives me 2 failed x86 tests:
>  lld :: ELF/shuffle-sections-init-fini.s
>  lld :: ELF/shuffle-sections.s
>This new SyntheticSection is empty for X86, so in principle those tests should be unaffected.
>
>The immediate reason is that the shuffle implementation, maybeShuffle(), is dependent on inputSections. I think the real cause is that removeUnusedSyntheticSections() does not remove empty sections from the inputSections vector (although there is a comment that says that it does that). AFAICT elements are removed only from isd->sections and script->orphanSections.
>
>I could not find any uses of empty sections after this point, but you never know so thought of asking here. Is there a reason empty SyntheticSections in inputSections is preserved after removeUnusedSyntheticSections()? Or is there another approach that will not require maintaining the shuffle tests everytime a Synthetic section is added/removed?
>
>If it is safe to remove empty SyntheticSections from inputSections I can send out a patch to do that. Locally I have a simple patch that confirms that the shuffle tests do not fail after adding a new SyntheticSection. I can't think of new regression tests to add because this behavior cannot be demonstrated without adding a new SyntheticSection to InStruct.

It is safe. The comment is about the references (isd->sections; script->orphanSections).

(I can fix it after one week if I haven't seen a patch yet:) )

>Thanks
>Amilendra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210721/cd7cf3a7/attachment.html>


More information about the llvm-dev mailing list