Efter sex mÄnaders utveckling utgÄvan av systembiblioteket (glibc) , som helt uppfyller kraven i standarderna ISO C11 och POSIX.1-2008. Den nya versionen inkluderar korrigeringar frÄn 58 utvecklare.
Bland de funktioner som implementerades i Glibc 2.31 Tillagd support för Synopsys ARC HS (ARCv2 ISA) processorer. För porteringen krÀvs minst binutils 2.32, gcc 8.3 och Linux-kÀrna 5.1. Tre varianter av ABI stöds: arc-linux-gnu, arc-linux-gnuhf och arceb-linux-gnu (big-endian);
- Lades makrot _ISOC2X_SOURCE till för att aktivera funktioner som definieras i utkastet till den framtida ISO-standarden . Dessa funktioner ingÄr ocksÄ vid anvÀndning av makrot _GNU_SOURCE eller vid kompilering i gcc med flaggan «-std=gnu2x»;
- För funktioner som definieras i headerfilen «math.h» och som rundar sina resultat till en mindre typ, föreslÄs motsvarande generiska makron i filen «tgmath.h», i enlighet med specifikationerna TS 18661-1:2014 och TS 18661-3:2015;
- En funktion pthread_clockjoin_np() har lagts till, som vĂ€ntar pĂ„ att en trĂ„d ska slutföras med hĂ€nsyn till en timeout (om timeouten intrĂ€ffar innan slutförandet, returnerar funktionen ett fel). Till skillnad frĂ„n , tillĂ„ter pthread_clockjoin_np() att en timer definieras för berĂ€kning av timeout â CLOCK_MONOTONIC (som tar hĂ€nsyn till tid spenderad av systemet i vilolĂ€ge) eller CLOCK_REALTIME;
- I DNS-upplösaren har stöd för alternativet trust-ad lagts till i /etc/resolv.conf och flaggan RES_TRUSTAD i _res.options, vilket innebÀr att DNSSEC-flaggan överförs i DNS-förfrÄgningar. (autentiserad data). I det hÀr lÀget blir den AD-flagga som stÀlls in av servern tillgÀnglig för program som anropar funktioner som liknar res_search(). Som standard, om de föreslagna alternativen inte Àr aktiverade, anger glibc inte AD-flaggan i förfrÄgningar och rensar den automatiskt i svar, vilket visar pÄ avsaknaden av DNSSEC-kontroll;
- För att bygga fungerande bindningar av systemanrop för Glibc krÀvs nu inte lÀngre installation av Linux-kÀrnans headerfiler. Undantaget Àr 64-bitars arkitektur RISC-V;
- Ă
tgÀrdad , vilken möjliggör ett kringgÄende av skyddet
ASLR i program med setuid-flaggan och bestÀmma adressernas layout i laddade bibliotek genom manipulation av miljövariabeln LD_PREFER_MAP_32BIT_EXEC.
Ăndringar som bryter kompatibilitet:
- I totalorder(), totalordermag() och liknande funktioner för andra typer med flyttal accepterar man nu pekare som argument för att undvika varningar om typkonvertering av vÀrden i tillstÄndet , i enlighet med rekommendationerna i TS 18661-1, föreslagna för den framtida standarden C2X.
Befintliga körbara filer, dÀr flyttalsargument överförs direkt, kommer att fortsÀtta att fungera utan Àndringar; - Den lÀnge efterlÀngtade och förÄldrade funktionen stime Àr nu inte tillgÀnglig för lÀnkar med glibc-binarier, och dess definition har tagits bort frÄn time.h. För att stÀlla in systemtiden bör funktionen clock_settime anvÀndas. I framtiden planeras Àven den förÄldrade funktionen ftime och headerfilen sys/timeb.h att tas bort (istÀllet för ftime bör gettimeofday eller clock_gettime anvÀndas);
- Funktionen gettimeofday överför numera inte uppgifter om systemets tidszon (denna möjlighet var relevant under 4.2-BSD och har lÀnge varit förÄldrad). I argumentet 'tzp' bör nu en nullpekare överföras, och för att fÄ information om tidszonen kopplad till den aktuella tiden bör funktionen localtime() anvÀndas. Vid anrop av gettimeofday med ett icke-null argument 'tzp' kommer de tomma fÀlten tz_minuteswest och tz_dsttime att returneras i timezone-strukturen. SjÀlva funktionen gettimeofday anses vara förÄldrad i POSIX (istÀllet för gettimeofday rekommenderas att anvÀnda clock_gettime), men den planeras inte att tas bort frÄn glibc;
- I settimeofday har stödet för att samtidigt skicka parametrar för att stÀlla in tiden och tidsskiftet upphört. Vid anrop av settimeofday mÄste en av argumenten (tid eller skift) nu sÀttas till null; annars kommer anropet att avslutas med felkoden EINVAL. Precis som gettimeofday anses funktionen settimeofday vara förÄldrad i POSIX och istÀllet rekommenderas att anvÀnda funktionen clock_settime eller funktionen adjtime;
- Stödet för SPARC ISA v7-arkitekturen har upphört (stödet för v8 Àr kvar men endast för processorer som stöder CAS-instruktioner, sÄsom LEON-processorer, men inte SuperSPARC-processorer).
- Vid en lÀnkfel i ''-lÀge, dÀr lÀnkaren inte söker efter funktsymboler förrÀn funktionen anropas första gÄngen, kommer funktionen dlopen nu att tvinga processens avslut (tidigare returnerades NULL vid fel);
- För ABI MIPS hard-float anvĂ€nds nu en exekveringsstack om inget specifikt begrĂ€nsningsval för Linux-kĂ€rna 4.8+ angivits vid kompilering med parametern 'âenable-kernel=4.8.0' (med kĂ€rnor innan 4.8 uppstĂ„r fel för vissa MIPS-konfigurationer);
- Bindningar över systemanrop relaterade till tidsmanipulation har översatts till att anvÀnda systemanropet time64, nÀr det Àr tillgÀngligt (pÄ 32-bitars system försöker glibc först anvÀnda de nya systemanrop som hanterar 64-bitars tidsdata, och om de inte finns, gÄr den tillbaka till de gamla 32-bitars anropen).
KĂ€lla: opennet.ru
