- (gdb) x/w 0x8049578
- 0x8049578 <_GLOBAL_OFFSET_TABLE_+20>: 0x080482c2
从上面可以看出,这个地址就是GOT表中的一项。它里面的内容是0x80482c2,即puts@plt中的第二条指令。
前面我们不是提到过,GOT中这里本应该是puts函数的地址才对,那为什么会这样呢?
原来链接器在把所需要的共享库加载进内存后,并没有把共享库中的函数的地址写到GOT表项中,而是延迟到函数的第一次调用时,才会对函数的地址进行定位。
从上面可以看出,这个地址就是GOT表中的一项。它里面的内容是0x80482c2,即puts@plt中的第二条指令。
前面我们不是提到过,GOT中这里本应该是puts函数的地址才对,那为什么会这样呢?
原来链接器在把所需要的共享库加载进内存后,并没有把共享库中的函数的地址写到GOT表项中,而是延迟到函数的第一次调用时,才会对函数的地址进行定位。