首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在生锈可执行文件中添加堆栈金丝雀?

如何在生锈可执行文件中添加堆栈金丝雀?
EN

Stack Overflow用户
提问于 2018-01-31 16:56:05
回答 2查看 1.3K关注 0票数 8

我想在我正在做的一个项目中强化一些可执行的项目。为了进行测试,我使用了hello程序,并使用校验秒进行检查,该程序报告说没有金丝雀。我对Rust非常陌生,谷歌上信息的缺乏让我觉得自己错过了一些显而易见的东西。

对于GCC,它是一个简单的编译器标志:-fstack-protector-all。我在LLVM中发现的最接近的东西是安全栈。然而,当我试图将它传递给LLVM时,锈蚀编译器似乎并不认识到这一点。例如:

代码语言:javascript
复制
rustc -C llvm-args="-fsanitize=safe-stack" -C link-arg="-fsanitize=safe-stack" test.rust

结果在

rustc:未知的命令行参数‘-fsanitize=安全堆栈’。试一试:‘生锈的-help’你的意思是‘-不叫’?

我用的是Rust 1.23.0。我试图添加这些金丝雀不仅在x86_64上,而且在armeabi-v7a上,如果这是相关的话。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 18:34:40

您现在不能使用LLVM的SafeStack。

-fsanitize=safe-stack是Clang命令行选项,不一定是LLVM选项。这很可能解释了为什么您会得到所做的错误。

SafeStack支持最初是在第26612期中提出的,但是启用它被推迟到可以执行更多的调查。

由于SafeStack是一种消毒液,接下来要做的就是第39699期,这是更多消毒液的跟踪问题。目前只支持少数几种消毒液和平台。它可能就像把它添加到列表中并创建一个公共关系来启用它一样“简单”。

话虽如此,我相信铁锈确实有一定的堆叠保护。例如,这个最近的问题讨论了对glibc即将进行的一些更改将如何影响Rust的堆栈保护计算。

票数 6
EN

Stack Overflow用户

发布于 2018-01-31 18:34:27

目前,这是不支持的:

我们更新了LLVM,所以在我们的LLVM中支持这个安全的堆栈属性,我认为在默认情况下打开它可能需要一些调查,并且可能首先需要一个RFC,所以我现在要结束它。 -- alexcrichton https://github.com/rust-lang/rust/issues/26612

我无法为这个功能找到一个RFC。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48547475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档