Glibc 2.31 systeembibliotheek release

Na zes maanden ontwikkeling gepubliceerde vrijgave van de systeembibliotheek GNU C-bibliotheek (glibc) 2.31, die volledig voldoet aan de eisen van de ISO C11- en POSIX.1-2008-normen. De nieuwe release bevat oplossingen van 58 ontwikkelaars.

Van degenen die zijn geïmplementeerd in Glibc 2.31 verbeteringen je kunt opmerken:

  • Macro _ISOC2X_SOURCE toegevoegd om mogelijkheden in te schakelen die zijn gedefinieerd in het concept van de toekomstige ISO-standaard C2X. Deze functies zijn ook ingeschakeld bij gebruik van de macro _GNU_SOURCE of bij het inbouwen van gcc met de vlag “-std=gnu2x”;
  • Voor functies gedefinieerd in het headerbestand "math.h" die hun resultaten afronden op een kleiner type, worden de overeenkomstige generieke macro's voorgesteld in het bestand "tgmath.h", zoals vereist door de specificaties TS 18661-1:2014 en TS 18661-3: 2015;
  • Functie pthread_clockjoin_np() toegevoegd, die wacht tot de thread is voltooid, rekening houdend met de time-out (als de time-out optreedt voordat deze is voltooid, retourneert de functie een fout). in tegenstelling tot pthread_timedjoin_np(), in pthread_clockjoin_np() is het mogelijk om het type timer te definiëren voor het berekenen van de time-out - CLOCK_MONOTONIC (houdt rekening met de tijd die het systeem in de slaapmodus doorbrengt) of CLOCK_REALTIME;
  • De DNS-resolver ondersteunt nu de trust-ad-optie in /etc/resolv.conf en de RES_TRUSTAD-vlag in _res.options. Indien ingesteld, wordt de DNSSEC-vlag verzonden in DNS-verzoeken AD (geauthenticeerde gegevens). In deze modus wordt de door de server ingestelde AD-vlag beschikbaar voor toepassingen die functies als res_search() aanroepen. Als de voorgestelde opties niet zijn ingesteld, specificeert glibc standaard de AD-vlag niet in verzoeken en wist deze automatisch in antwoorden, wat aangeeft dat DNSSEC-controles ontbreken;
  • Voor het bouwen van werkende systeemaanroepbindingen voor Glibc is het niet langer nodig om de Linux-kernelheaderbestanden te installeren. De uitzondering is de 64-bits RISC-V-architectuur;
  • Uitgeschakeld kwetsbaarheid CVE-2019-19126, waarmee u de beveiliging kunt omzeilen
    ASLR in programma's met de setuid-vlag en bepaal de adreslay-out in geladen bibliotheken door manipulatie van de omgevingsvariabele LD_PREFER_MAP_32BIT_EXEC.

Wijzigingen die de compatibiliteit verbreken:

  • totalorder(), totalordermag() en vergelijkbare functies voor andere typen met drijvende komma accepteren nu pointers als argumenten om waarschuwingen over het converteren van waarden in status te elimineren NaN, in overeenstemming met de aanbevelingen van TS 18661-1 voorgesteld voor de toekomstige C2X-standaard.
    Bestaande uitvoerbare bestanden die drijvende-komma-argumenten rechtstreeks doorgeven, blijven zonder wijziging draaien;

  • De al lang verouderde functie stime is niet langer beschikbaar voor glibc-gekoppelde binaire bestanden, en de definitie ervan is verwijderd uit time.h. Gebruik de functie clock_settime om de systeemtijd in te stellen. In de toekomst zijn we van plan om de verouderde functie ftime te verwijderen, evenals het headerbestand sys/timeb.h (gettimeofday of clock_gettime moet worden gebruikt in plaats van ftime);
  • De functie gettimeofday geeft niet langer informatie door over de systeembrede tijdzone (deze functie was relevant in de tijd van 4.2-BSD en is al vele jaren verouderd). Het 'tzp'-argument moet nu als nulaanwijzer worden doorgegeven, en de localtime()-functie moet worden gebruikt om tijdzone-informatie te verkrijgen op basis van de huidige tijd. Als u gettimeofday aanroept met een argument dat niet nul is, 'tzp', worden de lege velden tz_minuteswest en tz_dsttime in de tijdzonestructuur geretourneerd. De functie gettimeofday zelf is verouderd onder POSIX (clock_gettime wordt aanbevolen in plaats van gettimeofday), maar er zijn geen plannen om deze uit glibc te verwijderen;
  • settimeofday ondersteunt niet langer het gelijktijdig doorgeven van parameters voor het instellen van de tijd en de tijdcorrigerende offset. Bij het aanroepen van settimeofday moet een van de argumenten (time of offset) nu op nul worden gezet, anders mislukt de functieaanroep met een EINVAL-fout. Net als gettimeofday is de functie settimeofday verouderd in POSIX en wordt aanbevolen deze te vervangen door de functie clock_settime of de adjtime-familie van functies;
  • Ondersteuning voor de SPARC ISA v7-architectuur is stopgezet (v8-ondersteuning blijft voorlopig behouden, maar alleen voor processors die CAS-instructies ondersteunen, zoals LEON-processors, niet SuperSPARC-processors).
  • Als het koppelen mislukt in "lui", waarin de linker niet naar symbolen van een functie zoekt tot de eerste aanroep van die functie, dwingt de dlopen-functie nu het proces te beëindigen (voorheen werd NULL geretourneerd bij falen);
  • Voor de MIPS hard-float ABI wordt nu de uitvoerbare stapel gebruikt, tenzij de build expliciet het gebruik van de Linux-kernel 4.8+ beperkt via de parameter “-enable-kernel=4.8.0” (met kernels tot 4.8 zijn crashes mogelijk waargenomen voor sommige MIPS-configuraties);
  • De bindingen rond systeemaanroepen gerelateerd aan tijdmanipulatie zijn verplaatst om de time64-systeemaanroep te gebruiken, indien aanwezig (op 32-bits systemen probeert glibc eerst nieuwe systeemaanroepen die het 64-bits tijdtype manipuleren, en als die er niet zijn, valt het weg terug naar de oude 32-bit oproepen).

Bron: opennet.ru

Voeg een reactie