我正在阅读 Rust 不稳定的书,我看到了一个新功能emit-stack-sizes
,
rustc 标志
-Z emit-stack-sizes
使 LLVM 发出堆栈大小的元数据。
它继续说
注意:此 LLVM 功能仅支持 LLVM 8.0 起的 ELF 对象格式。将此标志与使用其他对象格式(例如 macOS 和 Windows)的目标一起使用将导致它被忽略。
它似乎正在使用的 LLVM 功能是EmitStackSizeSection
选项。知道堆栈大小的目的是什么?工具使用这个吗?这是 ELF 的官方功能吗?如果是,内核是否会使用它?这似乎记录在ELF 元数据中的部分.stack_sizes
、、.rel.stack_sizes
和.rela.stack_sizes
这在原始 RFC 中有所概述,“[eRFC] add
-Z emit-stack-sizes
”在这篇博文中,“实现一个静态堆栈使用分析工具”。可在此处获得用于此的工具(带有锈迹)