6.2.9. Compiladores y herramientas de desarrollo

El cargador dinámico de glibc ya no falla al cargar una biblioteca compartida que utiliza DT_FILTER y tiene un constructor

Antes de esta actualización, un defecto en la implementación del cargador dinámico de objetos compartidos como filtros hacía que el cargador dinámico fallara al cargar una biblioteca compartida que utilizara un filtro y tuviera un constructor. Con esta versión, la implementación del cargador dinámico de filtros(DT_FILTER) ha sido corregida para manejar correctamente tales bibliotecas compartidas. Como resultado, el cargador dinámico ahora funciona como se espera en el escenario mencionado.

(BZ#1812756)

glibc ahora puede eliminar los pseudo-montajes de la lista getmntent()

El kernel incluye pseudo-entradas de automontaje en las tablas expuestas al espacio de usuario. En consecuencia, los programas que utilizan la API getmntent( ) ven tanto los montajes regulares como estos pseudo-montajes en la lista. Los pseudo-montajes no se corresponden con los montajes reales, ni incluyen información válida.

Con esta actualización, si la entrada de montaje tiene la opción de ignorar el montaje presente en la configuración de automount(8 ) la biblioteca glibc ahora elimina estos pseudo-montajes de la lista de getmntent(). Los programas que esperan el comportamiento anterior tienen que utilizar una API diferente.

(BZ#1743445)

El patrón movv1qi ya no provoca errores de compilación en el código autovectorizado en IBM Z

Antes de esta actualización, se emitían instrucciones de carga erróneas para el patrón movv1qi. Como consecuencia, cuando la auto-vectorización estaba en efecto, podía ocurrir una mala compilación en los sistemas IBM Z. Esta actualización corrige el patrón movv1qi, y como resultado, el código se compila y ejecuta correctamente ahora.

(BZ#1784758)

PAPI_event_name_to_code() ahora funciona correctamente en múltiples hilos

Antes de esta actualización, el código interno de PAPI no manejaba correctamente la coordinación de hilos. Como consecuencia, cuando varios hilos utilizaban la operación PAPI_event_name_to_code(), se producía una condición de carrera y la operación fallaba. Esta actualización mejora el manejo de múltiples hilos en el código interno de PAPI. Como resultado, el código multihilo que utiliza la operación PAPI_event_name_to_code () ahora funciona correctamente.

(BZ#1807346)

Mejora del rendimiento de las funciones matemáticas de glibc en IBM Power Systems

Anteriormente, las funciones matemáticas de glibc realizaban actualizaciones de estado de punto flotante y llamadas al sistema innecesarias en IBM Power Systems, lo que afectaba negativamente al rendimiento. Esta actualización elimina la actualización innecesaria del estado de punto flotante, y mejora las implementaciones de: ceil(), ceilf(), fegetmode(), fesetmode(), fesetenv(), fegetexcept(), feenableexcept(), fedisablexcept(), fegetround() y fesetround(). Como resultado, se ha mejorado el rendimiento de la biblioteca matemática en IBM Power Systems.

(BZ#1783303)

Las llaves de protección de la memoria son ahora compatibles con IBM Power

En IBM Power Systems, las interfaces de la llave de protección de memoria pkey_set y pkey_get eran anteriormente funciones stub, y en consecuencia siempre fallaban. Esta actualización implementa las interfaces, y como resultado, la biblioteca GNU C(glibc) ahora soporta claves de protección de memoria en IBM Power Systems.

Tenga en cuenta que las claves de protección de memoria requieren actualmente la unidad de gestión de memoria (MMU) basada en hash, por lo que podría tener que arrancar ciertos sistemas con el parámetro del kernel disable_radix.

(BZ#1642150)

papi-testsuite y papi-devel instalan ahora el paquete papi-libs necesario

Anteriormente, los paquetes RPM papi-testsuite y papi-devel no declaraban una dependencia del paquete papi-libs correspondiente. En consecuencia, las pruebas no se ejecutaban y los desarrolladores no disponían de la versión necesaria de la biblioteca compartida papi para sus aplicaciones.

Con esta actualización, cuando el usuario instala los paquetes papi-testsuite o papi-devel, también se instala el paquete papi-libs. Como resultado, el papi-testsuite tiene ahora la biblioteca correcta que permite la ejecución de las pruebas, y los desarrolladores que utilizan papi-devel tienen sus ejecutables enlazados con la versión adecuada de la biblioteca compartida papi.

(BZ#1664056)

La instalación de los paquetes lldb para múltiples arquitecturas ya no provoca conflictos de archivos

Anteriormente, los paquetes lldb instalaban archivos dependientes de la arquitectura en ubicaciones independientes de la misma. Como consecuencia, la instalación de las versiones de 32 y 64 bits de los paquetes provocaba conflictos con los archivos. Esta actualización empaqueta los archivos en ubicaciones correctas dependientes de la arquitectura. Como resultado, la instalación de lldb en el escenario descrito se completa con éxito.

(BZ#1841073)

getaddrinfo ahora maneja correctamente un fallo de asignación de memoria

Anteriormente, después de un fallo de asignación de memoria, la función getaddrinfo de la biblioteca GNU C glibc no liberaba el contexto de resolución interno. Como consecuencia, getaddrinfo no era capaz de recargar el archivo /etc/resolv. conf durante el resto del tiempo de vida del hilo de llamada, lo que provocaba una posible fuga de memoria.

Esta actualización modifica la ruta de manejo de errores con una operación de liberación adicional para el contexto de resolución. Como resultado, getaddrinfo recarga /etc/resolv. conf con nuevos valores de configuración incluso después de un fallo intermitente de asignación de memoria.

(BZ#1810146)

glibc evita ciertos fallos causados por el ordenamiento del resolver IFUNC

Anteriormente, la implementación de las bibliotecas librt y libpthread de la biblioteca GNU C glibc contenía los resolvedores de funciones indirectas (IFUNC) para las siguientes funciones: clock_gettime, clock_getcpuclockid, clock_nanosleep, clock_settime, vfork. En algunos casos, los resolvedores IFUNC podían ejecutarse antes de que las bibliotecas librt y libpthread fueran reubicadas. En consecuencia, las aplicaciones fallaban en el cargador dinámico de glibc durante el inicio temprano del programa.

Con esta versión, las implementaciones de estas funciones se han trasladado al componente libc de glibc, lo que evita que se produzca el problema descrito.

(BZ#1748197)

Ya no se producen fallos de aserción durante pthread_create

Anteriormente, el cargador dinámico de glibc no retrocedía los cambios en el contador interno de ID del módulo de almacenamiento local de hilos (TLS). Como consecuencia, podía producirse un fallo de aserción en la función pthread_create después de que la función dlopen hubiera fallado en ciertos aspectos. Con esta corrección, el cargador dinámico de glibc actualiza el contador de ID del módulo TLS en un momento posterior, después de que ciertos fallos ya no puedan ocurrir. Como resultado, los fallos de aserción ya no ocurren.

(BZ#1774115)

glibc instala ahora las dependencias correctas para las aplicaciones de 32 bits que utilizan nss_db

Anteriormente, el paquete nss_db .x86_64 no declaraba dependencias del paquete nss_db.i686. Por lo tanto, la instalación automatizada no instalaba nss_db.i686 en el sistema, a pesar de tener un entorno de 32 bits glibc.i686 instalado. Como consecuencia, las aplicaciones de 32 bits que utilizaban nss_db no realizaban búsquedas precisas en la base de datos de usuarios, mientras que las aplicaciones de 64 bits en la misma configuración funcionaban correctamente.

Con esta actualización, los paquetes glibc tienen ahora dependencias débiles que activan la instalación del paquete nss_db.i686 cuando tanto glibc.i686 como nss_db están instalados en el sistema. Como resultado, las aplicaciones de 32 bits que utilizan nss_db ahora funcionan correctamente, incluso si el administrador del sistema no ha instalado explícitamente el paquete nss_db.i686.

(BZ#1807824)

información de localización deglibc actualizada con el idioma Odia

El nombre del estado indio anteriormente conocido como Orissa ha cambiado a Odisha, y el nombre de su idioma oficial ha cambiado de Oriya a Odia. Con esta actualización, la información de localización de glibc refleja el nuevo nombre del idioma.

(BZ#1757354)

Los subpaquetes de LLVM ahora instalan los archivos dependientes de arch en ubicaciones dependientes de arch

Anteriormente, los subpaquetes de LLVM instalaban archivos dependientes del arco en ubicaciones independientes del mismo. Esto provocaba conflictos al instalar versiones de 32 y 64 bits de LLVM. Con esta actualización, los archivos del paquete se instalan ahora correctamente en ubicaciones dependientes del arco, evitando conflictos de versión.

(BZ#1820319)

Las búsquedas de contraseñas y grupos ya no fallan en glibc

Anteriormente, el módulo nss_compat de la biblioteca glibc sobrescribía el estado errno con códigos de error incorrectos durante el procesamiento de las entradas de contraseñas y grupos. En consecuencia, las aplicaciones no redimensionaban los búferes como se esperaba, haciendo que las búsquedas de contraseñas y grupos fallaran. Esta actualización corrige el problema, y las búsquedas ahora se completan como se esperaba.

(BZ#1836867)