Вопрос про современные zero-cost исключения в плюсах на GCC на базе itanium ABI (DWARF-разворачивание стека).
Я так понимаю, если ты каким-то образом просрал секцию .eh_frame (тупо не загрузил из ELF-файла или перезаписал какой-то другой чужой или испортил старую) и добился того, чтобы у тебя диапазоны адресов из неё накрылись тазом, то все твои хорошие try-catch тупо не будут найдены после throw и всегда будет вызываться std::terminate() ?
СИТУАЦИЯ:
Есть софтина, которая каким-то образом (через ldopen наверное, как ещё...) берёт символы из моей либы и юзает. И мои исключения в моём .so корректно при этом перехватываются и пишут мои аккуратные логи. Но есть другая софтина, которая скомпилена в виде .so и тоже берёт ту же мою либу .so и любой exception роняет эту софтину в std::terminate(). Эксцепшн не перехватывается даже catch(...), который у меня написан. Может ли эта вторая софтина как-то просирать нужные секции? Как у первой получается жить, что забыла сделать вторая при загрузке либы?
То есть, поверхностная разница в том, первый раз мой код юзают загрузив из .so, а второй раз посредством другой .so, которая грузит мой .so.