Theme Preview

编译 OpenVPN 邂逅 ARM GCC bug

由 李晓岚 在 2017年05月07日发表

这几天折腾在 HG8120C 光猫(ONT)上运行 OpenVPN,历经千辛万苦编译成功了,结果运行中 Assert 失败,一路排查下来,最后发现居然是工具链 GCC 的错。这已经不是第一次遇到工具链的 bug了,第一次是 <a href="%E7%BC%96%E8%AF%91%E5%99%A8ADS%E4%B9%B1%E5%BA%8F%E4%BC%98%E5%8C%96%E5%AD%98%E5%9C%A8Bug" title="ARM编译器ADS1.2 Build 848存在乱序优化Bug">ARM ADS</a> 乱序优化的 bug,第二次是 <a href="Thumb-BLX-Instruction-Encoding" title="链接器中Thumb BLX指令编码">自己写的链接器</a>,如果这也算的话。 <a href="/arm-gcc-v4.4.7-bug-when-compile-openvpn-for-hg8120c-ont">..more</a>
评论» 标签:GCCARMASMONTOpenVPN 更多...

链接器中Thumb BLX指令编码

由 李晓岚 在 2013年05月22日发表

一年前实现了一个简单的ARM程序链接器。在实现Thumb指令调用ARM指令子过程时,使用了Thumb 2中的BLX指令。测试过程中发现某些情况下程序会死掉。进一步跟踪调试发现,只有当BLX指令没有4字节对齐时才会出问题。当时就采取了对未4字节对齐的BLX指令使用跳板(veneer)的策略,绕过了问题。一年多后,再次遇到这个问题,仔细阅读手册后,发现了问题的根源。 <a href="/Thumb-BLX-Instruction-Encoding">..more</a>
评论» 标签:ARMASMLinker 更多...