ID do artigo: 000085705 Tipo de conteúdo: Solução de problemas Última revisão: 19/05/2015

Por que vejo falhas quando uso a dereferencing de ponteiro Nulo no ToolChain nios2-elf-gcc 4.9?

Ambiente

    Intel® Quartus® II Subscription Edition
    Processador Intel® Nios® II
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

No Quartus® SOFTWARE II versão 15.0, Nios® O código II compila usando a ferramenta nios2-elf-gcc 4.9. Ao compilar o código em -O2 (ou superior) com a ferramenta nios2-elf-gcc 4.9, a otimização -desreferência fisolate-erroneous-paths será ligado por padrão.

 

Conforme descrito em

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

 

-desreferência fisolate-erroneous-paths

Detecte caminhos que desencadeiam comportamento errôneo ou indefinido devido à dereferencing de um ponteiro nulo. Isole esses caminhos do fluxo de controle principal e transforme a declaração com comportamento errôneo ou indefinido em uma armadilha. Este sinalizador é habilitado por padrão em -O2 e superior.

 

Essa otimização significa que quando a ferramenta detecta o código que está tentando carregar ou armazenar através de um possível ponteiro nulo, ele mudará a instrução de carga ou armazenamento em uma instrução de trap. Isso pode causar falha no programa embarcado sem um aviso de tempo de compilação.

Resolução

Se o seu projeto contiver dados válidos no endereço zero, compile seu código usando o seguinte comutador para evitar problemas relacionados a desreferências de ponteiro nulo:

 

-fno-delete-null-pointer-checks

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.