Az LLVM 15.0 különböző háttérrendszerekhez való fejlesztésekkel, nagyobb támogatással és még sok mással érkezik

Az LLVM 15 támogatási fejlesztéseket hajt végre

Az LLVM 15.0 számos érdekes frissítést is tartalmaz a C/C++-hoz.

Hat hónap fejlesztés után Bejelentették az LLVM 15.0 projekt kiadását, amelyben sok jelentős változás történt, valamint az új processzorok, architektúrák és egyebek hozzáadott támogatása.

Azok számára, akik nem ismerik az LLVM-et, tudniuk kell, hogy ez egy GCC-kompatibilis fordító (fordítók, optimalizálók és kódgenerátorok), amely a programokat RISC-szerű virtuális utasítás köztes bitkódba fordítja (alacsony szintű virtuális gép többszintű optimalizáló rendszerrel).

A generált pszeudokódot a JIT fordító gépi utasításokká tudja konvertálni éppen a program végrehajtása során.

Az LLVM 15.0 fő újdonságai

Ebben az új verzióban, amelyet bemutatunk, kiemeljük, hogy a támogatja a Cortex-M85 processzorokat, valamint Armv9-A, Armv9.1-A és Armv9.2-A architektúrákhoz Armv8.1-M PACBTI-M bővítmények.

Egy másik kiemelkedő változás az hozzáadott egy kísérleti DirectX háttérprogramot hogy támogatja a DXIL formátumot (DirectX Intermediate Language) a DirectX shaderekhez használatos. A háttérrendszer a "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" összeállítási beállításon keresztül engedélyezett.

A libc++ folytatja az új funkciók bevezetését a C++20 és C++2b szabványok, beleértve a "formátum" könyvtár megvalósításának befejezését és a "tartományok" könyvtár javasolt kísérleti verzióját.

A Clang 15.0-val kapcsolatos változtatások részéről megemlítjük, hogy hozzáadott kísérleti támogatást a C-szerű HLSL nyelvhez (High-Level Shading Language), amely a DirectX 9-től kezdődő shader írására, valamint a HLSL shader-ek DirectX 12-kompatibilis DXIL (DirectX Intermediate Language) bináris formátumra, valamint a Vulkan által használt SPIR-V formátumra történő fordítására szolgál. A jövőben, tervezi a DXBC formátum támogatásának bevezetését (DirectX Bytecode) a DirectX 9-11-ben használatos. A megvalósítást a Microsoft biztosítja, és a 2017-ben megjelent, LLVM 3.7 alapú DirectX Shader Compilerre épül.

Azt is megemlítik, hogy folytatódik a a jövőbeni C2X és C++23 szabványok támogatásán dolgozik. C nyelvre implementálva: a noreturn attribútum, a false és true kulcsszavak, a _BitInt(N) típus adott bitmélységű egész számokhoz, a *_WIDTH makrók, az u8 előtag az UTF-8 karakterekhez.

Ezen kívül implementálva lett C++: modul-összevonás, A függvénytagok ABI izolálása, a nem lokális változók rendezett dinamikus inicializálása a modulban, többdimenziós index operátorok, auto(x), nem literális változók, goto és címkék a constexpr-ként deklarált függvényekben, elválasztott escape szekvenciák, elnevezett escape karakterek.

Az architektúrán alapuló rendszerekhez x86, hozzáadva a "-fzero-call-used-regs" jelzőt, amely biztosítja a függvényben használt összes CPU regiszter nullázását, mielőtt visszaadná a vezérlést a függvényből. ezt a lehetőséget véd az adatszivárgás ellen 20%-kal csökkenti a ROP (Return Oriented Programming) eszközök létrehozására alkalmas blokkok számát az exploitokban.

A memóriahely véletlenszerűsítése megtörtént a C kódhoz tartozó struktúrák közül, ami megnehezíti az adatok kinyerését a struktúrákból a sebezhetőségek kihasználása esetén. A véletlenszerűsítést a randomize_layout és no_randomize_layout attribútumokkal lehet be- és kikapcsolni, és az ismételhető összeállítások biztosítása érdekében a magot a "-frandomize-layout-seed" vagy "-frandomize-layout-seed-file" jelzővel kell beállítani.

A többi változás közül amelyek kiemelkednek:

  • Az OpenCL és OpenMP támogatáshoz kapcsolódó bővített lehetőségek. Támogatás hozzáadva a cl_khr_subgroup_rotate OpenCL-bővítményhez.
  • Továbbfejlesztett háttérrendszerek x86, PowerPC és RISC-V architektúrákhoz.
    Továbbfejlesztett LLD linker és LLDB hibakereső képességek.
  • "-fstrict-flex-arrays=" jelző hozzáadva » mellyel egy soft tömbelem korlátait szabályozhatjuk a struktúrákban (Soft Array Members, határozatlan méretű tömb a struktúra végén).
  • A "-warray-parameter" opció hozzáadva a rögzített és változó hosszúságú tömbökhöz társított nem egyező argumentumdeklarációkkal rendelkező függvények felülbírálásához.
  • Továbbfejlesztett kompatibilitás az MSVC-vel.
  • Az MSVC-ben biztosított "#pragma függvény és #pragma alloc_text" támogatása hozzáadva.
  • Az MSVC-kompatibilis /JMC és /JMC jelzők támogatása hozzáadva.
  • Az AMD Zen2 processzorok által támogatott "-m[no-]rdpru" jelző hozzáadva az RDPRU utasítás használatának vezérléséhez.
  • A RETBLEED sebezhetőség elleni védelem érdekében hozzáadtuk a "-mfunction-return=thunk-extern" jelzőt, amely egy olyan utasítássorozat hozzáadásával működik, amely kizárja a közvetett ugrások spekulatív végrehajtási mechanizmusának részvételét.

Végül Ha érdekel, hogy többet tudjon meg róla, a részleteket a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.