linux - QEMU 托管启用 MTE 的内核上的堆栈溢出不会引发错误
问题描述
我用 linux 5.10 和 qemu 5.2.93 测试堆栈溢出。它也无法检测堆栈上的溢出。这是我的示例
#include <stdio.h>
int main(int argc, char** argv)
{
volatile char pad[10];
char s[10];
for(int i=0; i<atoi(argv[1]); i++)
{
s[i] = i;
}
return 0;
}
我用 clang-13 编译它
clang -target aarch64-linux -march=armv8+memtag -fuse-ld=lld stack.c -o stack -fsanitize=memtag -static
我用一个简单的文件系统运行 qemu
qemu-system-aarch64 -machine virt,mte=on -cpu max -kernel ./linux/arch/arm64/boot/Image -nographic -append "console=ttyAMA0" -m 1024 -initrd ./filesystem.cpio.gz -net nic -monitor /dev/null
和
./stack 17
没有任何事情发生。
或者任何人都可以告诉我如何在 fvp 监视器上运行它。我还使用了启用 MTE 的内核,fvp 版本 11.8.37。我启用了 fvp mte -C cluster0.memory_tagging_support_level=2
。毕竟,上面的堆栈溢出程序也没有发生任何事情。
解决方案
推荐阅读
- r - openxlsx 中的换行符
- c++ - 在 Linux 上以编程方式获取准确的 CPU 缓存层次结构信息
- elasticsearch - ElasticSearch:是否可以按分数加权进行“加权平均聚合”?
- oracle - 调用 Stored Proc 时参数的数量或类型错误
- python - matplotlib 子图未显示
- reactjs - 用 Enzyme 测试 ReduxForm
- visual-studio - 使用 Visual Studio 2017 的 Wix 3.11 安装错误
- r - 在 Ubuntu 系统上的 R 中安装 Sodium 包时出现问题
- python - Python argparse - 两个可变长度的参数
- javascript - 如何获取有关电子 webview 崩溃事件的信息