2009-12-01 72 views
1

根據Mac OS X ABI Mach-O File Format Reference__DATA,__const保存了已初始化的可重定位常數變量。我探討了一下,它看起來像gcc的地方初始化const結構和數組在__DATA, __const。但爲什麼不是__TEXT,__constgcc:__DATA,__ const vs __TEXT,__ const

Koi8rModelCI_nsJSCID,例如,是初始化const結構,而AlignStrings是一個數組。

nm -m MinefieldNoPic.app/Contents/MacOS/firefox-bin |grep Koi8rModel 
000000010156ce80 (__DATA,__const) non-external _Koi8rModel 

nm -m MinefieldNoPic.app/Contents/MacOS/firefox-bin |grep CI_nsJSCID 
0000000101441060 (__DATA,__const) non-external __ZL10CI_nsJSCID 

nm -m MinefieldNoPic.app/Contents/MacOS/firefox-bin |grep AlignStrings 
000000010154f8c0 (__DATA,__const) non-external __ZL13sAlignStrings 

回答

2

__TEXT,__const部分用於不可重定位的初始化常量數據。一個例子是可跳數。可重新定位的只讀數據,如您提供的示例,轉至__DATA,__const。

1

典型地,TEXT in this context表示「代碼」。它確實看起來像Mac OS X引發了一些事情,但正如其他海報所指出的那樣,您發現的是您在平臺上所期望的。

+0

不完全正確,不可重定位的初始化數據實際值屬於__TEXT,__const段。 http://developer.apple.com/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html#//apple_ref/doc/uid/TP40000895-CH248-95908 – hirschhornsalz 2009-12-01 13:04:24

0

我剛剛意識到我的問題包含答案。 __DATA,__const確實是可重定位的位,但是我的問題中的位是可重定位的原因是因爲它們是指針,因此需要在運行時修復。