看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1548248281.A.141.html
Sanvean: SPARC 上的 GCC 有提供 align 相關的 flag 嗎? 01/23 22:37
Sanvean: 或是新的機器一樣是 SPARC V8 的架構嗎? 01/23 22:47
wenli978: 一樣是v8,align有pragma,看來要一個個去試了 01/24 07:57
Sanvean: 會不會是隔壁樓 strict-aliasing 的問題? 01/24 23:12
Sanvean: 我手上的程式把 dest = *((uint16_t *)orig); 換成 01/25 02:42
Sanvean: memcpy(dest, orig, sizeof(uint16_t)) 就不會有 SIGBUS 01/25 02:43
Sanvean: ^& 01/25 02:46
wenli978: 樓上我試看看 01/26 18:01
wenli978: 找到問題,有古代天兵用神奇指標造成的(眼神死 01/28 21:26
chuegou: 太神啦恭喜 01/28 22:21
x246libra: 用什麼方式找到的? 01/29 01:12
wenli978: 開組語debug mode去抓exception點... 01/29 21:16