码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-30 17:55:06      阅读:144      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!