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, la splay_set_hook()fonction des conteneurs splay et le paramètre bool splay = truesupplémentaire dans la splaytree_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_errorlieu 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()et basic_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::numericAPI a été supprimée. Les utilisateurs peuvent utiliser à la boost::python::numpyplace.
  • 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 boostpaquet est maintenant indépendant de Python

Avec cette mise à jour, l'installation du boostpaquet n'installe plus la Boost.Pythonbibliothèque en tant que dépendance. Pour l'utiliserBoost.Python, vous devez installer explicitement le boost-python3ou les boost-python3-develpaquets.

(BZ#1616244)

Un nouveau compat-libgfortran-48forfait 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-48compatibilité est maintenant disponible, qui fournit la libgfortran.so.3bibliothè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, GCCetbinutils, fournissent maintenant une prise en charge étendue de l'architecture ARM 64 bits. Par exemple :

  • GCC et supporte binutilsmaintenant l'extension vectorielle évolutive (SVE).
  • La prise en charge du type de FP16données, fournie par ARM v8.2, a été ajoutée à GCC. Le type de FP16données améliore les performances de certains algorithmes.
  • Les outils supportent binutilsdé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 glibcles systèmes IBM POWER

Cette mise à jour fournit une glibcnouvelle 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 glibcvariante 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_SECUREdrapeau ignorent la variable d'LD_LIBRARY_PATHenvironnement.
    • 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.
  • 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_TUNABLESenvironnement 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.
  • 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.confconfiguration :

    • 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'rotateoption a été ajoutée.
  • De nouvelles fonctionnalités de développement ont été ajoutées, notamment :

    • Fonctions d'emballage Linux pour les appels preadv2et les appels au pwritev2noyau
    • Nouvelles fonctions incluant reallocarray()et explicit_bzero()
    • Nouveaux drapeaux pour la posix_spawnattr_setflags()fonction tels que POSIX_SPAWN_SETSID

(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 cmakepaquet.

(BZ#1590139, BZ#1502802)

make version 4.2.1

Red Hat Enterprise Linux 8 est distribué avec l'outil de makecompilation 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'--traceoption 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 makeplus 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-syncou-O, permet de regrouper une sortie de plusieurs tâches par tâche et de déboguer plus facilement les builds parallèles.
  • L'--debugoption 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 .POSIXvariable est spécifiée, makerespecter 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 MAKEFLAGSet MFLAGSest maintenant plus précisément défini.
  • Une nouvelle variable, GNUMAKEFLAGS, est analysée pour les makedrapeaux de la même manière que MAKEFLAGS. En conséquence, les drapeaux spécifiques à GNU makepeuvent être stockés à l'extérieur MAKEFLAGSet 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_TERMOUTet MAKE_TERMERR, indiquent si makela sortie standard et l'erreur d'écriture sur une borne sont en cours d'écriture.
  • Définir les options -ret -Rdans la MAKEFLAGSvariable à l'intérieur d'un makefile fonctionne maintenant correctement et supprime toutes les règles et variables intégrées, respectivement.
  • Le .RECIPEPREFIXré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 .RECIPEPREFIXréglage et toutes les variables spécifiques à la cible sont affichés dans l'édition de l'-poption 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_openssloption du gocompilateur 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=bpfoption.
  • 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 binutilsversion 2.30

Red Hat Enterprise Linux 8 inclut la version 2.30 du binutilspaquet. 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 goldliens 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 goldliens 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 readelfet objdumpont 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 --inlinesoption étend l'option existante --line-numbersde l'objdumpoutil pour afficher les informations d'imbrication des fonctions inlined.
  • L'nmoutil a obtenu une nouvelle option --with-version-stringspour 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-dstatoutil 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'pmdaperfeventoutil affiche maintenant les numéros de CPU corrects aux niveaux inférieurs du Multi-Threading Simultané Multi-Threading (SMT).
  • L'pmdapostgresqloutil prend désormais en charge la série 10.x de Postgres.
  • L'pmdaredisoutil prend désormais en charge la série 5.x de Redis.
  • L'pmdabccoutil a été amélioré avec un filtrage dynamique des processus et des syscalls, ucalls et ustat par processus.
  • L'pmdammvoutil exporte maintenant les étiquettes métriques, et la version de format est augmentée à 3.
  • L'pmdagfs2outil 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 glibcsystè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-readelfoutil 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 recherche eu-readelfmaintenant la taille et la signature des types de valeurs constantes pour les afficher correctement.
  • Une nouvelle fonction dwarf_next_lines()de lecture .debug_linedes données manquant de CU a été ajoutée à la bibliothèque libdw. Cette fonction peut être utilisée comme alternative aux dwarf_getsrcfiles()fonctions dwarf_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 shnumet les shstrndxvaleurs 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-debuginfooption 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'Helgrindoutil a été étendu avec une option --delta-stacktracepour spécifier le calcul de l'historique complet des traces de pile. Notamment, l'utilisation de cette option avec --history-level=fullpeut améliorer les Helgrindperformances jusqu'à 25%.
  • Le taux de faux positifs dans l'Memcheckoutil 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-checkspour 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 _Alignofet alignofles 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_scriptssection 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 rdrandrdseedinstructions 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 Catchsystè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-CODEpackage. 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'straceoutil 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=/regexoption 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 de stracecontinuer, 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 traceoption.
  • Le décodage du motif d'kvm vcpuexit a été ajouté. Pour ce faire, utilisez l'-e kvm=vcpuoption.
  • La libdwbibliothèque est maintenant utilisée pour le déroulement de la pile lorsque l'-koption est utilisée. De plus, le démêlage des symboles est possible lorsque la libibertybibliothèque est installée sur le système.
  • Auparavant, l'-roption faisait straceignorer l'-toption. 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'-Xoption a été ajoutée pour configurer le formatage de xlatsortie.
  • Le décodage des adresses de socket avec cette -yyoption a été amélioré. De plus, l'impression des numéros de bloc et de périphérique de caractères en -yymode 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 ioctlsystème
  • Constantes de différents types
  • Traçage du chemin d'accès pour execveatles appels symlinkatsystèmeinotify_add_watch, inotify_initles selectappels systèmesymlink, les appels système et mmaples appels système avec arguments indirects
  • Appels système spécifiques aux architectures ARM __ARM_NR_*
  • Listes de codes de signaux

(BZ#1641014)

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.