ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° Π½Π°Π±ΠΎΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ GNU Binutils 2.37, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠΎ GNU linker, GNU assembler, nm, objdump, strings, strip.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, Π·Π° Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ Binutils ΡΠ΅Π³Π° ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ C99.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° arm-symbianelf Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° RME (Realm Management Extension), ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ARMv9-A, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π΄ΠΎ ΠΊΠΎΠ΅ΡΠΎ Π½ΡΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠΌΡΠ΅ΡΠΈ TrustZone. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π΄ΠΈ Arm CCA (Confidential Compute Architecture). RME ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π΄Π° Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΡΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ΅Π΄ΠΈ ΠΎΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½ Π΄ΠΎΡΡΡΠΏ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠΈΡΠ΅.
- Π Π»ΠΈΠ½ΠΊΠ΅ΡΠ° ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ:
- β-Bno-symbolicβ β ΠΎΡΠΌΠ΅Π½Ρ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ β-Bsymbolicβ ΠΈ β-Bsymbolic-functionsβ;
- β-z report-relative-relocβ β ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ (relocation);
- β-z start-stop-gcβ β Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ __start_* / __stop_* ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΈ ΡΠ΅ΠΊΡΠΈΠΈ ΠΎΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ.
- Π ΡΡΠΈΠ»ΠΈΡΠ° readelf Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βsym-base=0|8|10|16Β» Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ.
- Π ΡΡΠΈΠ»ΠΈΡΠ° nm ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈ: ββformat=just-symbolsβ (β-jβ) Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ ΠΈ ββquietβ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Β«no symbolsΒ».
- Π ΡΡΠΈΠ»ΠΈΡΠΈΡΠ΅ objcopy ΠΈ strip Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ ββkeep-section-symbolsβ Π·Π° Π·Π°Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΈ ΡΠ΅ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Π objcopy ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈ ββweakenβ, ββweaken-symbolβ ΠΈ ββweaken-symbolsβ Π·Π° ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΊΠ°ΡΠΎ weak-ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ.
- Π readelf ΠΈ objdump Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈΡΠ΅ Β«.debug_supΒ» ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΊΡΠΌ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΎΡΠ»Π°Π΄ΡΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (debug info).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
