Versión da biblioteca do sistema Glibc 2.31

Despois de seis meses de desenvolvemento publicado versión da biblioteca do sistema Biblioteca GNU C (glibc) 2.31, que cumpre totalmente cos requisitos da ISO C11 e POSIX.1-2008. A nova versión inclúe correccións de 58 desenvolvedores.

Implementado en Glibc 2.30 melloras podes notar:

  • Engadiuse a macro _ISOC2X_SOURCE para habilitar as capacidades definidas no borrador do futuro estándar ISO C2X. Estas funcións tamén están habilitadas cando se usa a macro _GNU_SOURCE ou cando se crea en gcc coa marca “-std=gnu2x”;
  • Para as funcións definidas no ficheiro de cabeceira "math.h" que redondean os seus resultados a un tipo máis pequeno, as macros de tipo xenérico correspondentes propóñense no ficheiro "tgmath.h", tal e como requiren as especificacións TS 18661-1:2014 e TS. 18661-3: 2015;
  • Engadiuse a función pthread_clockjoin_np(), que agarda a que se complete o fío, tendo en conta o tempo de espera (se o tempo de espera ocorre antes de completarse, a función devolverá un erro). A diferenza pthread_timedjoin_np(), en pthread_clockjoin_np() é posible definir o tipo de temporizador para calcular o tempo de espera - CLOCK_MONOTONIC (ten en conta o tempo que leva o sistema en modo de suspensión) ou CLOCK_REALTIME;
  • O resolvedor de DNS agora admite a opción trust-ad en /etc/resolv.conf e a marca RES_TRUSTAD en _res.options, cando se establece, a marca DNSSEC transmítese nas solicitudes de DNS AD (datos autenticados). Neste modo, a marca AD establecida polo servidor está dispoñible para aplicacións que chaman a funcións como res_search(). De forma predeterminada, se non se definen as opcións suxeridas, a glibc non especifica a marca AD nas solicitudes e límpaa automaticamente nas respostas, indicando que faltan as comprobacións DNSSEC;
  • A creación de ligazóns de chamadas de sistema para Glibc xa non require instalar os ficheiros de cabeceira do núcleo de Linux. A excepción é a arquitectura RISC-V de 64 bits;
  • Eliminado vulnerabilidade CVE-2019-19126, o que che permite evitar a protección
    ASLR en programas coa marca setuid e determina o deseño de enderezos nas bibliotecas cargadas mediante a manipulación da variable de ambiente LD_PREFER_MAP_32BIT_EXEC.

Cambios que rompen a compatibilidade:

  • totalorder(), totalordermag() e funcións similares para outros tipos de coma flotante agora aceptan punteiros como argumentos para eliminar as advertencias sobre a conversión de valores en estado NaN, de acordo coas recomendacións da TS 18661-1 propostas para o futuro estándar C2X.
    Os executables existentes que pasan argumentos de coma flotante directamente seguirán executándose sen modificación;

  • A función stime, obsoleta durante moito tempo, xa non está dispoñible para os binarios ligados a glibc, e a súa definición foi eliminada de time.h. Para configurar a hora do sistema, use a función clock_settime. No futuro, pensamos eliminar a función ftime obsoleta, así como o ficheiro de cabeceira sys/timeb.h (debería usarse gettimeofday ou clock_gettime en lugar de ftime);
  • A función gettimeofday xa non pasa información sobre a zona horaria de todo o sistema (esta función era relevante nos días de 4.2-BSD e estivo en desuso durante moitos anos). Agora debería pasarse un punteiro nulo ao argumento 'tzp' e a función localtime() debería usarse para obter información sobre a zona horaria baseada na hora actual. Ao chamar a gettimeofday cun argumento "tzp" distinto de cero, devolverá os campos baleiros tz_minuteswest e tz_dsttime na estrutura da zona horaria. A propia función gettimeofday está obsoleta en POSIX (recoméndase clock_gettime en lugar de gettimeofday), pero non hai plans para eliminala da glibc;
  • settimeofday xa non admite o paso simultáneo de parámetros para configurar a hora e a compensación de corrección de tempo. Ao chamar a settimeofday, un dos argumentos (time ou offset) debe configurarse agora como nulo, se non, a chamada á función fallará cun erro EINVAL. Do mesmo xeito que gettimeofday, a función settimeofday está obsoleta en POSIX e recoméndase que se substitúa pola función clock_settime ou a familia de funcións adjtime;
  • O soporte para a arquitectura SPARC ISA v7 descontinuouse (por agora mantense o soporte para v8, pero só para os procesadores que admiten instrucións CAS, como os procesadores LEON, non os procesadores SuperSPARC).
  • Se o emparejamento falla en "preguiceiro", na que o enlazador non busca símbolos dunha función ata a primeira chamada a esa función, agora a función dlopen obriga a finalizar o proceso (anteriormente devolvía NULL en caso de falla);
  • Para o MIPS hard-float ABI, agora utilízase a pila executable, a menos que a compilación restrinxa explícitamente o uso do núcleo Linux 4.8+ mediante o parámetro "-enable-kernel=4.8.0" (con núcleos ata 4.8, os fallos son observado para algunhas configuracións MIPS);
  • As ligazóns en torno ás chamadas ao sistema relacionadas coa manipulación do tempo movéronse para utilizar a chamada ao sistema time64, se está presente (en sistemas de 32 bits, a glibc proba primeiro chamadas ao sistema novas que manipulan o tipo de tempo de 64 bits e, se non as hai, cae). volver ás antigas chamadas de 32 bits).

Fonte: opennet.ru

Engadir un comentario