gcc:u_数据,_常数vs__文本,_常数

gcc:u_数据,_常数vs__文本,_常数,gcc,Gcc,根据,\uu数据,\uu const保存初始化的可重定位常量变量。我翻了一下,它看起来像是gcc在\uu数据中放置了初始化的const结构和数组,\uu const。不过,为什么不使用文本和常量呢 例如,和是初始化的常量结构,而不是数组 nm -m MinefieldNoPic.app/Contents/MacOS/firefox-bin |grep Koi8rModel 000000010156ce80 (__DATA,__const) non-external _Koi8rModel nm

根据,
\uu数据,\uu const
保存初始化的可重定位常量变量。我翻了一下,它看起来像是gcc在
\uu数据中放置了初始化的const结构和数组,\uu const
。不过,为什么不使用文本和常量呢

例如,和是初始化的常量结构,而不是数组

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

经典的意思是“代码”。Mac OS X看起来确实有问题,但正如其他海报所指出的,您所发现的是您在平台上应该期待的。

文本,常量部分用于不可重定位的初始化常量数据。举一个例子,jumtable。可重定位只读数据,如您给出的示例,转到u数据,u常数。

我刚刚意识到我的问题包含了答案<代码>\uuuu数据,\uuu常量确实是用于可重定位位的,但我问题中的位之所以是可重定位的,是因为它们是指针,因此需要在运行时进行修复。

不太正确,不可重定位的初始化数据实际上属于\uuuu文本,\uuu常量部分。