Linux下C程序符号延迟绑定
动态库使用方式分为:隐式链接(隐式加载),编译时通过编译选项指定动态库显式链接(显式加载),通过代码调用dlopen、dlsym、dlclose 指定动态库
动态库的符号解析分为:立即绑定延迟绑定
使用方法:
隐式链接+立即绑定
-Wl,-z,now
隐式链接+延迟绑定
默认行为
显式链接+立即绑定
RTLD_NOW
显式链接+延迟绑定
RTLD_LAZY
例子:#include //gcc -g -fcf-protection=none -o hello hello.c //gcc -g -no-pie -fcf-protection=none -Wl,-z,now -o hello hello.c void hello(void) { printf("Hello, World! "); } int main(int argc, char **argv) { hello(); return 0; }readelf -r hello.o readelf -r hello objdump -d -s -j .plt -j .got.plt hello重定位是连接符号引用与符号定义的过程(符号和地址的绑定).rel.text(链接时重定位) 重定位的地方在.text段内,以offset指定具体要定位位置。在连接时候由连接器完成。注意比 较.text段前后变化。指的是比较.o文件和最终的执行文件(或者动态库文件)。就是重定位前后比 较,以上是说明了具体比较对象而已。.rel.dyn(启动时重定位) 重定位的地方在.got段内。主要是针对外部数据变量符号。例如全局数据。重定位在程序运行时定 位,一般是在.init段内。定位过程:获得符号对应value后,根据rel.dyn表中对应的offset,修 改.got表对应位置的value。另外,.rel.dyn 含义是指和dyn有关,一般是指在程序运行时候,动态 加载。区别于rel.plt,rel.plt是指和plt相关,具体是指在某个函数被调用时候加载。.rel.plt(调用时重定位) 重定位的地方在.got.plt段内(注意也是.got内,具体区分而已)。 主要是针对外部函数符号。一般 是函数首次被调用时候重定位。可看汇编,理解其首次访问是如何重定位的,实际很简单,就是 初次重定位函数地址,然后把最终函数地址放到.got.plt内,以后读取该.got.plt就直接得到最终函 数地址(参考过程说明)。 所有外部函数调用都是经过一个对应桩函数,这些桩函数都在.plt段内。.got(Global Offset Table,全局偏移表) 是Linux ELF文件中用于定位全局变量和函数的一个表。GOT表前三项是特殊的:GOT[0]本ELF动态 段(.dynamic段)的装载地址;GOT[1]本ELF的link_map数据结构描述符地址(编译时填充 0);GOT[2]_dl_runtime_resolve函数的地址(编译时填充0)。GOT的其他表项为全局变量的地址 或者为不需要延迟绑定的函数的地址。.got.plt 用于存放需要延迟绑定的函数的地址。.plt(Procedure Linkage Table,过程链接表)(延迟绑定) 是Linux ELF文件中用于延迟绑定的表,即函数第一次被调用的时候才进行绑定。因此,第一次调 用函数时开销比较大,但是其后的每次调用都只会花费一条指令和一个间接的存储器引用。其中 PLT[0]是一个特殊的表项,它跳转到动态链接器中执行。.plt 关联 GOT 项是在 .rela.plt中。.plt.got(立即绑定) 非延迟绑定的plt。.plt.got 关联 GOT 项是在 .rela.dyn。.plt.sec 启用-fcf-protection编译选项时,原先属于.plt的现在属于.plt.sec。
全球首个5GAI无人机平台发布据综合消息近日,高通技术公司推出了QualcommFlightRB55G平台,这是全球首个由5G和AI赋能的无人机平台和参考设计。该全新解决方案可助力加速消费级企业级和工业级无人机
直播平台都需要办理许可证的吗?很严谨地告诉你直播平台是需要办理网络文化经营许可证和ICP经营许可证的!网络文化经营许可证根据文化部规定,只要是通过互联网传播和交易文化产品文化活动,并且以盈利为目的商业活动,都是
超级星饭团等多款追星应用集中下架,部分平台禁未成年人消费今年6月15日,中央网信办决定,在全国范围内开展为期2个月的清朗饭圈乱象整治专项行动,重点打击诱导未成年人应援集资高额消费,粉丝造谣攻击侵犯隐私等行为。2个月以来,专项行动清理了大
iQOO8Pro对比小米MIX4,都是4999元,配置差距有点大8月已经过半,国内又出现三款高端旗舰机,按照时间发布先后顺序,分为对应小米MIX4荣耀magic和iQOO8系列。三款机型定价相近,定位也很靠近,主要面向线上手机市场。作为小米旗下
华为nova9或将采用仅支持4G网络的5G芯片根据微博博主菊厂影业粉丝的最新报道,华为nova9系列将于9月某个时候正式发布,该报告进一步声称该设备将具有5G功能不支持5G不支持5G由于众所周知的原因,华为最近推出的P50系列
关于6G网络!北京邮电大学获得突破,再次抢先一步点击关注,每天精彩不断!导读关于6G网络!北京邮电大学获得突破,再次抢先一步!众所周知,现在移动互联网已经成为了我们生活中最为重要的东西之一了,此前在2G3G4G网络时代的时候,世
聚焦终端安全天融信引领数字时代网络安全新风向随着数字化进程的加速发展,新技术新场景新威胁持续涌现,终端安全作为网络安全防护体系建设中的关键组成部分,引起了社会各界的高度重视。众多网络安全厂商持续发力终端安全市场,不断推进终端
想要安静生活你需要Dacom主动降噪耳机作为一款优秀的真无线蓝牙耳机,它除了要方便携带,佩戴舒适以外它还要能够拥有一个不错的音质体验以及比较不错的续航表现!当然了最最最重要的还是价格要够实惠!那么市面上真的能有一款耳机能
到手价399元!小度第一款主动降噪耳机来了8月18日,国民智能科技品牌小度在百度世界大会2021重磅发布系列新品,其中小度主动降噪智能耳机Pro惊艳亮相。作为小度首款搭载主动降噪功能的真无线耳机,小度主动降噪智能耳机Pro
提效减负必备打印机,轻松印对学习or办公难题如今,社会竞争越来越激烈,就连打印机也得有些独特技能,才能在内卷时代占据一席之地。那么,打印技术到底哪家强呢?咳咳,得力D20系列打印机申请出战!一宅家学习篇打印机需求关键词作业打
中科院入局光刻机起作用了?台积电主动做出让步随着时代的发展与进步,芯片的作用越来越凸显,芯片也就被誉为了工业粮食。但是近年来,由于美国为了制约我国华为的发展,频繁修改国际芯片规则,这也就间接导致了全球进入了芯片紧缺的困境。然