4.10. Compilateurs et outils de développement (traduction automatique)
Mise à jour de Boost à la version 1.66
La bibliothèque Boost C+++ a été mise à jour vers la version amont 1.66. La version de Boost incluse dans Red Hat Enterprise Linux 7 est la 1.53. Pour plus de détails, voir le journal des modifications en amont : https://www.boost.org/users/history/
Cette mise à jour introduit les changements suivants qui rompent la compatibilité avec les versions précédentes :
-
La
bs_set_hook()
fonction, lasplay_set_hook()
fonction des conteneurs splay et le paramètrebool splay = true
supplémentaire dans lasplaytree_algorithms()
fonction de la bibliothèque Intrusive ont été supprimés. - Les commentaires ou la concaténation de chaînes dans les fichiers JSON ne sont plus pris en charge par l'analyseur de la bibliothèque Property Tree.
-
Certaines distributions et fonctions spéciales de la bibliothèque Math ont été corrigées pour se comporter comme documenté et élever une valeur au
overflow_error
lieu de retourner la valeur finie maximale. -
Certains en-têtes de la bibliothèque Math ont été déplacés dans le répertoire
libs/math/include_private
. -
Le comportement des fonctions
basic_regex<>::mark_count()
etbasic_regex<>::subexpression(n)
de la bibliothèque Regex a été modifié pour correspondre à leur documentation. - L'utilisation de modèles variadiques dans la bibliothèque Variant peut interrompre les fonctions de métaprogrammation.
-
L'
boost::python::numeric
API a été supprimée. Les utilisateurs peuvent utiliser à laboost::python::numpy
place. - Les opérations arithmétiques sur les pointeurs vers des types non objets ne sont plus fournies dans la bibliothèque Atomic.
(BZ#1494495)
Prise en charge d'Unicode 11.0.0.0
La bibliothèque C de Red Hat Enterprise Linux, glibc, a été mise à jour pour prendre en charge la version standard Unicode 11.0.0. Par conséquent, toutes les API de caractères larges et multi-octets, y compris la translittération et la conversion entre les jeux de caractères, fournissent des informations précises et correctes conformes à cette norme.
(BZ#1512004)
Le boost
paquet est maintenant indépendant de Python
Avec cette mise à jour, l'installation du boost
paquet n'installe plus la Boost.Python
bibliothèque en tant que dépendance. Pour l'utiliserBoost.Python
, vous devez installer explicitement le boost-python3
ou les boost-python3-devel
paquets.
(BZ#1616244)
Un nouveau compat-libgfortran-48
forfait disponible
Pour la compatibilité avec les applications Red Hat Enterprise Linux 6 et 7 utilisant la bibliothèque Fortran, un nouveau paquet de compat-libgfortran-48
compatibilité est maintenant disponible, qui fournit la libgfortran.so.3
bibliothèque.
(BZ#1607227)
Prise en charge de la rétropoline dans le CCG
Cette mise à jour ajoute la prise en charge des repolignes à GCC. Une retpoline est une construction logicielle utilisée par le noyau pour réduire les coûts d'atténuation des attaques Spectre Variant 2 décrites dans CVE-2017-5715.
(BZ#1535774)
Prise en charge améliorée de l'architecture ARM 64 bits dans les composants de la chaîne d'outils
Les composants de la chaîne d'outils, GCC
etbinutils
, fournissent maintenant une prise en charge étendue de l'architecture ARM 64 bits. Par exemple :
-
GCC
et supportebinutils
maintenant l'extension vectorielle évolutive (SVE). -
La prise en charge du type de
FP16
données, fournie par ARM v8.2, a été ajoutée àGCC
. Le type deFP16
données améliore les performances de certains algorithmes. -
Les outils supportent
binutils
désormais la définition de l'architecture ARM v8.3, y compris l'authentification par pointeur. La fonction d'authentification par pointeur empêche le code malveillant de corrompre l'exécution normale d'un programme ou du noyau en créant leurs propres pointeurs de fonction. Par conséquent, seules les adresses de confiance sont utilisées lors de la connexion à différents endroits du code, ce qui améliore la sécurité.
(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)
Optimisations pour glibc
les systèmes IBM POWER
Cette mise à jour fournit une glibc
nouvelle version optimisée pour les architectures IBM POWER 8 et IBM POWER 9. Par conséquent, les systèmes IBM POWER 8 et IBM POWER 9 passent automatiquement à la glibc
variante appropriée et optimisée au moment de l'exécution.
(BZ#1376834)
Bibliothèque GNU C mise à jour vers la version 2.28
Red Hat Enterprise Linux 8 inclut la version 2.28 de la bibliothèque C de GNU (glibc). Parmi les améliorations notables, mentionnons :
Caractéristiques de trempe de sécurité :
-
Les fichiers binaires sécurisés marqués d'un
AT_SECURE
drapeau ignorent la variable d'LD_LIBRARY_PATH
environnement. - Les backtraces ne sont plus imprimés pour les échecs de vérification de pile afin d'accélérer l'arrêt et d'éviter d'exécuter plus de code dans un environnement compromis.
-
Les fichiers binaires sécurisés marqués d'un
Amélioration des performances :
-
Les performances de la
malloc()
fonction ont été améliorées avec un cache local de thread. -
Ajout de la variable d'
GLIBC_TUNABLES
environnement pour modifier les caractéristiques de performance de la bibliothèque. -
La mise en œuvre des sémaphores à fils a été améliorée et de nouvelles fonctions évolutives
pthread_rwlock_xxx()
ont été ajoutées. - Les performances de la bibliothèque de mathématiques ont été améliorées.
-
Les performances de la
- La prise en charge d'Unicode 11.0.0.0 a été ajoutée.
- La prise en charge améliorée des nombres en virgule flottante 128 bits tels que définis par les normes ISO/IEC/IEEE 60559:2011, IEEE 754-2008 et ISO/IEC TS 18661-3:2015 a été ajoutée.
Améliorations du résolveur de stub du service de noms de domaine (DNS) liées au fichier de
/etc/resolv.conf
configuration :- La configuration est automatiquement rechargée lorsque le fichier est modifié.
- La prise en charge d'un nombre arbitraire de domaines de recherche a été ajoutée.
-
Une sélection aléatoire appropriée pour l'
rotate
option a été ajoutée.
De nouvelles fonctionnalités de développement ont été ajoutées, notamment :
-
Fonctions d'emballage Linux pour les appels
preadv2
et les appels aupwritev2
noyau -
Nouvelles fonctions incluant
reallocarray()
etexplicit_bzero()
-
Nouveaux drapeaux pour la
posix_spawnattr_setflags()
fonction tels quePOSIX_SPAWN_SETSID
-
Fonctions d'emballage Linux pour les appels
(BZ#1512010, BZ#1504125, BZ#506398)
CMake disponible en RHEL
La version 3.11 du système CMake build est disponible dans Red Hat Enterprise Linux 8 comme cmake
paquet.
(BZ#1590139, BZ#1502802)
make
version 4.2.1
Red Hat Enterprise Linux 8 est distribué avec l'outil de make
compilation version 4.2.1. Parmi les changements notables, mentionnons :
- Lorsqu'une recette échoue, le nom du makefile et le numéro de ligne de la recette sont affichés.
-
L'
--trace
option a été ajoutée pour permettre le traçage des cibles. Lorsque cette option est utilisée, chaque recette est imprimée avant l'invocation, même si elle est supprimée, avec le nom du fichier et le numéro de ligne où se trouve cette recette, ainsi que les conditions préalables à son appel. -
Le mélange de règles explicites et implicites n'entraîne
make
plus l'arrêt de l'exécution. Au lieu de cela, un message d'avertissement est imprimé. Notez que cette syntaxe est obsolète et pourrait être complètement supprimée à l'avenir. -
La
$(file …)
fonction a été ajoutée pour écrire du texte dans un fichier. Lorsqu'il est appelé sans argument texte, il ne fait qu'ouvrir et fermer immédiatement le fichier. -
Une nouvelle option,
--output-sync
ou-O
, permet de regrouper une sortie de plusieurs tâches par tâche et de déboguer plus facilement les builds parallèles. -
L'
--debug
option accepte maintenant aussi l'option (nonen
) pour désactiver tous les paramètres de débogage actuellement activés. -
L'opérateur d'assignation du
!=
shell a été ajouté comme alternative à la$(shell …)
fonction pour augmenter la compatibilité avec les makefiles BSD. Pour plus de détails et les différences entre l'opérateur et la fonction, voir le manuel GNU make.
Notez qu'en conséquence, les variables dont le nom se termine par un point d'exclamation et est immédiatement suivi d'une assignation, commevariable!=value
, par exemple, sont maintenant interprétées comme la nouvelle syntaxe. Pour restaurer le comportement précédent, ajoutez un espace après le point d'exclamation, tel que variable! =value
.
+
-
L'opérateur d'
::=
affectation défini par le standard POSIX a été ajouté. -
Lorsque la
.POSIX
variable est spécifiée,make
respecter les exigences de la norme POSIX pour le traitement des antislash et des nouvelles lignes. Dans ce mode, tout espace en fin de ligne avant la barre oblique inverse est préservé, et chaque barre oblique inverse suivie d'une nouvelle ligne et des espaces blancs sont convertis en un seul espace. -
Le comportement des variables
MAKEFLAGS
etMFLAGS
est maintenant plus précisément défini. -
Une nouvelle variable,
GNUMAKEFLAGS
, est analysée pour lesmake
drapeaux de la même manière queMAKEFLAGS
. En conséquence, les drapeaux spécifiques à GNUmake
peuvent être stockés à l'extérieurMAKEFLAGS
et la portabilité des makefiles est augmentée. -
Une nouvelle variable,
MAKE_HOST
, contenant l'architecture hôte a été ajoutée. -
Les nouvelles variables,
MAKE_TERMOUT
etMAKE_TERMERR
, indiquent simake
la sortie standard et l'erreur d'écriture sur une borne sont en cours d'écriture. -
Définir les options
-r
et-R
dans laMAKEFLAGS
variable à l'intérieur d'un makefile fonctionne maintenant correctement et supprime toutes les règles et variables intégrées, respectivement. -
Le
.RECIPEPREFIX
réglage est maintenant mémorisé par recette. De plus, les variables développées dans cette recette utilisent également ce préfixe de recette. -
Le
.RECIPEPREFIX
réglage et toutes les variables spécifiques à la cible sont affichés dans l'édition de l'-p
option comme dans un makefile, au lieu d'être des commentaires.
(BZ#1641015)
Les programmes Go créés avec Go Toolset sont conformes aux normes FIPS
La bibliothèque cryptographique disponible dans Go Toolset a été modifiée pour utiliser la bibliothèque OpenSSL version 1.1.0 si le système hôte est configuré en mode FIPS. Par conséquent, les programmes construits avec cette version de Go Toolset sont conformes aux normes FIPS.
Pour que les programmes Go n'utilisent que les routines cryptographiques standard non certifiées, utilisez l'-tags no_openssl
option du go
compilateur lors de la compilation.
(BZ#1512570)
SystemTap version 4.0
Red Hat Enterprise Linux 8 est distribué avec l'outil d'instrumentation SystemTap version 4.0. Parmi les améliorations notables, mentionnons :
-
Le backend étendu de Berkeley Packet Filter (eBPF) a été amélioré, en particulier les chaînes de caractères et les fonctions. Pour utiliser ce backend, lancez SystemTap avec l'
--runtime=bpf
option. - Un nouveau service de réseau d'exportation à utiliser avec le système de surveillance Prometheus a été ajouté.
- L'implémentation du palpage d'appel système a été améliorée pour utiliser les points de trace du noyau si nécessaire.
(BZ#1641032)
Améliorations dans la binutils
version 2.30
Red Hat Enterprise Linux 8 inclut la version 2.30 du binutils
paquet. Parmi les améliorations notables, mentionnons :
- La prise en charge des nouvelles extensions d'architecture s390x a été améliorée.
Assembleur :
- La prise en charge du format de fichier WebAssembly et la conversion de WebAssembly au format de fichier wasm32 ELF ont été ajoutées.
- La prise en charge de l'architecture ARMv8-R et des processeurs Cortex-R52, Cortex-M23 et Cortex-M33 a été ajoutée.
- La prise en charge de l'architecture RISC-V a été ajoutée.
Linkers :
- L'éditeur de liens place maintenant le code et les données en lecture seule dans des segments séparés par défaut. En conséquence, les fichiers exécutables créés sont plus gros et plus sûrs à exécuter, car le chargeur dynamique peut désactiver l'exécution de toute page mémoire contenant des données en lecture seule.
- La prise en charge des notes de propriétés GNU qui fournissent des conseils au chargeur dynamique sur le fichier binaire a été ajoutée.
- Auparavant, l'éditeur de liens générait un code exécutable invalide pour la technologie Intel Indirect Branch Tracking (IBT). Par conséquent, les fichiers exécutables générés ne pouvaient pas démarrer. Ce bogue a été corrigé.
-
Auparavant, l'éditeur de
gold
liens fusionnait incorrectement les notes de propriété. Par conséquent, de mauvaises caractéristiques matérielles pourraient être activées dans le code généré, et le code pourrait se terminer de manière inattendue. Ce bogue a été corrigé. -
Auparavant, l'éditeur de
gold
liens créait des sections de notes avec des octets de remplissage à la fin pour obtenir un alignement selon l'architecture. Comme le chargeur dynamique ne s'attendait pas à ce que le rembourrage se produise, il a pu interrompre inopinément le programme qu'il était en train de charger. Ce bogue a été corrigé.
Autres outils :
-
Les outils
readelf
etobjdump
ont maintenant des options pour suivre les liens dans des fichiers d'informations de débogage séparés et afficher les informations qu'ils contiennent également. -
La nouvelle
--inlines
option étend l'option existante--line-numbers
de l'objdump
outil pour afficher les informations d'imbrication des fonctions inlined. -
L'
nm
outil a obtenu une nouvelle option--with-version-strings
pour afficher les informations de version d'un symbole après son nom, si présent.
(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)
Performace copilote version 4.1.3
Red Hat Enterprise Linux 8 est distribué avec Performance co-pilot (pcp) version 4.1.3. Parmi les améliorations notables, mentionnons :
-
L'
pcp-dstat
outil inclut maintenant l'analyse historique et la sortie au format CSV (Comma-separated Values). - Les utilitaires de journalisation peuvent utiliser des étiquettes métriques et des enregistrements de texte d'aide.
-
L'
pmdaperfevent
outil affiche maintenant les numéros de CPU corrects aux niveaux inférieurs du Multi-Threading Simultané Multi-Threading (SMT). -
L'
pmdapostgresql
outil prend désormais en charge la série 10.x de Postgres. -
L'
pmdaredis
outil prend désormais en charge la série 5.x de Redis. -
L'
pmdabcc
outil a été amélioré avec un filtrage dynamique des processus et des syscalls, ucalls et ustat par processus. -
L'
pmdammv
outil exporte maintenant les étiquettes métriques, et la version de format est augmentée à 3. -
L'
pmdagfs2
outil prend en charge d'autres mesures de glock et de porte-glock. - Plusieurs corrections ont été apportées à la politique de SELinux.
(BZ#1641034)
Touches de protection de la mémoire
Cette mise à jour permet d'activer des fonctions matérielles qui permettent de modifier les drapeaux de protection par page de fil de discussion. Les nouvelles enveloppes d'appel glibc
système ont été ajoutées pour les pkey_mprotect()
fonctionspkey_alloc()
,pkey_free()
, et,. De plus, les fonctions pkey_set()
et pkey_get()
et ont été ajoutées pour permettre l'accès aux drapeaux de protection par fil.
(BZ#1304448)
elfutils
mise à jour vers la version 0.174
Dans Red Hat Enterprise Linux 8, le paquet elfutils est disponible en version 0.174. Parmi les changements notables, mentionnons :
-
Auparavant, l'
eu-readelf
outil pouvait afficher une variable avec une valeur négative comme si elle avait une grande valeur non signée, ou afficher une grande valeur non signée comme une valeur négative. Ceci a été corrigé et rechercheeu-readelf
maintenant la taille et la signature des types de valeurs constantes pour les afficher correctement. -
Une nouvelle fonction
dwarf_next_lines()
de lecture.debug_line
des données manquant de CU a été ajoutée à la bibliothèque libdw. Cette fonction peut être utilisée comme alternative auxdwarf_getsrcfiles()
fonctionsdwarf_getsrclines()
et. -
Auparavant, les fichiers contenant plus de 65280 sections pouvaient causer des erreurs dans les bibliothèques libelf et libdw et tous les outils les utilisant. Ce bogue a été corrigé. Par conséquent, les valeurs étendues
shnum
et lesshstrndx
valeurs dans les en-têtes de fichiers ELF sont traitées correctement.
(BZ#1641007)
Mise à jour de Valgrind à la version 3.14
Red Hat Enterprise Linux 8 est distribué avec l'outil d'analyse de code exécutable Valgrind version 3.14. Parmi les changements notables, mentionnons :
-
Une nouvelle
--keep-debuginfo
option a été ajoutée pour permettre la conservation des informations de débogage pour le code non chargé. Par conséquent, les traces de pile sauvegardées peuvent inclure des informations de fichier et de ligne pour du code qui n'est plus présent dans la mémoire. - Des suppressions basées sur le nom du fichier source et le numéro de ligne ont été ajoutées.
-
L'
Helgrind
outil a été étendu avec une option--delta-stacktrace
pour spécifier le calcul de l'historique complet des traces de pile. Notamment, l'utilisation de cette option avec--history-level=full
peut améliorer lesHelgrind
performances jusqu'à 25%. -
Le taux de faux positifs dans l'
Memcheck
outil d'optimisation du code sur les architectures Intel et AMD 64-bit et l'architecture ARM 64-bit a été réduit. Notez que vous pouvez utiliser le--expensive-definedness-checks
pour contrôler le traitement des contrôles de définition et améliorer le taux aux dépens de la performance. - Valgrind peut maintenant reconnaître plus d'instructions de la variante little-endian d'IBM Power Systems.
- Valgrind peut maintenant traiter partiellement les instructions de vecteur entier et de chaîne de caractères du processeur IBM Z architecture z13.
Pour plus d'informations sur les nouvelles options et leurs limitations connues, consultez la page de valgrind(1)
manuel.
(BZ#1641029, BZ#1501419)
GDB version 8.2
Red Hat Enterprise Linux 8 est distribué avec le débogueur GDB version 8.2 Les modifications notables incluent :
-
Le protocole IPv6 est supporté pour le débogage à distance avec GDB et
gdbserver
. - Le débogage sans informations de débogage a été amélioré.
- La complétion des symboles dans l'interface utilisateur GDB a été améliorée pour offrir de meilleures suggestions en utilisant plus de constructions syntaxiques telles que des balises ABI ou des espaces de noms.
- Les commandes peuvent maintenant être exécutées en arrière-plan.
- Le débogage des programmes créés dans le langage de programmation Rust est maintenant possible.
-
Le débogage des langages C et C+++ a été amélioré avec la prise en charge de l'analyseur pour les opérateurs
_Alignof
etalignof
les opérateurs, les références de valeurs r C++ et les tableaux automatiques C99 de longueur variable. - Les scripts d'extension GDB peuvent maintenant utiliser le langage de script Guile.
-
L'interface de langage de script Python pour les extensions a été améliorée avec de nouvelles fonctions API, des décorateurs d'images, des filtres et des dérouleurs. De plus, les scripts de la
.debug_gdb_scripts
section de configuration de GDB sont chargés automatiquement. - GDB utilise maintenant la version 3 de Python pour exécuter ses scripts, y compris les jolies imprimantes, les décorateurs de cadres, les filtres et les dérouleurs.
- Les architectures ARM et ARM 64 bits ont été améliorées avec l'enregistrement et la relecture de l'exécution des processus, y compris les instructions Thumb 32 bits et les appels système.
- La prise en charge du registre Intel MPX et de la violation liée, du registre PKU et de l'Intel Processor Trace a été ajoutée.
-
La fonctionnalité d'enregistrement et de lecture a été étendue pour inclure les
rdrand
rdseed
instructions sur les systèmes basés sur Intel. -
La fonctionnalité de GDB sur l'architecture IBM Z a été étendue avec la prise en charge des points de trace et des points de trace rapides, des registres vectoriels et ABI, et de l'appel
Catch
système. De plus, GDB supporte désormais les instructions plus récentes de l'architecture. - GDB peut maintenant utiliser les sondes d'espace utilisateur statiques SystemTap (SDT) sur l'architecture ARM 64 bits.
(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332)
La localisation pour RHEL est distribuée en plusieurs paquets
Dans RHEL 8, les locales et les traductions ne sont plus fournies par le paquet uniqueglibc-common
. Au lieu de cela, chaque locale et chaque langue est disponible dans un glibc-langpack-CODE
package. De plus, toutes les locales ne sont pas installées par défaut, seules celles sélectionnées dans le programme d'installation. Les utilisateurs doivent installer tous les autres paquets locaux dont ils ont besoin séparément.
Pour plus d'informations sur l'utilisation des langpacks, voir Installing and using langpacks.
(BZ#1512009)
strace
mise à jour vers la version 4.24
Red Hat Enterprise Linux 8 est distribué avec l'strace
outil version 4.24. Parmi les changements notables, mentionnons :
-
Des fonctions d'altération des appels système ont été ajoutées avec cette
-e inject=
option. Cela comprend l'injection d'erreurs, de valeurs de retour, de retards et de signaux. La qualification des appels système a été améliorée :
-
Une
-e trace=/regex
option a été ajoutée pour filtrer les appels système avec des expressions régulières. -
L'ajout préalable d'un point d'interrogation à une qualification d'appel système dans l'
-e trace=
option permet destrace
continuer, même si la qualification ne correspond à aucun appel système. -
La désignation de personnalité a été ajoutée aux qualifications d'appel système dans l'
-e trace
option.
-
Une
-
Le décodage du motif d'
kvm vcpu
exit a été ajouté. Pour ce faire, utilisez l'-e kvm=vcpu
option. -
La
libdw
bibliothèque est maintenant utilisée pour le déroulement de la pile lorsque l'-k
option est utilisée. De plus, le démêlage des symboles est possible lorsque lalibiberty
bibliothèque est installée sur le système. -
Auparavant, l'
-r
option faisaitstrace
ignorer l'-t
option. Ceci a été corrigé et les deux options sont maintenant indépendantes. - L'option[option]`-A a été ajoutée pour ouvrir les fichiers de sortie en mode ajout.
-
L'
-X
option a été ajoutée pour configurer le formatage dexlat
sortie. -
Le décodage des adresses de socket avec cette
-yy
option a été amélioré. De plus, l'impression des numéros de bloc et de périphérique de caractères en-yy
mode a été ajoutée.
De plus, le décodage des éléments suivants a été ajouté, amélioré ou mis à jour :
-
netlink
protocoles, messages et attributs -
arch_prctl
,bpf
,getsockopt
,io_pgetevent
,kern_features
,,,,,,pkey_free
,pkey_mprotect
,ptrace
,,rseq
,setsockopt
,socket
,,,statx
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,keyctl
,prctl
,,,,,,pkey_alloc
,,,,,,, -
De nombreuses commandes pour l'appel
ioctl
système - Constantes de différents types
-
Traçage du chemin d'accès pour
execveat
les appelssymlinkat
systèmeinotify_add_watch
,inotify_init
lesselect
appels systèmesymlink
, les appels système etmmap
les appels système avec arguments indirects -
Appels système spécifiques aux architectures ARM
__ARM_NR_*
- Listes de codes de signaux
(BZ#1641014)