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

ilocker:关注 Android 安全(新手) QQ: 2597294287

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

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

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

符号绑定属性的宏定义:

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

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

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

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

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

符号类型信息的宏定义:

  • 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)的更多相关文章

  1. ELF Format 笔记(七)—— 符号表

    最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁 —— 徐志摩 ilocker:关注 Android 安全(新手) QQ: 2597294287 符号表 ...

  2. ELF Format 笔记(一)—— 概述

    ilocker:关注 Android 安全(新手) QQ: 2597294287 ELF Object files 参与程序的链接和执行,从这两个角度分别有两种视图: ELF header 位于文件的 ...

  3. [Spring学习笔记 2 ]装配各种类型的属性 map,list,array,null,properties

    一.spring Ioc容器补充(1) Spring Ioc容器 DI(依赖注入): 注入的方式:设值方法注入setter(属性注入)/构造子注入(构造函数传入依赖的对象)/字段注入field(注解) ...

  4. ELF Format 笔记(十五)—— 符号哈希表

    ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...

  5. ELF Format 笔记(十二)—— 段类型(segment types)

    ilocker:关注 Android 安全(新手) QQ: 2597294287 PT_NULL:如果段类型是 PT_NULL,那相应程序头结构体的其它成员都无意义,该程序头项可被忽略. 暂时还没遇到 ...

  6. ELF Format 笔记(四)—— 节(Section)

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件可以包含很多 section,所有的 section 都在 section header tab ...

  7. ELF Format 笔记(三)—— Section Types

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件中会包含很多 section,所有的 section 都在 section header tab ...

  8. ELF Format 笔记(五)—— 特殊 Section

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 链接器把一些独立的 object files 和库文件链接起来,形成可执行文件.在这个过程中,链接器需要解决 ...

  9. ELF Format 笔记(九)—— Elf32_Sym 结构的 st_value 和 st_shndx 成员

    ilocker:关注 Android 安全(新手) QQ: 2597294287 前面的笔记中提到过 Elf32_Sym 结构,本篇笔记再写一下其中的 st_value 和 st_shndx 成员. ...

随机推荐

  1. 七个结构模式之代理模式(Proxy Pattern)

    定义: 给某一个对象提供一个代理或者占位符,并由代理类来控制对原对象的访问.代理对象在客户端和实际对象之间启到了中介作用,并且强调了代理类对原对象的控制作用.例如:安全代理.缓冲代理.远程代理等. 结 ...

  2. Hibernate 配置 双向 对多关联 (未完待续·······)

                   从生疏到熟练  是要经历多少遍的练习? 这答案只能向自己找. 以Student和Course为例,一个学生可以选多门课程,一门课程也可以被多个学生选取: 首先  我们创建 ...

  3. Titanium中调用ios组件时语言不是本地化的解决方法

    用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? ...

  4. SAP/SD - 做SD你要知道的透明表

    一.客户主数据基本数据放在KNA1里:公司代码放在KNB1里:销售视图放在KNVV里:合作伙伴放在KNVP里:二.信用主数据KNKK里有信贷限额.应收总额.特别往来:S066里是未清订单值:S067里 ...

  5. ORA-00054:资源正忙,但指定以nowait方式

    PL/SQL执行SQL脚本文件,报错如下: 百度寻找答案,认为是被锁了. select session_id from v$locked_object; 结果没有任何数据.   后来把PL/SQL关闭 ...

  6. JS常用的function集合

    1.把字符串转为日期格式  (1) var str ='2012-08-12 23:13:15';str = str.replace(/-/g,"/");var date = ne ...

  7. wydomain

    目标系统信息收集组件,完全模块化,脚本均可拆可并.可合可分的使用! 运行流程 利用FOFA插件获取兄弟域名,并透视获取到的子域名相关二级域名.IP信息 检查域名和兄弟域名是否存在域传送漏洞,存在就遍历 ...

  8. tomcat <context path>的意义及作用

    context path 是在tomcat 要支持多个应用时对每个应用的docBase做区别时的区分符. 打个比方假如你有两个请求:一个为 http:localhost:8080/test1/hell ...

  9. 跳转到自己App的“通知”

    if (iOS8) { NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplicati ...

  10. 【代码笔记】iOS-点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...