linux常用头文件详解(11)

发布时间:2021-06-06

linux常用头文件详解

3)r_pcrel——如果设置了该位,链接程序就认为正在更新一个指针,该指针使用pc相关寻址方式,是属于机器码指令部分。当运行程序使用这个被重定位的指针时,该指针的地址被隐式地加到该指针上。

4)r_length——该字段含有指针长度的2的次方值:0表示1字节长,1表示2字节长,2表示4字节长。

5)r_extern——如果被置位,表示该重定位需要一个外部引用;此时链接程序必须使用一个符号地址来更新相应指针。当该位是0时,则重定位是“局部”的。链接程序更新指针以反映各个段加载地址中的变化,而不是反映一个符号值的变化。在这种情况下,r_symbolnum字段的内容是一个n_type值;这类字段告诉链接程序被重定位的指针指向那个段。

6)r_pad——Linux系统中没有使用的4个比特位。在写一个目标文件时最好全置0。

符号将名称映射为地址(或者更通俗地讲是字符串映射到值)。由于链接程序对地址的调整,一个符号的名称必须用来表示其地址,直到已被赋予一个绝对地址值。符号是由符号表中固定长度的记录以及字符串表中的可变长度名称组成。符号表是nlist结构的一个数组,如下所示:

其中各字段的含义为:

1)n_un.n_strx——含有本符号的名称在字符串表中的字节偏移值。当程序使用nlist()函数访问一个符号表时,该字段被替换为n_un.n_name字段,这是内存中字符串的指针。

2)n_type——用于链接程序确定如何更新符号的值。使用第146~154行开始的位屏蔽(bitmasks)码可以将8比特宽度的n_type字段分割成三个子字段,如图14-2所示。对于N_EXT类型位置位的符号,链接程序将它们看作是“外部的”符号,并且允许其他二进制目标文件对它们的引用。N_TYPE屏蔽码用于链接程序感兴趣的比特位:

linux常用头文件详解(11).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219