[lld] [lld] Align EC code region boundaries. (PR #69100)
Saleem Abdulrasool via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 18 10:58:47 PDT 2023
================
@@ -1421,8 +1421,19 @@ void Writer::assignAddresses() {
// If /FUNCTIONPADMIN is used, functions are padded in order to create a
// hotpatchable image.
uint32_t padding = sec->isCodeSection() ? config->functionPadMin : 0;
+ MachineTypes prevECMachine = IMAGE_FILE_MACHINE_UNKNOWN;
for (Chunk *c : sec->chunks) {
+ if (isArm64EC(ctx.config.machine) && sec->isCodeSection()) {
+ MachineTypes machine = c->getMachine();
+ if (machine != IMAGE_FILE_MACHINE_UNKNOWN) {
+ // We need additional alignment when crossing EC range baudaries.
+ if (prevECMachine != IMAGE_FILE_MACHINE_UNKNOWN &&
+ machine != prevECMachine)
+ virtualSize = alignTo(virtualSize, 4096);
+ prevECMachine = machine;
+ }
----------------
compnerd wrote:
I think that an early continue might simplify this:
```suggestion
if (prevECMachine == machine || machine == IMAGE_FILE_MACHINE_UNKNOWN)
continue;
// We need additional alignment when crossing EC range boundaries.
virtualSize = alignTo(virtualSize, 4096);
prevECMachine = machine;
```
https://github.com/llvm/llvm-project/pull/69100
More information about the llvm-commits
mailing list