GCC 4.7.2 虚函数漏洞问题

5
在MinGW的gcc 4.7.2中存在一个已知的bug,涉及虚拟继承和非虚拟继承在同一类中的一些情况下,导致无效的 this 指针传递给虚拟函数。有关详细信息,请参见此Bugzilla页面
这个bug困扰了我,我需要为我正在编写的Qt应用程序修复它。Bugzilla页面上有一个补丁,但是我如何获得包含此补丁的工作版本呢?据我所知,GNU下载页面仅提供原始的、有缺陷的版本。而在4.7.2之后的下一个gcc版本是4.8.0,但由于与我的Qt库不兼容,我不能使用它。
我必须在应用补丁之后从源代码构建gcc吗?如果可能的话,我当然要避免这样做!

修复编译器的替代方案可能是通过绕过代码中的错误(例如,不使用触发错误的功能组合)来解决问题。不知道在您的情况下是否可行? - NPE
不,恐怕不行。即使从源代码构建gcc也比那更有吸引力 :-/ - TonyK
2
哎呀,希望你能找到一个简单的解决方案(顺便说一句,我记得很久以前构建gcc并不太痛苦)。 - NPE
也许最好回退到GCC 4.7.1并重新构建Qt?在我看来,这是你可以做的最简单的事情。重新构建Qt或重新构建GCC...你在意吗? - Alexander Shukaev
@Haroogan:你可能是对的。但如果我这样做,我会先尝试使用gcc 4.8.0。 - TonyK
1个回答

1
我采纳了Haroogan的建议(从源代码重新构建Qt),但使用的是GCC 4.8.0而不是GCC 4.7.1。它成功了!至少,我已经使用了三天,目前还没有出现任何意外。唯一的小问题是在GCC 4.8.0中的内置头文件,需要应用this patch。除此之外,一切都很顺利(即只花了我两个晚上)。
更新后添加:我现在注意到调试器存在一些问题。所以也许我说得太早了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接