After six months of development presented the release of the project llvm 15.0 -GCC-compatible tools (compilers, optimizers and code generators), compiling the program into the intermediate bit of the RISC-like virtual instructions (low-level virtual machine with a multi-level optimization system). The generated pseudo-cod can be transformed using a JIT compiler into machine instructions directly at the time of the program.
The main improvements in Clang 15.0:
- For systems based on architecture X86, the flag “-fzero-Call-USD-Regs” has been added, which ensures that all the CPU registers used in the function of the control from the function. The specified option allows you to protect against information leakage from functions and reduce the number of blocks suitable for constructing ROP gadgets by about 20% RETURN-Oriented Programming) in exploites.
- Randomization of the placement of structures for code structures in the language of SI, which complicates the extraction of data from structures in the event of the operation of vulnerabilities. Randomization turns on and turns off using the attributes of Randomize_layout and No_randomize_layout, and requires the installation of the flla of the flag “-frandomize-layout-essa-layout-list-File”.
- Added the flag “-fstrit-flex-rrays = “, with which you can control the boundaries for a flexible array element in structures ( flexible Array Mambers , an indefinite array at the end of the structure). When setting a value of 0 (by default), the last element of the structure with an array is always processed as a flexible array, 1 – only the dimensions [], [0] and [1] are processed as a flexible array, 2 – only the dimensions [] and [0] are processed. Like a flexible array.
- Added experimental support for the SI-like language hlsl (High-Level Shader Language) used in DirectX for writing shader.
- Added parameter “-Warray-Parameter”, which warns of redevelopment of functions with non-combined announcement of arguments associated with the arrays of fixed and variable lengths.
- Improved compatibility with MSVC. Added support “ #PRAGMA Function ” (indicates the compiler To generate a call call, instead of its Inline exposure) and “ #PRAGMA alloc_TEXT “(determines the name of the section with the code of the function) provided in MSVC. Added support for flags compatible with MSVC /JMC and /JMC.
- Continued work to support future standards C2X and C ++ 23. For the SI language,: the attribute noreturn , keywords false and true
/Media reports.