根据Mac OS X ABI Mach-O File Format Reference,__DATA,__const
包含已初始化的可重定位常量变量。我戳了一下,看起来gcc在__DATA, __const
中放置了初始化的const结构和数组。但为什么不__TEXT,__const
?
Koi8rModel和CI_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
答案 0 :(得分:3)
__TEXT,__ const部分用于不可重定位的初始化常量数据。一个例子是一个混乱。可重定位的只读数据(如您提供的示例)转到__DATA,__ const。
答案 1 :(得分:1)
经典地,TEXT in this context表示“代码”。似乎Mac OS X似乎抛出了一些东西,但正如其他海报所指出的那样,你发现的是你在平台上应该期待的东西。
答案 2 :(得分:0)
我刚才意识到我的问题包含答案。 __DATA,__const
确实是可重定位的,但我问题中的位是可重定位的原因是因为它们是指针,因此需要在运行时修复。