为什么我的共享库中存在展开符号
Why there are unwind symbols present in my shared library
我在我拥有的一个共享库上使用readelf。当我阅读符号时,列表包含许多展开符号,如下所示。
23:001e0c48 36 FUNC全局默认值13_Unwind_Resume
5998: 00000000 0 FUNC 弱默认和
__gnu_Unwind_Find_exidx5999: 001e0b54 0 FUNC 全局默认值 13 __gnu_Unwind_Restore_VFP_D
6000: 001e0b44 0 FUNC 全局默认值 13 __gnu_Unwind_Restore_VFP
6001: 001e0b64 0 FUNC 全局默认值 13 __gnu_Unwind_Restore_VFP_D_16_to_31
6002: 001e0b74 0 FUNC 全局默认值 13 __gnu_Unwind_Restore_WMMXD
6003: 001e0bfc 0 FUNC 全局默认值 13 __gnu_Unwind_Restore_WMMXC
6005: 001e0080 8 FUNC 全局默认值 13 _Unwind_GetCFA
6006: 001e0088 164 FUNC 全局默认值 13 __gnu_Unwind_RaiseException
6007: 001e012c 28 FUNC 全局默认值 13 __gnu_Unwind_ForcedUnwind
6008: 001e0148 116 FUNC 全局默认值 13 __gnu_Unwind_Resume
6009: 001e01bc 32 FUNC 全局默认值 13 __gnu_Unwind_Resume_or_Rethrow
6010: 001e01DC 4 FUNC 全局默认值 13 _Unwind_Complete
6011: 001e01e0 24 FUNC 全局默认值 13 _Unwind_DeleteException
6012: 001e01f8 92 FUNC 全局默认值 13 _Unwind_VRS_Get
6013: 001e027c 92 FUNC 全局默认值 13 _Unwind_VRS_Set
6014: 001e0304 200 FUNC 全局默认值 13 __gnu_Unwind_Backtrace
6018: 001e07d0 864 FUNC 全局默认值 13 _Unwind_VRS_Pop
6019: 001e0b5c 0 FUNC 全局默认值 13 __gnu_Unwind_Save_VFP_D
6020: 001e0b4c 0 FUNC 全局默认值 13 __gnu_Unwind_Save_VFP
6021: 001e0b6c 0 FUNC 全局默认值 13 __gnu_Unwind_Save_VFP_D_16_to_31
6022: 001e0bb8 0 FUNC 全局默认值 13 __gnu_Unwind_Save_WMMXD
6023: 001e0c10 0 FUNC 全局默认值 13 __gnu_Unwind_Save_WMMXC
6025: 001e0c24 36 FUNC 全局默认值 13 ___Unwind_RaiseException
6026: 001e0c24 36 FUNC 全局默认值 13 _Unwind_RaiseException
6027: 001e0c48 36 FUNC 全局默认值 13 ___Unwind_Resume
6028: 001e0c6c 36 FUNC 全局默认值 13 ___Unwind_Resume_or_Rethrow
6029: 001e0c6c 36 FUNC 全局默认值 13 _Unwind_Resume_or_Rethrow
6030: 001e0c90 36 FUNC 全局默认值 13 ___Unwind_ForcedUnwind
6031: 001e0c90 36 FUNC 全局默认值 13 _Unwind_ForcedUnwind
6032: 001e0cb4 36 FUNC 全局默认值 13 ___Unwind_Backtrace
6033: 001e0cb4 36 FUNC 全局默认值 13 _Unwind_Backtrace
6035: 001e113c 16 FUNC 全局默认值 13 _Unwind_GetRegionStart
6036: 001e114c 28 FUNC 全局默认值 13 _Unwind_GetLanguageSpecificData
6037: 001e1168 8 FUNC 全局默认值 13 _Unwind_GetDataRelBase
6038: 001e1170 8 FUNC 全局默认值 13 _Unwind_GetTextRelBase
我检查了库的源代码,但找不到对这些符号的引用。我猜,在编译源文件或链接到库中时,他们可能使用了一些标志来生成这些符号。
知道使用哪个 clang++ 标志来生成这些符号吗? 这些符号有什么用?
我会说这是异常处理,如果你不使用异常,你可以用-fno-exceptions
编译见 https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/libgcc-sman.html
- 为什么我的共享库中存在展开符号
- 未定义的引用,尽管存在符号,但 std::experimental::可选
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- boost::存在符号链接不取消引用
- 即使存在NM报告符号,在运行时的符号查找错误也是如此
- 缺少符号 – 但符号存在
- 理解符号表的输入(当不存在标头功能时)
- g++ 未定义的引用,尽管符号存在于 *.so 文件中
- C2386:"void_t":当前作用域中已存在具有此名称的符号
- 链接g729库(也存在库和符号)
- 均衡符号和初始化之间的时间和空间复杂性是否存在差异
- 尽管存在符号链接,但 ld 无法加载库
- .so中存在的符号已编译.o引用了它,但链接失败
- 加载具有相同符号的两个共享库时是否存在符号冲突
- 为什么在 typedef 存在时出现未解析的外部符号错误
- 不应该存在的随机未解析的外部符号
- 如何检查字符串中是否存在除"-","_","."'@' C++之外的任何符号?
- 静态库中未定义的符号,但在同一 VS 解决方案中存在
- 来自 vtable 的未定义符号是否意味着接口和实现之间存在错误
- C 标头存在重复符号问题