https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63304
--- Comment #47 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- (In reply to ard.biesheuvel from comment #46) > One issue that this causes, which I did not see mentioned anywhere in the > thread, is that the use of adrp/add and adrp/ldr imposes a 4 KB section > alignment. In EDK2 Tianocore (UEFI reference implementation), we > deliberately use -mcmodel=large to get around this requirement, since code > size is a big deal when executing from NOR flash, and the architecture of > EDK2 (lots and lots of small separately linked binaries) makes > the overhead of 4 KB section alignment prohibitive. (It uses 32 byte section > alignment unless there are objects like a vector table that require more) Huh? It imposes a 4k *SEGMENT* alignment. It doesn't impose a section alignment.