[问题] GCC 3.3和GCC 4.4的行为

楼主: wenli978 (文礼)   2019-01-23 20:57:58
开发平台(Platform): (Ex: Win10, Linux, ...)
SPARC V8
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC 3.3 & 4.4
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
no
问题(Question):
公司有一台老SPARC V8架构
GCC 3.3跑古早时代的C程式码编出来运作正常
GCC 4.4编同一支出来的程式会出现0x7 misalignment
对过data type没有改变
想问一下不同GCC的版本是不是会对struct做不同的padding
由于是古早时代的人留下来的code
因为一些理由要用GCC4.4编到新的SPARC V8上面跑
不然就要一层一层去找指标造成misalignment的源头了
补充说明(Supplement):
作者: Sanvean   2019-01-23 22:37:00
SPARC 上的 GCC 有提供 align 相关的 flag 吗?或是新的机器一样是 SPARC V8 的架构吗?
楼主: wenli978 (文礼)   2019-01-24 07:57:00
一样是v8,align有pragma,看来要一个个去试了
作者: Sanvean   2019-01-24 23:12:00
会不会是隔壁楼 strict-aliasing 的问题?我手上的程式把 dest = *((uint16_t *)orig); 换成memcpy(dest, orig, sizeof(uint16_t)) 就不会有 SIGBUS^&
楼主: wenli978 (文礼)   2019-01-26 18:01:00
楼上我试看看
作者: chuegou (chuegou)   2019-01-28 22:21:00
太神啦恭喜
作者: x246libra (楓)   2019-01-29 01:12:00
用什么方式找到的?
楼主: wenli978 (文礼)   2019-01-29 21:16:00
开组语debug mode去抓exception点...

Links booklink

Contact Us: admin [ a t ] ucptt.com