建议方案1,在gcc中合入bugfix
在firefox的spec文件中是否需要关闭-fstack-clash-protection建议再进一步分析,一般认为这里可能有潜在的代码隐患,最好的方式是不要去关闭一个安全检查掩耳盗铃,而是通过修改代码修复安全问题
发件人: Zhanghaijian (A) 发送时间: 2020年10月28日 10:47 收件人: gaojianxing gaojianxing@huawei.com; xiasenlin xiasenlin1@huawei.com; guoge (A) guoge1@huawei.com; qiaopeixin qiaopeixin@huawei.com 抄送: Zhangtao (zhangtao, AX) zhangtao221@huawei.com 主题: RE: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
目前就3个方案可以讨论:
1、关闭选项-fstack-clash-protection,回合bugfix patch。
2、关闭选项-fstack-clash-protection,升级gcc7.5。
3、升级gcc9.3。
方案3影响非常大,不建议。
-------------------------------------------------- 章海剑 Zhang Haijian Mobile: +86-15958121590tel:+86-15958121590 Email: z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com 发件人:Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com> 收件人:gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com>;xiasenlin <xiasenlin1@huawei.commailto:xiasenlin1@huawei.com>;guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>;qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 抄 送:Zhangtao (zhangtao, AX) <zhangtao221@huawei.commailto:zhangtao221@huawei.com> 时 间:2020-10-28 10:35:47 主 题:RE: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
编译选项“-fstack-clash-protection”,我们并没有说可以去掉,去掉会降低安全性,如果要去掉,需要firefox负责人自己评估
-------------------------------------------------- 章海剑 Zhang Haijian Mobile: +86-15958121590tel:+86-15958121590 Email: z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com 发件人:gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com> 收件人:xiasenlin <xiasenlin1@huawei.commailto:xiasenlin1@huawei.com>;guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>;Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com>;qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 抄 送:Zhangtao (zhangtao, AX) <zhangtao221@huawei.commailto:zhangtao221@huawei.com> 时 间:2020-10-28 10:26:09 主 题:答复: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
Firefox 79.0 依赖gcc(7.3.0)编译问题进展
在编译器组兄弟的协助下,对于firefox 79.0编译不通过问题定位如下:
问题1:firefox79.0 中 RefPtr.h 中相关构造函数问题,是gcc的一个bug引起的,Patch:https://github.com/gcc-mirror/gcc/commit/57b9683f0ce55a410c567fcb2dc365a2cc8... 可以解决此问题; 问题2:编译选项“-fstack-clash-protection”gcc 7.3.0 不识别问题,这个参数编译器提供的一个堆栈冲突缓解的选项,用于提高安全性的。注(编译器组兄弟说是可以去掉) 问题3:编译选项“-m64”参数不识别问题,-m64是x86 64位应用编译选项,m64选项设置int为32bits及long、指针为64 bits,为AMD的x86 64架构生成代码。在Arm64平台无法支持,arm64 对应的选项为:-mabi=lp64
方案选择: gcc openEuler-20.03-LTS-Next、openEuler-20.03-LTS版本需要合入C++ PR/81589补丁; 在firefox的spec文件强行将默认的-fstack-clash-protection编译参数去除,注(只在openEuler-20.03-LTS-Next、openEuler-20.03-LTS)分支中移除,对arm64版本-m64参数更换为-mabi=lp64。
发件人: xiasenlin 发送时间: 2020年10月27日 15:30 收件人: gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com>; guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>; Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com>; qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 主题: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
1. 原始问题: firefox基于当前版本的gcc编译失败
2. 原因分析: firefox(79.0)需要智能指针特性,但是gcc7.3不支持(7.5及之后的版本是支持的)
3. 当前进展: 尝试依赖gcc7.5编译firefox(79.0),在强制关闭firefox中的-fstack-clash-protection选项后可以编译成功。
4. 下一步计划: 对比7.3到7.5之间的commit,找到能在gcc7.3上让firefox编译成功的patch。
5. 风险: 短时间内找到有风险,每次尝试gcc上打patch之后编译新的二进制后重编firefox一次需要2h。
6. 可能的最终策略: 本次的firefox是在LTS-NEXT分支,为SP1做准备,如果月底解决不掉当前的编译问题,firefox需要移出分支。
同意方案一,-fstack-clash-protection 是gcc-8支持的新选项,理论上只能关闭。 那么gcc的patch烦请章海剑合入,我们这边接下来尝试验证firefox的功能是否有安全风险,但是不保证能完全排除。
发件人: guoge (A) 发送时间: 2020年10月28日 10:50 收件人: Zhanghaijian (A) z.zhanghaijian@huawei.com; gaojianxing gaojianxing@huawei.com; xiasenlin xiasenlin1@huawei.com; qiaopeixin qiaopeixin@huawei.com 抄送: Zhangtao (zhangtao, AX) zhangtao221@huawei.com; Chengwentao (Vintorcheng) chengwentao@huawei.com; tc tc@openeuler.org; dev@openeuler.org 主题: 答复: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
建议方案1,在gcc中合入bugfix
在firefox的spec文件中是否需要关闭-fstack-clash-protection建议再进一步分析,一般认为这里可能有潜在的代码隐患,最好的方式是不要去关闭一个安全检查掩耳盗铃,而是通过修改代码修复安全问题
发件人: Zhanghaijian (A) 发送时间: 2020年10月28日 10:47 收件人: gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com>; xiasenlin <xiasenlin1@huawei.commailto:xiasenlin1@huawei.com>; guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>; qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 抄送: Zhangtao (zhangtao, AX) <zhangtao221@huawei.commailto:zhangtao221@huawei.com> 主题: RE: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
目前就3个方案可以讨论:
1、关闭选项-fstack-clash-protection,回合bugfix patch。
2、关闭选项-fstack-clash-protection,升级gcc7.5。
3、升级gcc9.3。
方案3影响非常大,不建议。
-------------------------------------------------- 章海剑 Zhang Haijian Mobile: +86-15958121590tel:+86-15958121590 Email: z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com 发件人:Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com> 收件人:gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com>;xiasenlin <xiasenlin1@huawei.commailto:xiasenlin1@huawei.com>;guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>;qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 抄 送:Zhangtao (zhangtao, AX) <zhangtao221@huawei.commailto:zhangtao221@huawei.com> 时 间:2020-10-28 10:35:47 主 题:RE: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
编译选项“-fstack-clash-protection”,我们并没有说可以去掉,去掉会降低安全性,如果要去掉,需要firefox负责人自己评估
-------------------------------------------------- 章海剑 Zhang Haijian Mobile: +86-15958121590tel:+86-15958121590 Email: z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com 发件人:gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com> 收件人:xiasenlin <xiasenlin1@huawei.commailto:xiasenlin1@huawei.com>;guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>;Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com>;qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 抄 送:Zhangtao (zhangtao, AX) <zhangtao221@huawei.commailto:zhangtao221@huawei.com> 时 间:2020-10-28 10:26:09 主 题:答复: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
Firefox 79.0 依赖gcc(7.3.0)编译问题进展
在编译器组兄弟的协助下,对于firefox 79.0编译不通过问题定位如下:
问题1:firefox79.0 中 RefPtr.h 中相关构造函数问题,是gcc的一个bug引起的,Patch:https://github.com/gcc-mirror/gcc/commit/57b9683f0ce55a410c567fcb2dc365a2cc8... 可以解决此问题; 问题2:编译选项“-fstack-clash-protection”gcc 7.3.0 不识别问题,这个参数编译器提供的一个堆栈冲突缓解的选项,用于提高安全性的。注(编译器组兄弟说是可以去掉) 问题3:编译选项“-m64”参数不识别问题,-m64是x86 64位应用编译选项,m64选项设置int为32bits及long、指针为64 bits,为AMD的x86 64架构生成代码。在Arm64平台无法支持,arm64 对应的选项为:-mabi=lp64
方案选择: gcc openEuler-20.03-LTS-Next、openEuler-20.03-LTS版本需要合入C++ PR/81589补丁; 在firefox的spec文件强行将默认的-fstack-clash-protection编译参数去除,注(只在openEuler-20.03-LTS-Next、openEuler-20.03-LTS)分支中移除,对arm64版本-m64参数更换为-mabi=lp64。
发件人: xiasenlin 发送时间: 2020年10月27日 15:30 收件人: gaojianxing <gaojianxing@huawei.commailto:gaojianxing@huawei.com>; guoge (A) <guoge1@huawei.commailto:guoge1@huawei.com>; Zhanghaijian (A) <z.zhanghaijian@huawei.commailto:z.zhanghaijian@huawei.com>; qiaopeixin <qiaopeixin@huawei.commailto:qiaopeixin@huawei.com> 主题: 关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
关于firefox(79.0)依赖gcc(7.3)编译问题的讨论纪要
1. 原始问题: firefox基于当前版本的gcc编译失败
2. 原因分析: firefox(79.0)需要智能指针特性,但是gcc7.3不支持(7.5及之后的版本是支持的)
3. 当前进展: 尝试依赖gcc7.5编译firefox(79.0),在强制关闭firefox中的-fstack-clash-protection选项后可以编译成功。
4. 下一步计划: 对比7.3到7.5之间的commit,找到能在gcc7.3上让firefox编译成功的patch。
5. 风险: 短时间内找到有风险,每次尝试gcc上打patch之后编译新的二进制后重编firefox一次需要2h。
6. 可能的最终策略: 本次的firefox是在LTS-NEXT分支,为SP1做准备,如果月底解决不掉当前的编译问题,firefox需要移出分支。