Izlaidums sistēmas bibliotēkai Glibc 2.31

Pēc sešu mēnešu izstrādes publicēts sistēmas bibliotēkas izlaišana GNU C bibliotēka (glibc) 2.31, kas pilnībā atbilst ISO C11 un POSIX.1-2008 standartiem. Jaunajā laidienā ir iekļauti labojumi no 58 izstrādātājiem.

No Glibc 2.31 īstenotajiem uzlabojumi var izcelt:

  • Pievienots makro _ISOC2X_SOURCE, lai iekļautu iespējas, kas noteiktas nākotnes ISO standartā C2X. Šīs iespējas arī tiek iekļautas, izmantojot makro _GNU_SOURCE vai kompilējot gcc ar karogu «-std=gnu2x»;
  • Funkcijām, kas definētas «math.h» galvenes failā un kuru rezultāti ir noapaļoti mazāka izmēra tipiem, «tgmath.h» failā tiek piedāvāti atbilstoši ģeneriskā tipa makro, kā to prasa specifikācijas TS 18661-1:2014 un TS 18661-3:2015;
  • Pievienota funkcija pthread_clockjoin_np(), kas gaida pavediena pabeigšanu, ņemot vērā laika ierobežojumu (ja laika ierobežojums iestājas pirms pabeigšanas, funkcija atgriezīs kļūdu). Atšķirībā no pthread_timedjoin_np(), pthread_clockjoin_np() ļauj noteikt taimeru veidu laika ierobežojuma aprēķināšanai — CLOCK_MONOTONIC (ņem vērā laiku, kad sistēma bija miega režīmā) vai CLOCK_REALTIME;
  • DNS risinātāja moduli ir pievienota atbalsts trust-ad opcijai /etc/resolv.conf un karogam RES_TRUSTAD _res.options, kas ļauj DNS pieprasījumos nodot DNSSEC karogu AD (autentificēti dati). Šajā režīmā noteiktais servera AD karogs kļūst pieejams lietojumprogrammām, kas izsauc funkcijas, līdzīgas res_search(). Noklusējuma stāvoklī, ja piedāvātās opcijas nav izvēlētas, glibc nenorāda AD karogu pieprasījumos un automātiski to tīra atbildēs, kas norāda uz DNSSEC pārbaudes trūkumu;
  • Lai izveidotu funkcionālus sistēmas zvanu pielāgojumus Glibc, vairs nav nepieciešama Linux kodolu galvenes failu uzstādīšana. Izņēmums ir 64 bitu RISC-V arhitektūra;
  • Novērsta vulnerability CVE-2019-19126, kas ļauj apiet
    ASLR aizsardzību programmās ar setuid karogu un noteikt adreses klāšanu ielādējamās bibliotēkās, manipulējot ar LD_PREFER_MAP_32BIT_EXEC vides mainīgo.

Izmaiņas, kas pārkāpj saderību:

  • Funkcijas totalorder(), totalordermag() un līdzīgi citiem peldoša punkta tipiem tagad pieņem kā argumentus rādītājus, lai novērstu vērtību pārveidošanas brīdinājumus par stāvokli NaN, saskaņā ar TS 18661-1 ieteikumiem, kas paredzēti nākotnes C2X standartam.
    Esošie izpildfaili, kur argumenti ar peldošo punktu tiek nodoti tieši, turpinās darboties bez izmaiņām;
  • Ilgi izsludinātā novecojusī funkcija stime tagad nav pieejama glibc saistītiem binārajiem failiem, un tās definīcija ir izņemta no time.h. Sistēmas laika iestatīšanai jāizmanto funkcija clock_settime. Nākotnē plānots izņemt arī novecojušo funkciju ftime, kā arī galveni sys/timeb.h (vietā ftime jāizmanto gettimeofday vai clock_gettime);
  • Funkcija gettimeofday vairs nenodrošina informāciju par kopējo sistēmas laika joslu (šī iespēja bija aktuāla 4.2-BSD laikos un jau daudzus gadus bija pasludināta par novecojusi). Tagad argumentā 'tzp' jānodod nulles rādītājs, bet, lai iegūtu informāciju par laika joslu attiecībā uz pašreizējo laiku, jāizmanto funkcija localtime(). Izsaucot gettimeofday ar nicht null 'tzp' argumentu, tiks atgrieztas tukšas lauka tz_minuteswest un tz_dsttime struktūrā timezone. Paša funkcija gettimeofday tiek uzskatīta par novecojusi POSIX (vietā gettimeofday ieteicams izmantot clock_gettime), bet tās izņemšana no glibc nav plānota;
  • Funkcijā settimeofday tiek pārtraukta atbalsts vienlaicīgai parametru nodošanai laika un laika koriģējošā nobīdes iestatīšanai. Izsaucot settimeofday, viens no argumentiem (laiks vai nobīde) tagad obligāti jās noregulē uz nulles vērtību, citādi funkcijas izsaukums beigsies ar kļūdas EINVAL paziņojumu. Tāpat kā gettimeofday funkcija settimeofday tiek uzskatīta par novecojusi POSIX un vietā ieteicams izmantot funkciju clock_settime vai funkciju grupu adjtime;
  • Atbalsts SPARC ISA v7 arhitektūrai ir pārtraukts (v8 atbalsts joprojām tiek saglabāts, bet tikai procesoriem ar CAS instrukciju atbalstu, piemēram, LEON procesori, bet ne SuperSPARC procesori);
  • Ja saistīšana neizdodas režīmā «lazy«, kurā linker nesāk simbolu meklēšanu funkcijas pirmajā izsaukumā, funkcija dlopen tagad piespiedu kārtā pārtrauc procesa izpildi (iepriekš, ja neizdevās, tika atgriezts NULL);
  • MIPS hard-float ABI tagad izmanto izpildes steku, ja kompilācijas laikā nav skaidri norādīts ierobežojums izmantot Linux 4.8+ kodolu ar parametru «—enable-kernel=4.8.0» (ar kodoliem līdz 4.8 ir novērojamas kļūdas dažām MIPS konfigurācijām);
  • Sistēmas izsaukumu apvīšanas funkcijas, kas saistītas ar laika manipulācijām, ir pielāgotas izmantot sistēmas izsaukumu time64, ja tas ir pieejams (32-bit sistēmās glibc vispirms mēģina izmantot jaunās sistēmas izsaukumu, kas manipulē ar 64-bit laika tipu, un, ja tos nav, atgriežas pie vecajiem 32-bit izsaukumiem).

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster