https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109054
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fw at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- On the other side, it is true that the unwind-dw2{,_s}.o entrypoints (or at least their majority) uses struct _Unwind_Context which is implementation specific and so using some other one is likely incorrect (in theory one could wrap it around and just use dlsym (RTLD_NEXT, "_Unwind_*") found entrypoints under the hood with some extra code). Things are even more complicated by libgcc being configurable to use libunwind and just call __libunwind_* APIs under the hood (on by default only on ia64-hpux but there is configure option for it elsewhere). Though, I wonder how can unwinding work properly even if we did that. Because e.g. libstdc++.so.6 (or libsupc++.a) C++ EH personality routine calls various _Unwind_* APIs too, including _Unwind_GetLanguageSpecificData, _Unwind_GetGR, _Unwind_GetIP*, _Unwind_GetRegionStart, so if it gets some subset of those symbols from a different unwinder, it can't work correctly.