Rilascio della libreria di sistema Glibc 2.31

Dopo sei mesi di sviluppo pubblicato rilascio della libreria di sistema Libreria GNU C (glibc) 2.31, che è pienamente conforme ai requisiti degli standard ISO C11 e POSIX.1-2008. La nuova versione include correzioni di 58 sviluppatori.

Da quelli implementati in Glibc 2.30 miglioramenti puoi notare:

  • Aggiunta la macro _ISOC2X_SOURCE per abilitare le funzionalità definite nella bozza del futuro standard ISO C2X. Queste funzionalità sono abilitate anche quando si utilizza la macro _GNU_SOURCE o quando si compila in gcc con il flag “-std=gnu2x”;
  • Per le funzioni definite nel file header "math.h" che arrotondano i risultati a un tipo più piccolo, le corrispondenti macro di tipo generico vengono proposte nel file "tgmath.h", come richiesto dalle specifiche TS 18661-1:2014 e TS 18661-3: 2015;
  • Aggiunta la funzione pthread_clockjoin_np(), che attende il completamento del thread, tenendo conto del timeout (se il timeout si verifica prima del completamento, la funzione restituirà un errore). A differenza di pthread_timedjoin_np(), in pthread_clockjoin_np() è possibile definire il tipo di timer per il calcolo del timeout - CLOCK_MONOTONIC (tiene conto del tempo trascorso dal sistema in modalità sospensione) o CLOCK_REALTIME;
  • Il risolutore DNS ora supporta l'opzione trust-ad in /etc/resolv.conf e il flag RES_TRUSTAD in _res.options, quando impostato, il flag DNSSEC viene trasmesso nelle richieste DNS AD (dati autenticati). In questa modalità, il flag AD impostato dal server diventa disponibile per le applicazioni che chiamano funzioni come res_search(). Per impostazione predefinita, se le opzioni suggerite non sono impostate, glibc non specifica il flag AD nelle richieste e lo cancella automaticamente nelle risposte, indicando che mancano i controlli DNSSEC;
  • Per creare collegamenti di chiamate di sistema funzionanti per Glibc non è più necessario installare i file di intestazione del kernel Linux. L'eccezione è l'architettura RISC-V a 64 bit;
  • Eliminato vulnerabilità CVE-2019-19126, che consente di bypassare la protezione
    ASLR nei programmi con il flag setuid e determina il layout dell'indirizzo nelle librerie caricate attraverso la manipolazione della variabile d'ambiente LD_PREFER_MAP_32BIT_EXEC.

Modifiche che interrompono la compatibilità:

  • totalorder(), totalordermag() e funzioni simili per altri tipi a virgola mobile ora accettano puntatori come argomenti per eliminare gli avvisi sulla conversione dei valori nello stato NaN, in conformità con le raccomandazioni della TS 18661-1 proposta per il futuro standard C2X.
    Gli eseguibili esistenti che passano direttamente argomenti in virgola mobile continueranno a essere eseguiti senza modifiche;

  • La funzione stima, da tempo deprecata, non è più disponibile per i binari collegati a glibc e la sua definizione è stata rimossa da time.h. Per impostare l'ora del sistema, utilizzare la funzione clock_settime. In futuro, prevediamo di rimuovere la funzione ftime deprecata, così come il file di intestazione sys/timeb.h (gettimeofday o clock_gettime dovrebbero essere usati al posto di ftime);
  • La funzione gettimeofday non trasmette più informazioni sul fuso orario dell'intero sistema (questa funzionalità era rilevante ai tempi di 4.2-BSD ed è stata deprecata da molti anni). All'argomento 'tzp' dovrebbe ora essere passato un puntatore nullo e la funzione localtime() dovrebbe essere utilizzata per ottenere informazioni sul fuso orario in base all'ora corrente. Chiamare gettimeofday con un argomento 'tzp' diverso da zero restituirà i campi vuoti tz_minuteswest e tz_dsttime nella struttura del fuso orario. La stessa funzione gettimeofday è deprecata in POSIX (si consiglia clock_gettime invece di gettimeofday), ma non ci sono piani per rimuoverla da glibc;
  • settimeofday non supporta più il passaggio simultaneo di parametri per l'impostazione dell'ora e l'offset per la correzione dell'ora. Quando si chiama settimeofday, uno degli argomenti (ora o offset) deve ora essere impostato su null, altrimenti la chiamata alla funzione fallirà con un errore EINVAL. Come gettimeofday, la funzione settimeofday è deprecata in POSIX e se ne consiglia la sostituzione con la funzione clock_settime o con la famiglia di funzioni adjtime;
  • Il supporto per l'architettura SPARC ISA v7 è stato interrotto (il supporto v8 è mantenuto per ora, ma solo per i processori che supportano le istruzioni CAS, come i processori LEON, non i processori SuperSPARC).
  • Se l'accoppiamento non riesce in "pigro", in cui il linker non cerca i simboli di una funzione fino alla prima chiamata a quella funzione, la funzione dlopen ora forza la terminazione del processo (in precedenza restituiva NULL in caso di fallimento);
  • Per l'ABI hard-float MIPS, viene ora utilizzato lo stack eseguibile, a meno che la build non limiti esplicitamente l'uso del kernel Linux 4.8+ tramite il parametro "-enable-kernel=4.8.0" (con kernel fino a 4.8, gli arresti anomali sono osservato per alcune configurazioni MIPS);
  • I vincoli attorno alle chiamate di sistema relative alla manipolazione del tempo sono stati spostati per usare la chiamata di sistema time64, se presente (sui sistemi a 32 bit, glibc prova prima nuove chiamate di sistema che manipolano il tipo di tempo a 64 bit, e se non ce ne sono, cade tornando alle vecchie chiamate a 32 bit).

Fonte: opennet.ru

Aggiungi un commento