GDB 17 silumise väljaanne

GDB 17.1 debuggers release has been announced (the first release in the 17.x series, branch 17.0 was used for development). GDB supports source-level debugging for a wide range of programming languages (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust, etc.) on various hardware platforms (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch, etc.) and software platforms (GNU/Linux, *BSD, Unix, Windows, macOS).

Silmapaistvamad täiustused:

  • For x86-64 systems, shadow stack support has been implemented, which appeared in the Linux kernel 6.6 and allows blocking the operation of many exploits using hardware capabilities of Intel processors to protect against overwriting return addresses from functions in case of stack buffer overflow. The essence of the protection is that after control is transferred to a function, return addresses are saved by the processor not only in the regular stack but also in a separate 'shadow' stack, which cannot be modified directly. Before exiting the function, the return address is extracted from the shadow stack and compared with the return address from the main stack.
  • Lisatud on võimalus siluda Linuxi programme, mis on loodud AArch64 arhitektuurile ja kasutavad GCS (Guarded Control Stack) laiendust. GCS pakub vahendeid funktsioonidelt tagasiviimise aadresside riistvaraliseks kaitsmiseks ja ROP-i (Return-Oriented Programming) meetodeid kasutavate eksploitide blokeerimiseks, kus eksploit koosneb juba olemasolevatest masinakeele käskudest, mis lõppevad tagasiviimise käsuga.
  • Arhitektuuriga rv64gc süsteemide jaoks on rakendatud täielik tugi programmi käivitamise protsessi salvestamiseks silumiseks tagurpidi ja koodilõikude taasesitamiseks.
  • Käskluses 'info threads' on lisatud valikud '-stopped' ja '-running', et näidata ainult peatatud või ainult täitmisel olevaid thread'e.
  • Käskluses 'info sharedlibrary' on Linuxi ja FreeBSD platvormidel tagatud aadresside kuvamine kogu mälu ulatusest, mis on eraldatud jagatud teekidele (varasemalt kuvati vaid baas- ja .text sektsiooni aadressid).
  • Tagatud on võimalus kasutada Linuxis olekuteateid (checkpoint) samal ajal, kui silutakse mitu protsessi.
  • Laienatud toeks linkimise nimede ruumide toetamine.
  • Vigade ja hoiatuste esitlemiseks on kasutusele võetud emoji sümbolid.
  • Linuxi platvormil on rakendatud sisseehitatud võimalus juurdepääsuks niitide kohalikele muutujaile (Thread-Local Storage, TLS), mida kasutatakse juhul, kui libthread_db teeki ei ole. Seda võimalust toetavad x86_64, aarch64, ppc64, s390x ja riscv arhitektuurid, kui neid ehitatakse koos GLIBC või MUSL-iga.
  • Lisatud käsk «set riscv numeric-register-names», et kuvada RISC-V registreid nende digitaalsete identifikaatorite abil, mitte ABI-nimede järgi.
  • Parandused Python API-s. Uued klassid gdb.Color ja gdb.ParameterPrefix, atribuut gdb.Value.is_unavailable, funktsioon gdb.warning(). Vanade Python'i versioonide tugi on lõpetatud – toetatakse ainult Python 3.4 ja uuemaid versioone.
  • Parandused Guile API-s. Lisatud tüüp «<gdb:color>».
  • DAP-i (Debugger Adapter Protocol) võimalusi on laiendatud: on rakendatud toetust «completions» päringutele ja lisatud valik «—binary-output», et keelduda ridade lõpusilmuste teisendamisest Windowsi platvormil.
  • Lisatud on muutujad $_colorsupport (terminaali toetatud värviruumide loetelu), $linker_namespace_count ja $_linker_namespace (aktiveeritud lingiraamatute nimede loetelu).
  • Lisatud on valikud „—disable-gdb-compile“ kompileerimisse töötluse keelamiseks, samuti „—disable-gdb-dwarf-support“ ja „—disable-gdb-mdebug-support“ DWARF ja mdebug/ecoff formaadis silumisinfo keelamiseks.
  • Gdbserveris on lõpetatud UST (staatilise jälgimispunkti) tugi.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster