GOT应该保存的是puts函数的绝对虚地址,这里为什么保存的却是puts@plt的第二条指令呢? 原来“解释器”将动态库载入内存后,并没有直接将函数地址更新到GOT表中,而是在函数第一次被调用时,才会进行函数地址的重定位,这样做的好处是可以加快程序加载速度,尤其对大型程序来说.有关这方面的更详细的信息,可以搜索“动态链接库的延迟绑定技术”. 继续看第二条指令,pushq $0x0代表什么? 查看Hello world程序的重定位节: ezreal@ez:~/workdir$ readelf -a…