Linux-PIC(位置无关代码)函数调用问题

Linux-PIC(位置无关代码)函数调用问题

虐人心 发布于 2017-10-05 字数 397 浏览 1198 回复 1

请问这么一个问题,困扰了我很久很久。csapp第7章讲链接的时候讲到了PIC函数调用问题(中文版p472),代码如下:

#include <stdio.h>
#include "vector.h"

int x[2] = {1, 2};
int y[2] = {3, 4};
int z[2];

int main()
{
addvec(x, y, z, 2);
printf("z = [%d %d]n", z[0], z[1]);
return 0;
}

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

虐人心 2017-10-09 1 楼

大致上就是,首次访问addvec时,GOT中没有addvec的地址,程序会调用动态链接器提供的_dl_runtime_resolve函数根据压入的addvec_id和.dynamic段中的信息(包括动态链接符号表、,动态链接字符串表、动态链接重定位表等)决定addvec的地址,填入GOT中。