为什么我的共享库中存在展开符号

Why there are unwind symbols present in my shared library

本文关键字:符号 存在 我的 共享 为什么      更新时间:2023-10-16

我在我拥有的一个共享库上使用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