Lanzamiento de la biblioteca del sistema Glibc 2.42 y el conjunto de utilidades GNU Binutils 2.45

Después de seis meses de desarrollo, se ha lanzado la biblioteca de sistema GNU C Library 2.42 (glibc), totalmente compatible con los estándares ISO C23 y POSIX.1-2024. 70 desarrolladores contribuyeron a la nueva versión.

Algunas de las mejoras implementadas en Glibc 2.42 incluyen:

  • La función pthread_create ahora admite páginas de protección de pila ligeras, cuyo acceso provoca una excepción y el bloqueo del proceso (SIGSEGV). La implementación se basa en la bandera MADV_GUARD_INSTALL introducida en la llamada al sistema madvise, compatible desde el kernel. Linux 6.13. En comparación con el mapeo en modo PROT_NONE, las páginas de guarda permiten un bloqueo más eficiente de la ejecución de código fuera del área de memoria asignada, ya que su creación no requiere la asignación de un área de memoria virtual nueva.
  • Se han añadido nuevas funciones para elevar a una potencia y calcular raíces, definidas en el estándar ISO C23, y se incluyen en el archivo de encabezado math.h. Se han implementado variantes de función para los tipos float, double, long double, _FloatN y _FloatNx, así como para el tipo genérico de tgmath.h.
  • En la plataforma Linux Se ha implementado la función pthread_gettid_np, que, al igual que la función gettid(), devuelve un identificador de hilo único, pero se diferencia por su comprobación de errores ampliada (si se produce un comportamiento indefinido, el proceso finaliza).
  • Se añadieron funciones para calcular valores absolutos que funcionan con tipos sin signo: uabs, ulabs, ullabs y uimaxabs. Estas funciones se incluirán en el futuro estándar de C.
  • En la plataforma Linux La API termios.h ahora admite velocidades de transmisión arbitrarias. El tipo speed_t se ha redefinido y ahora corresponde al tipo "unsigned int", como en el kernel. Linux.
  • La caché local de subprocesos (tcache) utilizada en la función malloc ahora admite el almacenamiento en caché de bloques de memoria grandes. El tamaño máximo de bloque se puede sobrescribir mediante la configuración glibc.malloc.tcache_max, que puede tomar valores de hasta 4194304. La caché ahora es más rápida para bloques pequeños.
  • El script de compilación de configuración ahora incluye la opción "--enable-sframe" para habilitar la compatibilidad con el formato SFrame, utilizado para representar la información de seguimiento de pila y compatible con la función de seguimiento inverso. SFrame requiere al menos binutils 2.45.
  • Se han transferido versiones optimizadas de las funciones matemáticas acospif, asinpif, atanpif, atan2pif, cospif, sinpif y tanpif desde el proyecto CORE-MATH.
  • El conjunto de pruebas se ha ampliado significativamente para cubrir varias variantes de las familias de funciones printf y scanf.
  • Se agregó código para detectar procesadores Intel basados en la microarquitectura Arrow Lake, Panther Lake, Clearwater Forest y Diamond Rapids.
  • Se agregó soporte para la plataforma z17 (la nueva generación de mainframes IBM Z/S390).
  • Se ha agregado soporte para el modo de compatibilidad a la configuración glibc.rtld.execstack para admitir programas que requieren una pila ejecutable a través de bibliotecas cargadas dinámicamente.
  • Se han eliminado el archivo de encabezado termio.h y la definición de la estructura termio de sys/ioctl.h. La API termio.h quedó obsoleta en POSIX.1 (1988) y fue reemplazada por termios.h.
  • La construcción de Glibc ahora requiere al menos GCC 12.1 y GNU Binutils 2.39.
  • Vulnerabilidades solucionadas:
    • CVE-2025-0395 — Desbordamiento de búfer durante la ejecución de la función assert(). El desbordamiento se produce al especificar un nombre de programa excesivamente largo (argv[0]). El problema se considera inofensivo, ya que se escriben 4 bytes más allá del búfer, cuyo contenido no puede ser controlado por el atacante. Asimismo, resulta interesante la aparición de la vulnerabilidad en las funciones de depuración, debido a un error al mostrar el nombre de la aplicación actual.
    • CVE-2025-5702, CVE-2025-5745: Vulnerabilidades en las funciones strcmp y strncmp para procesadores Power10 provocan un fallo al guardar y restaurar registros vectoriales v20-v31 que deberían conservarse entre llamadas a funciones. Esta vulnerabilidad puede utilizarse para sobrescribir o determinar el contenido de los datos de registro utilizados por otra función.
    • CVE-2025-8058: Existe una vulnerabilidad de doble liberación en la función regcomp.

Además, podemos destacar el lanzamiento de un conjunto de utilidades del sistema GNU Binutils 2.45, que incluye programas como GNU linker, GNU ensamblador, nm, objdump, strings, strip.

En la nueva versión de Binutils:

  • En ensamblador GNU:
    • Se agregó compatibilidad con las últimas extensiones para las arquitecturas RISC-V, LoongArch y AArch64. Para x86, se agregó compatibilidad con las instrucciones XMODX implementadas en los procesadores Zhaoxin PadLock. Para RISC-V, se agregó soporte para las siguientes instrucciones: ssqosid v1.0, ssnpm v1.0, smnpm v1.0, smmpm v1.0, sspm v1.0, supm v1.0, sha v1.0, zce v1.0, smcdeleg v1.0, ssccfg v1.0, svvptc v1.0, zilsd v1.0, zclsd v1.0, smrnmi v1.0, xtheadvdot v1.0, xmipscbop v1.0, xmipscmov v1.0, xmipsexectl v1.0 y xmipslsp v1.0.
    • Se garantizó la compatibilidad de la generación de datos SFrame con la especificación SFrame V2. Se añadió soporte para generar información de seguimiento de pila (.sframe) a partir de directivas CFI en sistemas s64 (s390x) de 390 bits.
    • Se agregó soporte para las directivas .errif y .warnif para generar mensajes de diagnóstico cuando se cumplen ciertas condiciones.
  • La opción "--stats" del enlazador ahora admite un argumento opcional que permite especificar un nombre de archivo para almacenar información sobre el consumo de recursos en las diferentes etapas del enlazado. El nombre del archivo también se puede especificar mediante la variable de entorno LD_STATS. Para sistemas RISC-V, el enlazador ahora admite los nuevos formatos PLT (Tabla de Enlace de Procedimientos).
  • Se han implementado diversas mejoras relacionadas con la compatibilidad con el formato SFrame. Las funciones para trabajar con SFrame se han trasladado a la biblioteca versionada libsframe.so.2.
  • El desensamblador y la utilidad readelf han ampliado el soporte para la arquitectura RISC-V.

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster