Использование libunwind в общей библиотеке

Я хочу предоставить универсальную функцию стека вызовов как часть библиотеки (.so), используя libunwind, Тем не менее, исполняемые файлы, связанные с .so начинают сбой, как только я ссылаюсь на libunwind, Насколько я понимаю, проблема, с которой я сталкиваюсь, заключается в том, что libunwind определяет те же символы, что и среда выполнения GCC, но реализация, по-видимому, не совместима.

Связь статически или динамически против libunwind ничего не меняет, я получаю segfault при выдаче исключения в _Unwind_Resume (если связаны статически), в противном случае стек вызовов начинается с __cxa_throw (предположительно, он был поврежден раньше.)

Интересно, что проблемы возникают только когда я использую GCC, с Clang все работает просто отлично.

Можно ли использовать libunwind внутри общей библиотеки? Если нет, есть ли другая библиотека, которая позволяет мне получить смещение указателя имени и указателя на функции в стеке? backtrace() почти достаточно хорош, но backtrace_symbols() делает слишком много форматирования, которое я должен был бы сначала «разобрать».

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]