首页 > 其他 > 详细

了解动态链接(五)—— 动态符号表

时间:2015-06-30 17:54:50      阅读:242      评论:0      收藏:0      [点我收藏+]

动态符号表 (.dynsym) 用来保存与动态链接相关的导入导出符号,不包括模块内部的符号。而 .symtab 保存所有符号,包括 .dynsym 中的符号。

动态符号表中所包含的符号的符号名保存在动态符号字符串表 .dynstr 中。

使用 readelf 查看 .dynsym 表,如:readelf --dyn-syms libstdc++.so。

 技术分享

可以看到,.dynsym 表包含39项。__cxa_atexit 是一个导入符号,而 __cxa_guard_acquire 则是一个导出符号。搜索 libstdc++ 库的源码,能找到该导出函数的定义:

 技术分享

在 android 的 linker 进行符号查找和重定位工作时,使用的是 .symtab 和 .hash,.hash 的作用是加快符号查找。.dynsym 在 android linker 中并未使用到。

 技术分享

学习资料: 《程序员的自我修养——链接、装载和库》

了解动态链接(五)—— 动态符号表

原文:http://www.cnblogs.com/ilocker/p/4611150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!