Glibc 2.31 sistemos bibliotekos leidimas

Po šešių mėnesių vystymosi paskelbti sistemos bibliotekos leidimas GNU C biblioteka (glibc) 2.31, kuris visiškai atitinka ISO C11 ir POSIX.1-2008 standartų reikalavimus. Naujajame leidime yra 58 kūrėjų pataisymai.

Iš įdiegtų Glibc 2.31 patobulinimai galite atkreipti dėmesį:

  • Pridėta _ISOC2X_SOURCE makrokomanda, kad būtų įgalintos būsimame ISO standarto projekte apibrėžtos galimybės C2X. Šios funkcijos taip pat įjungtos naudojant makrokomandą _GNU_SOURCE arba kuriant gcc su žyma „-std=gnu2x“;
  • Antraštės faile „math.h“ apibrėžtoms funkcijoms, kurios apvalina rezultatus iki mažesnio tipo, faile „tgmath.h“ siūlomos atitinkamos bendrojo tipo makrokomandos, kaip reikalaujama pagal specifikacijas TS 18661-1:2014 ir TS. 18661-3: 2015;
  • Pridėta pthread_clockjoin_np() funkcija, kuri laukia, kol gija bus baigta, atsižvelgiant į skirtąjį laiką (jei laikas pasibaigs prieš užbaigimą, funkcija grąžins klaidą). Skirtingai nei pthread_timedjoin_np(), pthread_clockjoin_np() galima apibrėžti skirtojo laiko skaičiavimo laikmačio tipą - CLOCK_MONOTONIC (atsižvelgiama į sistemos praleistą laiką miego režimu) arba CLOCK_REALTIME;
  • DNS sprendiklis dabar palaiko pasitikėjimo skelbimo parinktį /etc/resolv.conf ir RES_TRUSTAD žymą _res.options, kai nustatyta, DNSSEC vėliavėlė perduodama DNS užklausose AD (autentifikuoti duomenys). Šiuo režimu serverio nustatyta AD vėliavėlė tampa prieinama programoms, kurios iškviečia tokias funkcijas kaip res_search(). Pagal numatytuosius nustatymus, jei siūlomos parinktys nenustatytos, glibc nenurodo AD vėliavėlės užklausose ir automatiškai ją išvalo atsakymuose, nurodydamas, kad trūksta DNSSEC patikrų;
  • Kuriant veikiančius Glibc sistemos skambučių susiejimus, nebereikia įdiegti Linux branduolio antraštės failų. Išimtis yra 64 bitų RISC-V architektūra;
  • Pašalinta pažeidžiamumas CVE-2019-19126, kuri leidžia apeiti apsaugą
    ASLR programose su setuid vėliava ir nustatykite adresų išdėstymą įkeltose bibliotekose manipuliuodami aplinkos kintamuoju LD_PREFER_MAP_32BIT_EXEC.

Pakeitimai, kurie pažeidžia suderinamumą:

  • totalorder(), totalordermag() ir panašios kitų slankiojo kablelio tipų funkcijos dabar priima rodykles kaip argumentus, kad pašalintų įspėjimus apie reikšmių konvertavimą būsenoje NaN, pagal TS 18661-1 rekomendacijas, siūlomas būsimam C2X standartui.
    Esami vykdomieji failai, tiesiogiai perduodantys slankiojo kablelio argumentus, ir toliau bus vykdomi be pakeitimų;

  • Seniai nebenaudojama stime funkcija nebepasiekiama su glibc susietiems dvejetainiams failams, o jos apibrėžimas buvo pašalintas iš time.h. Norėdami nustatyti sistemos laiką, naudokite funkciją clock_settime. Ateityje planuojame pašalinti nebenaudojamą ftime funkciją, taip pat sys/timeb.h antraštės failą (vietoj ftime reikėtų naudoti gettimeofday arba clock_gettime);
  • Funkcija gettimeofday nebeperduoda informacijos apie visos sistemos laiko juostą (ši funkcija buvo aktuali 4.2-BSD laikais ir buvo nebenaudojama daugelį metų). Argumentas „tzp“ dabar turėtų būti perduotas nuliui, o funkcija localtime() turėtų būti naudojama norint gauti informaciją apie laiko juostą pagal dabartinį laiką. Iškvietus gettimeofday naudojant ne nulinį „tzp“ argumentą, laiko juostos struktūroje bus pateikti tušti tz_minuteswest ir tz_dsttime laukai. Pati funkcija gettimeofday yra nebenaudojama pagal POSIX (rekomenduojama clock_gettime vietoj gettimeofday), bet neplanuojama jos pašalinti iš glibc;
  • settimeofday nebepalaiko vienu metu perduodamų parametrų, skirtų laikui nustatyti ir laiko koregavimo poslinkiui. Iškviečiant settimeofday, vienas iš argumentų (laikas arba poslinkis) turi būti nustatytas į nulį, kitaip funkcijos iškvietimas nepavyks dėl EINVAL klaidos. Kaip ir gettimeofday, funkcija settimeofday yra nebenaudojama POSIX ir ją rekomenduojama pakeisti funkcija clock_settime arba adjtime funkcijų šeima;
  • SPARC ISA v7 architektūros palaikymas buvo nutrauktas (v8 palaikymas kol kas išsaugomas, bet tik procesoriams, kurie palaiko CAS instrukcijas, pvz., LEON procesoriams, o ne SuperSPARC procesoriams).
  • Jei susieti nepavyksta "tingus", kurioje linkeris neieško funkcijos simbolių iki pirmojo tos funkcijos iškvietimo, funkcija dlopen dabar priverčia procesą nutraukti (anksčiau grąžino NULL, kai nepavyksta);
  • MIPS „hard-float“ ABI dabar naudojamas vykdomasis dėklas, nebent versijoje aiškiai apribotas „Linux 4.8+“ branduolio naudojimas naudojant parametrą „-enable-kernel=4.8.0“ (su branduoliais iki 4.8, strigtys pastebėta kai kurioms MIPS konfigūracijoms);
  • Sistemos iškvietimų, susijusių su laiko manipuliavimu, susiejimas buvo perkeltas į time64 sistemos iškvietimą, jei toks yra (32 bitų sistemose glibc pirmiausia išbando naujus sistemos iškvietimus, kurie manipuliuoja 64 bitų laiko tipu, o jei jų nėra, nukrenta grįžti prie senųjų 32 bitų skambučių).

Šaltinis: opennet.ru

Добавить комментарий