<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
Hi,</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
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:
<div>  lld :: ELF/shuffle-sections-init-fini.s</div>
<span>  lld :: ELF/shuffle-sections.s</span></div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<span>This new SyntheticSection is empty for X86, so in principle those tests should be unaffected.</span><br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
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.</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
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?<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
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.<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
Thanks</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
Amilendra<br>
</div>
<div style="font-family: "Courier New", monospace; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
</body>
</html>