星空网 > 软件开发 > 操作系统

ELF Format 笔记(八)—— 符号的类型和属性(st_info)

我是天空里的一片云,偶尔投影在你的波心,你不必讶异,更无须欢喜,在转瞬间消灭了踪影。你我相逢在黑夜的海上,你有你的,我有我的,方向;你记得也好,最好你忘掉,在这交会时互放的光亮! —— 徐志摩·偶然

ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

上篇笔记中说过,Elf32_Sym 结构的 st_info 成员包含了符号的类型和绑定属性等信息。

android linker 做重定位时,如果遇到未定义的符号,会判断该符号是否是一个弱引用符号,如果不是,则出错返回。具体是通过 ELF32_ST_BIND 宏来判断的:

 ELF Format 笔记(八)—— 符号的类型和属性(st_info)images/loading.gif' data-original="http://images0.cnblogs.com/blog2015/763648/201507/200728035669913.png" />

ELF32_ST_BIND 宏就是从 st_info 中提取一些 bits 作为绑定属性:

 ELF Format 笔记(八)—— 符号的类型和属性(st_info)

 ELF Format 笔记(八)—— 符号的类型和属性(st_info)

符号绑定属性的宏定义:

ELF Format 笔记(八)—— 符号的类型和属性(st_info) 

  • STB_LOCAL:本地符号,在本文件外不可见。
  • STB_GLOBAL:全局符号,在所有要链接在一起的 object files 中都可见(全局符号可以被其他文件引用)。
  • STB_WEAK:弱符号,类似于全局符号,但(定义的)优先级低于全局符号。

如果有同名的弱符号和全局符号,则优先使用全局符号的定义。

在符号表中,通常是本地符号排在前面,全局和弱符号排在后面。

还有一个宏 ELF32_ST_TYPE,用于判断符号的类型,同样也是从 st_info 中提取一些 bits 作为类型信息:

 ELF Format 笔记(八)—— 符号的类型和属性(st_info)

 ELF Format 笔记(八)—— 符号的类型和属性(st_info)

在 android linker 的源码中,并没有用到该宏,也没有用到符号的类型信息。

符号类型信息的宏定义:

ELF Format 笔记(八)—— 符号的类型和属性(st_info) 

  • STT_NOTYPE:符号类型未指定。
  • STT_OBJECT:数据对象,比如变量、数组等。
  • STT_FUNC:函数或其它可执行代码。
  • STT_SECTION:表示一个 section,主要用于重定位,通常具有 STB_LOCAL 属性。
  • STT_FILE:文件符号,具有 STB_LOCAL 属性,st_shndx 的值为 SHN_ABS。在 ELF 文件的符号表中位于其他 STB_LOCAL 符号的前面。



原标题:ELF Format 笔记(八)—— 符号的类型和属性(st_info)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

号完整指南:如何正确申请德国vat注册及欧盟eori号:https://www.kjdsnews.com/a/1311807.html
发票如何利用亚马逊从德国发货到英国,提供哪国vat发票?:https://www.kjdsnews.com/a/1311808.html
厦门德国vat注册:费用标准及计费方式:https://www.kjdsnews.com/a/1311809.html
加入?中东电商noon将加入vat 体系?:https://www.kjdsnews.com/a/1311810.html
利用eori号码实现vat税务管理:https://www.kjdsnews.com/a/1311811.html
分析亚马逊vat销售数据以确定增长机会:https://www.kjdsnews.com/a/1311812.html
九寨沟景区地图(详细指南和攻略):https://www.vstour.cn/a/365176.html
重庆品胜科技与星苹台达成合作 助力部队现代化后勤建设 :https://www.kjdsnews.com/a/1836523.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流