Closed heiher closed 3 months ago
LLVM Base: https://github.com/llvm/llvm-project/commit/14e7846d6e2c5c99c52ba3882e59bfb021a5f0fa
测试加载 /lib/modules 目录所有模块,暂未发现问题:
# cat /proc/version
Linux version 6.6.1+ (hev@lvm) (clang version 18.0.0 (https://github.com/llvm/llvm-project 39298613e7c2ed1ddc208c27c8428782c5342dc9), LLD 18.0.0) #4 SMP PREEMPT Thu Nov 9 14:26:48 CST 2023
# lsmod | wc
981 3171 41426
建议把 “The Clang option -fdirect-access-external-data
is enabled by default” 改成 “The Clang option -fdirect-access-external-data
may be mistakenly enabled by default”,因为我们肯定要修改 Clang 使得它别再这么干。
另外建议加上 KBUILD_CFLAGS_KERNEL += $(call cc-option, -fno-direct-access-external-data)
,这样我们修了 Clang 以后也不会在 vmlinux 里面搞出没用的 GOT。
建议把 “The Clang option
-fdirect-access-external-data
is enabled by default” 改成 “The Clang option-fdirect-access-external-data
may be mistakenly enabled by default”,因为我们肯定要修改 Clang 使得它别再这么干。另外建议加上
KBUILD_CFLAGS_KERNEL += $(call cc-option, -fno-direct-access-external-data)
,这样我们修了 Clang 以后也不会在 vmlinux 里面搞出没用的 GOT。
刚和华才沟通了下,他的建议是等llvm确定变更了以后再调整内核,让vmlinux显式打开direct-access-external-data
。
Bitcode 读、写完成,测试用例也加了一些。
建议把 “The Clang option
-fdirect-access-external-data
is enabled by default” 改成 “The Clang option-fdirect-access-external-data
may be mistakenly enabled by default”,因为我们肯定要修改 Clang 使得它别再这么干。另外建议加上
KBUILD_CFLAGS_KERNEL += $(call cc-option, -fno-direct-access-external-data)
,这样我们修了 Clang 以后也不会在 vmlinux 里面搞出没用的 GOT。
https://lore.kernel.org/loongarch/20231115132137.178523-1-wangrui@loongson.cn/T/#u
问题已经解决
根据 @xen0n 在LLVM Discurse的讨论结果^1尝试实现Code model attribute。
Commits: https://github.com/heiher/llvm-project/commits/model-attr
进展: