符号

作者: iOS小洁 | 来源:发表于2022-12-18 20:32 被阅读0次

符号

1、符号表种类:

  • Symbol Table : 用来保存符号
  • String Table : 用来保存符号的名称
  • Indirect Symbol Table: 间接符号表。保存使用的外部符号。更准确一点就是使用的外部动态库的符号。是Symbol Table的子集

2、符号区分:

  • 按存在空间划分

    • non private external
    • weak private external
  • 按照模块划分

    • weak global
    • weak local
  • 按功能划分

    • f(file)、F(function)、O(Data)、d(Debug)、*ABS*(Absolute)、*COM*(Common)、*UND*(?)
  • 按符号种类划分

    • U undefined(未定义)
  • A absolute(绝对符号)

    • T text section symbol(__TEXT.__text)
  • D data section symbol(__DATA.__data)

    • B bss section symbol(__DATA.__bss)
  • C common symbol(只能出现在MH_OBJECT 类型的Mach-O⽂件中)

    • - debugger symbol table
  • S 除了上⾯所述的,存放在其他section的内容,例如未初始化的全局变量存放在(__DATA,__common)中

    • I indirect symbol(符号信息相同,代表同⼀符号)
  • u 动态共享库中的⼩写u表示⼀个未定义引⽤对同⼀库中另⼀个模块中私有外部符号

3、导⼊(Import)导出(Export)符号:

  • export symbol:导出表表示一个符号,其他文件可以将其导⼊(Import)
  • Import symbol:导入其他库的符号

4、two_levelnamespace & flat_namespace:

⼆级命名空间与⼀级命名空间。链接器默认采⽤⼆级命名空间,也就是除了会记录符号 名称,还会记录符号属于哪个动态库的,⽐如会记录下来_NSLog来⾃Foundation。

5、Weak Symbol:

  • Weak Reference Symbol: 表示此未定义符号是弱引⽤。如果动态链接器找不到该符号的定义,则将其符 为0。静态链接器会将此符号设置弱链接标志。
  • Weak defintion Symbol: 表示此符号为弱定义符号。如果静态链接器或动态链接器为此符号找到另⼀个(⾮弱)定义,则弱定义将被忽略。只能将合并部分中的符号标记为弱定义。

6、Common Symbol:

在定义时,未初始化的全局符号。

链接器设置:

  • -d: 强制定义Common Symbol。
  • -commons: 指定对待Common Symbol如何响应。

strip命令

strip用来移除或修改符号表中的符号

间接符号不能删除

strip动态库的时候,不能strip全局符号

Strip Style:在Xcode build setting中配置

  • Debugging Symbols:调试符号
  • All Symbols:全部符号
  • Non-Global Symbols:除全局符号外的所有符号

Strip Debugging Symbols流程:

  1. 将Mach-O 解析成模型Object
  2. 遍历LoadCommands
  3. 找到Segname==__DWARF的LoadCommand
  4. 移除Section
  5. 从符号表中移除Symbol
  6. 将修改后的模型Object重新写入Mach-O

Strip All Symbols 流程

  1. Strip Debugging Symbols
  2. markSymbols
  3. 除了间接符号表中引用的符号全部删除

Strip Non-Global Symbols流程:

  1. Strip Debugging Symbols
  2. 遍历符号表
  3. 删除n_tyoe != N_EXT的符号. (n_tyoe != N_EXT, 为外部符号)

strip命令参数:

  1. -x: non_global
  2. 无参数: 代表全部符号
  3. -S: 调试符号

相关文章

  • web前端利用HTML代码显示符号

    HTML常用符号代码: 符号代码符号代码符号代码符号代码符号代码´´© >>µµ®&...

  • 符号

    专用符号、文本符号、数学符号专用符号% % ...

  • 符号-普通符号

    概述 符号是ES6新增的一个数据类型,它通过使用函数 Symbol(符号描述) 来创建。 符号设计的初衷,是为了给...

  • 位移运算

    位移运算 无符号位移 >>> 无符号右移,无符号位运算用 0 补位 <<< 无符号左移 带符号位移 >> 带符号...

  • 学习笔记2020-06-04

    1、大O符号 大O代表上界符号。 2、下界符号 3、小o符号 4、下界符号2 5、阶相等符号

  • 品牌就是符号

    建立品牌就是建立符号,商品也是符号 符号是指一切具有现代意义的视觉形象听觉符号触觉符号味觉符号和嗅觉符号。 商品与...

  • 孙伟:演讲用的梗

    符号分为语言符号,符号。符号,视觉符号,语言符号 团队裂变一对多列面。 裂变有趣裂变! 存量用户,增量用户, 频率...

  • 第7篇 新媒体文案的传播B

    符号化:让广告更容易被传播1.符号指一切具有携带意义的视觉形象、听觉符号、触觉符号、味觉符号和嗅觉符号。2.符号有...

  • 深入理解ES6--6.符号与符号属性

    主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号 1. Symbol基础 1...

  • LaTeX教学2.3 符号

    2.3 符号 在写作论文时要用到标点符号, 数学符号和单位符号等许多符号. 在LaTeX系统中可以把各种符号分为以...

网友评论

    本文标题:符号

    本文链接:https://www.haomeiwen.com/subject/slesqdtx.html