Как проверить, работает ли флаг ослабления призрака, используемый в Visual Studio 2017, для C ++?

Я хочу посмотреть, как флаг смягчения призрака решил проблему, чтобы убедить мою команду, что нам нужно добавить этот флаг в нашу большую базу кода для будущих проектов.

Я ищу образцы проектов, которые имеют уязвимость в спектре и устраняются путем добавления флага уменьшения спектра, представленного на прошлой неделе в Visual Studio 2017.

Может ли кто-нибудь помочь мне в демонстрации моей большой команды POC для демонстрации того, как недавно добавленная поддержка Microsoft в Visual Studio преодолевает проблему?

Вот последний заметки о выпуске от Microsoft для VS 2017

Изменить на вопрос: 23 августа 2018 г.

В погоне за ответом я попробовал следующую кодовую форму майкрософт по смягчению последствий призрака:

#include "stdafx.h"int G, G1, G2;

__forceinline
int * bar(int **p, int i)
{
return p[i];
}

__forceinline
void bar1(int ** p, int i)
{
if (i < G1) {
auto x = p[i]; // mitigation here
G = *x;
}
}

__forceinline
void foo(int * p)
{
G = *p;
}

void baz(int ** p, int i)
{
if (i < G1) {
foo(bar(p, i + G2));
}
bar1(p, i);
}

int main()
{
return 0;
}

Когда я компилирую код с включенным флагом смягчения призрака:

Свойства проекта> Свойства конфигурации> C / C ++> Spectre
Смягчение> Включено

Три дополнительных изменения также необходимо сделать, чтобы включить это изменение:

  1. Изменить с / Od на / O2 в оптимизации

Свойства проекта> Свойства конфигурации> C / C ++> Оптимизация>
/ O2

  1. Базовые проверки времени выполнения по умолчанию

Свойства проекта> Свойства конфигурации> C / C ++> Код
Генерация> Основные проверки времени выполнения> По умолчанию

  1. Добавлен каталог библиотеки VC в путь компоновщика

Свойства проекта> Свойства конфигурации> Линкер> Общие>
Дополнительные каталоги библиотек> C: \ Program Files (x86) \ Microsoft
Visual Studio \ 2017 \ Enterprise \ VC \ Tools \ MSVC \ 14.15.26726 \ lib \ x86

Примечание: вместо жесткого кодирования путь, как это

C: \ Program Files (x86) \ Microsoft Visual
Студия \ 2017 \ Enterprise \ VC \ Tools \ MSVC \ 14.15.26726 \ Lib \ x86

, Вы можете использовать переменную Visual Studio, например:

$ (VCToolsInstallDir) \ Lib \ x86 \

Я получаю следующий вывод:

C: \ Program Files (x86) \ Microsoft Visual
Студия \ 2017 \ Enterprise \ Common7 \ IDE \ VC \ VCTargets \ Microsoft.CppBuild.targets (402,5):
предупреждение MSB8038: смягчение спектра включено, но смягчение спектра
библиотеки не найдены. Убедитесь, что рабочая нагрузка Visual Studio
включает в себя смягченные библиотеки Spectre. Увидеть https://aka.ms/Ofhn4c
для дополнительной информации.

Я не знаю, что делать на этом этапе. Я получаю выходной исполняемый файл, но хочу, чтобы функция смягчения Spectre была тестируемой. Пожалуйста, помогите мне.

0

Решение

Я изменил VS 2017 Installer и сравнил мою установку с выбранными по умолчанию элементами на странице Microsoft для Смягчение Призрака.

Пример Microsoft

Компоненты, которые были пропущены в предыдущей установке VS 2017

Я не заметил вкладку «Отдельные компоненты». Во вкладке я пропустил некоторые важные зависимости (спасибо @Retired Ninja). После установки это сообщение перестало появляться в сборке для примера смягчения призрака.

Тем не менее, я все еще ищу более конкретный вариант использования.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]