作者wenli978 (文禮)
看板C_and_CPP
標題[問題] GCC 3.3和GCC 4.4的行為
時間Wed Jan 23 20:57:58 2019
開發平台(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):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.6.47
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1548248281.A.141.html
1F:→ Sanvean: SPARC 上的 GCC 有提供 align 相關的 flag 嗎? 01/23 22:37
2F:→ Sanvean: 或是新的機器一樣是 SPARC V8 的架構嗎? 01/23 22:47
3F:→ wenli978: 一樣是v8,align有pragma,看來要一個個去試了 01/24 07:57
4F:→ Sanvean: 會不會是隔壁樓 strict-aliasing 的問題? 01/24 23:12
5F:→ Sanvean: 我手上的程式把 dest = *((uint16_t *)orig); 換成 01/25 02:42
6F:→ Sanvean: memcpy(dest, orig, sizeof(uint16_t)) 就不會有 SIGBUS 01/25 02:43
7F:推 Sanvean: ^& 01/25 02:46
8F:→ wenli978: 樓上我試看看 01/26 18:01
9F:→ wenli978: 找到問題,有古代天兵用神奇指標造成的(眼神死 01/28 21:26
10F:→ chuegou: 太神啦恭喜 01/28 22:21
11F:推 x246libra: 用什麼方式找到的? 01/29 01:12
12F:→ wenli978: 開組語debug mode去抓exception點... 01/29 21:16