<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58101>58101</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[lld] Cannot pad ELF32 to 4GB
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
crawfxrd
</td>
</tr>
</table>
<pre>
`entry.S`:
```asm
.code16
.section .reset, "ax", %progbits
.code16
.global reset_vector
reset_vector:
hlt
jmp reset_vector
.align 0x10, 0xFF
```
`link.ld`:
```
OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(reset_vector)
SECTIONS
{
/* Reset vector on IA32 starts at 16 bytes below 4 GiB */
. = 0xFFFFFFF0;
.reset : {
*(.reset)
}
/* NOTE: LLD requires shstrtab */
.shstrtab : { *(.shstrtab) }
.strtab : { *(.strtab) }
.symtab : { *(.symtab) }
/* Discard everything else */
/DISCARD/ : { *(*) }
}
```
Compiled with:
```
clang -fuse-ld=lld -m16 -ffreestanding -nostdlib -Wl,-Tlink.ld -Wl,--nmagic -Wl,--build-id=none -o entry.o entry.S
```
Error:
```
ld.lld: error: section .reset at 0xFFFFFFF0 of size 0x10 exceeds available address space
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
```
Section starting at 0xFFFF_FFF0 with a length of 16 bytes will have its last byte at 0xFFFF_FFFF. lld just adds the length to the start so it thinks it ends at 0x1_0000_0000, making it outside of the 4GB limit.
Caused by: 1fc9f39bd544dc757323d2ee8830134275e382ec
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9VVtvqzgQ_jXkZQTiHvLAQ5rLOZW67SrJ0WqfKoMniVsDWWzSZH_9GUPIpc0pQsb23L5vPGOyih9TK3ax1PXRWdLMCsaWO7XcfqSd9mWq6HaAHievOHrx1YbCXIuqBKdGhdryJ2D5PjvQ0M2jXV1tMqHVd042ssqYhNbF6548VnUnvdnpARqTrdSXxVuxu2N75Z9JsSnBPXiuAeUe5vNPJD8xl6J8dyT_Jivd8uXX6u9fq9f5y-Kv8cryE2KNch34tgiSuE3B6EZxvJj8JLVOehLNnleLf2nzhkAv7MblbLJ6fHlenvaGDxdqlj-3_DEsjDF0xkCn8TgOfFCa1VoB0-DFkB01KshQVh8Qwg_xQKZjY33JEljBtE1O-xD1qzjd8ZLGGG7idxjIUdIXwOgK3HD6-ShOeJ9fVjPj6-lpSif3XyPIGNRW6Vqz7Cuyi6SL34fs9ynqJVhncV__T9rH4p52u3uj_YXIVKic1Rxwj_VRb0W5AZQKv1CgxfRxORkvpjT7FKgdr4OcJ_fKc1IVOyGRw4fQ2-_LM5eM8NjrRqFN1RxMpeRgF1QN9npdI1KBlNxAtstKaS5FBvY_klrEXp06oF_bZcE2Ij8vs0ZIbgvjs6xKBLuC7ibpv8tvGMzq-qqb7ypK7kiDeAx4Uobbi8ZU9aVUoVqDEv9j2-KAhxyRU-HvmZAskwiMc7KiCtuxHK9yY3vhTQzDGmvIq6KgzMCanRNNToUGc3GBR8eWUErB3oOuCBeCKPdVzgy8S-feY748cWg70yT-zOK1pdFGYiCx3NCESJ0b90NICVu2p1jU0pIp3QpuHcwdMCf81pCUKCvQW-ydEVKzaiODqsgNmHJ9V2aGJVedK-_VpacdzFVZsHcDk1SqRitB7AmU8RP-eKBsFUI7N7XJKC-ckJlkeut8tA5GGY_CkOfDaBj4AfcRkyRwvSD0hxEGiY_5AFMvjsM4HI5G4YCnAR8FIzbQQktMrejBFEI0hQkry0rDjnGYPc3peiNGhGLQ1DLdar1TpqJMU843lMUmo79MQQsp9_3Hpl_RG50ALYVSDSqaRInneoNtGvE4SYbci4IgydbRiDOObsKTPI8jjN1sQIVEjW3wEJiBSH3X9z3X9bzEC7zQiQIej6LcDwM3zwK6-UMXCyofxwR2qnozqNMWQ9ZsFAmlUFpdhEwp-kMh9v5Zo7dVneY1-1gfaj5o8aYt2N_RPy-j">