Die GNU C Library ist eine Open Source, freie und leistungsfähige Bibliothekssoftware für jede GNU / Linux-Distribution. Es wird auch als Glibc bezeichnet und von jedem UNIX-ähnlichen Computerbetriebssystem benötigt. Die GNU C-Bibliothek ist verantwortlich für die Definition der Systemaufrufe sowie für verschiedene andere grundlegende Funktionen wie malloc, open, exit, printf usw.
Wird standardmäßig in allen Linux-Kernel-basierten Betriebssystemen verwendet
Die GNU C-Bibliothek wird standardmäßig in allen Linux-Kernel-basierten Betriebssystemen installiert und verwendet. Sie wurde von Grund auf als Haupt-C-Bibliothek in GNU-Systemen und anderen Betriebssystemen mit dem Linux-Kernel entwickelt.
Entwickelt, um tragbar zu sein
Glibc ist eine Hochleistungs-C-Bibliothek, die vollständig in der Programmiersprache C geschrieben ist. Es ist so konzipiert, dass es portabel, internationalisiert und für die Unterstützung aller relevanten Standards wie POSIX.1-2008 und ISO C11 entwickelt wurde.
Unterstützt Features von bekannten UNIX-Varianten
Obwohl die GNU C-Bibliothek über eine vollständig internationalisierte Schnittstelle verfügt, versucht sie dank ihrer integrierten Kompatibilitätsmodi Features bekannter UNIX-Varianten wie BSD und System V zu unterstützen.
Erste Schritte mit der GNU C-Bibliothek
Während die GNU C-Bibliothek standardmäßig in fast allen GNU / Linux-Betriebssystemen installiert ist, können Sie sie auch selbst neu installieren, indem Sie das auf ihrer Website oder auf der Softoware kostenlos zur Verfügung gestellte Quellpaket verwenden. Laden Sie das Archiv zunächst herunter und speichern Sie es in Ihrem Home-Verzeichnis.
Entpacken Sie das Archiv mit einem Archiv-Manager-Dienstprogramm, öffnen Sie ein Terminalfenster, gehen Sie zu dem Speicherort, an dem die Archivdateien extrahiert wurden, führen Sie das & lsquo; ./ configure & rsquo; Befehl, um das Programm zu konfigurieren (siehe Befehl & l; / configure --help & rsquo; für verschiedene Optimierungsoptionen).
Dann führe das & lsquo; make & rsquo; Befehl, um die Bibliothek zu kompilieren, die systemweit installiert werden kann, indem Sie einen der beiden Befehle ausführen: make install & rsquo; oder & lsquo; sudo make install & rsquo; Befehle, abhängig davon, ob Ihr root oder ein privilegierter Benutzer.
Was ist neu in dieser Version:
- https://sourceware.org/ml/libc-announce/2018/msg00000.html
Was ist neu in Version 2.27:
- https://sourceware.org/ml/libc-announce/2018/msg00000.html
Was ist neu in der Version:
- Die minimale Linux-Kernel-Version, mit der diese Version der GNU C-Bibliothek verwendet werden kann, ist 3.2, außer auf i [4567] 86 und x86_64, wo die Linux-Kernel-Version 2.6.32 oder höher ausreicht (auf Architekturen, die bereits Kernel benötigen) Versionen jünger als 3.2, diese Anforderungen bleiben unverändert). Linux 3.2 oder höhere Kernel-Header sind auf allen Architekturen erforderlich.
- Das Gebietsschema pap_AN wurde gelöscht. Dies ist seit langer Zeit veraltet. Es wurde durch pap_AW & amp ersetzt; pap_CW, die beide schon in früheren Releases enthalten waren.
- Die Funktionen readdir_r und readdir64_r sind veraltet. Es wird empfohlen, stattdessen readdir und readdir64 zu verwenden.
- Der Typ "union wait" wurde entfernt. Es war in den frühen 1990ern veraltet und gehörte nie zu POSIX. Anwendungscode sollte den Int-Typ anstelle von "union wait" verwenden.
- Eine neue NSS-Aktion wird hinzugefügt, um eine große verteilte Systemadministration zu ermöglichen. Die Aktion MERGE ermöglicht das Zusammenführen von Remote-Benutzerspeichern wie LDAP mit lokalen Benutzerspeichern wie / etc / groups, um einfach zu verwendende, aktualisierte und verwaltete Sätze von zusammengeführten Anmeldeinformationen bereitzustellen. Die neue Aktion kann verwendet werden, indem Sie sie in /etc/nsswitch.conf konfigurieren: group: files [SUCCESS = merge] nis Implementiert von Stephen Gallagher (Red Hat).
- Die veraltete __malloc_initialize_hook-Variable wurde aus der API entfernt.
- Die lange nicht verwendete Option localedef --old-style wurde entfernt. Es hat nichts in über 16 Jahren getan. Skripte, die diese Option verwenden, können sie sicher löschen.
- nextupl, nextup, nextupf, nextdownl, nextdown und nextdownf werden zu libm hinzugefügt. Sie sind definiert durch TS 18661 und IEEE754-2008. Die nextup-Funktionen geben den nächsten darstellbaren Wert in Richtung positiver Unendlichkeit zurück, und die nextdown-Funktionen geben den nächsten darstellbaren Wert in Richtung negativer Unendlichkeit zurück. Diese sind derzeit als GNU-Erweiterungen aktiviert.
- Sicherheitsbezogene Änderungen:
- Eine unnötige Stapelkopie in _nss_dns_getnetbyname_r wurde entfernt. Es könnte zu einem Stack-Überlauf kommen, wenn getnetbyname mit einem zu langen Namen aufgerufen wurde. (CVE-2016-3075)
- Zuvor hat getaddrinfo große Mengen von Adressdaten in den Stapel kopiert, selbst nachdem der Fix für CVE-2013-4458 angewendet wurde, was möglicherweise zu einem Stapelüberlauf führte. getaddrinfo verwendet jetzt stattdessen eine Heap-Zuweisung. Berichtet von Michael Petlan. (CVE-2016-3706)
- Die glob-Funktion hatte einen stackbasierten Pufferüberlauf, als sie mit dem GLOB_ALTDIRFUNC-Flag aufgerufen wurde und einen langen Dateinamen gefunden hat. Berichtet von Alexander Cherepanov. (CVE-2016-1234)
- Der Sun RPC UDP-Client könnte den gesamten verfügbaren Stapelspeicherplatz ausschöpfen, wenn er mit präparierten ICMP- und UDP-Nachrichten überflutet wird. Berichtet von Aldy Hernandez 'Alloka-Plugin für GCC. (CVE-2016-4429)
- Der IPv6-Nameserver-Verwaltungscode in libresolv kann zu einem Speicherverlust für jeden erstellten Thread führen, führt eine fehlgeschlagene Naming-Suche durch und wird beendet. Im Laufe der Zeit könnte dies aufgrund von Speichererschöpfung zu einem Denial-of-Service führen. Berichtet von Matthias Schiffer. (CVE-2016-5417)
- Die folgenden Fehler wurden mit dieser Version behoben:
- [1170] localedata: ne_NP: nepalesische Locale-Definitionsdatei aktualisieren [3629] manual: stpcpy-Beschreibung in string.texi bezieht sich auf MS-DOG anstelle von MS-DOS. [6527] malloc: [powerpc] Malloc-Ausrichtung für PowerPC nicht ausreichend [6796] math: fdim () setzt bei Überlauf nicht errno [10354] libc: posix_spawn sollte vfork () in mehr Fällen als zur Zeit verwenden [11213] localedata: localedata: Copyright-Disclaimer zu Gebietsschema-Dateien hinzufügen [12143] localedata: chr_US: neues Cherokee-Gebietsschema [12450] localedata: sgs_LT: neues Gebietsschema [12676] localedata: ln_CD: neues Gebietsschema [13237] localedata: LC_ADDRESS.country_name: alle Gebietsschemas mit dem neuesten CLDR aktualisieren Daten [13304] math: fma, fmaf, fmal produzieren falsche Ergebnisse [14259] build: --localledir arg configure wird ignoriert [14499] nptl: Führt posix_spawn atfork handlers / vfork aufrufen? [14750] libc: Race-Bedingung in posix_spawn vfork Verwendung vs Signalhandler [14934] localedata: es_CL: falscher erster Wochentag chilenische Locale [15262] localedata: LC_MESSAGES.yesexpr / noexpr: inkonsistente Verwendung von Romanisierung [15263] localedata: LC_MESSAGES.yesexpr / noexpr: inkonsistente Verwendung von 1/0 und +/- [15264] localedata: LC_MESSAGES.yesstr / nostr: fehlt in vielen locales [15368] nptl: raise () ist nicht async-signalsicher [15479] math: ceil, floor, round und trunc heben inexakte ausnahme [15578] localedata: kk_KZ: diverse updates [16003] localedata: pap_AN: punt alter locale [16137] localedata: iw_IL: punt alter locale [16190] localedata: eo: neuer esperanto locale [16374] localedata: lv_LV: Währungssymbol in LC_MONETARY in Euro ändern [16742] malloc: race condition: pthread_atfork () vor dem ersten aufgerufen malloc () führt zu unerwartetem Sperrverhalten / Deadlocks [16975] localedata: LC_MESSAGES.yesexpr / noexpr: Großschreibung in allen Gebietsschemas erneut aufrufen [16983] localedata: postal_fmt lässt% l und% n Modifikatoren [17565] localedata nicht zu : pt_PT: falscher (Arbeits-) Wochenstart [17899] math: [powerpc] floor liefert negative Null mit FE_DOWNWARD [17950] build: Build scheitert mit -msse [18205] localedata: be_BY *: falscher first_weekday und first_workday [18433] libc : posix_spawn gibt bei fehlgeschlagener Ausführung [18453] localedata nicht korrekt zurück: chararmaps / IBM875: falsche Codes [18712] string: Bits / string2.h Inkompatibel mit -O2 -Werror = gepackte -Wsystem-Header [18896] localedata: he_IL: Verbesserungen für die Währung [18911] localedata: ro_RO: Wochentagname für "Tuesday" in rumänischen Gebietsschema-Daten [18960] Gebietsschema: s390: _nl_locale_subfreeres verwendet larl Opcode bei falsch ausgerichtetem Symbol [19056] libc: Veraltet readdir_r [19133] localedata: pt_ *: Tage & amp; Monate sollten in Kleinbuchstaben in portugiesischer Sprache sein [19198] localedata: nl_NL: kleine Verbesserungen für niederländische Sprachumgebungen [19257] Netzwerk: Per-Thread-Speicherverlust in __res_vinit mit IPv6-Nameservern (CVE-2016-5417) [19269] build: tst-audit4 und tst-audit10 Fehler mit gcc-6 auf nicht-avx-Maschine [19400] locale: Sprache fehlt in "iso-639.def", trivial fix in Beschreibung [19431] malloc: Deadlock zwischen fflush, getdelim und fork [19505] libc: Falsche Dateideskriptor-Gültigkeitsprüfungen in posix_spawn_file_actions_add {open, close, dup2} [19509] dynamic-link: dlsym, dlvsym melden keine Fehler durch dlerror bei Verwendung von RTLD_NEXT [19512] locale: Veraltet `#ifndef HAVE_BUILTIN_EXPECT 'in` intl / {gettextP , Ladeinfo}.h [19534] libc: execle, execlp kann malloc verwenden [19568] localedata: * _CH: Schweizer Locales haben inkonsistenten Wochenbeginn [19573] network: res_nclose und __res_maybe_init stimmen nicht überein über Initialisierung des Nameservers, bricht Hesiod [19575] localedata: Status von GB18030-Tabellen [19581] localedata: sr_ * date_fmt Zeichenkette enthält zusätzliche neue Zeile [19583] Zeichenkette: SSSE3_Fast_Copy_Backward-Flag muss für AMD Excavator core aktiviert sein [19592] math: [ldbl-128ibm] ceill in nicht standardmäßigen Rundungsmodi falsch [19593 ] math: [ldbl-128ibm] truncl falsch in nicht standardmäßigen Rundungsmodi [19594] math: [ldbl-128ibm] Rundung falsch in nicht standardmäßigen Rundungsmodi [19595] math: [ldbl-128ibm] fmodl falsch für Ergebnisse in subnormal Doppelter Bereich [19602] math: [ldbl-128ibm] fmodl Behandlung von gleichen Argumenten mit niedrigem Teilnullpunkt inkorrekt [19603] math: [ldbl-128ibm] Restwert, remquol falsche Zeichenbehandlung in Gleichheitstests [19610] dynamic-link: ldconfig - X entfernt veraltete symbolische Links [19613] libc: s390x (64 Bit) Makroerweiterung WCOREDUMP und andere [19633] locale: strfmon_l wendet globales Gebietsschema auf Zahlenformatierung an [19642] Netzwerk: Speicherleck in getnameinfo [19648] libc: test-skeleton.c: RLIMIT_DATA nicht setzen [19653] libc: Potential für Nullzeiger-Dereferenzierung (CWE-476) in glibc-2.22 [19654] math: [x86_64] Need-Testfall für BZ # 19590 fix [19671] localedata: Fehlende Sanitätsprüfung auf malloc () in 'tst-fmon.c' & amp; 'tst-numeric.c' [19674] math: [ldbl-128ibm] powl falsche Überlaufbehandlung [19677] math: [ldbl-128ibm] Restgleichheitstest falsch für Null niedrigen Teil [19678] math: [ldbl-128ibm] nextafterl , nexttowardl falsches Vorzeichen des Null-Ergebnisses [19679] dynamic-link: gcc-4.9.3 C ++ - Ausnahmebehandlung wegen nicht ausgerichtetem Stack [19726] Gebietsschema: Die Konvertierung von UCS4LE in INTERNAL mit iconv () aktualisiert keine Zeiger und Längen im Fehlerfall . [19727] Gebietsschema: Die Konvertierung von / in UTF-xx mit iconv () meldet nicht immer Fehler bei UTF-16-Ersatzwerten.[19755] nscd: nscd-Assertionsfehler in gc [19758] dynamic-link: Typo in EXTRA_LD_ENVVARS für x86-64 [19759] libc: mempcpy sollte nicht inline sein [19762] dynamic-link: HAS_CPU_FEATURE / HAS_ARCH_FEATURE sind leicht zu missbrauchen [ 19765] libc: s390 benötigt ein optimiertes mempcpy [19779] glob: glob: Pufferüberlauf mit GLOB_ALTDIRFUNC aufgrund falscher NAME_MAX-Limit-Annahme (CVE-2016-1234) [19783] build: Tischtests unterstützen nicht --enable-hardcoded-path -in-tests [19787] Netzwerk: Fehlende und inkorrekte Trunkierungsprüfungen in getnameinfo [19790] math: [ldbl-128ibm] nearbyintl falsch in nicht standardmäßigen Rundungsmodi [19791] network: Assertionsfehler in res_query.c mit nicht verbindbarem Namen Serveradressen [19792] libc: MIPS: backtrace liefert unendliche Rückverfolgung mit makecontext [19822] math: libm.also installiere clobbers alte Version [19825] Netzwerk: resolv: send_vc kann nicht initialisierte Daten in zweiter Antwort an getaddrinfo zurückgeben [19830] Netzwerk: nss_dns: sollte RDATA length gegen Pufferlänge prüfen [19831] network: nss_dns: getaddrinfo liefert uninitialisierte Daten, wenn sie konfrontiert werden A / AAAA-Datensätze ungültiger Größe [19837] nss: nss_db: Keine Wiederholungen für einige lange Zeilen mit einem größeren Puffer [19848] math: powl (10, n) für n = -4, -5, -6, -7 ist aus durch mehr als 1 ULP [19853] stdio: Das Drucken von IBM long double in decimal mit hoher Genauigkeit ist manchmal falsch [19860] build: x86_64: Kompilierfehler für tst-audit10 und tst-auditmod10b [19861] nptl: libpthread IFUNC-Resolver für fork kann zum Absturz führen [19862] network: resolv, nss_dns: Verbleibende Protokollierung von unerwarteten Datensatztypen entfernen [19865] Netzwerk: Assertionsfehler oder Speicherverlust in _nss_dns_getcanonname_r [19868] Netzwerk: nss_dns: Nentent-Code überspringt Nicht-PTR-Datensätze nicht [ 19879] Netzwerk: nss_dns: Stapelüberlauf in getnetbyname implecta tion (CVE-2016-3075) [19881] string: Improved x86-64 memset [19907] string: Falsche memcpy-tests [19916] dynamic-link: S390: fprs / vrs werden beim Auflösen von Symbolen nicht gespeichert / wiederhergestellt [19925] libc : termios.h XCASE-Namespace [19928] Zeichenfolge: memmove-vec-unaligned-erms.S ist langsam mit großer Datengröße [19929] libc: limits.h NL_NMAX-Namespace [19931] stdio: Speicherleck in vfprintf [19957] libc: clone (CLONE_VM) Zugriff auf ungültigen übergeordneten Speicher [19963] localedata: en_IL: Neues Gebietsschema [19989 ] stdio: stdio.h cuserid-Namespace [19994] Netzwerk: getaddrinfo stellt RES_USE_INET6-Flag in gethosts nicht wieder her [19996] locale: langinfo.h nl_langinfo_l-Namespace [20005] stdio: fflush für eine mit fmemopen geöffnete Datei setzt Position auf 0 zurück [20010] Netzwerk: getaddrinfo: Stapelüberlauf in hostent Übersetzung (CVE-2016-3706) [20012] stdio: libio: fmemopen Append-Modus Fehler [20014] stdio: stdio.h Namespace für Pre-threads POSIX [20017] Netzwerk: resolv: Verwenden Sie gmtime_r anstelle von gmtime in p_secstodate [20023] libc: fcntl.h timespec namespace [20024] math: [x86_64] vektorisiert sincos trasht den Stack [20031] network: nss_hesiod: Heapüberlauf in get_txt_records [20041] time: sys / time.h timespec Namespace [20043] libc: unistd.h fehlt cuserid für UNIX98 und vor [20044] libc: unistd .h fehlt pthread_atfork für UNIX98 [20051] libc: ttyslot in falscher Kopfzeile unter falschen Bedingungen [20054] libc: gethostname nicht für XPG4 deklariert [20055] libc: termios.h fehlt tcgetsid für XPG4 [20072] dynamic-link: x86 init_cpu_features wird zweimal in statischer ausführbarer Datei aufgerufen [20073] libc: sys / stat.h fchmod-Namespace [20074] libc: stdlib.h rand_r-Namespace [20076] libc: sys / stat .h fehlt S_IFSOCK, S_ISSOCK für XPG4 [20094] libc: stdlib.h sollte nicht grantpt, ptsname, unlockpt für XPG3 deklarieren [20111] libc: struct sockaddr_storage kann nicht aggregiert kopiert werden [20112] Netzwerk: sunrpc: stack (frame) overflow in Sun RPC clntudp_call (CVE-2016-4429) [20115] Zeichenfolge: Extra-Ausrichtung in memset-vec-unaligned-erms.S [20119] libc: Falsche Maske für Prozessoren-Level-Typ von CPUID [20139] Dynamic Link: Oberer Teil von zmm wird auf Null gesetzt, wenn Glibc mit AS gebaut wird, das nicht unterstützt AVX512 [20151] math: [ldbl-128 / ldbl-128ibm] j0l, j1l, y0l, y1l return sNaN für sNaN Argument [20153] math: [ldbl-128ibm] sqrtl (sNaN) gibt sNaN [20156] zurück math: [ldbl-128ibm] ceill, rintl usw. return sNaN für sNaN argument [20157] math: [powerpc] fabsl (sNaN) wirft fälschlicherweise "invalid" [20160] math: [p owerpc] ceil, rint usw.return sNaN für sNaN input [20178] libc: posix_spawn {p} sollte nicht aufrufen exit [20191] stdio: libio: vtables hardening [20195] string: FMA4 Erkennung erfordert CPUID Ausführung mit Register eax = 0x80000001 [20198] libc: quick_exit zerstört fälschlicherweise C ++ 11 Thread-Objekte. [20205] math: [i386 / x86_64] nextafterl falsches inkrementieren negativer subnormale [20212] math: acos (sNaN) liefert sNaN [20213] math: asin (sNaN) liefert sNaN [20214] netzwerk: linux header sync mit linux / in6. h und ipv6.h noch einmal.[20218] math: [i386] asinhl (sNaN) liefert sNaN [20219] math: [i386] atanhl (sNaN) liefert sNaN [20222] stdio: fopencookie: Zeigern der Funktionsfunktion [20224] math: [i386] cbrtl (sNaN) gibt sNaN [20225] zurück math: ldexp, scalbn, scalbln return sNaN für sNaN input [20226] math: [i386 / x86_64] expl, exp10l, expm1l return sNaN für sNaN input [20227] math: [i386 / x86_64] logl (sNaN ) gibt sNaN zurück [20228] math: [i386 / x86_64] log10l (sNaN) gibt sNaN zurück [20229] math: [i386 / x86_64] log1pl (sNaN) gibt sNaN zurück [20232] math: [ldbl-128] expm1l (sNaN) gibt zurück sNaN [20233] math: [ldbl-128ibm] expm1l (sNaN) liefert sNaN [20234] math: [ldbl-128ibm] log1pl (sNaN) liefert sNaN [20235] math: [i386 / x86_64] log2l (sNaN) liefert sNaN [ 20237] nss: nss_db: get * ent segfaults ohne vorhergehendes set * ent [20240] math: (sNaN) gibt sNaN zurück [20248] libc: debug / tst-longjump_chk2 ruft printf von einem signal handler [20250] math: frexp (sNaN ) gibt sNaN [20252] zurück math: atan2 (sNaN, qNaN) kann "ungültig" [20255] ma nicht erzeugen th: [i386] fdim, fdimf return mit excess range und precision / double rounding [20256] math: [i386 / x86_64] fdiml liefert sNaN für sNaN input [20260] string: ../sysdeps/x86/bits/string.
h: 1092: 3: Fehler: Array-Index ist unterhalb der Array-Grenzen [-Werror = Array-Grenzen] [20262] nis: _nss_nis_initgroups_dyn liefert immer NSS_STATUS_NOTFOUND [20263] nptl: Robuste Mutex-Deadlocks, wenn andere Thread-Anfragen timedlock (Nur arm / linux) [20277] libc: $ dp wird in sysdeps / hppa / start.S nicht korrekt initialisiert [20284] malloc: malloc: Korrupte Arena-Vermeidung verursacht unnötige mmap-Fallbacks [20296] math: [i386 / x86_64] scalbl liefert sNaN für sNaN-Eingabe, fehlende "ungültige" Ausnahmen [20314] nptl: make [4]: *** [/usr/include/stdlib.h] Fehler 1 [20316] localedata: id_ID: Februari statt Pebruari [20327] string: POWER8 strcasecmp gibt ein falsches Ergebnis zurück [20347] math: Fehler: Test: j0_downward (0xap + 0) [20348] libc: FEHLER: misc / tst-preadvwritev64 [20349] libc: 64-Bit-Wert wird in p {readv, writev} anders übergeben {64} [20350] libc: Es gibt keinen Test für p {lesen, schreiben} 64 [20357] math: Inkorrektes cos-Ergebnis für 1.5174239687223976 [20384] build: Führe keine libmvec-sincos-avx * -Tests auf non avx m durch achines
Was ist neu in Version 2.23:
- CVE-2015-7547: glibc getaddrinfo () stackbasierter Pufferüberlauf - Im Entwicklungszweig für die Veröffentlichung von glibc 2.23 wurde behoben.
Was ist neu in Version 2.21:
- Die folgenden Fehler werden mit dieser Freigabe gelöst: 6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618, 16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885, 17892.
- CVE-2015-1472 Unter bestimmten Bedingungen kann wscanf zu wenig Speicher für die zu durchsuchenden Argumente zuweisen und den zugewiesenen Puffer überlaufen lassen. Die Implementierung berechnet jetzt korrekt die erforderliche Puffergröße bei Verwendung von malloc.
- Ein neuer Semaphor-Algorithmus wurde in generischem C-Code für alle Maschinen implementiert. Frühere benutzerdefinierte Assembly-Implementierungen von Semaphoren waren schwierig zu überprüfen oder sicherzustellen, dass sie sicher waren. Die neue Version von Semaphor unterstützt Maschinen mit 64-Bit- oder 32-Bit-Atomoperationen. Der neue Semaphor-Algorithmus wird von sem_init, sem_open, sem_post, sem_wait, sem_timedwait, sem_trywait und sem_getvalue verwendet.
- Port zu Altera Nios II wurde von Mentor Graphics beigesteuert.
- Optimierte Strcpy-, Stpcpy-, Strncpy-, Stpncpy-, Strcmp- und Strncmp-Implementierungen für PowerPC64 / PowerPC64le. Implementiert von Adhemerval Zanella (IBM).
- Zusätzliche Unterstützung für die TSX-Sperrung von Pthread-Mutexen auf powerpc32, powerpc64 und powerpc64le. Dies kann die Sperrskalierung vorhandener Programme auf HTM-fähigen Systemen verbessern. Der Sperrcode ist nur aktiviert mit --enable-lock-elision = yes. Außerdem wird die TSX Lock Elision-Implementierung für PowerPC einen Transaktionsabbruch bei jedem Syscall auslösen, um zu vermeiden, dass Nebenwirkungen außerhalb von Transaktionen sichtbar sind.
- Optimierte Strcpy-, Stpcpy-, Strchrnul- und Strrchr-Implementierungen für AArch64. Beigetragen von ARM Ltd.
- i386 memcpy-Funktionen optimiert mit SSE2 unausgerichtetes Laden / Speichern.
- CVE-2104-7817 Die wordexp-Funktion konnte das WRDE_NOCMD-Flag unter bestimmten Eingabebedingungen ignorieren, was zur Ausführung einer Shell für die Befehlsersetzung führte, wenn die Anwendung sie nicht anforderte. Die Implementierung überprüft jetzt WRDE_NOCMD unmittelbar vor dem Ausführen der Shell und gibt den Fehler WRDE_CMDSUB wie erwartet zurück.
- CVE-2012-3406 printf-style-Funktionen könnten bei der Verarbeitung von Formatzeichenfolgen mit einer großen Anzahl von Formatbezeichnern zu einem Stapelüberlauf führen.
- CVE-2014-9402 Die Implementierung von getnetbyname in nss_dns könnte in eine Endlosschleife laufen, wenn die DNS-Antwort einen PTR-Record eines unerwarteten Formats enthält.
- Die GCC-Version, die zum Erstellen dieser Version der GNU C-Bibliothek verwendet werden kann, ist GCC 4.6. Ältere GCC-Versionen und Nicht-GNU-Compiler können weiterhin zum Kompilieren von Programmen mit der GNU C-Bibliothek verwendet werden.
- Die GNU C-Bibliothek wird jetzt standardmäßig mit -Werror erstellt. Dies kann durch Konfigurieren mit --disable-werror. deaktiviert werden
- Neue Gebietsschemas: tu_IN, bh_IN, raj_IN, ce_RU.
- Die veraltete sigvec-Funktion wurde entfernt. Dies war die ursprüngliche 4.2BSD-Schnittstelle, die die POSIX.1-sigaction-Schnittstelle inspirierte, die die Programme seit etwa 25 Jahren verwenden. Natürlich bleibt die ABI-Kompatibilität für alte Binärdateien, die sigvec verwenden, intakt.
- Zusammengefasster gettext 0.19.3 in das intl-Unterverzeichnis. Dies behebt das Bauen mit neueren Versionen von Bison.
- Unterstützung für MIPS o32 FPXX, FP64A und FP64 ABI Extensions. Das ursprüngliche MIPS o32 Hard-Float-ABI erfordert eine FPU, bei der Register mit doppelter Genauigkeit zwei aufeinanderfolgende Register mit einfacher Genauigkeit überlagern. MIPS32R2 führte einen neuen FPU-Modus (FR = 1) ein, bei dem Register mit doppelter Genauigkeit die entsprechenden Register mit einfacher Genauigkeit erweitern, was mit dem o32-Hard-Float-ABI inkompatibel ist. Die MIPS SIMD ASE- und die MIPSR6-Architektur erfordern beide die Verwendung von FR = 1, was einen Übergang notwendig macht. Neue o32 ABI-Erweiterungen ermöglichen es Benutzern, im Laufe der Zeit vom ursprünglichen o32 ABI zu dem aktualisierten o32 FP64 ABI zu migrieren. Um dies zu erreichen, verfolgt der dynamische Linker nun den ABI jedes geladenen Objekts und überprüft, ob neue Objekte kompatibel sind. Modusübergänge werden ebenfalls wie erforderlich angefordert und nicht unterstützbare Objekte werden zurückgewiesen. Die ABI-Prüfungen umfassen sowohl Soft- als auch Hard-Float-ABIs für o32, n32 und n64.
Kommentare nicht gefunden