Glibc 2.31 System Library -julkaisu

Kuuden kuukauden kehitystyön jälkeen julkaistu järjestelmäkirjaston julkaisu GNU C -kirjasto (glibc) 2.31, joka täyttää täysin ISO C11- ja POSIX.1-2008 -standardien vaatimukset. Uusi julkaisu sisältää korjauksia 58 kehittäjältä.

Glibc 2.30:ssa toteutetuista parannuksia voit huomata:

  • Lisätty _ISOC2X_SOURCE-makro tulevan ISO-standardin luonnoksessa määriteltyjen ominaisuuksien mahdollistamiseksi C2X. Nämä ominaisuudet ovat käytössä myös käytettäessä makroa _GNU_SOURCE tai kun rakennetaan gcc:ssä "-std=gnu2x"-lipulla;
  • Otsikkotiedostossa "math.h" määritellyille funktioille, jotka pyöristävät tulokset pienempään tyyppiin, tiedostossa "tgmath.h" ehdotetaan vastaavia yleisiä tyyppimakroja, kuten TS 18661-1:2014 ja TS vaativat. 18661-3: 2015;
  • Lisätty pthread_clockjoin_np()-funktio, joka odottaa säikeen valmistumista ottaen huomioon aikakatkaisun (jos aikakatkaisu tapahtuu ennen valmistumista, funktio palauttaa virheen). Toisin kuin pthread_timedjoin_np(), kohdassa pthread_clockjoin_np() on mahdollista määrittää ajastimen tyyppi aikakatkaisun laskemiseksi - CLOCK_MONOTONIC (ottaa huomioon järjestelmän lepotilassa käyttämän ajan) tai CLOCK_REALTIME;
  • DNS-selvijä tukee nyt /etc/resolv.conf-tiedoston luottamus-ad-vaihtoehtoa ja _res.options-tiedoston RES_TRUSTAD-lippua. Kun se on asetettu, DNSSEC-lippu lähetetään DNS-pyynnöissä. AD (todennettu tieto). Tässä tilassa palvelimen asettama AD-lippu tulee saataville sovelluksille, jotka kutsuvat toimintoja, kuten res_search(). Oletuksena, jos ehdotettuja asetuksia ei ole asetettu, glibc ei määritä AD-lippua pyynnöissä ja tyhjentää sen automaattisesti vastauksissa, mikä osoittaa, että DNSSEC-tarkistukset puuttuvat.
  • Toimivien järjestelmäkutsusidosten luominen Glibcille ei enää vaadi Linux-ytimen otsikkotiedostojen asentamista. Poikkeuksena on 64-bittinen RISC-V-arkkitehtuuri;
  • Eliminoitu haavoittuvuus CVE-2019-19126, jonka avulla voit ohittaa suojauksen
    ASLR ohjelmissa, joissa on lippu setuid, ja määrittää osoiteasettelu ladatuissa kirjastoissa muokkaamalla ympäristömuuttujaa LD_PREFER_MAP_32BIT_EXEC.

Yhteensopivuuden rikkovat muutokset:

  • totalorder(), totalordermag() ja vastaavat funktiot muille liukulukutyypeille hyväksyvät nyt osoittimet argumentteina poistaakseen varoitukset arvojen muuntamisesta tilassa NaN, tulevaa C18661X-standardia varten ehdotetun TS 1-2:n suositusten mukaisesti.
    Olemassa olevat suoritettavat tiedostot, jotka välittävät liukulukuargumentit suoraan, jatkuvat ilman muutoksia.

  • Pitkään vanhentunut stime-toiminto ei ole enää saatavilla glibc-linkitetyille binääritiedostoille, ja sen määritelmä on poistettu time.h:sta. Voit asettaa järjestelmän ajan käyttämällä toimintoa clock_settime. Tulevaisuudessa aiomme poistaa vanhentuneen ftime-funktion sekä sys/timeb.h-otsikkotiedoston (gettimeofday tai clock_gettime tulisi käyttää ftime-funktion sijaan);
  • Функция gettimeofday отныне не передаёт сведения о общесистемном часовом поясе (данная возможность была актуальна во времена 4.2-BSD и много лет объявлена устаревшей). В аргументе ‘tzp’ теперь следует передавать нулевой указатель, а для получения сведений о часовом поясе в привязке к текущему времени использовать функцию localtime(). При вызове gettimeofday с ненулевым аргументом ‘tzp’ будут возвращены пустые поля tz_minuteswest и tz_dsttime в структуре timezone. Сама функция gettimeofday считается устаревшей в POSIX (вместо gettimeofday рекомендуется использовать clock_gettime), но удалять её из glibc не планируется;
  • settimeofday ei enää tue parametrien samanaikaista välittämistä kellonajan ja aikakorjaavan siirtymän asettamiseen. Kutsuttaessa settimeofday yksi argumenteista (aika tai offset) on nyt asetettava nollaksi, muuten funktiokutsu epäonnistuu EINVAL-virheen takia. Kuten gettimeofday, settimeofday-funktio on vanhentunut POSIXissa, ja se suositellaan korvattavaksi clock_settime-funktiolla tai adjtime-funktioperheellä.
  • SPARC ISA v7 -arkkitehtuurin tuki on lopetettu (v8-tuki säilyy toistaiseksi, mutta vain CAS-käskyjä tukeville prosessoreille, kuten LEON-prosessoreille, ei SuperSPARC-prosessoreille).
  • В случает сбоя связывания в режиме «laiska", jossa linkkeri ei etsi funktion symboleja ennen ensimmäistä kutsua kyseiselle funktiolle, dlopen-funktio pakottaa nyt prosessin lopettamaan (aiemmin palauttaa NULL-arvon epäonnistuessa);
  • MIPS hard-float ABI:ssa käytetään nyt suoritettavaa pinoa, ellei koontiversio nimenomaisesti rajoita Linux-ytimen 4.8+ käyttöä parametrin "-enable-kernel=4.8.0" kautta (ytimen versiossa 4.8 asti, kaatumiset ovat havaittu joissakin MIPS-kokoonpanoissa);
  • Aikamanipulaatioon liittyvien järjestelmäkutsujen sidokset on siirretty käyttämään time64-järjestelmäkutsua, jos se on olemassa (32-bittisissä järjestelmissä glibc yrittää ensin uusia järjestelmäkutsuja, jotka käsittelevät 64-bittistä aikatyyppiä, ja jos niitä ei ole, putoaa takaisin vanhoihin 32-bittisiin puheluihin).

Lähde: opennet.ru

Lisää kommentti