ID de l'article: 000085705 Type de contenu: Dépannage Dernière révision: 19/05/2015

Pourquoi est-ce que je vois des pannes lorsque j’utilise la dereferencing Null pointer dans la chaîne d’outils nios2-elf-gcc 4.9 ?

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • Processeur Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descriptif

    Dans le Quartus® Version 15.0 du logiciel II, Nios® Code ii compile à l’aide de la chaîne d’outils nios2-elf-gcc 4.9. Lors de la compilation du code à -O2 (ou supérieur) avec la chaîne d’outils nios2-elf-gcc 4.9, l’optimisation -fisolate-erroneous-paths-dereference sera activé par défaut.

     

    Comme décrit dans

    https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options,

     

    -fisolate-erroneous-paths-dereference

    Détectez les chemins qui déclenchent un comportement incorrect ou non défini en raison de la dereferencing d’un pointeur null. Isolez ces chemins du flux de contrôle principal et transformez la déclaration avec un comportement incorrect ou non défini dans un piège. Cet indicateur est activé par défaut à -O2 et supérieur.

     

    Cette optimisation signifie que lorsque lachain d’outils détecte que le code essaie de charger ou de stocker via un pointeur null possible, il va changer la déclaration de charge ou de stockage en instruction trap. Cela peut entraîner un plantage du programme intégré sans avertissement de temps de compilation.

    Résolution

    Si votre conception contient des données valides à l’adresse zéro, compilez votre code à l’aide du commutateur suivant pour éviter les problèmes liés aux déférences de pointage nuls :

     

    -fno-delete-null-pointer-checks

    Produits associés

    Cet article concerne 1 produits

    Circuits programmables Intel®

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.