A Linux 6.17 kernelben az ARM64 platformot is érintő, 1993-as ELF programfejléc-korlátozás megszüntetésére készülnek

A Linux 6.17 kernelben az ARM64 platformot is érintő, 1993-as ELF programfejléc-korlátozás megszüntetésére készülnek

A Linux kernel fejlesztői levelezőlistán felmerült egy kérdés az ELF binárisok programfejléceinek méretkorlátozásával kapcsolatban. Yin Fengwei egy különleges esettel szembesült, amikor egy automatikusan generált assembly kódot fordított GCC-vel, amelynek eredményeként az elkészült ELF fájl 78 programfejléccel rendelkezett. Ez ARM64 platformon, 64 KB-os alapoldal-méret mellett gond nélkül indult, viszont 4 KB-os oldal-méret esetén már nem volt futtatható, és „Exec format error” hibát adott. A problémát a load_elf_phdrs() függvény vizsgálata során talált feltétel okozza, amely az ELF programfejlécek teljes méretét az ELF_MIN_ALIGN értékéhez köti, ami ARM64 esetében megegyezik a lapmérettel. Yin Fengwei rámutatott, hogy ha eltávolítja a size > ELF_MIN_ALIGN korlátozást, akkor a bináris 4 KB-os oldal-mérettel is működik, de nem talált hivatalos magyarázatot az ELF specifikációban erre a korlátozásra.

Részletek