https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109054
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Protected visibility is always wrong, it is broken by design (or lack thereof). The _Unwind_* APIs are required by the Itanium ABI, and we call various other such functions from libgcc code already (e.g. _Unwind_Find_FDE from _Unwind_FindEnclosingFunction and uw_frame_state_for and others, _Unwind_GetTextRelBase, _Unwind_GetRegionStart, _Unwind_GetDataRelBase, _Unwind_SetGR, _Unwind_SetIP, _Unwind_GetIPInfo and _Unwind_GetCFA from various spots, _Unwind_RaiseException from _Unwind_Resume_or_Rethrow etc.). It is IMHO very bad idea to have 2 different unwinders in the same process with the same exported functions. If you'd like libgcc to call local aliases of these functions instead of those functions, I'm afraid it could break various things, e.g. i?86 glibc exports _Unwind_Find_FDE too and we rely on a single registry for all unwinding.