gpt4 book ai didi

c++ - 如何验证 Visual Studio 2017 中使用的 Spectre Mitigation 标志是否适用于 C++?

转载 作者:行者123 更新时间:2023-11-30 03:21:41 30 4
gpt4 key购买 nike

我想看看 Spectre 缓解标志如何解决一个问题,以说服我的团队我们需要将此标志添加到我们即将进行的项目的大型代码库中。

我正在搜索具有 Spectre 漏洞并通过添加上周在 Visual Studio 2017 中引入的 Spectre 缓解标志来解决的示例项目。

有人可以帮我制作一个 POC 来向我的大团队演示 Microsoft 最近在 Visual Studio 中添加的支持如何解决这个问题吗?

这是最新的release notes来自 Microsoft 的 VS 2017。

问题编辑:2018 年 8 月 23 日

为了寻求答案,我尝试了以下代码形式的 Microsoft Spectre Mitigation 页面:

#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;
}

当我在启用 Spectre 缓解标志的情况下编译代码时:

Project Properties > Configuration Properties > C/C++ > Spectre Mitigation > Enabled

还需要进行三个额外的更改以合并此更改:

  1. 在优化中从/Od 更改为/O2

Project Properties > Configuration Properties > C/C++ > Optimization > /O2

  1. 默认的基本运行时检查

Project Properties > Configuration Properties > C/C++ > Code Generation > Basic Run time Checks > Default

  1. 将 VC 库目录添加到链接器路径

Project Properties > Configuration Properties > Linker > General > Additional Library Directories > C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86

注意:不要像这样硬编码路径

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86

,您可以像这样使用 Visual Studio 变量:

$(VCToolsInstallDir)\lib\x86\

我得到以下输出:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(402,5): warning MSB8038: Spectre mitigation is enabled but Spectre mitigated libraries are not found. Verify that the Visual Studio Workload includes the Spectre mitigated libraries. See https://aka.ms/Ofhn4c for more information.

我现在不知道该怎么办。我得到了一个输出可执行文件,但我希望 Spectre 缓解功能是可测试的。请帮助我。

最佳答案

我修改了 VS 2017 安装程序并将我的安装与 Microsoft 页面中的默认选择项目进行了比较 Spectre Mitigation .

Microsoft Example

Components that were missed in the previous installation of VS 2017

我没有注意到单个组件选项卡。在选项卡中,我错过了一些重要的依赖项(感谢@Retired Ninja)。安装后,该消息不再出现在 Spectre 缓解示例的构建中。

但是,我仍在寻找更具体的用例。

关于c++ - 如何验证 Visual Studio 2017 中使用的 Spectre Mitigation 标志是否适用于 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941573/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com