随着算力需求的提升,我们不断往 CPU 加入新的 ISA 扩展来提高指令表达能力。然而,在软件分发过程中,为每一种 CPU 所支持的 ISA 扩展组合进行编译与分发并不现实,无法接受各种组合的软件构建成本以及镜像站的存储成本。因此,在目前的软件中,往往通过增加性能敏感函数针对不同 ISA 的实现,配合一些函数重定向方法来解决问题。然而,这些方法或多或少存在性能或安全的问题,特别是 IFUNC 机制更是被著名的 xz 软件后门所利用。因此,cyy 希望在 Tunight 上与大家分享目前常见软件实现一个二进制支持多种 ISA 扩展的方法,以及探讨目前的性能与安全问题的案例以及可行的解决方案。
欢迎大家一起来玩!