<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/81657>81657</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[lld] promoting bss sections to progbits may increase runtime memory usage
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
shankarke
</td>
</tr>
</table>
<pre>
lld tries to promote nobits sections to progbits sections in the following test, causing a size increase.
Checking to see if this is a documented behavior or a bug with lld that we can work on for fixing it.
$ ld.lld --version
LLD 18.0.0 (compatible with GNU linkers)
`
cat > 1.c << \!
int foo() {
return 0;
}
int bar() {
return 0;
}
!
cat > script.t << \!
PHDRS {
A PT_LOAD;
}
SECTIONS {
.foo : { *(.text) *(.text.foo) } :A
.b1 : { . = . + 100; } :A
.b2 : { . = . + 100; } :A
.bar : { *(.text.bar) } :A
.b3 : { . = . + 1M;} : A
.b4 : { . = . + 1M;} : A
}
!
clang -target riscv32 -c 1.c -ffunction-sections -fno-asynchronous-unwind-tables
ld.lld 1.o -T script.t
`
The sections .b1 and .b2 should get promoted to PROGBITS, but .b3 and .b4 should be left as is as NOBITS.
This increases the size of the image.
For comparison :-
lld generates a 2.1M image
bfd generated an image in kilobytes.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE1z4ygQ_TX40iVKQlYsH3RwrPHsVGWS1MR73gLUklgjcAGKx_vrt5CcD-8kW7sXbNHvdT8a-nHvVWcQK1LckqJe8DH01lW-5-bA3QEXwjbnSusGglPoIVg4OjvYgGCsUMGDRxmUNS-h7npTGQg9Qmu1tidlOgjoA2FbkHz08ZuDV38hKCMdco-UpDVJN_O67VEeJpIFjwiqhdArD8oDh8bKcUATsAGBPX9W1oF1wEGMHZxU6GFS3fMAJwTJDZysO4A10FoHrfoZE6twVZCwJeiGRmKSPKPzypo5cndXQ1bSlKZAWCntcORBCY1zpa_3v4NW5oDOE7a-yniTzn8kD0DyL5BRCSTfknwLpNgSls1hZQK01hJWErYGsrqdtwEchtEZSEl-2SKr-n2BSBTc_UL8F95LzWthXjp1DDR8pO7xt_rH03tVG3jc_3H3sKk_k_X0Zbv_9nB_RaKttUDyTdwDwjaElTTgzzAJf_ukUx_iWeqIviQEKrJXMgWS13Flt5Cl8Yz_RAMV7P_BuftIG516-4sYoCL_OP332JEZDO_Qy_-M_vSeNDcdJIG7DgM45eVzziCR04tK2nY008glr6OXtMYm3J-N7J01dvTJaE7KNEngQqOfs15ee0YtJPvXN_DhC57XfY9v0x3vhJtmarbv7agbiOIuDtHEuX388fD19tv-Kc68GMPUuJmyfKEIBI1tAD5Ptof7h8ig12Xj3F9Mwk-eMvmGbaf_auDdtXfsrINpTJ3y1sQGJ-_DepJq0PGA0U0Yzb7PWWAGiPYN0AA3l6AycFDainNAf1Vv0VR5s87XfIFVtkpXZbHMyvWir1oppWh5VuasLLLiphBlnnKWSpbmjWhwoSqWsmXKsjxbFzdsTdtUCHHTFsVa8LyVkixTHLjSVOvngVrXLZT3I1ZldlOsFpoL1H7yb8a0bghj0chdFdGJGDtPlqlWPvg3flBBT5Yf8UV9ubBoiMJ_4ugDP7_2H9xoghoQBhysO8PoeYeL0emqD-HoSb4hbEfYrlOhHwWVdiBsF4tffpKjs3-iDITtppN4wnbTYf4OAAD__1oF5gA">