Glibc 2.31 sistēmas bibliotēkas laidiens

Pēc sešu mēnešu attīstības publicēta sistēmas bibliotēkas izlaidums GNU C bibliotēka (glibc) 2.31, kas pilnībā atbilst ISO C11 un POSIX.1-2008 standartu prasībām. Jaunajā laidienā ir iekļauti 58 izstrādātāju labojumi.

No tiem, kas ieviesti Glibc 2.31 uzlabojumi Jūs varat atzīmēt:

  • Pievienots _ISOC2X_SOURCE makro, lai iespējotu iespējas, kas definētas nākotnes ISO standarta projektā C2X. Šīs funkcijas ir iespējotas arī, izmantojot makro _GNU_SOURCE vai veidojot gcc ar karogu “-std=gnu2x”;
  • Funkcijām, kas definētas galvenes failā "math.h", kuras rezultātus noapaļo līdz mazākam tipam, failā "tgmath.h" tiek piedāvāti atbilstošie vispārīgā tipa makro, kā to pieprasa specifikācijas TS 18661-1:2014 un TS. 18661-3: 2015;
  • Pievienota funkcija pthread_clockjoin_np(), kas gaida pavediena pabeigšanu, ņemot vērā taimautu (ja taimauts iestājas pirms pabeigšanas, funkcija atgriezīs kļūdu). Atšķirībā no pthread_timedjoin_np(), programmā pthread_clockjoin_np() iespējams definēt taimera veidu taimauta aprēķināšanai - CLOCK_MONOTONIC (ņem vērā laiku, ko sistēma pavada miega režīmā) vai CLOCK_REALTIME;
  • DNS atrisinātājs tagad atbalsta uzticamības reklāmas opciju failā /etc/resolv.conf un RES_TRUSTAD karodziņu failā _res.options, kad tas ir iestatīts, DNSSEC karodziņš tiek pārsūtīts DNS pieprasījumos. AD (autentificēti dati). Šajā režīmā servera iestatītais AD karodziņš kļūst pieejams lietojumprogrammām, kas izsauc tādas funkcijas kā res_search(). Pēc noklusējuma, ja ieteiktās opcijas nav iestatītas, glibc pieprasījumos nenorāda AD karogu un automātiski to notīra atbildēs, norādot, ka trūkst DNSSEC pārbaužu;
  • Lai izveidotu funkcionējošus Glibc sistēmas zvanu saistījumus, vairs nav jāinstalē Linux kodola galvenes faili. Izņēmums ir 64 bitu RISC-V arhitektūra;
  • Likvidēts ievainojamība CVE-2019-19126, kas ļauj apiet aizsardzību
    ASLR programmās ar karodziņu setuid un nosaka adreses izkārtojumu ielādētās bibliotēkās, manipulējot ar vides mainīgo LD_PREFER_MAP_32BIT_EXEC.

Izmaiņas, kas traucē saderību:

  • totalorder(), totalordermag() un līdzīgas funkcijas citiem peldošā komata veidiem tagad pieņem norādes kā argumentus, lai novērstu brīdinājumus par vērtību konvertēšanu stāvoklī NaN, saskaņā ar TS 18661-1 ieteikumiem, kas ierosināti nākotnes C2X standartam.
    Esošie izpildāmie faili, kas tieši nodod peldošā komata argumentus, turpinās darboties bez izmaiņām;

  • Ilgi novecojušā stime funkcija vairs nav pieejama ar glibc saistītajiem binārajiem failiem, un tās definīcija ir noņemta no time.h. Lai iestatītu sistēmas laiku, izmantojiet funkciju clock_settime. Nākotnē mēs plānojam noņemt novecojušo ftime funkciju, kā arī sys/timeb.h galvenes failu (ftime vietā jāizmanto gettimeofday vai clock_gettime);
  • Funkcija gettimeofday vairs nenodod informāciju par visas sistēmas laika joslu (šī funkcija bija aktuāla 4.2-BSD laikos, un tā ir novecojusi daudzus gadus). Arguments “tzp” tagad ir jānodod nulles rādītājam, un ir jāizmanto funkcija localtime(), lai iegūtu informāciju par laika joslu, pamatojoties uz pašreizējo laiku. Gettimeofday izsaukšana ar argumentu “tzp”, kas nav nulle, laika joslas struktūrā atgriezīs tukšos laukus tz_minuteswest un tz_dsttime. Pati funkcija gettimeofday ir novecojusi saskaņā ar POSIX (ieteicams clock_gettime, nevis gettimeofday), taču nav plānots to noņemt no glibc;
  • settimeofday vairs neatbalsta vienlaicīgu parametru nodošanu laika iestatīšanai un laika korekcijas nobīdi. Izsaucot settimeofday, vienam no argumentiem (laikam vai nobīdei) tagad jābūt iestatītam uz nulli, pretējā gadījumā funkcijas izsaukums neizdosies ar EINVAL kļūdu. Tāpat kā gettimeofday funkcija settimeofday ir novecojusi POSIX, un to ieteicams aizstāt ar funkciju clock_settime vai funkciju saimi adjtime;
  • SPARC ISA v7 arhitektūras atbalsts ir pārtraukts (v8 atbalsts pagaidām tiek saglabāts, taču tikai procesoriem, kas atbalsta CAS instrukcijas, piemēram, LEON procesoriem, nevis SuperSPARC procesoriem).
  • Ja savienošana pārī neizdodas "slinks", kurā saistītājs nemeklē funkcijas simbolus līdz pirmajam šīs funkcijas izsaukumam, funkcija dlopen tagad piespiež procesu pārtraukt (iepriekš atgriež NULL, ja rodas kļūda);
  • MIPS grūti peldošajam ABI tagad tiek izmantots izpildāmais steks, ja vien būvējums nepārprotami neierobežo Linux 4.8+ kodola izmantošanu, izmantojot parametru “-enable-kernel=4.8.0” (ar kodoliem līdz 4.8, avārijas ir novērota dažām MIPS konfigurācijām);
  • Saistības ap sistēmas izsaukumiem, kas saistīti ar laika manipulācijām, ir pārvietoti, lai izmantotu time64 sistēmas izsaukumu, ja tāds ir (32 bitu sistēmās glibc vispirms izmēģina jaunus sistēmas izsaukumus, kas manipulē ar 64 bitu laika tipu, un, ja tādu nav, tad tas atkrīt atpakaļ pie vecajiem 32 bitu zvaniem).

Avots: opennet.ru

Pievieno komentāru