Efter sex mÄnaders utveckling har den systembibliotek GNU C Library 2.42 (glibc) slÀppts, som helt följer kraven i standarderna ISO C23 och POSIX.1-2024. 70 utvecklare deltog i skapandet av den nya versionen.
Bland de förbÀttringar som implementerats i Glibc 2.42 kan nÀmnas:
- Funktion pthread_create har fÄtt stöd för lÀtta skyddssidor för stacken (stack guard page), vars Ätkomst utlöser ett undantag och en krasch i processen (SIGSEGV). Implementeringen bygger pÄ flaggan MADV_GUARD_INSTALL som introducerades i systemanropet madvise, och som stöds frÄn och med Linux-kÀrnan 6.13. JÀmfört med mappning i PROT_NONE-lÀge möjliggör skyddssidor en mer effektiv blockering av kodens exekvering utanför det tilldelade minnesomrÄdet, eftersom deras skapande inte krÀver allokering av ett nytt omrÄde av virtuell minne.
- Nya funktioner för exponentiering och rotberÀkning compoundn, pown och powr, rootn och rsqrt, som definieras i standarden ISO C23, har lagts till och Äterspeglas i headerfilen math.h. Varianter av funktionerna har implementerats för typerna float, double, long double, _FloatN och _FloatNx, samt för den generiska typen frÄn tgmath.h.
- Funktionen pthread_gettid_np har implementerats pÄ Linux-plattformen, som likt funktionen gettid() returnerar ett unikt identifierare för trÄden, men skiljer sig med utökat felkontroll (vid osÀker beteende avslutas processen).
- Funktioner för att berÀkna absoluta vÀrden har lagts till och arbetar med osignerade typer: uabs, ulabs, ullabs och uimaxabs. Dessa funktioner kommer att ingÄ i den framtida C-standarden.
- Det har lagts till stöd för godtyckliga överföringshastigheter i programmeringsgrÀnssnittet termios.h pÄ Linux-plattformen. Typen speed_t har omdefinierats och motsvarar nu typen 'unsigned int', precis som i Linux-kÀrnan.
- I trÄdspecifik cache (tcache) som anvÀnds i funktionen malloc har stöd för caching av stora minnesblock lagts till. Den maximala blockstorleken kan omdefinieras via instÀllningen glibc.malloc.tcache_max, som kan ta vÀrden upp till 4194304. Cachearbetet för smÄ block har ocksÄ pÄskyndats.
- Alternativet '--enable-sframe' har lagts till i byggscriptet configure, vilket aktiverar stöd för SFrame-formatet, som anvÀnds för att presentera information om stackrutning och som stöds av funktionen backtrace. För att anvÀnda SFrame krÀvs minst versionen binutils 2.45.
- FrÄn projektet CORE-MATH har optimerade varianter av matematiska funktioner acospif, asinpif, atanpif, atan2pif, cospif, sinpif och tanpif överförts.
- TestuppsÀttningen har utvidgats avsevÀrt och tÀcker nu funktionaliteter hos olika varianter av printf- och scanf-familjerna.
- Kod har lagts till för att identifiera Intel-processorer baserade pÄ mikroarkitekturerna Arrow Lake, Panther Lake, Clearwater Forest och Diamond Rapids.
- Stöd för plattformen z17 (den nya generationens IBM Z/S390-mainframes) har lagts till.
- InstÀllningen glibc.rtld.execstack har lagts till stöd för kompatibilitetslÀge för program som krÀver exekverbar stack via dynamiskt laddade bibliotek.
- Headerfilen termio.h och definitionen av strukturen termio har tagits bort frÄn sys/ioctl.h. GrÀnssnittet termio.h har varit förÄldrat sedan POSIX.1 (1988) och ersatts med termios.h.
- För att bygga Glibc krÀvs nu minst versionerna GCC 12.1 och GNU Binutils 2.39.
- SÄrbarheter ÄtgÀrdade:
- CVE-2025-0395 â buffertöverskridning vid utförandet av funktionen assert(). Ăverskridningen intrĂ€ffar nĂ€r ett för stort programnamn (argv[0]) anges. Problemet betraktas som icke-farligt, eftersom 4 byte skrivs utanför bufferten, vars innehĂ„ll inte kan kontrolleras av en angripare. Det intressanta hĂ€r Ă€r faktumet av att en sĂ„rbarhet uppstĂ„r i felsökningsfunktioner pĂ„ grund av ett fel vid utmatning av det aktuella programmets namn.
- CVE-2025-5702, CVE-2025-5745 â sĂ„rbarheter i implementeringen av funktionerna strcmp och strncmp för Power10-processorer, vilket leder till krasch vid sparande och Ă„terstĂ€llande av vektorregerna v20-v31, som ska sparas mellan funktionsanrop. SĂ„rbarheten kan anvĂ€ndas för att skriva över eller bestĂ€mma innehĂ„llet i registerdata, som anvĂ€nds av andra funktioner.
- CVE-2025-8058 â en sĂ„rbarhet i funktionen regcomp, vilket leder till dubbel frigöring av minnet (double-free).
Det kan ocksÄ noteras att en uppsÀttning systemverktyg, GNU Binutils 2.45, har slÀppts, som inkluderar program som GNU linker, GNU assembler, nm, objdump, strings, strip.
I den nya versionen av Binutils:
- I GNU assembler:
- Stöd för de senaste tillÀggen för arkitekturerna RISC-V, LoongArch och AArch64 har lagts till. För x86 har stöd för instruktionerna XMODX, implementerade i Zhaoxin PadLock-processorer, lagts till. För RISC-V har stöd för instruktionerna ssqosid v1.0, ssnpm v1.0, smnpm v1.0, smmpm v1.0, sspm v1.0, supm v1.0, sha v1.0, zce v1.0, smcdeleg v1.0, ssccfg v1.0, svvptc v1.0, zilsd v1.0, zclsd v1.0, smrnmi v1.0, xtheadvdot v1.0, xmipscbop v1.0, xmipscmov v1.0, xmipsexectl v1.0 och xmipslsp v1.0 har lagts till.
- Data generation compatibility in SFrame format with the SFrame V2 specification has been ensured. Support for generating stack trace information (.sframe) from CFI directives on 64-bit s390 systems (s390x) has been added.
- Support for the .errif and .warnif directives has been added for outputting diagnostic messages when certain conditions are triggered.
- In the linker, support for an optional argument in the "--stats" option has been implemented, allowing the specification of a filename for saving resource consumption information at different stages of linking. The filename can also be specified via the LD_STATS environment variable. Support for new PLT (Procedure Linkage Table) formats has been added to the linker for RISC-V systems.
- Various improvements related to SFrame format support have been made. Functions for working with SFrame have been moved to the versioned library libsframe.so.2.
- Support for the RISC-V architecture has been expanded in the disassembler and the readelf utility.
KĂ€lla: opennet.ru
