我为 mips 架构构建了带有 SSP 支持的 linux 内核模块。我将-fstack-protector-all添加到编译标志中。但是在加载这个模块后,我对__stack_chk_guard和__stack_chk_fail有未定义的引用。但是我将libssp.so添加到链接器中。看起来我应该在内核中导出这些符号,如下所示:
EXPORT_SYMBOL(__stack_chk_guard);
因为我的内核很旧并且还没有包含它们。但不幸的是我应该使用这个版本。
我的问题是:为什么用户空间可以使用工具链库中的这个符号,但内核空间不能?
我想,我错过了一些 linux 内核要领。