Versió de la biblioteca del sistema Glibc 2.31

Després de sis mesos de desenvolupament publicat llançament de la biblioteca del sistema Biblioteca GNU C (glibc) 2.31, que compleix totalment els requisits de les normes ISO C11 i POSIX.1-2008. La nova versió inclou correccions de 58 desenvolupadors.

Dels implementats a Glibc 2.31 millores es pot observar:

  • S'ha afegit la macro _ISOC2X_SOURCE per habilitar les capacitats definides a l'esborrany de la futura norma ISO C2X. Aquestes funcions també estan habilitades quan s'utilitza la macro _GNU_SOURCE o quan es construeix a gcc amb el senyalador “-std=gnu2x”;
  • Per a les funcions definides al fitxer de capçalera "math.h" que arrodoneixen els seus resultats a un tipus més petit, les macros de tipus genèric corresponents es proposen al fitxer "tgmath.h", tal com exigeixen les especificacions TS 18661-1:2014 i TS 18661-3: 2015;
  • S'ha afegit la funció pthread_clockjoin_np(), que espera que es completi el fil, tenint en compte el temps d'espera (si el temps d'espera es produeix abans de completar-se, la funció retornarà un error). A diferència pthread_timedjoin_np(), a pthread_clockjoin_np() és possible definir el tipus de temporitzador per calcular el temps d'espera - CLOCK_MONOTONIC (té en compte el temps que passa el sistema en mode de suspensió) o CLOCK_REALTIME;
  • El resolutor de DNS ara admet l'opció trust-ad a /etc/resolv.conf i el senyalador RES_TRUSTAD a _res.options, quan s'estableix, el senyalador DNSSEC es transmet a les sol·licituds de DNS AD (dades autenticades). En aquest mode, la marca AD establerta pel servidor està disponible per a aplicacions que criden a funcions com res_search(). De manera predeterminada, si les opcions suggerides no estan definides, la glibc no especifica la marca AD a les sol·licituds i l'esborra automàticament a les respostes, indicant que falten les comprovacions DNSSEC;
  • La creació d'enllaços de trucades de sistema de treball per a Glibc ja no requereix instal·lar els fitxers de capçalera del nucli de Linux. L'excepció és l'arquitectura RISC-V de 64 bits;
  • Eliminat vulnerabilitat CVE-2019-19126, que us permet evitar la protecció
    ASLR en programes amb el senyalador setuid i determineu la disposició de l'adreça a les biblioteques carregades mitjançant la manipulació de la variable d'entorn LD_PREFER_MAP_32BIT_EXEC.

Canvis que trenquen la compatibilitat:

  • totalorder(), totalordermag() i funcions similars per a altres tipus de coma flotant ara accepten punters com a arguments per eliminar els avisos sobre la conversió de valors en estat NaN, d'acord amb les recomanacions de TS 18661-1 proposades per al futur estàndard C2X.
    Els executables existents que passen arguments de coma flotant directament es continuaran executant sense modificacions;

  • La funció stime fa temps obsoleta ja no està disponible per als binaris enllaçats amb glibc i la seva definició s'ha eliminat de time.h. Per configurar l'hora del sistema, utilitzeu la funció clock_settime. En el futur, tenim previst eliminar la funció ftime obsoleta, així com el fitxer de capçalera sys/timeb.h (s'hauria d'utilitzar gettimeofday o clock_gettime en comptes de ftime);
  • La funció gettimeofday ja no passa informació sobre la zona horària de tot el sistema (aquesta característica era rellevant en els dies de 4.2-BSD i ha estat obsoleta durant molts anys). Ara s'ha de passar a l'argument 'tzp' un punter nul i la funció localtime() s'hauria d'utilitzar per obtenir informació de la zona horària basada en l'hora actual. La crida a gettimeofday amb un argument "tzp" diferent de zero retornarà els camps buits tz_minuteswest i tz_dsttime a l'estructura de la zona horària. La pròpia funció gettimeofday està obsoleta sota POSIX (es recomana clock_gettime en lloc de gettimeofday), però no hi ha plans per eliminar-la de glibc;
  • settimeofday ja no admet el pas simultània de paràmetres per configurar l'hora i el desplaçament de correcció del temps. Quan es crida a settimeofday, un dels arguments (hora o desplaçament) s'ha d'establir com a nul, en cas contrari, la trucada de funció fallarà amb un error EINVAL. Igual que gettimeofday, la funció settimeofday està obsoleta a POSIX i es recomana substituir-la per la funció clock_settime o la família de funcions adjtime;
  • El suport per a l'arquitectura SPARC ISA v7 s'ha interromput (per ara es manté el suport v8, però només per als processadors que admeten instruccions CAS, com els processadors LEON, no els processadors SuperSPARC).
  • Si l'aparellament falla a "mandrós", en què l'enllaçador no cerca símbols d'una funció fins a la primera crida a aquesta funció, la funció dlopen ara obliga el procés a finalitzar (anteriorment retornava NULL en cas d'error);
  • Per a l'ABI de flotació dura MIPS, ara s'utilitza la pila executable, tret que la compilació restringeixi explícitament l'ús del nucli Linux 4.8+ mitjançant el paràmetre "-enable-kernel=4.8.0" (amb nuclis fins a 4.8, els bloquejos són observat per a algunes configuracions MIPS);
  • Els vincles al voltant de les trucades del sistema relacionades amb la manipulació del temps s'han mogut per utilitzar la trucada del sistema time64, si n'hi ha (en sistemes de 32 bits, primer la glibc prova noves trucades al sistema que manipulen el tipus de temps de 64 bits i, si no n'hi ha cap, cau. tornar a les antigues trucades de 32 bits).

Font: opennet.ru

Afegeix comentari