C-Library: glibc 2.33 lädt für individuelle Hardware optimierte Libraries

Über HWCAPS bietet die GNU C Library passende Implementierungen für unterschiedliche Hardwarearchitekturen.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Die GNU C Library (glibc) ist turnusmäßig im Sechsmonatsrhythmus in Version 2.33 erschienen. Die größte Neuerung in der Implementierung der C-Standard-Bibliothek ist die Anpassung für spezifische Plattformen über Hardware Capabiltity Tunables (HWCAPS). Außerdem gibt es im Zusammenspiel mit LLVM eine neue Härtungsstufe beim Schutz vor Pufferüberläufen.

Der dynamische Linker kann im Verzeichnis "glibc-hwcaps" nach Unterverzeichnissen für spezifische Hardwarearchitekturen schauen. Auf die Weise lassen sich mehrere Library-Builds erstellen, die beim Ausführen passend geladen werden. Zum Start bietet glibc die Varianten "power9" und "power10" für die powerpc64le-linux-gnu-Architektur, "z13", "z14" und "z15" für s390x-linux-gnu sowie "x86-64-v2", "x86-64-v3" und "x86-64-v4" für x86_64-linux-gnu.

Daneben kann der dynamische Linker neuerdings eine Liste aller unterstützten Tunables über den Parameter --list-tunables ausgeben. Das Tunable-Framework ermöglicht das Anpassen der Laufzeitbibliothek für spezifische Anforderungen beziehungsweise Workloads. Module können Variablen registrieren, die sich im Anschluss über Umgebungsvariablen anpassen lassen.

Die Dokumentation der Tunables weist allerdings darauf hin, dass sie noch nicht Bestandteil des stabilen ABI (Application Binary Interface) sind. Die Implementierung kann sich in künftigen Releases ändern oder völlig entfallen. Wenn die Tunables über den Parameter --enable-tunables=no deaktiviert sind, ist die genannte Funktion zum Auflisten ebenfalls nicht verfügbar.

Das Release führt zudem einen dritten Härtungsgrad zum Schutz vor Pufferüberläufen ein. Dabei kann gilbc zusätzliche Überprüfungen ausführen, die potenziell die Performance beeinträchtigen. Allerdings funktioniert _FORTIFY_SOURCE=3 nur im Zusammenspiel mit der Compilerarchitektur LLVM ab Version 9. GCC bietet im aktuellen 10.2-Release noch keine Unterstützung für ein Fortification-Level jenseits von 2.

Nennenswert ist zudem, dass glibc sich für bestimmte 32-bit-Implementierungen der freien und offenen Architektur RISC-V ISA (Instruction Set Architecture) verwenden lässt. Konkret geht es um die Architektur rv32imac im Zusammenspiel mit der x32-ABI ilp32 und der Plattform rv32imafdc mit derselben ABI sowie zusätzlich ilp32d.

Weitere Neuerungen, Bugfixes sowie Änderungen bei den Voraussetzungen an die Build- und Laufzeitumgebung lassen sich der Ankündigungsmail zur GNU C Library 2.33 entnehmen. Wer nicht auf die Implementierung in kommenden Linux-Distributionen warten möchte, kann den Sourcecode der glibc 2.33 bei sourceware.org herunterladen

(rme)