[問題] 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