loongson-community / discussions

Cross-community issue tracker & discussions / 跨社区工单追踪 & 讨论场所
7 stars 0 forks source link

[LLVM] Code model attribute #10

Closed heiher closed 3 months ago

heiher commented 8 months ago

根据 @xen0n 在LLVM Discurse的讨论结果^1尝试实现Code model attribute。

Commits: https://github.com/heiher/llvm-project/commits/model-attr

进展:

heiher commented 8 months ago

内核: https://github.com/heiher/linux/commits/clang

heiher commented 8 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
xry111 commented 8 months ago

内核: https://github.com/heiher/linux/commits/clang

建议把 “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。

heiher commented 8 months ago

内核: https://github.com/heiher/linux/commits/clang

建议把 “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

heiher commented 8 months ago

Bitcode 读、写完成,测试用例也加了一些。

heiher commented 8 months ago

内核: https://github.com/heiher/linux/commits/clang

建议把 “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

heiher commented 3 months ago

问题已经解决