[問題] GCC 3.3和GCC 4.4的行為

看板C_and_CPP (C/C++)作者 (文禮)時間7年前 (2019/01/23 20:58), 編輯推噓2(2010)
留言12則, 4人參與, 7年前最新討論串1/1
開發平台(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

01/23 22:37, 7年前 , 1F
SPARC 上的 GCC 有提供 align 相關的 flag 嗎?
01/23 22:37, 1F

01/23 22:47, 7年前 , 2F
或是新的機器一樣是 SPARC V8 的架構嗎?
01/23 22:47, 2F

01/24 07:57, 7年前 , 3F
一樣是v8,align有pragma,看來要一個個去試了
01/24 07:57, 3F

01/24 23:12, 7年前 , 4F
會不會是隔壁樓 strict-aliasing 的問題?
01/24 23:12, 4F

01/25 02:42, 7年前 , 5F
我手上的程式把 dest = *((uint16_t *)orig); 換成
01/25 02:42, 5F

01/25 02:43, 7年前 , 6F
memcpy(dest, orig, sizeof(uint16_t)) 就不會有 SIGBUS
01/25 02:43, 6F

01/25 02:46, 7年前 , 7F
^&
01/25 02:46, 7F

01/26 18:01, 7年前 , 8F
樓上我試看看
01/26 18:01, 8F

01/28 21:26, 7年前 , 9F
找到問題,有古代天兵用神奇指標造成的(眼神死
01/28 21:26, 9F

01/28 22:21, 7年前 , 10F
太神啦恭喜
01/28 22:21, 10F

01/29 01:12, 7年前 , 11F
用什麼方式找到的?
01/29 01:12, 11F

01/29 21:16, 7年前 , 12F
開組語debug mode去抓exception點...
01/29 21:16, 12F
文章代碼(AID): #1SI6JP51 (C_and_CPP)
文章代碼(AID): #1SI6JP51 (C_and_CPP)