spectre
Seção específica da Microsoft
Informa ao compilador para não inserir instruções de barreira de execução especulativa da variante 1 do Spectre para uma função.
Sintaxe
__declspec( spectre(nomitigation) )
Comentários
A opção do compilador /Qspectre faz com que o compilador insira instruções de barreira de execução especulativa. Eles são inseridos onde a análise indica que existe uma vulnerabilidade de segurança da variante 1 do Spectre. As instruções específicas emitidas dependem do processador. Embora essas instruções devam ter um impacto mínimo no tamanho ou no desempenho do código, pode haver casos em que o código não é afetado pela vulnerabilidade e requer o máximo de desempenho.
A análise de especialistas pode determinar que uma função está a salvo de um defeito de bypass de verificação de limites da variante 1 do Spectre. Nesse caso, você pode suprimir a geração de código de mitigação dentro de uma função aplicando-se __declspec(spectre(nomitigation))
à declaração de função.
Cuidado
As instruções de barreira de execução especulativa /Qspectre fornecem proteção de segurança importante e têm um efeito insignificante no desempenho. Portanto, recomendamos que você não suprime, exceto em casos raros em que o desempenho de uma função for um problema crítico e a função é comprovadamente segura.
Exemplo
O código a seguir mostra como usar __declspec(spectre(nomitigation))
.
// compile with: /c /Qspectre
static __declspec(spectre(nomitigation))
int noSpectreIssues() {
// No Spectre variant 1 vulnerability here
// ...
return 0;
}
int main() {
noSpectreIssues();
return 0;
}
Fim da seção específica da Microsoft