使用 arm64 MTE 的 clang 堆栈检测的可行 PoC

Workable PoC of clang stack instrumentation with arm64 MTE

是否有 arm64 MTE 的 clang 堆栈检测的任何可行的 PoC? 我尝试使用 arm64 MTE 启用 clang 堆栈检测,但面临 clang 中出现的错误,该错误会导致误报 MTE 报告。我在 LLVM bugzilla 中报告了问题 - https://bugs.llvm.org/show_bug.cgi?id=51362。 很有趣,有人成功地 运行 clang stack instrumentation with arm64 MTE 吗?

整个堆栈应该用一些默认分配标签初始化:

char *sp = alloc_kernel_stack();
/* set the logical tag */
sp = insert_random_tag(sp);
for (i = 0; i < STACK_SIZE; i += 16) {
/* set the allocation tag */
    set_tag(sp);
    sp += i;
}

这将修复 MTE 误报报告。可以在此处找到更多详细信息 - https://bugs.llvm.org/show_bug.cgi?id=51362