https://sourceware.org/pipermail/binutils/2023-October/130237.html
第一次给 binutils-gdb 交 patch,也不知道能不能合。🙏
第一次给 binutils-gdb 交 patch,也不知道能不能合。🙏
ksco 的工作日志
突然发现 Codemasters 出新作了,WRC licensed、虚幻引擎,只要 200 块!
玩了两个小时,这游戏优化好差,6600XT 只能开中画质。但好在手感是无可挑剔的,算是尘埃拉力赛 2.0 的精神续作。游戏性上也有了长足的进步,终于像个游戏而不是模拟器了。
今天学习了一下 rseq(restartable sequence),想到这个东西在 gdb 中的实现应该和 ll/sc 很像。但搜了一下 gdb 源码,各大架构好像都没有实现?大家对这个东西完全没有调试需求吗?
DR 等 DBT 对信号的处理都相当复杂,其本质原因是 Linux 的信号可以在任意时刻发生,而 DBT 不得不注册一个全局的 signal handler 对所有的信号统一处理再分发来模拟内核行为。
这就要求:
1. DBT 要么时刻保持精确的 guest 状态(和性能不可兼得),要么可以在任意时刻恢复出精确的 guest 状态;
2. trace building、basic block linking 等让执行流尽可能保留在 code cache 的优化手段进一步增加了复杂性 -- 异步信号 interruption point 所在的 basic block 必须 unlink 来保证可控的执行时间;
3. syscall 可能会等待一个信号,所以所有的 pending 信号必须在 syscall 之前被处理;
4. rseq 如果被信号打断,则需要重启;
5. ......
这就要求:
1. DBT 要么时刻保持精确的 guest 状态(和性能不可兼得),要么可以在任意时刻恢复出精确的 guest 状态;
2. trace building、basic block linking 等让执行流尽可能保留在 code cache 的优化手段进一步增加了复杂性 -- 异步信号 interruption point 所在的 basic block 必须 unlink 来保证可控的执行时间;
3. syscall 可能会等待一个信号,所以所有的 pending 信号必须在 syscall 之前被处理;
4. rseq 如果被信号打断,则需要重启;
5. ......
ksco 的工作日志
https://sourceware.org/pipermail/binutils/2023-October/130237.html 第一次给 binutils-gdb 交 patch,也不知道能不能合。🙏
Approved-By: Andrew Burgess
🥰3
GitHub Actions 最近上了一大批 AMD 的 x86 机器,DR 的某几个 x86 测试只要分到这些机器上就大概率会挂,上游又比较缺人修,每次想合代码都要 rerun 好多遍撞大运,好烦啊 😫