ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google
ΠΠ°ΡΠ°Π±ΠΎΡΠΊΠΈ LLVM ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Google. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Google ΡΠΆΠ΅ Π½Π°ΡΠ°Π» ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΡ libc, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π΅ΠΌΡ ΡΡΠ°Π·Ρ Π½Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠΎΡΡΠ°Π²Π΅ LLVM, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ Π‘++ (Libc++), Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Π‘ΠΈ (Libc).
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈ ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎ, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π½Π°ΡΠ°ΡΠΈΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ. ΠΠ΅ΡΠ²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΎΡΠΎΡΠΌΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Libc, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ Π΅ΡΡ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎΡΠ»Π΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½ΠΎΠ²Π°Ρ Libc ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Libc. ΠΠ°ΡΠ°ΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ x86-64, Linux ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±ΡΠ΄ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΠΎ Π²ΡΠΎΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ).
ΠΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠΊΠ° Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ, Π½ΠΎ ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅Π»ΠΈ:
- ΠΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠ΅ΠΉ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π³ΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π° Π½Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°;
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ°Ρ
Ρ
PIE (Position-independent executables) ΠΈ Π±Π΅Π· PIE. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ CRT (C runtime) ΠΈ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° PIE Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²; - ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ POSIX ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ, Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ;
- ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌ ΠΈ ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Clang ΠΈ libc++;
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ²ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ LLVM, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ sanitizer ΠΈ fuzzing-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°.
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² LLVM
Π‘Π²ΠΎΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Libc ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΠΎΠ±ΡΡΠΌΠ΅ ΠΊΠΎΠ΄Π°, Π° Π² ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Ρ ΡΡΡΡΠΎΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΡΠ° ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π‘/C++, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , runtime ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Libc. ΠΠΎΠ΄Ρ ΠΎΠ΄ Π² Π»ΠΎΠ± Π±Π΅Π· ΡΡΡΡΠ° Π½ΡΠ°Π½ΡΠΎΠ² Π»ΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Libc, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ.
- ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΡΡΠΈΡΡ Libc, Π½ΠΎ ΠΏΡΠΎΡΠΎΠ»ΠΊΠ½ΡΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΎΠ³ΠΎΠΌ ΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Ρ Π°ΠΊΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ΄ ΡΠ³ΠΈΠ΄ΠΎΠΉ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ½ΡΡΡ ΠΎΠ΄Π΅ΡΠ»ΠΎ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΡΡΠ΅ΡΠ± ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π² ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Libc Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, ΡΠ΅ΠΌ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΌΡ ΠΎΡΠΈΠ±ΠΊΡ. Apple ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΡΠΎΡΠΊ BSD libc, Π° Google ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π² Fuchsia ΡΠΎΡΠΊ musl. ΠΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° musl Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π»ΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΈΡΡΡ Π΄Π»Ρ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°Π»ΠΈΡΡ Π΄Π»Ρ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ²ΠΎΠΈ ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
- ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠ½ΠΎΠΊΡΠ»ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ libc ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΌΠΎΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π° Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π°Π²ΡΠΎΡ musl ΠΏΡΠΎΡΠΈΠ² Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠΎΡΡΠ°Π² LLVM, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΎΡΠΈΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ libc Π² ΡΠ°ΠΌΠΊΠ°Ρ LLVM, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ libc ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ LLVM, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ — Π²ΡΠΎΡΠΎΠ³ΠΎ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru