Versión de la biblioteca del sistema Glibc 2.31

Después de seis meses de desarrollo publicado lanzamiento de la biblioteca del sistema Biblioteca GNU C (glibc) 2.31, que cumple plenamente con los requisitos de las normas ISO C11 y POSIX.1-2008. La nueva versión incluye correcciones de 58 desarrolladores.

De los implementados en Glibc 2.31 mejoras puedes notar:

  • Se agregó la macro _ISOC2X_SOURCE para habilitar las capacidades definidas en el borrador del futuro estándar ISO C2X. Estas características también están habilitadas cuando se usa la macro _GNU_SOURCE o cuando se construye en gcc con el indicador “-std=gnu2x”;
  • Para funciones definidas en el archivo de encabezado "math.h" que redondean sus resultados a un tipo más pequeño, se proponen las correspondientes macros de tipo genérico en el archivo "tgmath.h", tal como lo exigen las especificaciones TS 18661-1:2014 y TS 18661-3: 2015;
  • Se agregó la función pthread_clockjoin_np(), que espera a que se complete el hilo, teniendo en cuenta el tiempo de espera (si el tiempo de espera ocurre antes de que se complete, la función devolverá un error). A diferencia de pthread_timedjoin_np(), en pthread_clockjoin_np() es posible definir el tipo de temporizador para calcular el tiempo de espera: CLOCK_MONOTONIC (tiene en cuenta el tiempo que el sistema pasa en modo de suspensión) o CLOCK_REALTIME;
  • El solucionador de DNS ahora admite la opción de anuncio de confianza en /etc/resolv.conf y el indicador RES_TRUSTAD en _res.options; cuando está configurado, el indicador DNSSEC se transmite en las solicitudes de DNS. AD (datos autenticados). En este modo, el indicador AD establecido por el servidor queda disponible para aplicaciones que llaman a funciones como res_search(). De forma predeterminada, si las opciones sugeridas no están configuradas, glibc no especifica el indicador AD en las solicitudes y lo borra automáticamente en las respuestas, lo que indica que faltan comprobaciones de DNSSEC;
  • La creación de enlaces de llamadas al sistema que funcionen para Glibc ya no requiere la instalación de los archivos de encabezado del kernel de Linux. La excepción es la arquitectura RISC-V de 64 bits;
  • eliminado vulnerabilidad CVE-2019-19126, que le permite eludir la protección
    ASLR en programas con el indicador setuid y determina el diseño de la dirección en bibliotecas cargadas mediante la manipulación de la variable de entorno LD_PREFER_MAP_32BIT_EXEC.

Cambios que rompen la compatibilidad:

  • totalorder(), totalordermag() y funciones similares para otros tipos de punto flotante ahora aceptan punteros como argumentos para eliminar advertencias sobre la conversión de valores en estado. Yaya, de acuerdo con las recomendaciones de TS 18661-1 propuestas para el futuro estándar C2X.
    Los ejecutables existentes que pasan argumentos de punto flotante directamente continuarán ejecutándose sin modificaciones;

  • La función stime, obsoleta desde hace mucho tiempo, ya no está disponible para archivos binarios vinculados a glibc y su definición se ha eliminado de time.h. Para configurar la hora del sistema, utilice la función clock_settime. En el futuro, planeamos eliminar la función ftime obsoleta, así como el archivo de encabezado sys/timeb.h (se deben usar gettimeofday o clock_gettime en lugar de ftime);
  • La función gettimeofday ya no pasa información sobre la zona horaria de todo el sistema (esta característica era relevante en los días de 4.2-BSD y ha estado en desuso durante muchos años). Al argumento 'tzp' ahora se le debe pasar un puntero nulo y se debe usar la función localtime() para obtener información de zona horaria basada en la hora actual. Llamar a gettimeofday con un argumento 'tzp' distinto de cero devolverá los campos vacíos tz_minutoswest y tz_dsttime en la estructura de zona horaria. La función gettimeofday en sí está obsoleta en POSIX (se recomienda clock_gettime en lugar de gettimeofday), pero no hay planes para eliminarla de glibc;
  • settimeofday ya no admite el paso simultáneo de parámetros para configurar la hora y el desplazamiento de corrección de hora. Al llamar a settimeofday, uno de los argumentos (hora o desplazamiento) ahora debe establecerse en nulo; de lo contrario, la llamada a la función fallará con un error EINVAL. Al igual que gettimeofday, la función settimeofday está obsoleta en POSIX y se recomienda reemplazarla por la función clock_settime o la familia de funciones adjtime;
  • Se suspendió la compatibilidad con la arquitectura SPARC ISA v7 (la compatibilidad con v8 se mantiene por ahora, pero solo para procesadores que admiten instrucciones CAS, como los procesadores LEON, no los procesadores SuperSPARC).
  • Si el emparejamiento falla en "perezoso", en el que el vinculador no busca símbolos de una función hasta la primera llamada a esa función, la función dlopen ahora fuerza la finalización del proceso (anteriormente devolvía NULL en caso de falla);
  • Para la ABI de flotación dura MIPS, ahora se usa la pila ejecutable, a menos que la compilación restrinja explícitamente el uso del kernel Linux 4.8+ a través del parámetro “-enable-kernel=4.8.0” (con kernels hasta 4.8, las fallas son observado para algunas configuraciones MIPS);
  • Los enlaces alrededor de las llamadas al sistema relacionadas con la manipulación del tiempo se han movido para usar la llamada al sistema time64, si está presente (en sistemas de 32 bits, glibc primero intenta nuevas llamadas al sistema que manipulen el tipo de tiempo de 64 bits y, si no hay ninguna, cae volver a las antiguas llamadas de 32 bits).

Fuente: opennet.ru

Añadir un comentario