延迟绑定

来源:互联网 发布:ubuntu重启网络管理器 编辑:程序博客网 时间:2024/05/18 00:36
  1. (gdb) x/w  0x8049578  
  2. 0x8049578 <_GLOBAL_OFFSET_TABLE_+20>:   0x080482c2  

 从上面可以看出,这个地址就是GOT表中的一项。它里面的内容是0x80482c2,即puts@plt中的第二条指令。

前面我们不是提到过,GOT中这里本应该是puts函数的地址才对,那为什么会这样呢?

原来链接器在把所需要的共享库加载进内存后,并没有把共享库中的函数的地址写到GOT表项中,而是延迟到函数的第一次调用时,才会对函数的地址进行定位。

原创粉丝点击