登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
其他开源
>
RISC-V 开发
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
103
Star
297
Fork
98
泰晓科技
/
RISCV-Linux
代码
Issues
11
Pull Requests
5
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
【开源之夏】通过编译器解决因链接过程KEEP操作引起的Section GC失败问题
已完成
#I79PO6
falcon
拥有者
创建于
2023-05-31 12:25
1. 项目标题:通过编译器解决因链接过程KEEP操作引起的Section GC失败问题 2. 项目描述:Linux 内核等项目支持 Section GC,在链接时能自动删除没有被使用到的函数和变量,但是有一类特殊的段,比如 exception table,虽然由函数调用需求触发生成,但是并没有明确的引用记录,导致这类 Section 需要通过KEEP操作强制保留,结果是,这种强制保留导致本来无人使用的函数无法被正常删除。该项目旨在通过编译器增加某种机制,确保这类特殊的段在创建时可以按需在触发生成它们的函数和这些段之间建立某种引用关系,从而避免通过KEEP来强制保留,进而解决相关函数的Section GC失败问题,并在此基础上消除内核中KEEP操作的滥用,该项目优先基于 RISC-V 架构。 3. 项目难度:进阶 4. 项目社区导师:@lzufalcon 5. 导师联系方式:falcon@tinylab.org 6. 合作导师联系方式:暂无 7. 项目产出要求: - 在某个编译器(GCC或/和LLVM)中新增某种机制,确保在通过 .pushsection 新建 Section 时可以自动建立当前函数对该 Section 的引用,输出 1 篇文章 - 在 Linux 内核中验证该机制的有效性,在无 KEEP 的情况下,确保 Section GC 不能自动删除上述 Section,输出 1 篇文章 - 把 Linux 内核中所有类似的场景全部替换为新的机制,消除 KEEP 的滥用,输出 1 篇文章 - 把相关成果合并进 Linux Lab 开源项目的 section-gc 分支,并往相关项目的上游提交 Patch - 撰写 1 篇开发手册,1 篇使用文档,1 份测试报告并在泰晓社区开展 1 期线上技术直播 - 文章需以 Markdown 格式提交进泰晓社区的 “RISC-V Linux 内核剖析” 项目仓库 8. 项目技术要求: - 有 Linux 内核开发与使用经验 - 有 GCC 或 LLVM 编译器的开发经验 - 有 RISC-V 架构汇编或操作系统开发经验 - 学习过 C 语言、编译原理、操作系统等课程 - 掌握 Linux Lab 的用法 9. 相关的开源软件仓库列表: - Linux Lab: <https://gitee.com/tinylab/linux-lab> - RISC-V Linux: <https://gitee.com/tinylab/riscv-linux> - GCC: <https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git> - LLVM: <https://github.com/llvm/llvm-project>
1. 项目标题:通过编译器解决因链接过程KEEP操作引起的Section GC失败问题 2. 项目描述:Linux 内核等项目支持 Section GC,在链接时能自动删除没有被使用到的函数和变量,但是有一类特殊的段,比如 exception table,虽然由函数调用需求触发生成,但是并没有明确的引用记录,导致这类 Section 需要通过KEEP操作强制保留,结果是,这种强制保留导致本来无人使用的函数无法被正常删除。该项目旨在通过编译器增加某种机制,确保这类特殊的段在创建时可以按需在触发生成它们的函数和这些段之间建立某种引用关系,从而避免通过KEEP来强制保留,进而解决相关函数的Section GC失败问题,并在此基础上消除内核中KEEP操作的滥用,该项目优先基于 RISC-V 架构。 3. 项目难度:进阶 4. 项目社区导师:@lzufalcon 5. 导师联系方式:falcon@tinylab.org 6. 合作导师联系方式:暂无 7. 项目产出要求: - 在某个编译器(GCC或/和LLVM)中新增某种机制,确保在通过 .pushsection 新建 Section 时可以自动建立当前函数对该 Section 的引用,输出 1 篇文章 - 在 Linux 内核中验证该机制的有效性,在无 KEEP 的情况下,确保 Section GC 不能自动删除上述 Section,输出 1 篇文章 - 把 Linux 内核中所有类似的场景全部替换为新的机制,消除 KEEP 的滥用,输出 1 篇文章 - 把相关成果合并进 Linux Lab 开源项目的 section-gc 分支,并往相关项目的上游提交 Patch - 撰写 1 篇开发手册,1 篇使用文档,1 份测试报告并在泰晓社区开展 1 期线上技术直播 - 文章需以 Markdown 格式提交进泰晓社区的 “RISC-V Linux 内核剖析” 项目仓库 8. 项目技术要求: - 有 Linux 内核开发与使用经验 - 有 GCC 或 LLVM 编译器的开发经验 - 有 RISC-V 架构汇编或操作系统开发经验 - 学习过 C 语言、编译原理、操作系统等课程 - 掌握 Linux Lab 的用法 9. 相关的开源软件仓库列表: - Linux Lab: <https://gitee.com/tinylab/linux-lab> - RISC-V Linux: <https://gitee.com/tinylab/riscv-linux> - GCC: <https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git> - LLVM: <https://github.com/llvm/llvm-project>
评论 (
31
)
登录
后才可以发表评论
状态
已完成
待办的
进行中
已完成
已关闭
负责人
未设置
Reset816
Reset12138
负责人
协作者
+负责人
+协作者
falcon
wuzhangjin
负责人
协作者
+负责人
+协作者
标签
feature
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
未关联
master
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
1
https://gitee.com/tinylab/riscv-linux.git
git@gitee.com:tinylab/riscv-linux.git
tinylab
riscv-linux
RISCV-Linux
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册