<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;">
<div style="color: rgb(33, 33, 33);">
<div>
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span style="font-size: 12pt;">>OK, so my understanding is this.</span><br>
<div>> </div>
<div>>Assume you have four mergeable string input sections .foo.1, .foo.2, .bar.1 and .bar.2, where .foo.{1,2} are writable but .bar.{1,2} are not. Also assume you have this >linker script.</div>
<div>> </div>
<div>>  .rodata : { *(.foo.*) *(.bar.*); }<br>
</div>
<div>> </div>
<div>>LLD currently creates two .rodata sections for those inputs. One for .foo.{1,2} and the other for .bar.{1,2}. This is because mergeable sections are merged based on >section attributes.</div>
<div>> </div>
<div>>Is this correct? What do you think is a correct behavior?<br>
</div>
<div><br>
</div>
<div><span style="font-size: 12pt;">In addition to my previou answer: </span></div>
<div><span style="font-size: 12pt;">for your example we assume foo* is "</span><span style="font-size: 12pt;">aMS"</span><span style="font-size: 12pt;"> and bar*
</span><span style="font-size: 12pt;">i</span><span style="font-size: 12pt;">s "aM" then
</span><span style="font-size: 12pt;">yes, we create 2 diffe</span><span style="font-size: 12pt;">r</span><span style="font-size: 12pt;">ent output sections now,</span><br>
</div>
</div>
<div class="gmail_quote">but correct is to create one.<br>
</div>
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote">Latest diff of D27415 will create 4 different mergeable sections and place it into single output. Therefore we lose possible optimization, we can not merge synthetic sections foo.1 with .foo2 and bar.1 with .bar.2 after them were are created.<br>
</div>
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote"><a href="https://reviews.llvm.org/D29223" class="phui-tag-view phui-tag-type-object " data-sigil="hovercard" data-meta="0_15" style="text-decoration: none; color: rgb(0, 0, 0); cursor: pointer; font-weight: bold; position: relative; -webkit-font-smoothing: antialiased; white-space: nowrap; margin-top: 0px; font-family: "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);"><span class="phui-tag-core phui-tag-color-object" style="color: inherit; border: 1px solid rgb(231, 231, 231); border-radius: 3px; padding: 0px 4px; background-color: rgb(231, 231, 231); margin-top: 0px;">D29223</span></a><span style="font-family: "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);"> based
 on diff2 of patch above </span>on opposite will create synthetic sections much later and is able to create 2 of them and place into single output.<br>
</div>
<div class="gmail_quote">And that is what I believe is the most correct way.<br>
</div>
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote">George.<br>
</div>
<div class="gmail_quote"><br>
</div>
</div>
</div>
</div>
</div>
</body>
</html>