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.31: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-toiminto ei enää välitä tietoja koko järjestelmän aikavyöhykkeestä (tämä ominaisuus oli merkityksellinen 4.2-BSD:n päivinä ja se on ollut vanhentunut useiden vuosien ajan). 'tzp'-argumentti tulisi nyt välittää nolla-osoitin, ja localtime()-funktiota tulisi käyttää aikavyöhyketietojen hankkimiseen nykyisen ajan perusteella. Gettimeofday kutsuminen nollasta poikkeavalla tzp-argumentilla palauttaa tyhjät tz_minuteswest- ja tz_dsttime-kentät aikavyöhykerakenteessa. Itse gettimeofday-funktio on vanhentunut POSIX:ssä (suositus on clock_gettime eikä gettimeofday), mutta sitä ei ole tarkoitus poistaa glibc:stä;
  • 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).
  • Jos pariliitos epäonnistuu "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